Oscillation Probabilities¶
Class OscProbPMNS¶
Description¶
Calculates the exact 3-\(\nu\) oscillation probabilities in vacuum using the expressions for the elements of the PMNS matrix. There a few options how it can be done:
By splitting oscillation probability into energy dependant components (see JUNO docs) and summing the components with weights after integration is done. The following trasnformation are used:
comp12
, component related to \(\Delta m^2_{12}\);
comp13
, component related to \(\Delta m^2_{13}\);
comp23
, component related to \(\Delta m^2_{23}\);
compCP
, CP-violation related component;
probsum
, sum of components weighted with elements of PMNS matrix.
full_osc_prob
– plain full oscillation formula in single transformation.
average_oscillations
– oscillations averaged over energy.
Inputs¶
comp...
expects array of energy as inputs
probsum
expects all components +comp0
which is typically normed flux of antineutrinos
full_osc_prob
expects array of energy
average_oscillations
expects an flux to be averaged
Outputs¶
comp...
– values of components
probsum
– weighted sum of all components. In case of JUNO or Daya Bay those components would be a histograms with number of events.
full_osc_prob
– array of full oscillation probabilities.
average_oscillations
– averaged flux.
Class OscProbPMNSMult¶
Description¶
Approximate 3-\(\nu\) formula that allows one to group close reactors into one effective reactor to speed up calculations. Oscillation probability is also splitted into the components. See the Marrone.
Inputs¶
The same as for the OscProbPMNS
components and probsum.
Outputs¶
The same as for the OscProbPMNS
components and probsum.
Class OscProbPMNSDecoh¶
Description¶
Exact 3-\(\nu\) formula in the framework of wavepacket approach. Oscillation probability is also splitted into the components. See the Akhmedov and Daya Bay paper.
Inputs¶
The same as for the OscProbPMNS
components and probsum.
Outputs¶
The same as for the OscProbPMNS
components and probsum.
Implementation¶
Each class has to be initialized with initial and final flavor by passing
corresponding ROOT.Neutrino
objects.
- Example:
ROOT.OscProbPMNS(ROOT.Neutrino.amu(), ROOT.Neutrino.ae())
initialize oscillation probability from \(\bar{\nu_{\mu}}\) to \(\bar{\nu_{e}}\)
Each class is derived from a OscProbPMNSBase
that based on initial and
final flavor initialize expressions for required elements of PMNS variables
(see neutrino/PMNSVariables.hh
) and mass splittings (see
neutrino/OscillationVariables.hh
) including effective and exposing it into
the Python environment.
Formula¶
Detach diagonal, sum upper and lower triangles:
Open real part:
Unitarity:
Apply unitarity:
Or the other form with half angle:
Version with Jarlskog invariant:
where Jarlskog invariant \(\mathcal{J}\) is defined as follows:
Survival probability:
where \(c\) enumerates components and for 3-neutrino case is \(c = 12, 13, 23, 0, \mathrm{CP}\).