4#include "../tutorial/SetNiceStyle.C"
24 p->
SetDm(3, 2.507e-3);
26 p->
SetAngle(1,3, asin(sqrt(0.02225)));
28 p->
SetDelta(1,3, 232 * TMath::DegToRad());
150 p->
SetaT(0,0, 0.1e-22, 0);
151 p->
SetaT(0,1, 0.2e-22, 0);
152 p->
SetaT(0,2, 0.3e-22, 0);
153 p->
SetaT(1,1, 0.4e-22, 0);
154 p->
SetaT(1,2, 0.5e-22, 0);
155 p->
SetaT(2,2, 0.6e-22, 0);
156 p->
SetcT(0,0, 0.1e-22, 0);
157 p->
SetcT(0,1, 0.2e-22, 0);
158 p->
SetcT(0,2, 0.3e-22, 0);
159 p->
SetcT(1,1, 0.4e-22, 0);
160 p->
SetcT(1,2, 0.5e-22, 0);
161 p->
SetcT(2,2, 0.6e-22, 0);
198 if(model ==
"Iter")
return GetIter(is_nominal);
199 if(model ==
"Deco")
return GetDeco(is_nominal);
200 if(model ==
"Sterile")
return GetSterile(is_nominal);
201 if(model ==
"Decay")
return GetDecay(is_nominal);
202 if(model ==
"NSI")
return GetNSI(is_nominal);
203 if(model ==
"LIV")
return GetLIV(is_nominal);
204 if(model ==
"SNSI")
return GetSNSI(is_nominal);
205 if(model ==
"NUNM")
return GetNUNM(is_nominal);
206 if(model ==
"OQS")
return GetOQS(is_nominal);
207 if(model ==
"Avg")
return GetAvg(is_nominal);
216 return {
"Fast",
"Iter",
"Sterile",
"NSI",
217 "Deco",
"Decay",
"LIV",
"SNSI",
218 "NUNM",
"OQS",
"Avg"};
237 vector<double> xbins = GetLogAxis(nbins, 0.1, 10);
240 TFile* f =
new TFile(
"data/"+filename,
"recreate");
242 for(
int flvi=0; flvi<3; flvi++){
243 for(
int flvf=0; flvf<3; flvf++){
244 for(
int isnb=0; isnb<2; isnb++){
246 TString hname = TString::Format(
"h%d%d%d",flvi,flvf,isnb);
247 h =
new TH1D(hname,
"", nbins, &xbins[0]);
248 for(
int i=1; i<=nbins; i++){
249 double energy = h->GetBinCenter(i);
250 double dE = h->GetBinWidth(i);
251 h->SetBinContent(i, p->
AvgProb(flvi, flvf, energy, dE));
258 cout <<
"Saved new test file: data/" + filename << endl;
267 TFile* f = TFile::Open(
"data/"+filename,
"read");
270 printf((
Color::FAILED +
" data/%s not found\n").c_str(), filename.Data());
281 for(
int flvi=0; flvi<3; flvi++){
282 for(
int flvf=0; flvf<3; flvf++){
283 for(
int isnb=0; isnb<2; isnb++){
285 TString hname = TString::Format(
"h%d%d%d",flvi,flvf,isnb);
286 h0 = (TH1D*)f->Get(hname);
287 h = (TH1D*)h0->Clone();
289 for(
int i=1; i<=h0->GetNbinsX(); i++){
290 double energy = h->GetBinCenter(i);
291 double dE = h->GetBinWidth(i);
292 double p0 = h0->GetBinContent(i);
293 double p1 = p->
AvgProb(flvi, flvf, energy, dE);
295 if(abs(p0-p1)>1e-12){
299 h->SetBinContent(i, p1);
307 TString nu_lab = isnb ?
"#bar{#nu}" :
"#nu";
308 TString flv_lab[3] = {
"e",
"#mu",
"#tau"};
309 TString ylab =
"P(" + nu_lab +
"_{" + flv_lab[flvi] +
310 "}#rightarrow" + nu_lab +
"_{" + flv_lab[flvf] +
"})";
311 h0->SetTitle(
";Energy [GeV];"+ylab+
";");
313 double ymax = max(h->GetMaximum(),
315 double ymin = min(h->GetMinimum(),
317 h0->GetYaxis()->SetRangeUser(ymin, ymax);
318 h0->DrawCopy(
"hist");
319 h->DrawCopy(
"hist same");
323 h->SetTitle(
";Energy [GeV];#Delta"+ylab+
";");
329 MiscText(0.55,0.8,0.1,filename,kGray,1);
331 TString pngfile = filename;
332 pngfile.ReplaceAll(
".root",
".png");
333 c1->SaveAs(
"plots/Failed_"+hname+
"_"+pngfile);
341 printf((
Color::FAILED +
" Found %d differences in %d tests (%.3g%%) in %s\n").c_str(),
342 fails, ntests, 100.*fails/ntests, filename.Data());
345 cout <<
Color::PASSED <<
" No differences found in " << filename << endl;
OscProb::PMNS_NUNM * GetNUNM(bool is_nominal)
OscProb::PMNS_LIV * GetLIV(bool is_nominal)
OscProb::PMNS_Fast * GetFast(bool is_nominal)
OscProb::PMNS_Deco * GetDeco(bool is_nominal)
OscProb::PMNS_Sterile * GetSterile(bool is_nominal)
vector< string > GetListOfModels()
void SetNominalPars(OscProb::PMNS_Base *p)
OscProb::PMNS_Iter * GetIter(bool is_nominal)
OscProb::PMNS_NSI * GetNSI(bool is_nominal)
OscProb::PMNS_Base * GetModel(string model, bool is_nominal=false)
void SetTestPath(OscProb::PMNS_Base *p)
OscProb::PMNS_Decay * GetDecay(bool is_nominal)
void SaveTestFile(OscProb::PMNS_Base *p, TString filename)
OscProb::PMNS_SNSI * GetSNSI(bool is_nominal)
OscProb::PMNS_OQS * GetOQS(bool is_nominal)
int CheckProb(OscProb::PMNS_Base *p, TString filename)
OscProb::PMNS_Avg * GetAvg(bool is_nominal)
Implementation of oscillations of neutrinos in matter in a three-neutrino framework with a first orde...
Base class implementing general functions for computing neutrino oscillations.
virtual void SetDm(int j, double dm)
Set the mass-splitting dm_j1 in eV^2.
virtual void SetDelta(int i, int j, double delta)
Set the CP phase delta_ij.
virtual void SetIsNuBar(bool isNuBar)
Set the anti-neutrino flag.
virtual double AvgProb(vectorC nu_in, int flvf, double E, double dE=0)
Compute the average probability over a bin of energy.
virtual void AddPath(NuPath p)
Add a path to the sequence.
virtual void SetPath(NuPath p)
Set a single path.
virtual void SetAngle(int i, int j, double th)
Set the mixing angle theta_ij.
Implementation of neutrino decay in a three-neutrino framework.
virtual void SetAlpha3(double alpha3)
Implementation of oscillations of neutrinos in matter in a three-neutrino framework with decoherence.
virtual void SetGamma(int j, double val)
Set any given decoherence parameter.
Implementation of oscillations of neutrinos in matter in a three-neutrino framework.
Implementation of oscillations of neutrinos in matter in a three-neutrino framework.
Implements oscillations with LIV as modelled by SME.
virtual void SetaT(int flvi, int flvj, int dim, double val, double phase)
virtual void SetcT(int flvi, int flvj, int dim, double val, double phase)
Implementation of oscillations of neutrinos in matter in a three-neutrino framework with NSI.
virtual void SetEps(int flvi, int flvj, double val, double phase)
Set any given NSI parameter.
Implementation of oscillations of neutrinos in matter in a three-neutrino framework with Non unitary ...
virtual void SetAlpha(int i, int j, double val, double phase)
Set any given NUNM parameter.
Implements neutrino oscillations using an open quantum system approach.
virtual void SetDecoAngle(int i, int j, double th)
Set mixing angle between two decoherence parameters a_i, a_j.
virtual void SetDecoElement(int i, double val)
Set value of the a_i decoherence element in Gell-Mann basis.
Implementation of oscillations of neutrinos in matter in a three-neutrino framework with scalar NSI.
Implementation of oscillations of neutrinos in matter in a N-neutrino framework.
static const string PASSED
static const string FAILED