Overview¶
Theoretical Background¶
The model is described in detail in the paper Hand et al. 2017, but we summarize the relevant information needed to get started using pyRSD below.
Our galaxy model decomposes the galaxy sample into several subsamples, and computes the correlations between each of those subsamples. The galaxy sample gets divided into four subsamples:
Sample | Description |
type A centrals | isolated centrals (no satellites in the same halo) |
type B centrals | non-isolated centrals (at least one satellite in same halo) |
type A satellites | isolated satellites (no other satellites in same halo) |
type B satellites | non-isolated satellites (at least one other satellite in the same halo) |
This sample decomposition is useful because it allows us to separately model the correlations between galaxies in the same halo (denoted as “1-halo” terms) and correlations that arise from galaxies in separate dark matter halos (denoted as “2-halo” terms).
Thus, we can model the total galaxy power spectrum as
where \(f_s\) is the satellite fraction and \(P^{cc}\), \(P^{cs}\), and \(P^{ss}\) are the centrals auto power, central-satellite cross power, and satellite auto power, respectively.
Model Initialization¶
The galaxy power spectrum model can be initialized from a cosmology and a redshift specified by the user. For example, you can initialize the model at \(z=0\) for the Planck 2015 cosmology parameters as
In [1]: from pyRSD.rsd import GalaxySpectrum
In [2]: from pyRSD.rsd.cosmology import Planck15
In [3]: model = GalaxySpectrum(z=0, params=Planck15)
Once the model object has been created, the underlying elements of the model need to be initialized. Depending on your machine, this will take several minutes to complete.
# model takes several minutes to initialize once
model.initialize()
# set kmin/kmax limits
model.kmin = 1e-3
model.kmax = 0.5
The initialization only needs to be done once, and once the model initialized,
the evaluation of the model will be fast (typically < 1 second), as long
as the desired \(k\) value is valid, as specified by the kmin
and kmax
attributes of the model.
Warning
The GalaxySpectrum
class has attributes kmin
and kmax
that specify where the valid wavenumber range over which the underlying model
has been initialized. Outside of this range, the model must evaluate
each component of the model for each \(k\) value, which can be
time-consuming. A warning will be printed when this occurs.
Because the model initialization is time consuming, we recommend saving the initialized model and then reading the model from disk when it is needed again. This can be achieved with the numpy’s pickling functionality:
# save the initialized model to disk
model.to_npy('galaxy_model.npy')
# read a new model from disk
model2 = GalaxySpectrum.from_npy('galaxy_model.npy')
Model Parameters¶
The GalaxySpectrum object has several model parameters. These parameters all of default values, but the attributes can be explicitly set by the user to change the behavior of the model.
The parameters are:
Cosmology | Name | Description |
\(\alpha_\parallel\) | alpha_par | The Alcock-Paczynski effect parameter for parallel to the line-of-sight |
\(\alpha_\perp\) | alpha_perp | The Alcock-Paczynski effect parameter for perpendicular to the line-of-sight |
\(f\) | f | The growth rate at \(z\): \(f = d\mathrm{ln}D/d\mathrm{ln}a\) |
\(\sigma_8(z)\) | sigma8_z | The mass variance at \(r = 8 \ \mathrm{Mpc}/h\) at \(z\); this sets the linear power spectrum normalization |
Linear biases | ||
\(b_{1,c_A}\) | b1_cA | The linear bias of the type A centrals sample |
\(b_{1,c_B}\) | b1_cB | The linear bias of the type B centrals sample |
\(b_{1,s_A}\) | b1_sA | The linear bias of the type A satellites sample |
\(b_{1,s_B}\) | b1_sB | The linear bias of the type B satellites sample |
Sample fractions | ||
\(f_s\) | f_s | The satellite fraction, which is (total number of satellites / total number of galaxies) |
\(f_{c_B}\) | f_cB | The type B centrals fraction, which is (total number of type B centrals / total number of centrals) |
\(f_{s_B}\) | f_sB | The type B satellites fraction, which is (total number of type B satellites / total number of satellites) |
Finger-of-God damping | ||
\(\sigma_c\) | sigma_c | The centrals FoG velocity dispersion, in units of \(\mathrm{Mpc}/h\) |
\(\sigma_{s_A}\) | sigma_sA | The type A satellites FoG velocity dispersion, in units of \(\mathrm{Mpc}/h\) |
\(\sigma_{s_B}\) | sigma_sB | The type B satellites FoG velocity dispersion, in units of \(\mathrm{Mpc}/h\) |
1-halo amplitudes | ||
\(N_{c_B s}\) | N_cBs | The amplitude of the constant 1-halo term between type B centrals, [units: \((\mathrm{Mpc}/h)^3\)] |
\(N_{s_B s_B}\) | N_sBsB | The amplitude of the constant 1-halo term between type B satellites, [units: \((\mathrm{Mpc}/h)^3\)] |
The parameters can be updated via the usual attribute setting mechanism
# update normalization via sigma8_z
In [4]: model.sigma8_z = 0.62
# update satellite fraction
In [5]: model.f_s = 0.12