File barger-propagator.hpp๏ƒ

namespace nuTens
namespace testing๏ƒ
template<typename T = float>
class ThreeFlavourBarger

Unnamed Group

inline ThreeFlavourBarger &setMass1(T mass1)

set the parameters of this propagator

inline ThreeFlavourBarger &setMass2(T mass2)
inline ThreeFlavourBarger &setMass3(T mass3)
inline ThreeFlavourBarger &setTheta12(T theta12)
inline ThreeFlavourBarger &setTheta13(T theta13)
inline ThreeFlavourBarger &setTheta23(T theta23)
inline ThreeFlavourBarger &setDeltaCP(T deltaCP)
inline ThreeFlavourBarger &setBaseline(T baseline)
inline ThreeFlavourBarger &setDensity(T density)

negative density values will be interpreted as propagating in vacuum

inline ThreeFlavourBarger &setAntiNeutrino(bool antiNeutrino)

Public Functions

inline const std::array<std::array<std::complex<T>, 3>, 3> &calculatePMNS()

Update the internal PMNS matrix and return it.

inline T calculateAlpha(T energy) const

calculate the alpha factor used in the eigenvalue computation

inline T calculateBeta(T energy) const

calculate the beta factor used in the eigenvalue computation

inline T calculateGamma(T energy) const

calculate the gamma factor used in the eigenvalue computation

inline T calculateEffectiveM2(T energy, int index) const

calculate effective M^2 values (eigenvalues of the hamiltonian) due to matter effects

Parameters:
  • energy โ€“ The neutrino energy

  • index โ€“ The index of the eigenvalue. should be [0-2]

inline std::complex<T> getHamiltonianElement(T energy, int idx1, int idx2) const

Calculate an element of the hamiltonian.

Parameters:
  • energy โ€“ The neutrino energy

  • idx1 โ€“ Row

  • idx2 โ€“ Column

Returns:

Matrix element

inline std::complex<T> getTransitionMatrixElement(T energy, int idx1, int idx2) const

Calculate an element of the โ€œXโ€ transition matrix matrix (equation 11 in Barger et al)

Parameters:
  • energy โ€“ The neutrino energy

  • idx1 โ€“ Row

  • idx2 โ€“ Column

Returns:

Matrix element

inline T calculateProb(T energy, int alpha, int beta) const

calculate oscillation probability from flavour alpha to flavour beta

Parameters:
  • energy โ€“ neutrino energy

  • alpha โ€“ initial flavour index

  • beta โ€“ final flavour index

Returns:

oscillation probability

Private Members

T _mass1 = NAN๏ƒ
T _mass2 = NAN๏ƒ
T _mass3 = NAN๏ƒ
T _theta12 = NAN๏ƒ
T _theta13 = NAN๏ƒ
T _theta23 = NAN๏ƒ
T _deltaCP = NAN๏ƒ
T _baseline = NAN๏ƒ
T _density = NAN๏ƒ
bool _antiNeutrino = false๏ƒ
std::array<std::array<std::complex<T>, 3>, 3> pmnsMatrix = {{{0.0, 0.0, 0.0}, {0.0, 0.0, 0.0}, {0.0, 0.0, 0.0}}}๏ƒ
std::array<T, 3> masses = {{0.0, 0.0, 0.0}}๏ƒ
template<typename T = float>
class TwoFlavourBarger

Unnamed Group

inline TwoFlavourBarger &setMass1(T mass1)

Set parameters of the propagator.

inline TwoFlavourBarger &setMass2(T mass2)
inline TwoFlavourBarger &setTheta(T theta)
inline TwoFlavourBarger &setBaseline(T baseline)
inline TwoFlavourBarger &setDensity(T density)
inline TwoFlavourBarger &setAntiNeutrino(bool antiNeutrino)

Public Functions

inline T lVac(T energy) const
inline T lMatter() const
inline T calculateEffectiveAngle(T energy) const
inline T calculateEffectiveDm2(T energy) const
inline T getPMNSelement(T energy, int alpha, int beta) const
inline T calculateProb(T energy, int alpha, int beta) const

Private Members

T _mass1 = NAN๏ƒ
T _mass2 = NAN๏ƒ
T _theta = NAN๏ƒ
T _lv = NAN๏ƒ
T _lm = NAN๏ƒ
T _baseline = NAN๏ƒ
T _density = NAN๏ƒ
bool _antiNeutrino = false๏ƒ