snorer.get_gx¶
snorer.get_gx(Ev,mx,psi)¶
Calculate the probability density for cross section at scattering angle psi and averaged over azimuthal angle in lab frame. This is for energy-independent cross section. See Eq. (3) in BDM Physics.
Parameters:
Ev
: array_like
The incoming neutrino energy \(E_\nu\), MeV
mx
: array_like
DM mass \(m_\chi\), MeV
psi
: array_like
Lab frame scattering angle \(\psi\), rad
Returns:
out
: scalar/ndarray
Probability density for cross section at \(\psi\) and averaged over azimuthal angle \(2\pi\). The result is a scalar if the three inputs are all scalars. The unit is sr−1
Examples
In this example, we show \(2\pi g_\chi\sin\psi\) vs. \(\psi\) for various \(m_\chi\).
import numpy as np
import matplotlib.pyplot as plt
import snorer as sn
# Neutrino energy, mx values and psi range
Ev = 10
mx_vals = np.logspace(-3,0,4)
psi_vals = np.linspace(0,np.pi/2,500)
# Draw gx plots for various mx
for mx in mx_vals:
dOmega = 2*np.pi*np.sin(psi_vals)
gx_vals = get_gx(Ev,mx,psi_vals)*dOmega
plt.plot(psi_vals,gx_vals,label=fr'$m_\chi={1000*mx:.0f}$ keV')
plt.yscale('log')
plt.ylim(9.5e-3,)
plt.xlabel(r'$\psi$ [rad]')
plt.ylabel(r'$2\pi g_\chi\sin\psi$')
plt.legend()
plt.show()