magnus.hamiltonians.hamiltonians5nu

hamiltonians5nu.py

Compute five-neutrino (3+2 sterile) Hamiltonians for selected scenarios.

This module contains the routines to compute the five-neutrino Hamiltonians for the following scenarios: oscillations in vacuum, in matter of constant density, in matter with non-standard interactions (NSI), and in a CPT-odd Lorentz invariance-violating background (LIV).

Routine listings

  • mixing_matrix_5x5 - Returns 5x5 PMNS-like mixing matrix (3+2)

  • hamiltonian_5nu_vacuum_energy_independent - Returns H_vac (no 1/E)

  • hamiltonian_5nu_vacuum_energy_independent_td - Returns H_vac (no

    1/E), as a function of position

  • hamiltonian_5nu_vacuum - Returns H_vac

  • hamiltonian_5nu_vacuum_td - Returns H_vac, as a function of position

  • hamiltonian_5nu_matter - Returns H_matter

  • hamiltonian_5nu_matter_td - Returns H_matter, as a function of position

  • hamiltonian_5nu_nsi - Returns H_NSI

  • hamiltonian_5nu_liv - Returns H_LIV

  • hamiltonian_5nu_liv_energy_independent - Returns H_LIV (no energy

    dependence)

Functions

mixing_matrix_5x5(→ numpy.ndarray)

Returns the 5x5 (3+2 sterile) mixing matrix.

hamiltonian_5nu_vacuum_energy_independent(→ numpy.ndarray)

Returns the five-neutrino (3+2) Hamiltonian for vacuum oscillations.

hamiltonian_5nu_vacuum_energy_independent_td(...)

Returns the five-neutrino Hamiltonian for vacuum oscillations, as a function of distance,

hamiltonian_5nu_vacuum(→ numpy.ndarray)

Returns the five-neutrino Hamiltonian for vacuum oscillations.

hamiltonian_5nu_vacuum_td(→ numpy.ndarray)

Returns the five-neutrino Hamiltonian for vacuum oscillations, as a function of distance,

hamiltonian_5nu_matter(→ numpy.ndarray)

Returns the five-neutrino Hamiltonian for matter oscillations.

hamiltonian_5nu_matter_td(→ numpy.ndarray)

Returns the five-neutrino Hamiltonian for matter oscillations, as a function of distance.

hamiltonian_5nu_nsi(→ numpy.ndarray)

Returns the five-neutrino Hamiltonian for oscillations w/ NSI.

hamiltonian_5nu_liv(→ numpy.ndarray)

Returns the five-neutrino Hamiltonian for oscillations w/ LIV.

hamiltonian_5nu_liv_energy_independent(→ numpy.ndarray)

Returns the five-neutrino Hamiltonian for oscillations w/ LIV.

Module Contents

magnus.hamiltonians.hamiltonians5nu.mixing_matrix_5x5(s12: float, s23: float, s13: float, d13: float, s14: float, d14: float, s15: float, d15: float, s24: float, d24: float, s25: float, s34: float, s35: float, d35: float, compute_matrix_multiplication: bool | None = False, angles: str | None = 'sin') → numpy.ndarray[source]

Returns the 5x5 (3+2 sterile) mixing matrix.

Computes and returns the 5x5 complex mixing matrix for a 3+2 sterile-neutrino scenario, parametrized by the three standard mixing angles (\(\theta_{12}\), \(\theta_{23}\), \(\theta_{13}\)) and CP phase (\(\delta_{13}\)), plus six additional mixing angles (\(\theta_{14}\), \(\theta_{15}\), \(\theta_{24}\), \(\theta_{25}\), \(\theta_{34}\), \(\theta_{35}\)) and three additional CP phases (\(\delta_{14}\), \(\delta_{15}\), \(\delta_{35}\)) coupling the two sterile states. Follows the parametrization \(U = \tilde R_{35} R_{34} R_{25} \tilde R_{24} R_{23} \tilde R_{15} \tilde R_{14} \tilde R_{13} R_{12}\) of Kopp, Machado, Maltoni & Schwetz, arXiv:1103.4570 (see also arXiv:1105.3911).

Added in version 1.0.0.

Parameters:
  • s12 (float) – Mixing angle \(\theta_{12}\), in the convention set by angles (default: its sine).

  • s23 (float) – Mixing angle \(\theta_{23}\), in the convention set by angles (default: its sine).

  • s13 (float) – Mixing angle \(\theta_{13}\), in the convention set by angles (default: its sine).

  • d13 (float) – \(\delta_{13}\) [radian, or degree if angles='deg'].

  • s14 (float) – Mixing angle \(\theta_{14}\), in the convention set by angles (default: its sine).

  • d14 (float) – \(\delta_{14}\) [radian, or degree if angles='deg'].

  • s15 (float) – Mixing angle \(\theta_{15}\), in the convention set by angles (default: its sine).

  • d15 (float) – \(\delta_{15}\) [radian, or degree if angles='deg'].

  • s24 (float) – Mixing angle \(\theta_{24}\), in the convention set by angles (default: its sine).

  • d24 (float) – \(\delta_{24}\) [radian, or degree if angles='deg'].

  • s25 (float) – Mixing angle \(\theta_{25}\), in the convention set by angles (default: its sine).

  • s34 (float) – Mixing angle \(\theta_{34}\), in the convention set by angles (default: its sine).

  • s35 (float) – Mixing angle \(\theta_{35}\), in the convention set by angles (default: its sine).

  • d35 (float) – \(\delta_{35}\) [radian, or degree if angles='deg'].

  • compute_matrix_multiplication (bool, optional) – If False (default), use the pre-computed closed-form expressions for each entry; otherwise, build the matrix by multiplying the nine rotation matrices live. Both paths must (and do, see tests/test_hamiltonians.py) agree to machine precision.

  • angles (str, optional) – How the mixing angles are stated: 'sin' (default) their sines, 'sin2' their sines squared – which is what global fits report – 'rad' the angles themselves in radians, or 'deg' in degrees. Any other value raises. Under 'deg' the CP phases are read as degrees too; under the other three they stay in radians, a sine being no way to state a phase.

Returns:

5x5 mixing matrix.

Return type:

np.ndarray

Examples

import numpy as np

import magnus.globaldefs as gd
from magnus.hamiltonians import hamiltonians5nu

p = gd.OSC_PARAMS_PREDEFINED['OSC_PARAMS_DEFAULT']
U = np.asarray(hamiltonians5nu.mixing_matrix_5x5(
    p['s12'], p['s23'], p['s13'], p['dCP'], 0.15, 0.0, 0.08, 0.0,
    0.10, 0.0, 0.05, 0.0, 0.05, 0.03, 0.0))

print('shape', U.shape)
print('unitary to %.1e' % np.max(np.abs(U.conj().T @ U - np.eye(5))))
shape (5, 5)
unitary to 1.1e-16
magnus.hamiltonians.hamiltonians5nu.hamiltonian_5nu_vacuum_energy_independent(s12: float, s23: float, s13: float, d13: float, s14: float, d14: float, s15: float, d15: float, s24: float, d24: float, s25: float, s34: float, s35: float, d35: float, D21: float, D31: float, D41: float, D51: float, nubar: bool | None = False, compute_matrix_multiplication: bool | None = False, angles: str | None = 'sin') → numpy.ndarray[source]

Returns the five-neutrino (3+2) Hamiltonian for vacuum oscillations.

Computes and returns the 5x5 complex five-neutrino Hamiltonian for oscillations in vacuum, parametrized by the nine 3+2 mixing angles and three CP phases of mixing_matrix_5x5(), and four mass-squared differences (\(\Delta m_{21}^2\), \(\Delta m_{31}^2\), \(\Delta m_{41}^2\), \(\Delta m_{51}^2\)). The Hamiltonian is H = (1/2)*R.M2.R^dagger, with R the 5x5 mixing matrix and M2 the mass matrix. The multiplicative factor 1/E is not applied.

Added in version 1.0.0.

Parameters:
  • s12 (float) – 3+2 mixing angles (sines) and CP phases; see mixing_matrix_5x5().

  • s23 (float) – 3+2 mixing angles (sines) and CP phases; see mixing_matrix_5x5().

  • s13 (float) – 3+2 mixing angles (sines) and CP phases; see mixing_matrix_5x5().

  • d13 (float) – 3+2 mixing angles (sines) and CP phases; see mixing_matrix_5x5().

  • s14 (float) – 3+2 mixing angles (sines) and CP phases; see mixing_matrix_5x5().

  • d14 (float) – 3+2 mixing angles (sines) and CP phases; see mixing_matrix_5x5().

  • s15 (float) – 3+2 mixing angles (sines) and CP phases; see mixing_matrix_5x5().

  • d15 (float) – 3+2 mixing angles (sines) and CP phases; see mixing_matrix_5x5().

  • s24 (float) – 3+2 mixing angles (sines) and CP phases; see mixing_matrix_5x5().

  • d24 (float) – 3+2 mixing angles (sines) and CP phases; see mixing_matrix_5x5().

  • s25 (float) – 3+2 mixing angles (sines) and CP phases; see mixing_matrix_5x5().

  • s34 (float) – 3+2 mixing angles (sines) and CP phases; see mixing_matrix_5x5().

  • s35 (float) – 3+2 mixing angles (sines) and CP phases; see mixing_matrix_5x5().

  • d35 (float) – 3+2 mixing angles (sines) and CP phases; see mixing_matrix_5x5().

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

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

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

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

  • nubar (bool, optional) – If True, compute the Hamiltonian for antineutrinos (conjugates the mixing matrix, equivalent to negating every CP phase). Default: False.

  • compute_matrix_multiplication (bool, optional) – Forwarded to mixing_matrix_5x5(). If False (default), use the pre-computed expressions; otherwise, multiply R.M2.R^dagger live.

  • angles (str, optional) – How the mixing angles are stated: 'sin' (default) their sines, 'sin2' their sines squared – which is what global fits report – 'rad' the angles themselves in radians, or 'deg' in degrees. Any other value raises. Under 'deg' the CP phases are read as degrees too; under the other three they stay in radians, a sine being no way to state a phase.

Returns:

Hamiltonian 5x5 matrix.

Return type:

np.ndarray

magnus.hamiltonians.hamiltonians5nu.hamiltonian_5nu_vacuum_energy_independent_td(l: float, s12: float, s23: float, s13: float, d13: float, s14: float, d14: float, s15: float, d15: float, s24: float, d24: float, s25: float, s34: float, s35: float, d35: float, D21: float, D31: float, D41: float, D51: float, nubar: bool | None = False, compute_matrix_multiplication: bool | None = False, angles: str | None = 'sin') → numpy.ndarray[source]

Returns the five-neutrino Hamiltonian for vacuum oscillations, as a function of distance, even if it does not depend on it.

Same as hamiltonian_5nu_vacuum_energy_independent(), included for interface parity with the other, genuinely position-dependent Hamiltonians.

Added in version 1.0.0.

Parameters:
  • l (float) – Position at which the Hamiltonian is evaluated.

  • s12 (float) – 3+2 mixing angles (sines) and CP phases; see mixing_matrix_5x5().

  • s23 (float) – 3+2 mixing angles (sines) and CP phases; see mixing_matrix_5x5().

  • s13 (float) – 3+2 mixing angles (sines) and CP phases; see mixing_matrix_5x5().

  • d13 (float) – 3+2 mixing angles (sines) and CP phases; see mixing_matrix_5x5().

  • s14 (float) – 3+2 mixing angles (sines) and CP phases; see mixing_matrix_5x5().

  • d14 (float) – 3+2 mixing angles (sines) and CP phases; see mixing_matrix_5x5().

  • s15 (float) – 3+2 mixing angles (sines) and CP phases; see mixing_matrix_5x5().

  • d15 (float) – 3+2 mixing angles (sines) and CP phases; see mixing_matrix_5x5().

  • s24 (float) – 3+2 mixing angles (sines) and CP phases; see mixing_matrix_5x5().

  • d24 (float) – 3+2 mixing angles (sines) and CP phases; see mixing_matrix_5x5().

  • s25 (float) – 3+2 mixing angles (sines) and CP phases; see mixing_matrix_5x5().

  • s34 (float) – 3+2 mixing angles (sines) and CP phases; see mixing_matrix_5x5().

  • s35 (float) – 3+2 mixing angles (sines) and CP phases; see mixing_matrix_5x5().

  • d35 (float) – 3+2 mixing angles (sines) and CP phases; see mixing_matrix_5x5().

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

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

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

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

  • nubar (bool, optional) – If True, compute the Hamiltonian for antineutrinos. Default: False.

  • compute_matrix_multiplication (bool, optional) – Forwarded to mixing_matrix_5x5().

  • angles (str, optional) – How the mixing angles are stated: 'sin' (default) their sines, 'sin2' their sines squared – which is what global fits report – 'rad' the angles themselves in radians, or 'deg' in degrees. Any other value raises. Under 'deg' the CP phases are read as degrees too; under the other three they stay in radians, a sine being no way to state a phase.

Returns:

Hamiltonian 5x5 matrix.

Return type:

np.ndarray

magnus.hamiltonians.hamiltonians5nu.hamiltonian_5nu_vacuum(energy: float, s12: float, s23: float, s13: float, d13: float, s14: float, d14: float, s15: float, d15: float, s24: float, d24: float, s25: float, s34: float, s35: float, d35: float, D21: float, D31: float, D41: float, D51: float, nubar: bool | None = False, compute_matrix_multiplication: bool | None = False, angles: str | None = 'sin') → numpy.ndarray[source]

Returns the five-neutrino Hamiltonian for vacuum oscillations.

Same as hamiltonian_5nu_vacuum_energy_independent(), but with the 1/E factor applied.

Added in version 1.0.0.

Parameters:
  • energy (float) – Neutrino energy.

  • s12 (float) – 3+2 mixing angles (sines) and CP phases; see mixing_matrix_5x5().

  • s23 (float) – 3+2 mixing angles (sines) and CP phases; see mixing_matrix_5x5().

  • s13 (float) – 3+2 mixing angles (sines) and CP phases; see mixing_matrix_5x5().

  • d13 (float) – 3+2 mixing angles (sines) and CP phases; see mixing_matrix_5x5().

  • s14 (float) – 3+2 mixing angles (sines) and CP phases; see mixing_matrix_5x5().

  • d14 (float) – 3+2 mixing angles (sines) and CP phases; see mixing_matrix_5x5().

  • s15 (float) – 3+2 mixing angles (sines) and CP phases; see mixing_matrix_5x5().

  • d15 (float) – 3+2 mixing angles (sines) and CP phases; see mixing_matrix_5x5().

  • s24 (float) – 3+2 mixing angles (sines) and CP phases; see mixing_matrix_5x5().

  • d24 (float) – 3+2 mixing angles (sines) and CP phases; see mixing_matrix_5x5().

  • s25 (float) – 3+2 mixing angles (sines) and CP phases; see mixing_matrix_5x5().

  • s34 (float) – 3+2 mixing angles (sines) and CP phases; see mixing_matrix_5x5().

  • s35 (float) – 3+2 mixing angles (sines) and CP phases; see mixing_matrix_5x5().

  • d35 (float) – 3+2 mixing angles (sines) and CP phases; see mixing_matrix_5x5().

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

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

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

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

  • nubar (bool, optional) – If True, compute the Hamiltonian for antineutrinos. Default: False.

  • compute_matrix_multiplication (bool, optional) – Forwarded to mixing_matrix_5x5().

  • angles (str, optional) – How the mixing angles are stated: 'sin' (default) their sines, 'sin2' their sines squared – which is what global fits report – 'rad' the angles themselves in radians, or 'deg' in degrees. Any other value raises. Under 'deg' the CP phases are read as degrees too; under the other three they stay in radians, a sine being no way to state a phase.

Returns:

Hamiltonian 5x5 matrix.

Return type:

np.ndarray

magnus.hamiltonians.hamiltonians5nu.hamiltonian_5nu_vacuum_td(l: float, energy: float, s12: float, s23: float, s13: float, d13: float, s14: float, d14: float, s15: float, d15: float, s24: float, d24: float, s25: float, s34: float, s35: float, d35: float, D21: float, D31: float, D41: float, D51: float, nubar: bool | None = False, compute_matrix_multiplication: bool | None = False, angles: str | None = 'sin') → numpy.ndarray[source]

Returns the five-neutrino Hamiltonian for vacuum oscillations, as a function of distance, even if it does not depend on it.

Same as hamiltonian_5nu_vacuum(), included for interface parity with the other, genuinely position-dependent Hamiltonians.

Added in version 1.0.0.

Parameters:
  • l (float) – Position at which the Hamiltonian is evaluated.

  • energy (float) – Neutrino energy.

  • s12 (float) – 3+2 mixing angles (sines) and CP phases; see mixing_matrix_5x5().

  • s23 (float) – 3+2 mixing angles (sines) and CP phases; see mixing_matrix_5x5().

  • s13 (float) – 3+2 mixing angles (sines) and CP phases; see mixing_matrix_5x5().

  • d13 (float) – 3+2 mixing angles (sines) and CP phases; see mixing_matrix_5x5().

  • s14 (float) – 3+2 mixing angles (sines) and CP phases; see mixing_matrix_5x5().

  • d14 (float) – 3+2 mixing angles (sines) and CP phases; see mixing_matrix_5x5().

  • s15 (float) – 3+2 mixing angles (sines) and CP phases; see mixing_matrix_5x5().

  • d15 (float) – 3+2 mixing angles (sines) and CP phases; see mixing_matrix_5x5().

  • s24 (float) – 3+2 mixing angles (sines) and CP phases; see mixing_matrix_5x5().

  • d24 (float) – 3+2 mixing angles (sines) and CP phases; see mixing_matrix_5x5().

  • s25 (float) – 3+2 mixing angles (sines) and CP phases; see mixing_matrix_5x5().

  • s34 (float) – 3+2 mixing angles (sines) and CP phases; see mixing_matrix_5x5().

  • s35 (float) – 3+2 mixing angles (sines) and CP phases; see mixing_matrix_5x5().

  • d35 (float) – 3+2 mixing angles (sines) and CP phases; see mixing_matrix_5x5().

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

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

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

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

  • nubar (bool, optional) – If True, compute the Hamiltonian for antineutrinos. Default: False.

  • compute_matrix_multiplication (bool, optional) – Forwarded to mixing_matrix_5x5().

  • angles (str, optional) – How the mixing angles are stated: 'sin' (default) their sines, 'sin2' their sines squared – which is what global fits report – 'rad' the angles themselves in radians, or 'deg' in degrees. Any other value raises. Under 'deg' the CP phases are read as degrees too; under the other three they stay in radians, a sine being no way to state a phase.

Returns:

Hamiltonian 5x5 matrix.

Return type:

np.ndarray

magnus.hamiltonians.hamiltonians5nu.hamiltonian_5nu_matter(VCC: float, ratio_number_neutrons_to_protons: int | float | None = 1.0) → numpy.ndarray[source]

Returns the five-neutrino Hamiltonian for matter oscillations.

Computes and returns the 5x5 real five-neutrino Hamiltonian for oscillations in matter with constant density.

Added in version 1.0.0.

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

  • ratio_number_neutrons_to_protons (int or float, optional) – \(r = n_n/n_p\) of the medium, which sets the sterile states’ entry via \(-V_{\rm NC} = (r/2) V_{\rm CC}\). Must match the value given to magnus.matter.vcc_func_from_rho_func(). Default: 1.0 (isoscalar matter).

Returns:

Hamiltonian 5x5 matrix.

Return type:

np.ndarray

Examples

import numpy as np

from magnus.hamiltonians import hamiltonians5nu

print(np.asarray(hamiltonians5nu.hamiltonian_5nu_matter(1.0e-13)))
[[1.e-13 0.e+00 0.e+00 0.e+00 0.e+00]
 [0.e+00 0.e+00 0.e+00 0.e+00 0.e+00]
 [0.e+00 0.e+00 0.e+00 0.e+00 0.e+00]
 [0.e+00 0.e+00 0.e+00 5.e-14 0.e+00]
 [0.e+00 0.e+00 0.e+00 0.e+00 5.e-14]]
magnus.hamiltonians.hamiltonians5nu.hamiltonian_5nu_matter_td(l: float, VCC_func: Callable) → numpy.ndarray[source]

Returns the five-neutrino Hamiltonian for matter oscillations, as a function of distance.

Computes and returns the 5x5 real five-neutrino Hamiltonian for oscillations in matter with a given density as a function of position.

Added in version 1.0.0.

Parameters:
  • l (float) – Position at which the Hamiltonian is evaluated.

  • VCC_func (Callable) – Potential due to charged-current interactions of nu_e with electrons, as a function of position, l.

Returns:

Hamiltonian 5x5 matrix.

Return type:

np.ndarray

magnus.hamiltonians.hamiltonians5nu.hamiltonian_5nu_nsi(VCC: float, eps_ee: float, eps_em: complex, eps_et: complex, eps_es1: complex, eps_es2: complex, eps_mm: float, eps_mt: complex, eps_ms1: complex, eps_ms2: complex, eps_tt: float, eps_ts1: complex, eps_ts2: complex, eps_s1s1: float, eps_s1s2: complex, eps_s2s2: float) → numpy.ndarray[source]

Returns the five-neutrino Hamiltonian for oscillations w/ NSI.

Computes and returns the 5x5 complex five-neutrino Hamiltonian for oscillations with non-standard interactions (NSI) in matter with constant density. The ‘s1’/’s2’ subscripts denote the two sterile flavors.

Added in version 1.0.0.

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

  • eps_ee (float) – Diagonal NSI coupling of nu_e.

  • eps_em (complex) – Flavor-off-diagonal (nu_e-nu_mu) NSI coupling.

  • eps_et (complex) – Flavor-off-diagonal (nu_e-nu_tau) NSI coupling.

  • eps_es1 (complex) – Flavor-off-diagonal (nu_e-nu_s1) NSI coupling.

  • eps_es2 (complex) – Flavor-off-diagonal (nu_e-nu_s2) NSI coupling.

  • eps_mm (float) – Diagonal NSI coupling of nu_mu.

  • eps_mt (complex) – Flavor-off-diagonal (nu_mu-nu_tau) NSI coupling.

  • eps_ms1 (complex) – Flavor-off-diagonal (nu_mu-nu_s1) NSI coupling.

  • eps_ms2 (complex) – Flavor-off-diagonal (nu_mu-nu_s2) NSI coupling.

  • eps_tt (float) – Diagonal NSI coupling of nu_tau.

  • eps_ts1 (complex) – Flavor-off-diagonal (nu_tau-nu_s1) NSI coupling.

  • eps_ts2 (complex) – Flavor-off-diagonal (nu_tau-nu_s2) NSI coupling.

  • eps_s1s1 (float) – Diagonal NSI coupling of nu_s1.

  • eps_s1s2 (complex) – Flavor-off-diagonal (nu_s1-nu_s2) NSI coupling.

  • eps_s2s2 (float) – Diagonal NSI coupling of nu_s2.

Returns:

Hamiltonian 5x5 matrix.

Return type:

np.ndarray

magnus.hamiltonians.hamiltonians5nu.hamiltonian_5nu_liv(energy: float, sxi12: float, sxi23: float, sxi13: float, dxi13: float, sxi14: float, dxi14: float, sxi15: float, dxi15: float, sxi24: float, dxi24: float, sxi25: float, sxi34: float, sxi35: float, dxi35: float, b1: float, b2: float, b3: float, b4: float, b5: float, Lambda: float, n_liv: int, nubar: bool | None = False, compute_matrix_multiplication: bool | None = False, angles: str | None = 'sin') → numpy.ndarray[source]

Returns the five-neutrino Hamiltonian for oscillations w/ LIV.

Computes and returns the 5x5 complex five-neutrino Hamiltonian for oscillations in a CPT-odd Lorentz invariance-violating background. Same as hamiltonian_5nu_liv_energy_independent(), but with the \(E^{n_{\rm liv}}\) energy dependence of the LIV operator applied.

Added in version 1.0.0.

Parameters:
  • energy (float) – Neutrino energy.

  • sxi12 (float) – Sines of the mixing angles between the space of the eigenvectors of the LIV operator B5 and the flavor states, parametrized as in mixing_matrix_5x5().

  • sxi23 (float) – Sines of the mixing angles between the space of the eigenvectors of the LIV operator B5 and the flavor states, parametrized as in mixing_matrix_5x5().

  • sxi13 (float) – Sines of the mixing angles between the space of the eigenvectors of the LIV operator B5 and the flavor states, parametrized as in mixing_matrix_5x5().

  • sxi14 (float) – Sines of the mixing angles between the space of the eigenvectors of the LIV operator B5 and the flavor states, parametrized as in mixing_matrix_5x5().

  • sxi15 (float) – Sines of the mixing angles between the space of the eigenvectors of the LIV operator B5 and the flavor states, parametrized as in mixing_matrix_5x5().

  • sxi24 (float) – Sines of the mixing angles between the space of the eigenvectors of the LIV operator B5 and the flavor states, parametrized as in mixing_matrix_5x5().

  • sxi25 (float) – Sines of the mixing angles between the space of the eigenvectors of the LIV operator B5 and the flavor states, parametrized as in mixing_matrix_5x5().

  • sxi34 (float) – Sines of the mixing angles between the space of the eigenvectors of the LIV operator B5 and the flavor states, parametrized as in mixing_matrix_5x5().

  • sxi35 (float) – Sines of the mixing angles between the space of the eigenvectors of the LIV operator B5 and the flavor states, parametrized as in mixing_matrix_5x5().

  • dxi13 (float) – CP-violation phases of the LIV operator B5 [radian].

  • dxi14 (float) – CP-violation phases of the LIV operator B5 [radian].

  • dxi15 (float) – CP-violation phases of the LIV operator B5 [radian].

  • dxi24 (float) – CP-violation phases of the LIV operator B5 [radian].

  • dxi35 (float) – CP-violation phases of the LIV operator B5 [radian].

  • b1 (float) – Eigenvalue b1 of the LIV operator B5.

  • b2 (float) – Eigenvalue b2 of the LIV operator B5.

  • b3 (float) – Eigenvalue b3 of the LIV operator B5.

  • b4 (float) – Eigenvalue b4 of the LIV operator B5.

  • b5 (float) – Eigenvalue b5 of the LIV operator B5.

  • Lambda (float) – Energy scale of the LIV operator B5.

  • n_liv (int) – Power of the energy dependence of the LIV operator (dimension of the operator minus 3).

  • nubar (bool, optional) – If True, compute the Hamiltonian for antineutrinos (conjugates the LIV mixing matrix). Default: False.

  • compute_matrix_multiplication (bool, optional) – Forwarded to mixing_matrix_5x5().

  • angles (str, optional) – How the mixing angles are stated: 'sin' (default) their sines, 'sin2' their sines squared – which is what global fits report – 'rad' the angles themselves in radians, or 'deg' in degrees. Any other value raises. Under 'deg' the CP phases are read as degrees too; under the other three they stay in radians, a sine being no way to state a phase.

Returns:

Hamiltonian 5x5 matrix.

Return type:

np.ndarray

magnus.hamiltonians.hamiltonians5nu.hamiltonian_5nu_liv_energy_independent(sxi12: float, sxi23: float, sxi13: float, dxi13: float, sxi14: float, dxi14: float, sxi15: float, dxi15: float, sxi24: float, dxi24: float, sxi25: float, sxi34: float, sxi35: float, dxi35: float, b1: float, b2: float, b3: float, b4: float, b5: float, Lambda: float, n_liv: int, nubar: bool | None = False, compute_matrix_multiplication: bool | None = False, angles: str | None = 'sin') → numpy.ndarray[source]

Returns the five-neutrino Hamiltonian for oscillations w/ LIV.

Computes and returns the 5x5 complex five-neutrino Hamiltonian for oscillations in a CPT-odd Lorentz invariance-violating background, without the energy-dependent prefactor.

Added in version 1.0.0.

Parameters:
  • sxi12 (float) – Sines of the mixing angles between the space of the eigenvectors of the LIV operator B5 and the flavor states, parametrized as in mixing_matrix_5x5().

  • sxi23 (float) – Sines of the mixing angles between the space of the eigenvectors of the LIV operator B5 and the flavor states, parametrized as in mixing_matrix_5x5().

  • sxi13 (float) – Sines of the mixing angles between the space of the eigenvectors of the LIV operator B5 and the flavor states, parametrized as in mixing_matrix_5x5().

  • sxi14 (float) – Sines of the mixing angles between the space of the eigenvectors of the LIV operator B5 and the flavor states, parametrized as in mixing_matrix_5x5().

  • sxi15 (float) – Sines of the mixing angles between the space of the eigenvectors of the LIV operator B5 and the flavor states, parametrized as in mixing_matrix_5x5().

  • sxi24 (float) – Sines of the mixing angles between the space of the eigenvectors of the LIV operator B5 and the flavor states, parametrized as in mixing_matrix_5x5().

  • sxi25 (float) – Sines of the mixing angles between the space of the eigenvectors of the LIV operator B5 and the flavor states, parametrized as in mixing_matrix_5x5().

  • sxi34 (float) – Sines of the mixing angles between the space of the eigenvectors of the LIV operator B5 and the flavor states, parametrized as in mixing_matrix_5x5().

  • sxi35 (float) – Sines of the mixing angles between the space of the eigenvectors of the LIV operator B5 and the flavor states, parametrized as in mixing_matrix_5x5().

  • dxi13 (float) – CP-violation phases of the LIV operator B5 [radian].

  • dxi14 (float) – CP-violation phases of the LIV operator B5 [radian].

  • dxi15 (float) – CP-violation phases of the LIV operator B5 [radian].

  • dxi24 (float) – CP-violation phases of the LIV operator B5 [radian].

  • dxi35 (float) – CP-violation phases of the LIV operator B5 [radian].

  • b1 (float) – Eigenvalue b1 of the LIV operator B5.

  • b2 (float) – Eigenvalue b2 of the LIV operator B5.

  • b3 (float) – Eigenvalue b3 of the LIV operator B5.

  • b4 (float) – Eigenvalue b4 of the LIV operator B5.

  • b5 (float) – Eigenvalue b5 of the LIV operator B5.

  • Lambda (float) – Energy scale of the LIV operator B5.

  • n_liv (int) – Power of the energy dependence of the LIV operator; enters through the \(\Lambda^{-n_{\rm liv}}\) normalization of the eigenvalues.

  • nubar (bool, optional) – If True, compute the Hamiltonian for antineutrinos (conjugates the LIV mixing matrix). Default: False.

  • compute_matrix_multiplication (bool, optional) – Forwarded to mixing_matrix_5x5().

  • angles (str, optional) – How the mixing angles are stated: 'sin' (default) their sines, 'sin2' their sines squared – which is what global fits report – 'rad' the angles themselves in radians, or 'deg' in degrees. Any other value raises. Under 'deg' the CP phases are read as degrees too; under the other three they stay in radians, a sine being no way to state a phase.

Returns:

Hamiltonian 5x5 matrix.

Return type:

np.ndarray