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()
scheme