8 : fMixIdx(0), fDmIdx(0), fLRIdx(0)
16 for(
int i = 0;
i < 2; ++
i)
18 delete it.second.pmns;
55 for(
int i = 0;
i < 2; ++
i){
62 const int anti = (flavBefore > 0) ? +1 : -1;
63 assert(flavAfter/anti > 0);
69 if(
abs(flavBefore) == 12) i = 0;
70 if(
abs(flavBefore) == 14) i = 1;
71 if(
abs(flavBefore) == 16) i = 2;
72 if(
abs(flavAfter) == 12)
j = 0;
73 if(
abs(flavAfter) == 14)
j = 1;
74 if(
abs(flavAfter) == 16)
j = 2;
93 for(
int ii = 0; ii < 3; ++ii){
94 calc.
pmns->ResetToFlavour(ii);
96 const double Ne = this->
fRho/2;
97 calc.
pmns->PropMatter(this->
fL, E, Ne, anti);
98 for(
int jj = 0; jj < 3; ++jj){
99 calc.
P[ii][jj] = calc.
pmns->P(jj);
Optimized version of PMNS.
Optimized version of OscCalcPMNS.
T P(int flavBefore, int flavAfter, double E) override
E in GeV; flavors as PDG codes (so, neg==>antinu)
_IOscCalcAdjustable< T > * Copy() const override
Oscillation probability calculators.
T P[3][3]
Cache of oscillation probabilities.
General interface to any calculator that lets you set the parameters.
assert(nhit_max >=nhit_nbins)
std::unordered_map< double, Val_t > fPMNSOpt[2]
virtual ~_OscCalcPMNSOpt()
_PMNSOpt< T > * pmns
The calculator itself.