49 double kr2GNe =
kK2 * M_SQRT2 *
kGf;
108 for (
int i = 0; i <
fNumNus; i++) {
109 if (dm < fabs(
fDm[i])) dm = fabs(
fDm[i]);
113 int nsplit = sqrt(0.065 * dm *
fVL /
fPrec);
121 for (
int i = 0; i < nsplit; i++) {
bool fIsNuBar
Anti-neutrino flag.
vectorC fNuState
The neutrino current state.
int fNumNus
Number of neutrino flavours.
double fEnergy
Neutrino energy.
static const double kK2
mol/GeV^2/cm^3 to eV
static const double kKm2eV
km to eV^-1
virtual void PropagatePath(NuPath p)
Propagate neutrino through a single path.
bool fGotES
Tag to avoid recalculating eigensystem.
static const double kGf
G_F in units of GeV^-2.
vectorD fEval
Eigenvalues of the Hamiltonian.
bool fBuiltHms
Tag to avoid rebuilding Hms.
vectorD fDm
m^2_i - m^2_1 in vacuum
static const double kGeV2eV
GeV to eV.
Implementation of oscillations of neutrinos in matter in a three-neutrino framework.
virtual void SetVacuumEigensystem()
Set the eigensystem to the analytic solution of the vacuum Hamiltonian.
virtual void SolveHam()
Just use the vacuum to start.
complexD fExpVL
Matter phase shift.
virtual void PropMatter()
Propagate through matter part.
virtual ~PMNS_Iter()
Destructor.
virtual void SetExpVL(NuPath p)
Set the matter propagation term.
double fPrec
Iterative precision.
virtual void PropagatePath(NuPath p)
Reimplement propagation.
double fVL
Matter potential.
virtual void SetIsNuBar(bool isNuBar)
Set the anti-neutrino flag.
virtual void SetPrec(double prec)
Set the iterative precision.
Some useful general definitions.
std::complex< double > complexD
A struct representing a neutrino path segment.
double density
The density of the path segment in g/cm^3.
double length
The length of the path segment in km.
double zoa
The effective Z/A value of the path segment.