Zheng et al. (2007) Composite Model¶
This section of the documentation describes the basic behavior of
the zheng07
composite HOD model. To see how this composite
model is built by the PrebuiltHodModelFactory
class,
see zheng07_model_dictionary
.
Overview of the Zheng et al. (2007) Model Features¶
This HOD-style model is based on Zheng et al. (2007), arXiv:0703457.
There are two populations, centrals and satellites.
Central occupation statistics are given by a nearest integer distribution
with first moment given by an erf
function; the class governing this
behavior is Zheng07Cens
.
Central galaxies are assumed to reside at the exact center of the host halo;
the class governing this behavior is TrivialPhaseSpace
.
Satellite occupation statistics are given by a Poisson distribution
with first moment given by a power law that has been truncated at the low-mass end;
the class governing this behavior is Zheng07Sats
;
satellites in this model follow an (unbiased) NFW profile, as governed by the
NFWPhaseSpace
class.
Building the Zheng et al. (2007) Model¶
You can build an instance of this model using the
PrebuiltHodModelFactory
class as follows:
>>> from halotools.empirical_models import PrebuiltHodModelFactory
>>> model = PrebuiltHodModelFactory('zheng07')
Customizing the Zheng et al. (2007) Model¶
There are three keyword arguments you can use to customize
the instance returned by the factory, threshold
, redshift
and
modulate_with_cenocc
. In this section, we cover each of these keywords in turn.
Role of the threshold
keyword¶
The threshold
keyword argument pertains to the r-band absolute magnitude
of the luminosity of the galaxy sample:
>>> model = PrebuiltHodModelFactory('zheng07', threshold = -20)
The only purpose of this keyword is to allow you
to instantiate your model according to the best-fit values of the parameters
taken from Table 1 of Zheng et al. (2007). After instantiation, the
threshold
attribute has no impact whatsoever on the behavior of the model.
If you choose a different value for threshold
than one of the values in Table 1
of Zheng et al. (2007), the model behavior will be set to the best-fit parameters
of the default_luminosity_threshold
variable set in the
model_defaults
module, and you can proceed to
alter the param_dict
however you like (see below).
As described in Changing Composite Model Parameters, you can always change the model parameters
after instantiation by changing the values in the param_dict
dictionary. For example,
>>> model.param_dict['logMmin'] = 12.5
The above line of code changes the minimum mass for a halo to host a central galaxy to \(10^{12.5}M_{\odot}\). See Parameters of the Zheng et al. (2007) model for a description of all parameters of this model.
Role of the redshift
keyword¶
The redshift
keyword argument must be set to the redshift of the
halo catalog you might populate with this model.
>>> model = PrebuiltHodModelFactory('zheng07', threshold = -20, redshift = 2)
For the zheng07
model, the redshift
attribute has no impact whatsoever on
the behavior of the model; the purpose of this keyword for factory standardization purposes only,
and also to remind users that this model has only been calibrated against z=0 observational data.
Role of the modulate_with_cenocc
keyword¶
Note
As described in the docstring, if you are trying to strictly reproduce
the results in Zheng et al 2007.
you should set the modulate_with_cenocc
keyword to True.
Note that the default value is False, which for typical regions of parameter
space gives very similar behavior to the published results.
The modulate_with_cenocc
keyword argument controls how the
Zheng07Sats.mean_occupation
function is calculated.
The default value is False, in which case the Zheng07Sats.mean_occupation
function is calculated according to the following equation:
When modulate_with_cenocc
is True, then the value of
\(\langle N_{\rm sat}\rangle(M_{\rm vir})\) as calculated above
will be multiplied by an overall factor of
\(\langle N_{\rm cen}\rangle(M_{\rm vir})\),
where the factor of \(\langle N_{\rm cen}\rangle\) is defined
according to Zheng07Cens.mean_occupation
:
If you wish to modulate your satellite occupation statistics using alternative models for \(\langle N_{\rm cen}\rangle(M_{\rm vir})\), see Advanced usage of the zheng07 model.
Populating Mocks and Generating Zheng et al. (2007) Model Predictions¶
As with any Halotools composite model, the model instance
can populate N-body simulations with mock galaxy catalogs.
In the following, we’ll show how to do this
with fake simulation data via the halocat
argument.
>>> from halotools.sim_manager import FakeSim
>>> halocat = FakeSim()
>>> model = PrebuiltHodModelFactory('zheng07')
>>> model.populate_mock(halocat = halocat)
See ModelFactory.populate_mock
for information about how to
populate your model into different simulations.
See Tutorials on analyzing galaxy catalogs for a sequence of worked examples
on how to use the mock_observables
sub-package
to study a wide range of astronomical statistics predicted by your model.
Studying the Zheng et al. (2007) Model Features¶
In addition to populating mocks, the zheng07
model also gives you access to
its underlying analytical relations. Here are a few examples:
>>> import numpy as np
>>> halo_mass = np.logspace(11, 15, 100)
To compute the mean number of each galaxy type as a function of halo mass:
>>> mean_ncen = model.mean_occupation_centrals(prim_haloprop = halo_mass)
>>> mean_nsat = model.mean_occupation_satellites(prim_haloprop = halo_mass)
Parameters of the Zheng et al. (2007) model¶
The best way to learn what the parameters of a model do is to just play with the code: change parameter values, make plots of how the underying analytical relations vary, and also of how the mock observables vary. Here we just give a simple description of the meaning of each parameter. You can also refer to the original publication, arXiv:0703457, for further details.
To see how the following parameters are implemented, see Zheng07Cens.mean_occupation
.
param_dict[‘logMmin’] - Minimum mass required for a halo to host a central galaxy.
param_dict[‘sigma_logM’] - Rate of transition from \(\langle N_{\rm cen} \rangle = 0 \Rightarrow \langle N_{\rm cen} = 1 \rangle\).
To see how the following parameters are implemented, see Zheng07Sats.mean_occupation
.
param_dict[‘alpha’] - Power law slope of the relation between halo mass and \(\langle N_{\rm sat} \rangle\).
param_dict[‘logM0’] - Low-mass cutoff in \(\langle N_{\rm sat} \rangle\).
param_dict[‘logM1’] - Characteristic halo mass where \(\langle N_{\rm sat} \rangle\) begins to assume a power law form.