Halo mass function

Pylians provides the routine MF_theory to compute the halo mass function of a given model. The arguments of this function are:

k_in, Pk_in, OmegaM, Masses, author, bins=10000, z=0, delta=200.0

  • k. 1D numpy array with the value of the linear matter power spectrum wavenumbers.

  • Pk. 1D numpy array with the amplitude of the linear matter power spectrum on the wavenumbers k.

  • OmegaM. Value of \(\Omega_{\rm m}\).

  • Masses. 1D numpy array with the value of the halo masses over which compute the halo mass function.

  • author. The model for the halo mass function. Options are: ST, Tinker, Tinker10, Crocce, Jenkins, Warren, Watson, Watson_FoF, Angulo.

  • bins. In order to carry out the integrals, the k bins need to be sorted and equally spaced in log10. This parameter determines the number of bins to use. The more the better, but a very large number will have very little impact. Default 10000.

  • z. Redshift at which to estimate the halo mass function. Only needed for the Tinker, Tinker10, and Crocce mass functions.

  • delta. The overdensity value. Default is 200. Only needed for Tinker and Tinker10.


For cosmologies with massive neutrinos, \(\Omega_{\rm m}\) should be set to \(\Omega_{\rm c}+\Omega_{\rm b}\) and the linear power spectrum should be the CDM+baryons linear power spectrum; see e.g. 1311.1212 and 1311.1514.

An example of how to use this routine is this:

import numpy as np
import mass_function_library as MFL

# halo mass function parameters
f_Pk   = 'Pk_linear_z=0.txt'  #file with linear Pk
OmegaM = 0.3175
Masses = np.logspace(11, 15, 100) #array with halo masses
author = 'ST'   #Sheth-Tormen halo mass function
bins   = 10000  #number of bins to use for Pk
z      = 0.0    #redshift; only used for Tinker, Tinker10 and Crocce
delta  = 200.0  #overdensity; only for Tinker and Tinker10

# read linear matter Pk
k, Pk = np.loadtxt(f_Pk, unpack=True)

# compute halo mass function
HMF = MFL.MF_theory(k, Pk, OmegaM, Masses, author, bins, z, delta)


Pylians provides the routine sigma that can be used to compute \(\sigma_R\), defined as

\[\sigma_R = \int_0^\infty P(k)W(k,R)^2k^2/(2\pi^2)\]

where \(W(k,R)\) is the Fourier transform of a top-hat function with radius \(R\):

\[W(k,R) = \frac{3[\sin(kR) - kR\cos(kR)]}{(kR)^3}\]

The most standard applicaiton of this routine is to compute the value of \(\sigma_8\) given a linear power spectrum:

import numpy as np
import mass_function_library as MFL

# read linear power spectrum
k, Pk = np.loadtxt('My_linear_Pk.txt', unpack=True)

# compute the value of sigma_8
sigma_8 = MFL.sigma(k, Pk, 8.0)