futureSig_reach_singlePOTcombo_syst.C
Go to the documentation of this file.
5 #include "CAFAna/Vars/FitVars.h"
6 #include "CAFAna/Core/Spectrum.h"
16 #include "CAFAna/Core/Progress.h"
22 #include "OscLib/OscCalcPMNSOpt.h"
23 #include "OscLib/OscCalcDumb.h"
24 #include "Utilities/func/MathUtil.h"
25 
26 using namespace ana;
27 
28 #include "TFile.h"
29 #include "TH2.h"
30 #include "TMath.h"
31 #include "TCanvas.h"
32 #include "TGraph.h"
33 #include "TLatex.h"
34 #include "TLegend.h"
35 #include "TBox.h"
36 #include "TLine.h"
37 #include "TSystem.h"
38 #include "TColor.h"
39 
40 #include <iostream>
41 #include <iomanip>
42 #include "Utilities/rootlogon.C"
43 
44 #include "futureSig_systs.h"
45 
48 
49 std::string MakeSuffix(const std::string PID, const std::string fakeHieDelta,
50  const double ssth23, const std::string potID,
51  const std::string systType, const std::string version);
52 
53 TGraph * GetSignGraph(TH1D* hist, std::vector <int> potYears,
54  std::vector <std::pair <int, int> > potCombos,
55  Int_t color, Int_t style);
56 void PaintReachCanvas(TString plottitle_split);
57 
58 
59 void futureSig_reach_singlePOTcombo_syst(const bool makeFile = false,
60  const std::string version = "v01",
61  const std::string fakeHieDelta = "NH3pi2",
62  const std::string fakeOctant = "UO",
63  const std::string systType = "_12",
64  const std::string potBaseID = "comboA",
65  const std::string potCompID = "none")
66 {
67  bool stats = (systType=="_stats");
68  double ssth23 = ((fakeOctant=="UO")?0.625:0.403);
69  if(fakeOctant =="MAX") ssth23 = 0.5;
70 
71  auto suffix = MakeSuffix("CVN",fakeHieDelta,ssth23,potBaseID,systType,version);
72 
73  TString filename = "root_reach/hist_novareach_"+ suffix;
74  TString filenameCompare = ("root_reach/hist_novareach_"+MakeSuffix("CVN",fakeHieDelta,ssth23,potCompID,systType,version));
75  TString plotfolder = version+"/";
76  gSystem->mkdir("root_reach");
77  gSystem->mkdir(plotfolder);
78 
79 
80  std::string hieDelStr = "Normal #delta_{CP}=3#pi/2";
81  if(fakeHieDelta == "IH3pi2") hieDelStr = "Inverted #delta_{CP}=3#pi/2";
82 
83  TString plottitle = TString::Format("%s, sin^{2}#theta_{23}=%.3f, #Deltam^{2}_{32}=2.5#times10^{-3}eV^{2}, sin^{2}#theta_{13}=0.022",hieDelStr.c_str(),ssth23);
84  TString plottitle_split = TString::Format("#splitline{%s, sin^{2}#theta_{23}=%.3f}{#Deltam^{2}_{32}=2.5#times10^{-3}eV^{2}, sin^{2}#theta_{13}=0.022}",hieDelStr.c_str(),ssth23);
85 
86  std::vector <int> potYears = {2016,2017, 2018, 2019, 2020, 2021, 2022, 2023, 2024};
87  std::vector <std::pair <int, int> > potComboT = {{6,0},{9,3}}; // for tests
88  std::vector <std::pair <int, int> > potComboA = {{6,0},{9,3},{9,9},{12,12},{15,15},{18,18},{21,21},{24,24},{27,27}};
89  std::vector <std::pair <int, int> > potComboB = {{6,0},{12,0},{18,0},{24,0},{30,0},{36,0},{42,0},{48,0},{54,0}};
90  std::vector <std::pair <int, int> > potComboC = {{6,0},{9,3},{9,9},{15,9},{18,12},{21,15},{24,18},{27,21},{30,24}};
91  std::vector <std::pair <int, int> > potComboD = {{6,0},{9,3},{9,9},{13,12},{17,15},{21,18},{25,21},{29,24},{33,27}};
92  std::vector <std::pair <int, int> > potComboE = {{6,0},{9,3},{9,9},{13,12},{16,16},{20,19},{23,23},{27,26},{30,30}};
93 
94  std::vector <std::pair <int, int> > potComboBase;
95  std::vector <std::pair <int, int> > potComboCompare;
96 
97  if(potBaseID == "comboT") potComboBase = potComboT;
98  if(potBaseID == "comboA") potComboBase = potComboA;
99  if(potBaseID == "comboB") potComboBase = potComboB;
100  if(potBaseID == "comboC") potComboBase = potComboC;
101  if(potBaseID == "comboD") potComboBase = potComboD;
102  if(potBaseID == "comboE") potComboBase = potComboE;
103 
104  if(potCompID == "comboA") potComboCompare = potComboA;
105  if(potCompID == "comboB") potComboCompare = potComboB;
106  if(potCompID == "comboC") potComboCompare = potComboC;
107  if(potCompID == "comboD") potComboCompare = potComboD;
108  if(potCompID == "comboE") potComboCompare = potComboE;
109 
110  bool compare = (potCompID!="none");
111 
112  if(makeFile){
113  TFile * file = new TFile (filename+".root","recreate");
114 
115  //This format here looks weird, but matches the reach_optimization
116  TH2D * sign_Hie = new TH2D ("hie","hie; Total POT (#times10^{20}); RHC POT (#times10^{20})",
117  67,5.5,72.5,67,-0.5,66.5);
118  TH2D * sign_Max = new TH2D ("max","max; Total POT (#times10^{20}); RHC POT (#times10^{20})",
119  67,5.5,72.5,67,-0.5,66.5);
120  TH2D * sign_Oct = new TH2D ("oct","oct; Total POT (#times10^{20}); RHC POT (#times10^{20})",
121  67,5.5,72.5,67,-0.5,66.5);
122  TH2D * sign_Cpv = new TH2D ("cpv","cpv; Total POT (#times10^{20}); RHC POT (#times10^{20})",
123  67,5.5,72.5,67,-0.5,66.5);
124 
125  TString dir = "root_predictions/";
126  TFile * file1 = new TFile( dir+"predInterp_nue_FHC1_"+version+".root","read");
127  TFile * file2 = new TFile( dir+"predInterp_nue_FHC2_"+version+".root","read");
128  TFile * file3 = new TFile( dir+"predInterp_nue_RHC_"+version+".root","read");
129  TFile * file4 = new TFile( dir+"predInterp_numu_FHC1_full_"+version+".root","read");
130  TFile * file5 = new TFile( dir+"predInterp_numu_FHC2_full_"+version+".root","read");
131  TFile * file6 = new TFile( dir+"predInterp_numu_RHC_full_"+version+".root","read");
132 
133  auto predFHC1 =
134  PredictionInterp::LoadFrom(file1, "nue_fhcPrediction_p123b").release();
135  auto predFHC2 =
136  PredictionInterp::LoadFrom(file2, "nue_fhcPrediction_p3c").release();
137  auto predRHC =
138  PredictionInterp::LoadFrom(file3, "nue_rhcPrediction").release();
139 
140  auto prudFHC1 =
141  PredictionInterp::LoadFrom(file4, "numu_fhcPrediction_p123b_full").release();
142  auto prudFHC2 =
143  PredictionInterp::LoadFrom(file5, "numu_fhcPrediction_p3c_full").release();
144  auto prudRHC =
145  PredictionInterp::LoadFrom(file6, "numu_rhcPrediction_full").release();
146 
147  delete file1, file2, file3, file4, file5, file6;
148 
149  for(auto potCombo:potComboBase){
150 
151  int fhc = potCombo.first;
152  int rhc = potCombo.second;
153  int totpot = fhc+rhc;
154 
155  std::cerr << "\nFinding best fit points for " << fhc << "p" << rhc
156  << "ssth23 " << ssth23 <<"\n\n";
157 
159  double p2POT = fhc*1E20 - 3.41E20;
160  double potFHC = p1POT + p2POT;
161  double potRHC = rhc*1E20;
162 
163  auto predFHC = new PredictionCombinePeriods({{predFHC1,p1POT},{predFHC2,p2POT}});
164  auto prudFHC = new PredictionCombinePeriods({{prudFHC1,p1POT},{prudFHC2,p2POT}});
165 
167  calc = MyDefaultOscCalc();
168  calc->SetTh23(asin(sqrt(ssth23)));
169  if(fakeHieDelta == "IH3pi2") calc->SetDmsq32(-1*fabs(calc->GetDmsq32()));
170 
171  auto obsFHC = predFHC->Predict(calc).FakeData(potFHC);
172  auto obsRHC = predRHC->Predict(calc).FakeData(potRHC);
173  auto ubsFHC = prudFHC->Predict(calc).FakeData(potFHC);
174  auto ubsRHC = prudRHC->Predict(calc).FakeData(potRHC);
175 
176  auto exptFHC = new SingleSampleExperiment(predFHC, obsFHC);
177  auto exptRHC = new SingleSampleExperiment(predRHC, obsRHC);
178 
179  auto uxptFHC = new SingleSampleExperiment(prudFHC, ubsFHC);
180  auto uxptRHC = new SingleSampleExperiment(prudRHC, ubsRHC);
181 
183  if(rhc > 0 ) expt = new MultiExperiment({exptFHC, uxptFHC, exptRHC, uxptRHC,
185  else expt = new MultiExperiment({exptFHC, uxptFHC, WorldReactorConstraint2015()});
186 
187  ////////////////////////////////////////////////////////////
188  //Systematics
189  ////////////////////////////////////////////////////////////
190  auto mySysts = GetSystsList(systType);
191  //set up correlations
192  //0 nue, 1 numu; 2 nue RHC, 3 numu rhc
193  std::vector< std::pair< const ISyst *, const ISyst * >> corr_nue_FHC;
194  std::vector< std::pair< const ISyst *, const ISyst * >> corr_numu_FHC;
195  std::vector< std::pair< const ISyst *, const ISyst * >> corr_nue_RHC;
196  std::vector< std::pair< const ISyst *, const ISyst * >> corr_numu_RHC;
197 
198  // nue FHC should not have any numu or wrong sign
199  //similar logic for all
200  for (auto nosys:systsNumuRHC) corr_nue_FHC.push_back({nosys,NULL});
201  expt->SetSystCorrelations(0,corr_nue_FHC);
202 
203  for (auto nosys:systsNueRHC) corr_numu_FHC.push_back({nosys,NULL});
204  expt->SetSystCorrelations(1,corr_numu_FHC);
205 
206  if(rhc>0){
207  for (auto nosys:systsNumuFHC) corr_nue_RHC.push_back({nosys,NULL});
208  expt->SetSystCorrelations(2,corr_nue_RHC);
209 
210  for (auto nosys:systsNueFHC) corr_numu_RHC.push_back({nosys,NULL});
211  expt->SetSystCorrelations(3,corr_numu_RHC);
212  }
213 
214  if(stats) { mySysts.clear(); std::cout << "WARNING STATS ONLY ACTIVATED \n"; }
215 
216  ////////////////////////////////////////////////////////////
217  // Fit
218  ////////////////////////////////////////////////////////////
219 
221  &kFitDmSq32,&kFitSinSq2Theta13},mySysts);
222 
223  double minchi_NH_UO=1E20;
224  double minchi_NH_LO=1E20;
225  double minchi_IH_UO=1E20;
226  double minchi_IH_LO=1E20;
227 
228  for(int hie:{-1,+1}){
229  for(double seed:{0.3,0.7}){
230  double minchi_temp = 1E20;
231  calc = MyDefaultOscCalc();
233  calc->SetDmsq32(hie*fabs(calc->GetDmsq32()));
234  minchi_temp = std::min(minchi_temp, fit23.Fit(calc)->EvalMetricVal());
235  const double dcp = calc->GetdCP();
236  for(int n = 1; n <= 3; ++n){
237  calc->SetdCP(dcp+n*M_PI/2);
238  minchi_temp = std::min(minchi_temp, fit23.Fit(calc)->EvalMetricVal());
239  }
240  if(hie>0 && seed<0.5) minchi_NH_LO = minchi_temp;
241  if(hie>0 && seed>0.5) minchi_NH_UO = minchi_temp;
242  if(hie<0 && seed<0.5) minchi_IH_LO = minchi_temp;
243  if(hie<0 && seed>0.5) minchi_IH_UO = minchi_temp;
244 
245  std::cout << "\n \n Found minchi " << (hie>0?"NH ": "IH ")
246  << (seed<0.5? "LO ":"UO ") << minchi_temp << "\n\n";
247  }
248  }
249 
250  double minchi_NH = std::min(minchi_NH_UO,minchi_NH_LO);
251  double minchi_IH = std::min(minchi_IH_UO,minchi_IH_LO);
252  double minchi_UO = std::min(minchi_NH_UO,minchi_IH_UO);
253  double minchi_LO = std::min(minchi_NH_LO,minchi_IH_LO);
254  double minchi_best = std::min(minchi_NH,minchi_IH);
255 
256  //fixed ssth23
257  MinuitFitter fit23Max(expt, {&kFitDeltaInPiUnits,&kFitDmSq32,&kFitSinSq2Theta13},mySysts);
258  double minchi_Max=1E20;
259 
260  for(int hie:{-1,+1}){
261  calc = MyDefaultOscCalc();
262  kFitSinSqTheta23.SetValue(calc, 0.5);
263  calc->SetDmsq32(hie*fabs(calc->GetDmsq32()));
264  minchi_Max = std::min(minchi_Max,fit23Max.Fit(calc)->EvalMetricVal());
265  const double dcp2 = calc->GetdCP();
266  for(int n = 1; n <= 3; ++n){
267  calc->SetdCP(dcp2+n*M_PI/2);
268  minchi_Max = std::min(minchi_Max, fit23Max.Fit(calc)->EvalMetricVal());
269  }
270  }
271  // fixed dCP
272  MinuitFitter fit23CP(expt, {&kFitSinSqTheta23,&kFitDmSq32,&kFitSinSq2Theta13},mySysts);
273  double minchi_CPV=1E20;
274 
275  for(int hie:{-1,+1}){
276  for(double seed:{0.3,0.7}){
277  for(double dCP:{0,1}){
278  calc = MyDefaultOscCalc();
281  calc->SetDmsq32(hie*fabs(calc->GetDmsq32()));
282  minchi_CPV = min(minchi_CPV, fit23CP.Fit(calc)->EvalMetricVal());
283  }
284  }
285  }
286 
287  std::cout << "\n \n Found minchi NH " << minchi_NH
288  << " IH " << minchi_IH
289  << " UO " << minchi_UO
290  << " LO " << minchi_LO
291  << " Max " << minchi_Max
292  << " CPV " << minchi_CPV
293  << std::endl;
294 
295  sign_Hie->SetBinContent(sign_Hie->FindBin(totpot,rhc),fabs(minchi_IH - minchi_NH));
296  sign_Oct->SetBinContent(sign_Oct->FindBin(totpot,rhc),fabs(minchi_LO - minchi_UO));
297  sign_Max->SetBinContent(sign_Max->FindBin(totpot,rhc),minchi_Max - minchi_best);
298  sign_Cpv->SetBinContent(sign_Cpv->FindBin(totpot,rhc),minchi_CPV - minchi_best);
299  } //end potCombo
300 
301  sign_Hie->SetTitle("#Delta #chi^{2} Wrong hie. rejection - "+ plottitle);
302  sign_Oct->SetTitle("#Delta #chi^{2} Octant resolution - "+plottitle);
303  sign_Max->SetTitle("#Delta #chi^{2} Maximal mix. rejection - "+plottitle);
304  sign_Cpv->SetTitle("#Delta #chi^{2} CP violation - "+plottitle);
305 
306  sign_Hie->SetOption("colz");
307  sign_Oct->SetOption("colz");
308  sign_Max->SetOption("colz");
309  sign_Cpv->SetOption("colz");
310 
311  file->cd();
312  sign_Hie->Write();
313  sign_Oct->Write();
314  sign_Max->Write();
315  sign_Cpv->Write();
316 
317  std::cout << "Saved significances to " << file->GetName() << std::endl;
318  return;
319  }//end makefile
320 
321 
322  else{
323  std::vector <TString> sign_label={"max","hie","oct","cpv"};
324  std::vector <TString> sign_name={"Max. mixing","Hierarchy","Octant","CPV"};
325 
326  Int_t potColors[]={
327  TColor::GetColor("#6c71c4"), TColor::GetColor("#268bd2"),
328  TColor::GetColor("#2aa198"), TColor::GetColor("#859900"),
329  TColor::GetColor("#b58900"), TColor::GetColor("#cb4b16"),
330  TColor::GetColor("#dc322f"), TColor::GetColor("#d33682")
331  };
332  Int_t lineStyle[]={1,7,10,9};
333 
334  ////////////////////////////////////////////////////////////
335 
336  PaintReachCanvas(plottitle_split);
337 
338  TLegend * leg = new TLegend (0.12, 0.52, 0.47, 0.85);
339  leg->SetTextSize(0.055);
340  leg->SetFillStyle(0);
341  leg->SetMargin(1.3*leg->GetMargin());
342  leg->SetHeader("NOvA joint #nu_{e}+#nu_{#mu}");
343 
344  //Get graphs and plot
345  TFile * file = new TFile (filename+".root","read");
346  int sigIdx=0;
347  for(auto sign:sign_label){
348  auto hist= (TH1D*) file->Get(sign);
349  auto gr = GetSignGraph(hist, potYears,potComboBase,potColors[sigIdx*2],lineStyle[sigIdx]);
350  gr->Draw("L same");
351  leg->AddEntry(gr,sign_name[sigIdx],"l");
352  sigIdx++;
353  }
354  //Compare to a different POT combo
355  if(compare){
356  TFile * fileCompare = new TFile (filenameCompare+".root","read");
357  if(fileCompare->IsZombie()) {std::cout << "can t find " << fileCompare->GetName()
358  << "\n\n"; return;}
359  sigIdx=0;
360  for(TString sign:{"hie","oct","max","cpv"}){
361  auto hist= (TH1D*) fileCompare->Get(sign);
362  Int_t trans_color = TColor::GetColorTransparent(potColors[sigIdx*2], 0.3);
363  auto gr = GetSignGraph(hist, potYears,potComboCompare,trans_color,kSolid);
364  gr->Draw("L same");
365  sigIdx++;
366  }
367  }//end compare
368 
369  leg->Draw();
370  if(!compare) gPad->Print(plotfolder+"sign_reach_"+suffix+".pdf");
371  else gPad->Print(plotfolder+"sign_reach_"+suffix+"vs"+potCompID+".pdf");
372 
373  return;
374  }//end !makefile
375 
376 }//end all
377 
378 ////////////////////////////////////////////////////////////
379 // Osc. parameters as chosen by conveners
380 ////////////////////////////////////////////////////////////
381 
383 {
384  calc->SetL(810);
385  calc->SetRho(2.84); // g/cm^3
386  calc->SetDmsq21(7.4e-5);
387  calc->SetTh12(asin(sqrt(.30)));
388  calc->SetTh23(M_PI/4);
389  calc->SetDmsq32(2.5e-3);
390  calc->SetTh13(asin(sqrt(.022)));
391  calc->SetdCP(1.5*M_PI);
392 }
393 
395 {
398  return ret;
399 }
400 
401 ////////////////////////////////////////////////////////////
402 // Osc. parameters as chosen by conveners
403 ////////////////////////////////////////////////////////////
404 
405 TGraph * GetSignGraph(TH1D* hist, std::vector <int> potYears,
406  std::vector <std::pair <int, int> > potCombos,
407  Int_t color, Int_t style){
408  TGraph * gr = new TGraph();
409  int yearIdx = 0;
410  for(auto potCombo:potCombos){
411  int fhc = potCombo.first;
412  int rhc = potCombo.second;
413  int totpot = fhc+rhc;
414  double this_chisq = hist->GetBinContent(hist->FindBin(totpot,rhc));
415  double this_sign = sqrt(std::max(this_chisq,0.));
416  gr->SetPoint(gr->GetN(),potYears[yearIdx], this_sign);
417  yearIdx++;
418  }//end years
419  gr->SetLineWidth(3);
420  gr->SetLineColor(color);
421  gr->SetLineStyle(style);
422  return gr;
423 }
424 ////////////////////////////////////////////////////////////
425 void PaintReachCanvas(TString plottitle_split){
426  new TCanvas;
427  gPad->SetTopMargin(0.14);
428  TH2D * axes = new TH2D ("ax",";Year;Significance (#sigma)",18,2015.5,2024.5,100,0,5.9);
429  axes->GetXaxis()->CenterTitle();
430  axes->GetYaxis()->CenterTitle();
431  axes->GetYaxis()->SetTitleOffset(0.6);
432  axes->Draw();
433  TLatex * ltx = new TLatex();
434  ltx->SetTextAlign(13);
435  ltx->SetTextSize(axes->GetXaxis()->GetLabelSize());
436  ltx->DrawLatexNDC(0.12,0.99,plottitle_split.Data() );
437 
438  TLatex* ltx2 = new TLatex();
439  ltx2->SetTextSize(1.2*axes->GetXaxis()->GetLabelSize());
440  ltx2->DrawLatexNDC(0.35,0.16,"#splitline{2016 analysis techniques with projected}{systematic uncertainty improvements}");
441  gPad->SetGridx();
442  gPad->SetGridy();
443  Simulation();
444 }
445 
446 std::string MakeSuffix(const std::string PID, const std::string fakeHieDelta,
447  const double ssth23, const std::string potID,
448  const std::string systType, const std::string version)
449 {
450  std::string suffix= PID;
451  suffix+="_"+fakeHieDelta;
452  if(ssth23<1) suffix+=(std::to_string(ssth23)).replace(0,2,"_0p").erase(6,4);
453  else suffix+="_0pXX";
454  bool stats = (systType=="_stats");
455  suffix+=("_"+ potID+(stats?"":"_syst")+systType);
456  suffix+="_"+version;
457  return suffix;
458 }
void Simulation()
Definition: tools.h:16
T max(const caf::Proxy< T > &a, T b)
virtual void SetL(double L)=0
Cuts and Vars for the 2020 FD DiF Study.
Definition: vars.h:6
_OscCalcPMNSOpt< double > OscCalcPMNSOpt
double ssth23
void futureSig_reach_singlePOTcombo_syst(const bool makeFile=false, const std::string version="v01", const std::string fakeHieDelta="NH3pi2", const std::string fakeOctant="UO", const std::string systType="_12", const std::string potBaseID="comboA", const std::string potCompID="none")
fvar< T > fabs(const fvar< T > &x)
Definition: fabs.hpp:15
const double kSecondAnaPeriod2POT
Definition: Exposures.h:74
virtual void SetDmsq21(const T &dmsq21)=0
const FitDmSq32 kFitDmSq32
Definition: FitVars.cxx:18
T sqrt(T number)
Definition: d0nt_math.hpp:156
const ReactorExperiment * WorldReactorConstraint2015()
Weighted average of all experiments as of first nue paper writing.
std::vector< const ISyst * > systsNumuFHC
const double kSecondAnaEpoch3bPOT
Definition: Exposures.h:75
osc::IOscCalcAdjustable * MyDefaultOscCalc()
virtual void SetTh13(const T &th13)=0
void PaintReachCanvas(TString plottitle_split)
void ResetOscCalcToMyDefault(osc::IOscCalcAdjustable *calc)
int stats(TString inputFilePath, Int_t firstRun, Int_t lastRun, Float_t thresh, TString myDet)
Definition: stats.C:13
OStream cerr
Definition: OStream.cxx:7
string filename
Definition: shutoffs.py:106
void SetValue(osc::IOscCalcAdjustable *osc, double val) const override
Forward to wrapped Var&#39;s SetValue()
const double kSecondAnaPeriod1POT
Definition: Exposures.h:73
osc::OscCalcDumb calc
virtual void SetDmsq32(const T &dmsq32)=0
#define M_PI
Definition: SbMath.h:34
std::vector< const ISyst * > GetSystsList(TString systType)
make combinations of the systematics
TGraph * GetSignGraph(TH1D *hist, std::vector< int > potYears, std::vector< std::pair< int, int > > potCombos, Int_t color, Int_t style)
expt
Definition: demo5.py:34
unsigned int seed
Definition: runWimpSim.h:102
Spectrum FakeData(double pot) const
Synonymous with AsimovData(). Retained for compatibility.
Definition: Spectrum.cxx:349
std::vector< const ISyst * > systsNueFHC
void SetValue(osc::IOscCalcAdjustable *osc, double val) const override
double dCP
std::vector< const ISyst * > systsNumuRHC
OStream cout
Definition: OStream.cxx:6
std::vector< const ISyst * > systsNueRHC
const XML_Char * version
Definition: expat.h:187
static float min(const float a, const float b, const float c)
Definition: absgeo.cxx:45
Combine multiple component experiments.
virtual void SetRho(double rho)=0
static std::unique_ptr< PredictionInterp > LoadFrom(TDirectory *dir, const std::string &name)
TDirectory * dir
Definition: macro.C:5
const ConstrainedFitVarWithPrior fitSsqTh23_UniformPriorSsqTh23 & kFitSinSqTheta23
virtual void SetTh23(const T &th23)=0
bool compare(const GFluxGenerator &g1, const GFluxGenerator &g2)
General interface to any calculator that lets you set the parameters.
TFile * file
Definition: cellShifts.C:17
Sum MC predictions from different periods scaled according to data POT targets.
void Format(TGraph *gr, int lcol, int lsty, int lwid, int mcol, int msty, double msiz)
Definition: Style.cxx:154
const FitSinSq2Theta13 kFitSinSq2Theta13
Definition: FitVars.cxx:13
std::string to_string(ModuleType mt)
Definition: ModuleType.h:32
T min(const caf::Proxy< T > &a, T b)
Float_t e
Definition: plot.C:35
const FitVarWithPrior fitDeltaInPiUnits_UniformPriordCP & kFitDeltaInPiUnits
std::string MakeSuffix(const std::string PID, const std::string fakeHieDelta, const double ssth23, const std::string potID, const std::string systType, const std::string version)
void SetSystCorrelations(int idx, const std::vector< std::pair< const ISyst *, const ISyst * >> &corrs)
def sign(x)
Definition: canMan.py:197
virtual void SetTh12(const T &th12)=0
virtual void SetdCP(const T &dCP)=0
T asin(T number)
Definition: d0nt_math.hpp:60
Spectrum Predict(osc::IOscCalc *calc) const override
Compare a single data spectrum to the MC + cosmics expectation.
Perform MINUIT fits in one or two dimensions.
Definition: MinuitFitter.h:17
enum BeamMode string