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