1 #ifndef IOSCCALCULATOR_H 2 #define IOSCCALCULATOR_H 28 virtual T P(
int flavBefore,
int flavAfter,
double E) = 0;
31 virtual Eigen::Array<T, Eigen::Dynamic, 1>
P(
int flavBefore,
int flavAfter,
const std::vector<double>& E);
34 virtual Eigen::Array<T, Eigen::Dynamic, 1>
P(
int flavBefore,
int flavAfter,
const Eigen::ArrayXd& E);
51 virtual T P(
int from,
int to,
double )
override 53 if(from == to || to == 0)
return 1;
61 const char* txt =
"NoOscillations";
62 ret->Update((
unsigned char*)txt, strlen(txt));
79 virtual void SetL (
double L ) = 0;
80 virtual void SetRho (
double rho ) = 0;
81 virtual void SetDmsq21(
const T& dmsq21) = 0;
82 virtual void SetDmsq32(
const T&
dmsq32) = 0;
83 virtual void SetTh12 (
const T&
th12 ) = 0;
84 virtual void SetTh13 (
const T&
th13 ) = 0;
85 virtual void SetTh23 (
const T&
th23 ) = 0;
86 virtual void SetdCP (
const T&
dCP ) = 0;
88 virtual double GetL ()
const {
return fL ; }
89 virtual double GetRho ()
const {
return fRho ; }
95 virtual T GetdCP ()
const {
return fdCP ; }
109 TMD5* GetParamsHashDefault(
const std::string& txt)
const;
125 template <
typename T,
typename U>
Pass neutrinos through unchanged.
_IOscCalcAdjustable< double > IOscCalcAdjustable
General interface to oscillation calculators.
virtual double GetL() const
virtual T GetTh23() const
_IOscCalc< double > IOscCalc
_NoOscillations< double > NoOscillations
virtual T P(int from, int to, double) override
E in GeV; flavors as PDG codes (so, neg==>antinu)
static constexpr double L
void CopyParams(const osc::_IOscCalcAdjustable< T > *inCalc, osc::_IOscCalcAdjustable< U > *outCalc)
Copy parameters from one calculator to another, irrespective of their type.
virtual _IOscCalc< T > * Copy() const override
void SetRho(const float &r)
virtual T GetDmsq32() const
virtual T GetTh12() const
virtual void InvalidateCache()
Invalidate any caching used internally by the calculator.
Oscillation probability calculators.
virtual TMD5 * GetParamsHash() const
Use to check two calculators are in the same state.
virtual _IOscCalc * Copy() const =0
virtual T GetTh13() const
virtual T P(int flavBefore, int flavAfter, double E)=0
E in GeV; flavors as PDG codes (so, neg==>antinu)
virtual T GetDmsq21() const
General interface to any calculator that lets you set the parameters.
virtual double GetRho() const
virtual TMD5 * GetParamsHash() const override
Always compare equal to self.