Watson

class hmf.mass_function.fitting_functions.Watson(nu2: ndarray, m: ndarray | None = None, z: float = 0.0, n_eff: ndarray | None = None, mass_definition: BaseMassDefinition | None = None, cosmo: FLRW = FlatLambdaCDM(name='Planck18', H0=<Quantity 67.66 km / (Mpc s)>, Om0=0.30966, Tcmb0=<Quantity 2.7255 K>, Neff=3.046, m_nu=<Quantity [0., 0., 0.06] eV>, Ob0=0.04897), delta_c: float = 1.68647, **model_parameters)[source]

Watson mass function fit.

Three AHF fits from Watson+13 (v4/published) are used, by redshift. At \(z=0\) it uses the precise present-day fit (Table 2: A_0, alpha_0, beta_0, gamma_0). At \(z \geq\) z_hi it uses the EoR fit (Table 2: *_hi). In between it uses the redshift-dependent fit of eqs 14-16, with \(\alpha(z) = \Omega_m(z)\{5.907(1+z)^{-3.599} + 2.344\}\), \(\beta(z) = \Omega_m(z)\{3.136(1+z)^{-3.058} + 2.349\}\), \(A(z) = \Omega_m(z)\{1.097(1+z)^{-3.216} + 0.074\}\) and \(\gamma\) = gamma_z. (arXiv v1 swaps the labels of the \(\alpha\) and \(\beta\) fits; v4 is the published version.)

As in the paper, the fits are not joined smoothly, so \(f(\sigma)\) jumps between \(z=0\) and \(z \to 0^+\). For the simulation’s \(\Omega_m = 0.27\) the jump is 0-9% over \(-0.55 \leq \ln\sigma^{-1} \leq 1.05\), within the paper’s ~10% accuracy. Because \(\Omega_m(z)\) multiplies \(A\), \(\alpha\) and \(\beta\), and the fit was calibrated at a single cosmology, it extrapolates poorly to other \(\Omega_m\): at \(\Omega_m = 0.31\) the jump is a factor 1.4-2.7. Bocquet+16 call this a “heightened and likely artificial cosmological sensitivity”.

For details on attributes, see documentation for BaseFittingFunction.

Parameters:
  • nu2 (array_like) – A vector of peak-heights, \(\delta_c^2/\sigma^2\) corresponding to m

  • m (array_like, optional) – A vector of halo masses [units M_sun/h]. Only necessary if req_mass is True. Typically provides limits of applicability. Must correspond to nu2.

  • z (float, optional) – The redshift. Only used by models that depend on redshift. Default is 0.

  • n_eff (array_like, optional) – The effective spectral index at m. Only required if req_neff is True.

  • mass_definition (hmf.halos.mass_definitions.MassDefinition instance) – A halo mass definition. Only required for fits which explicitly include a parameterization for halo definition.

  • cosmo (astropy.cosmology.FLRW instance, optional) – A cosmology. Default is hmf.cosmology.cosmo.DEFAULT_COSMOLOGY (Planck18), as for the frameworks. Either omegam_z or cosmo is required if req_omz is True. If both are passed, omegam_z takes precedence.

  • **model_parameters (unpacked-dictionary) – These parameters are model-specific. The available parameters and their defaults are listed in the Notes section of each model (and are also available as <model>._defaults).

Notes

The Watson [1] form is:

\[f_{\rm WatS}(\sigma) = \Gamma A \left(\left(\frac{\beta}{\sigma}\right)^\alpha+1\right)\exp(-\gamma/\sigma^2)\]

Default model parameters (override them with keyword arguments, or with hmf_params in MassFunction):

Parameter

Default

C_a

0.023

d_a

0.456

d_b

0.139

p

0.072

q

2.13

A_0

0.194

alpha_0

1.805

beta_0

2.267

gamma_0

1.287

z_hi

6

A_hi

0.563

alpha_hi

3.81

beta_hi

0.874

gamma_hi

1.453

A_a

1.097

A_b

3.216

A_c

0.074

alpha_a

5.907

alpha_b

3.599

alpha_c

2.344

beta_a

3.136

beta_b

3.058

beta_c

2.349

gamma_z

1.318

References

[1]

Watson, W. A., et al., 2013. MNRAS 433, 1230. https://doi.org/10.1093/mnras/stt791

Attributes

cutmask

Boolean mask of the elements within the fit’s calibrated range.

Has the same length as nu2. An element is True if the corresponding mass (or \(\sigma\), depending on the model) lies inside the range over which the fit was calibrated against simulations, as given in the reference paper. Elements outside that range are False: fsigma is still computed there, but is an extrapolation. The default is True everywhere. The mask is informational only; it is not applied anywhere in hmf.

fsigma

The function \(f(\sigma)\equiv\nu f(\nu)\).

lnsigma

Negative log of sigma.

normalized = False

Whether this model is normalized so that all mass is in halos

nu

The peak height, \(\nu = \delta_c/\sigma\).

omegam_z

Normalised matter density at current redshift.

references: ClassVar[tuple[str, ...]] = ('Watson, W. A., et al., 2013. MNRAS 433, 1230. https://doi.org/10.1093/mnras/stt791',)

References to cite when this model is used, each a formatted citation string. Subclasses inherit their parent’s references unless they set their own.

req_cosmo = True
req_dhalo = True
req_mass = False

Whether m is required for this subclass

req_neff = False

Whether n_eff is required for this subclass

req_omz = True
sigma

The sqrt of mass variance as a function of mass.

sim_definition = <hmf.mass_function.fitting_functions.SimDetails object>

Details of the defining simulation, instance of SimDetails

Methods

gamma()[source]

Calculate \(\Gamma\) for the Watson fit.

classmethod get_measured_mdef()

Get the mass definition used in the defining simulation.

classmethod get_models() → Mapping[str, type]

Get a read-only mapping of all implemented models for this component.

The mapping is a live view of the registry, so it shows models registered later, but it can not be used to add or remove models.

get_params()[source]

Get \(A\), \(\alpha\), \(\beta\) and \(\gamma\) at this redshift.