CompaSO Halo Finder
===================
All group finding in AbacusSummit is done on the fly. We are using
a hybrid FoF-SO algorithm, dubbed CompaSO, summarized as follows.
First, we compute a kernel density estimate around all particles.
This uses a weighting :math:`(1-r^2/b^2)`, where :math:`b` is 0.4 of the interparticle
spacing. We note that the effective volume of this kernel is
equivalent to a top-hat of :math:`0.737b`, so 85 kpc/*h* comoving, and that
the mean weighted counts at an overdensity :math:`\delta` is about :math:`\delta/10`
with a variance of 4/7 of the mean.
Second, we segment the particle set into what we call L0 halos.
This is done with the FOF algorithm with linking length 0.25 of the
interparticle spacing, but only for particles with Delta>60. We
note that b_FOF=0.25 normally would percolate at a noticeably lower
density, Delta\~41 (More et al. 2011, ApJS, 195, 4). The intention is that
the bounds of the L0 halo set be set by the kernel density estimate,
which has lower variance than the nearest neighbor method of FOF
and imposes a physical smoothing scale.
.. note:: In Abacus, L0 groups are large, "fluffy" sets of particles
that typically encompass several L1 groups. L1 groups correspond
to classical "halos". L2 groups correspond to "halo cores"
or perhaps "subhalos". Only L1 halos are in the catalog.
We stress that all L1/L2 finding and all halo statistics are based
solely on the particles in the L0 halo.
Third, within each L0 halo, we construct L1 halos by a competitive
spherical overdensity algorithm. We begin by selecting the particle
with the highest kernel density; this is a nucleus. We then search
outward to find the innermost radius in which the enclosed density
(of L0 particles only!) dips below 200. Particles interior to that
radius are tentatively assigned to that group. Particles interior to
80% of R200 are marked as ineligible to be a future nucleus. We
then search the remaining eligible particles to find the one with
the highest remaining kernel density that also meets the criteria of
being a density maximum. This latter condition is that a particle
must be denser than all other particles (eligible or not) within 0.4
of the interparticle spacing. Once located, if this particle has
a high enough density (a condition set by estimating what density would
be generated by a singular isothermal sphere of M200=35 particles),
we start another nucleus.
With each successive nucleus, we again search for the SO(200) radius,
using all L0 particles. Now a particle is assigned to the new group
if is previously unassigned *or* if it is estimated to have an enclosed
density with respect to the new group that is twice that of the
enclosed density with respect to its assigned group. In detail,
these enclosed densities are not computed exactly, but rather scaled
from the SO radius assuming a inverse square density profile.
The idea here is to allow nearby nuclei to divide particles by a
principle similar to that of tidal radii. However, we stress that
it is not our goal to find subhalos, and so we do not allow new
nuclei to form inside 80% of the SO(200) radius of other L1 halos. That
said, large substructure just inside this radius may yield a
nucleus away from the center of the secondary object, and the
subsequent enclosed density competition can result in some deblending
of the two objects.
We do not perform any unbinding of particles, such as is sometimes
done with estimates of the gravitational potential and resulting
particle energy.
Fourth, within each L1 halo (and limited to only those particles),
we repeat the SO algorithm to find L2 halos with an enclosed radius
of 800. We store the masses of the 5 largest such subhalos, which may
help to mark cases of over-merged L1 halos. But the main purpose
is that we use the center of mass of the largest L2 subhalo to define
a center for the output of the L1 statistics. We do not otherwise
store information about the L2 subhalos.
All density thresholds are scaled upward as the cosmology departs
from Einstein-deSitter, in keeping with spherical collapse estimates
for low density universes. The FOF linking length is scaled as the
inverse cube root of that change. The kernel density scale is not
changed.
.. note:: Use the ``SODensityL1`` field in the header to get the
exact density at any epoch relative to the mean cosmic
density at that epoch
We output properties for all L1 halos with more than 35 particles.