halomod.hod

Module for defining HOD classes.

The HOD class exposes methods that deal directly with occupation statistics and don’t interact with the broader halo model. These include things like the average satellite/central occupation, total occupation, and “pair counts”.

The HOD concept is here meant to be as general as possible. While traditionally the HOD has been thought of as a number count occupation, the base class here is just as amenable to “occupations” that could be defined over the real numbers – i.e. continuous occupations. This could be achieved via each “discrete” galaxy being marked by some real quantity (eg. each galaxy is on average a certain brightness, or contains a certain amount of gas), or it could be achieved without assuming any kind of discrete tracer, and just assuming a matching of some real field to the underlying halo mass. Thus all kinds of occupations can be dealt with in these classes.

For the sake of consistency of implementation, all classes contain the notion that there may be a “satellite” component of the occupation, and a “central” component. This is to increase fidelity in cases where it is known that a discrete central object will necessarily be in the sample before any other object, because it is inherently “brighter” (for whatever selection the sample uses). It is not necessary to assume some distinct central component, so for models in which this does not make sense, it is safe to set the central component to zero.

The most subtle/important thing to note about these classes are the assumptions surrounding the satellite/central decomposition. So here are the assumptions:

  1. The average satellite occupancy is taken to be the average over all haloes, with and without centrals. This has subtle implications for how to mock up the galaxy population, because if one requires a central before placing a satellite, then the avg. number of satellites placed into available haloes is increased if the central occupation is less than 1.

  2. We provide the option to enforce a “central condition”, that is, the requirement that a central be found in a halo before any satellites are observed. To enforce this, set central=True in the constructor of any HOD. This has some ramifications:

  3. If the central condition is enforced, then for all HOD classes (except see point 5), the mean satellite occupancy is modified. If the defined occupancy is Ns’, then the returned occupancy is Ns = Nc*Ns’. This merely ensures that Ns=0 when Nc=0. The user should note that this will change the interpretation of parameters in the Ns model, unless Nc is a simple step function.

  4. The pair-wise counts involve a term <Nc*Ns>. When the central condition is enforced, this reduces trivially to <Ns>. However, if the central condition is not enforced we assume that the variates Nc and Ns are uncorrelated, and use <Nc*Ns> = <Nc><Ns>.

  5. A HOD class that is defined with the central condition intrinsically satisfied, the class variable central_condition_inherent can be set to True in the class definition, which will avoid the extra modification. Do note that just because the class is specified such that the central condition can be satisfied (i.e. <Ns> is 0 when <Nc> is zero), and thus the central_condition_inherent is True, does not mean that it is entirely enforced. The pairwise counts still depend on whether the user assumes that the central condition is enforced or not, which must be set at instantiation.

  6. By default, the central condition is not enforced.

Classes

Constant(**model_parameters)

A toy model HOD in which every halo has the same amount of the tracer on average.

ContinuousPowerLaw(**model_parameters)

A continuous HOD which is tuned to match the Zehavi05 total occupation except for normalisation.

Contreras13(central[, cosmo, Om0, Tcmb0, …])

Nine-parameter model of Contreras (2013) [R8e7a1d6c89fc-1].

Geach12(central[, cosmo, Om0, Tcmb0, Neff, …])

8-parameter model of Geach et.

HOD(central[, cosmo, Om0, Tcmb0, Neff, …])

Halo Occupation Distribution model base class.

HODBulk(**model_parameters)

Base class for HODs with no discrete tracers, just an assignment of tracer to the halo.

HODNoCentral(**model_parameters)

Base class for all HODs which have no concept of a central/satellite split.

HODPoisson(central[, cosmo, Om0, Tcmb0, …])

Base class for discrete HOD’s with poisson-distributed satellite population.

Spinelli19(central[, cosmo, Om0, Tcmb0, …])

Six-parameter model of Spinelli et al. (2019) [Rb395fcb3d90d-1].

Tinker05(central[, cosmo, Om0, Tcmb0, Neff, …])

3-parameter model of Tinker et.

Zehavi05(central[, cosmo, Om0, Tcmb0, Neff, …])

Three-parameter model of Zehavi (2005) [R912eeafce464-1].

Zehavi05Marked(central[, cosmo, Om0, Tcmb0, …])

The Zehavi05 model, with a possibility that the quantity is not number counts.

Zehavi05WithMax(central[, cosmo, Om0, …])

Zehavi05 model in which a maximum halo mass for occupancy also exists.

Zheng05(central[, cosmo, Om0, Tcmb0, Neff, …])

Five-parameter model of Zheng (2005)