Tinker et al. (2013) Composite Model¶
This section of the documentation describes the basic behavior of
the tinker13
composite HOD model. To see how this composite
model is built by the PrebuiltHodModelFactory
class,
see tinker13_model_dictionary
.
Overview of the Tinker et al. (2013) Model Features¶
This HOD-style model is based on Tinker et al. (2013), arXiv:1308.2974. The behavior of this model is governed by an assumed underlying stellar-to-halo-mass relation that is distinct for star-forming and quiescent populations.
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 Tinker13Cens
.
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 classes governing this behavior are Tinker13QuiescentSats
and Tinker13ActiveSats
;
satellites in this model follow an (unbiased) NFW profile, as governed by the
NFWPhaseSpace
class.
Building the Tinker et al. (2013) Model¶
You can build an instance of this model using the
PrebuiltHodModelFactory
class as follows:
>>> from halotools.empirical_models import PrebuiltHodModelFactory
>>> model = PrebuiltHodModelFactory('tinker13')
Customizing the Tinker et al. (2013) Model¶
There are several keyword arguments you can use to customize the instance returned by the factory.
The threshold
keyword argument and the redshift
keyword
argument behave in the exact same way as they do in the leauthaud11
model.
See Leauthaud et al. (2011) Composite Model for further details.
In the tinker13
model, the quiescent fraction of central galaxies is
specified at a set of control points via the quiescent_fraction_abscissa
and quiescent_fraction_ordinates
keywords. Linear interpolation is used to
for the values of the quenched fraction evaluated at distinct values from the control points.
So, for example, if you wanted to initialize your model so that the quenched fraction
at \(M_{\rm vir}/M_{\odot} = 10^{12}, 10^{13}, 10^{14}, 10^{15}\) is
\(0.25, 0.5, 0.75, 0.9\):
>>> model = PrebuiltHodModelFactory('tinker13', quiescent_fraction_abscissa = [1e12, 1e13, 1e14, 1e15], quiescent_fraction_ordinates = [0.25, 0.5, 0.75, 0.9])
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['quiescent_fraction_ordinates_param1'] = 0.35
There will be one param_dict
parameter for each entry of
the input quiescent_fraction_ordinates
.
Once you instantiate the model you are not permitted to change the abscissa.
To do that, you need to instantiate another model.
Populating Mocks and Generating Tinker et al. (2013) 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('tinker13')
>>> model.populate_mock(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 Tinker et al. (2013) Model Features¶
In addition to populating mocks, the tinker13
model also gives you access to
its underlying analytical relations. For the most part, the tinker13
model simply
inherits the methods of the leauthaud11
model, which you can read about
in Leauthaud et al. (2011) Composite Model. However, there are slight differences
due as tinker13
also models quiescent designation.
>>> import numpy as np
>>> halo_mass = np.logspace(11, 15, 100)
Whereas in leauthaud11
there was a mean_occupation_centrals
method,
in tinker13
there are instead methods for mean_occupation_active_centrals
and mean_occupation_quiescent_centrals
.
>>> mean_ncen_q = model.mean_occupation_quiescent_centrals(prim_haloprop = halo_mass)
>>> mean_ncen_a = model.mean_occupation_active_centrals(prim_haloprop = halo_mass)
Similar comments apply to mean_stellar_mass
and mean_log_halo_mass
for centrals and satellites alike.
Parameters of the Tinker et al. (2013) model¶
For satellite galaxies, the tinker13
model inherits all of
the parameters of the leauthaud11
model twice: one set of parameters
for the star-forming satellites, a second set for the quiescent satellites.
Please refer to Parameters of the Leauthaud et al. (2011) model for details.
The same duplicate parameter inheritance applies for centrals.
Additionally, as described in Overview of the Tinker et al. (2013) Model Features,
there are parameters specifying the quiescent fraction of
centrals at the set of control points determined by the
quiescent_fraction_abscissa
keyword passed to the constructor.