44 virtual double AvgProb(
int flvi,
int flvf,
double E,
double dE);
48 virtual double AvgProb(
int flvi,
int flvf,
double E,
double cosT,
53 virtual double AvgProb(
int flvi,
int flvf,
double E,
double dE,
54 double cosT,
double dcosT);
58 virtual double AvgProbLoE(
int flvi,
int flvf,
double LoE,
double dLoE);
62 virtual double AvgProbLoE(
int flvi,
int flvf,
double LoE,
double dLoE,
63 double cosT,
double dcosT);
107 double cosT,
double dcosT);
117 virtual void SetCosT(
double cosT);
120 virtual void BuildKE(
double L);
148 template <
typename T>
153 virtual double AvgFormula(
int flvi,
int flvf,
double dbin,
162 virtual double AvgAlgo(
int flvi,
int flvf,
double LoE,
double dLoE,
167 virtual double AvgAlgo(
int flvi,
int flvf,
double InvE,
double dInvE,
168 double cosT,
double dcosT);
172 virtual double AvgAlgoCosT(
int flvi,
int flvf,
double E,
double cosT,
Base class implementing general functions for computing neutrino oscillations.
virtual double AvgProbLoE(vectorC nu_in, int flvf, double LoE, double dLoE=0)
Compute the average probability over a bin of L/E.
virtual double AvgProb(vectorC nu_in, int flvf, double E, double dE=0)
Compute the average probability over a bin of energy.
Implementation of oscillations of neutrinos in matter in a framework with a Taylor expansion.
virtual void HadamardProduct(vectorD lambda, double dbin)
Apply an Hadamard Product to the density matrix.
matrixC fevolutionMatrixS
PMNS_Maltoni(int numNus)
Constructor.
double fcosT
Cosine of zenith angle.
virtual double AvgAlgoCosT(int flvi, int flvf, double E, double cosT, double dcosT)
virtual void MultiplicationRuleS()
Product between two S matrices.
virtual matrixD AvgProbMatrix(int nflvi, int nflvf, double E, double dE)
Eigen::MatrixXcd fHam
The full Hamiltonian.
virtual void rotateK()
Rotate one K matrix.
virtual void SetIsOscProbAvg(bool isOscProbAvg)
Set flag for which averaging to use.
void TemplateSolver(Eigen::MatrixXcd &K, vectorD &lambda, matrixC &V)
Auxiliary function to choose eigensystem method.
virtual void BuildKcosT()
build K matrix for angle in flavor basis
matrixC fKmass
K matrix in mass basis for one layer.
virtual void UpdateHam()=0
Build the full Hamiltonian.
virtual double AvgFormulaExtrapolation(int flvi, int flvf, double dE, vectorD flambda, matrixC fV)
Formula for the extrapolation of probability.
matrixC fVInvE
Eigenvalues of K_invE.
virtual double LnDerivative()
Compute the derivation of one layer's length.
virtual double AlgorithmDensityMatrix(int flvi, int flvf)
Algorithm for the transformations on the density matrix.
Eigen::MatrixXcd fKcosT
K matrix for neutrino angle for the entire path.
virtual double ExtrapolationProb(int flvi, int flvf, double E, double dE)
Compute the probability of flvi going to flvf for an energy E+dE.
vectorD flambdaInvE
Eigenvectors of K_invE.
Eigen::MatrixXcd fKInvE
K matrix for the inverse of energy for the entire path.
virtual void InitializeTaylorsVectors()
Initialize all member vectors with zeros.
OscProb::PremModel fPrem
Earth model used.
int fdl
Length derivative.
virtual void rotateS()
Rotate the S matrix.
virtual void PropagateTaylor()
Propagate neutrino through full path.
virtual matrixD AvgProbMatrixLoE(int nflvi, int nflvf, double LoE, double dLoE)
virtual vectorD AvgProbVector(int flvi, double E, double dE)
virtual void PropagatePathTaylor(NuPath p)
Propagate neutrino through a single path.
virtual double AvgAlgo(int flvi, int flvf, double LoE, double dLoE, double L)
virtual void SetCosT(double cosT)
Set neutrino angle.
virtual vectorD AvgProbVectorLoE(int flvi, double LoE, double dLoE)
double fdInvE
Bin's width for the inverse of energy.
virtual double AvgFormula(int flvi, int flvf, double dbin, vectorD flambda, matrixC fV)
Formula for the average probability over a bin of width dbin.
virtual void SetPremModel(OscProb::PremModel &prem)
virtual void SetwidthBin(double dE, double dcosT)
Set bin's widths for energy and angle.
vectorD flambdaCosT
Eigenvectors of K_cosTheta.
double fdcosT
Bin's width for zenith angle.
virtual double AvgProbLoE(int flvi, int flvf, double LoE, double dLoE)
virtual void RotateDensityM(bool to_basis, matrixC V)
Apply rotation to the density matrix.
bool fIsOscProbAvg
Flag to call OscProb default or Maltoni average.
double fminRsq
Minimum square radius.
matrixC fdensityMatrix
The neutrino density matrix state.
matrixC fVcosT
Eigenvalues of K_cosTheta.
matrixC fSflavor
S matrix for one layer.
virtual vectorD GetSamplePointsAvgClass(double LoE, double dLoE)
Compute the sample points fo a bin of L/E with width dLoE.
virtual double AvgProb(int flvi, int flvf, double E, double dE)
void SolveK(Eigen::MatrixXcd &K, vectorD &lambda, matrixC &V)
Solve the K matrix for eigenvectors and eigenvalues.
virtual double ExtrapolationProbCosT(int flvi, int flvf, double cosT, double dcosT)
Compute the probability of flvi going to flvf for an angle cosT+dcosT.
virtual void BuildKE(double L)
build K matrix for the inverse of energy in mass basis
virtual void MultiplicationRuleK(Eigen::MatrixXcd &K)
Product between two K matrices.
double fDetRadius
Detector radius.
matrixC fKflavor
K matrix in flavor basis for one layer.
virtual double ExtrapolationProbLoE(int flvi, int flvf, double LoE, double dLoE)
Compute the probability of flvi going to flvf at LoE+dLoE.
Implements an earth model with spherical shells.
Some useful general definitions.
std::vector< double > vectorD
std::vector< vectorD > matrixD
std::vector< vectorC > matrixC
A struct representing a neutrino path segment.