Predicts the yearly rate of neutrino events in the IceCube Neutrino Observatory at the south pole. For this purpose, this package also includes modules with functions for neutrino cross sections, differential flux from atmospheric and astrophysical sources, and attenuation through the earth.
To allow for compatibility with other packages, this package uses classes for Neutrino
s and CrossSection
s, whose default attributes and methods can be replaced with other functions as desired.
To see the full report on this, please check out NeutrinoFlux.pdf
in the same folder.
Since I didn't set this up as a proper package, you'll have to download the repository and add it to your PYTHONPATH
in order to use it.
As a quick example, the code below computes the yearly rate of electron neutrinos from astrophysical sources, from all zenith angles, for energies between
import numpy as np
from NeutrinoFlux.event_rate import event_rate
from NeutrinoFlux.neutrinos import default_neutrinos as nu
full_E_bounds = (1e13, 1e21)
full_theta_bounds = (0, np.pi)
rate = event_rate(
nu=nu["nu_e"],
flux_type="astro",
E_bounds=full_E_bounds,
theta_bounds=full_theta_bounds
)
print(rate)
If I wanted to compute only the rate of Glashow Resonance events for electron antineutrinos within the same range, but with a spectral index of
rate = event_rate(
nu=nu["nubar_e"],
flux_type="astro",
E_bounds=full_E_bounds,
theta_bounds=full_theta_bounds,
diff_flux_kwargs={
"gamma": 2,
"phi_astro": 1,
},
GR_only=True
)
If I instead consider atmospheric tau neutrino flux from pion decay in July with energies only up to
rate = event_rate(
nu=nu["nu_tau"],
flux_type="atmo",
E_bounds=(1e13, 1e16),
theta_bounds=full_theta_bounds,
diff_flux_kwargs={
"month": "July",
"atmo_flux_source": "pi"
}
)
TODO
- link paper?
TODO
- zenith angle: relative to the north pole at
$\theta = 0$ radians, with the south pole at the origin) - discuss CrossSection, Neutrino classes, making your own modifications
TODO
- fits have a minimum of
$10^{13}$ eV: that's just my default models tho - tau and mu flux may be inaccurate due to other effects
While this package provides a set of models by default, other models can be incorporated by modifying a CrossSection
or Neutrino
object's attributes.
For example, the nuFATE
can be used to compute the attenuation of initial flux for a given flavor, including NeutrinoFlux
, all it would take is taking a Neutrino
-class object and replacing its default attenuation
method with one that uses the nuFATE
attenuation model. This custom Neutrino
can then be passed into the event_rate
function as normal.