clenspy.selection.scaling_relation.LogNormalMor

class clenspy.selection.scaling_relation.LogNormalMor(A_lambda=76.9, B_lambda=1.02, C_lambda=0.29, D_lambda=0.23, m_pivot_hinv=300000000000000.0, z_pivot=0.45)[source]

Bases: object

Costanzi et al. (2021) Eq. 2: a log-normal mass–richness relation.

\[\langle\ln\lambda\rangle(M,z) = \ln A_\lambda + B_\lambda\ln\!\left(\frac{M}{M_p}\right) + C_\lambda\ln\!\left(\frac{1+z}{1+z_p}\right)\]
\[\sigma^2_{\ln\lambda} = D_\lambda^2 + \frac{\langle\lambda\rangle - 1}{\langle\lambda\rangle^2}\]

so that \(\ln\lambda^{\rm tr} \sim \mathcal N(\langle\ln\lambda\rangle, \sigma^2_{\ln\lambda})\).

NOTE: the second variance term is the Poisson floor from discrete galaxy counting, and it is not \(1/\langle\lambda\rangle\). \((\langle\lambda\rangle-1)/\langle\lambda\rangle^2\) subtracts the central galaxy, which contributes no shot noise. It also goes negative for \(\langle\lambda\rangle < 1\); the total variance stays positive only because \(D_\lambda^2\) dominates there, and this class raises if it does not rather than returning a negative variance.

NOTE: units – ln_mass is \(\ln M\) with M in \(h^{-1}M_\odot\), pivot \(3\times10^{14}h^{-1}M_\odot\).

Parameters:
  • A_lambda (float) – Amplitude, mass slope, redshift evolution, intrinsic scatter.

  • B_lambda (float) – Amplitude, mass slope, redshift evolution, intrinsic scatter.

  • C_lambda (float) – Amplitude, mass slope, redshift evolution, intrinsic scatter.

  • D_lambda (float) – Amplitude, mass slope, redshift evolution, intrinsic scatter.

  • m_pivot_hinv (float, optional) – The pivots. Defaults are the published ones.

  • z_pivot (float, optional) – The pivots. Defaults are the published ones.

__init__(A_lambda=76.9, B_lambda=1.02, C_lambda=0.29, D_lambda=0.23, m_pivot_hinv=300000000000000.0, z_pivot=0.45)[source]

Methods

__init__([A_lambda, B_lambda, C_lambda, ...])

mean(ln_mass, z)

\(\langle\lambda^{\rm tr}\rangle\), the log-normal mean.

mean_ln_lambda(ln_mass, z)

\(\langle\ln\lambda\rangle\), dimensionless.

pdf(lambda_true, ln_mass, z)

\(P(\lambda^{\rm tr}\mid M,z)\), a density per richness.

std(ln_mass, z)

Standard deviation of \(\lambda^{\rm tr}\) (not of its log).

var_ln_lambda(ln_mass, z)

\(\sigma^2_{\ln\lambda}\): intrinsic plus the Poisson floor.

mean_ln_lambda(ln_mass, z)[source]

\(\langle\ln\lambda\rangle\), dimensionless. Eq. 2.

var_ln_lambda(ln_mass, z)[source]

\(\sigma^2_{\ln\lambda}\): intrinsic plus the Poisson floor.

mean(ln_mass, z)[source]

\(\langle\lambda^{\rm tr}\rangle\), the log-normal mean.

NOTE: \(e^{\mu + \sigma^2/2}\), not \(e^\mu\). The median is the smaller one, and using it as the quadrature centre biases the bracket low.

std(ln_mass, z)[source]

Standard deviation of \(\lambda^{\rm tr}\) (not of its log).

pdf(lambda_true, ln_mass, z)[source]

\(P(\lambda^{\rm tr}\mid M,z)\), a density per richness.