magnus.oscprobstd

oscprobstd.py

Closed-form (non-Magnus) two- and three-neutrino oscillation probabilities, computed from the standard analytical expressions rather than from the Magnus expansion. Used by the test suite to validate oscprob.py’s Magnus-based results against an independent method, not intended as a general-purpose replacement for it (it does not cover matter with non-constant density, NSI, LIV, or more than three flavors).

Routine listings

  • osc_prob_2nu_vacuum_std - Returns 2nu vacuum probabilities, closed form

  • osc_prob_2nu_matter_std - Returns 2nu constant-density matter

    probabilities, closed form

  • delta - Kronecker delta

  • J - Returns U*_ak * U_bk * U_aj * U*_bj, a building block of the

    3nu vacuum probability

  • osc_prob_3nu_vacuum_std - Returns 3nu vacuum probabilities, closed form

Functions

osc_prob_2nu_vacuum_std(→ numpy.ndarray)

Returns 2nu oscillation vacuum probabilities, std. computation.

osc_prob_2nu_matter_std(→ numpy.ndarray)

Returns 2nu oscillation matter probabilities, std. computation.

delta(→ int)

Returns the Kronecker delta function.

J(→ complex)

Returns U*_ak * U_bk * U_aj * U*_bj, with U the PMNS matrix.

osc_prob_3nu_vacuum_std(→ numpy.ndarray)

Returns 3nu oscillation vacuum probabilities, std. computation.

Module Contents

magnus.oscprobstd.osc_prob_2nu_vacuum_std(sth: float, Dm2: float, energy: float, L: float) numpy.ndarray[source]

Returns 2nu oscillation vacuum probabilities, std. computation.

Returns the probabilities for two-neutrino oscillations in vacuum, computed using the standard analytical expression of the probabilities.

Added in version 1.0.0.

Parameters:
  • sth (float) – Sine of the mixing angle \(\theta\).

  • Dm2 (float) – Mass-squared difference \(\Delta m^2\).

  • energy (float) – Neutrino energy.

  • L (float) – Baseline.

Returns:

List of probabilities [Pee, Pem, Pme, Pmm].

Return type:

np.ndarray

Examples

import numpy as np

import magnus.globaldefs as gd
from magnus import oscprobstd

P = oscprobstd.osc_prob_2nu_vacuum_std(
    np.sqrt(0.308), 7.49e-5, 1.0*gd.UNIT_GEV, 1300.0*gd.UNIT_KM)

print('P_ee = %.6f' % P[0][0])
P_ee = 0.987092
magnus.oscprobstd.osc_prob_2nu_matter_std(sth: float, Dm2: float, VCC: float, energy: float, L: float) numpy.ndarray[source]

Returns 2nu oscillation matter probabilities, std. computation.

Returns the probabilities for two-neutrino oscillations in matter, computed using the standard analytical expression of the probabilities.

Added in version 1.0.0.

Parameters:
  • sth (float) – Sine of the mixing angle \(\theta\).

  • Dm2 (float) – Mass-squared difference \(\Delta m^2\).

  • VCC (float) – Potential due to charged-current interactions of \(\nu_e\) with electrons.

  • energy (float) – Neutrino energy.

  • L (float) – Baseline.

Returns:

List of probabilities [Pee, Pem, Pme, Pmm].

Return type:

np.ndarray

Examples

import numpy as np

import magnus.globaldefs as gd
from magnus import oscprobstd

P = oscprobstd.osc_prob_2nu_matter_std(
    np.sqrt(0.308), 7.49e-5, 1.0e-13, 1.0*gd.UNIT_GEV, 1300.0*gd.UNIT_KM)

print('P_ee in matter = %.6f' % P[0][0])
P_ee in matter = 0.987421
magnus.oscprobstd.delta(a: int, b: int) int[source]

Returns the Kronecker delta function.

Returns the delta function delta(a, b) = 1 if a == b and 0 if a != b.

Added in version 1.0.0.

Parameters:
  • a (int) – First index.

  • b (int) – Second index.

Returns:

delta(a, b).

Return type:

int

magnus.oscprobstd.J(U: list | numpy.ndarray, alpha: int, beta: int, k: int, j: int) complex[source]

Returns U*_ak * U_bk * U_aj * U*_bj, with U the PMNS matrix.

Returns the product U*_ak * U_bk * U_aj * U*_bj, where U is the PMNS mixing matrix. This product appears in the standard expression for the three-neutrino oscillation probability in vacuum.

Added in version 1.0.0.

Parameters:
  • U (list or np.ndarray) – 3x3 PMNS complex mixing matrix.

  • alpha (int) – Index of the initial flavor (0: e, 1: mu, 2: tau).

  • beta (int) – Index of the final flavor (0: e, 1: mu, 2: tau).

  • k (int) – First index of the sum over mass eigenstates (k = 0, 1, 2).

  • j (int) – Second index of the sum over mass eigenstates (j = 0, 1, 2).

Returns:

J(U, alpha, beta, k, j)

Return type:

complex

magnus.oscprobstd.osc_prob_3nu_vacuum_std(U: list | numpy.ndarray, D21: float, D31: float, energy: float, L: float, nubar: bool | None = False) numpy.ndarray[source]

Returns 3nu oscillation vacuum probabilities, std. computation.

Returns the probabilities for three-neutrino oscillations in vacuum, computed using the standard analytical expression of the probabilities.

Added in version 1.0.0.

Parameters:
  • U (list or np.ndarray) – 3x3 PMNS complex mixing matrix.

  • D21 (float) – Mass-squared difference \(\Delta m_{21}^2\).

  • D31 (float) – Mass-squared difference \(\Delta m_{31}^2\).

  • energy (float) – Neutrino energy.

  • L (float) – Baseline.

  • nubar (bool, optional) – If True, compute the probability for antineutrinos (flips the sign of the CP-violating term). Default: False.

Returns:

List of probabilities [Pee, Pem, Pet, Pme, Pmm, Pmt, Pte, Ptm, Ptt].

Return type:

np.ndarray