bicount.C
Go to the documentation of this file.
1 
5 #include "CAFAna/Core/Spectrum.h"
8 // #include "CAFAna/Prediction/PredictionExtrap.h"
9 // #include "CAFAna/Prediction/PredictionCombinePeriods.h"
10 // #include "CAFAna/Prediction/PredictionInterp.h"
14 #include "CAFAna/Core/Progress.h"
15 #include "CAFAna/FC/FCCollection.h"
16 #include "CAFAna/FC/FCPoint.h"
17 #include "CAFAna/FC/FCSurface.h"
18 
19 #include "OscLib/OscCalcPMNSOpt.h"
20 #include "OscLib/IOscCalc.h"
21 #include "Utilities/func/MathUtil.h"
22 #include "Utilities/rootlogon.C"
23 
25 
26 using namespace ana;
27 
28 #include "TFile.h"
29 #include "TH2.h"
30 #include "TRandom3.h"
31 #include "TMath.h"
32 #include "TMarker.h"
33 #include "TCanvas.h"
34 #include "TGraph.h"
35 #include "TLatex.h"
36 #include "TLegend.h"
37 #include "TColor.h"
38 #include "TLegend.h"
39 #include "TStyle.h"
40 #include "TGraphAsymmErrors.h"
41 #include "TFeldmanCousins.h"
42 #include "TPaveText.h"
43 
44 #include <iostream>
45 #include <iomanip>
46 
47 const double scale1 = 500./750. * 0.9;
48 TCanvas * BiCountCanvas(double minx=0, double maxx=40, double miny=0,double maxy=40,
49  TString title=""){
50  auto c1= new TCanvas(UniqueName().c_str(), UniqueName().c_str(), 700, 750);
51  c1->SetLeftMargin(0.14);
52  c1->SetTopMargin(0.08);
53 // c1->SetBottomMargin(0.15);
54  TH2* axes = new TH2F(UniqueName().c_str(), ";P_{#mue};P_{#bar{#mu}#bar{e}}",
55  100, minx, maxx, 100, miny,maxy);
56  axes->SetTitle(title);
57 
58  axes->GetXaxis()->SetTitle("Total events - neutrino beam");
59  axes->GetYaxis()->SetTitle("Total events - antineutrino beam");
60  axes->GetXaxis()->CenterTitle();
61  axes->GetYaxis()->CenterTitle();
62 
63  axes->GetXaxis()->SetTitleSize(kBlessedTitleFontSize*scale1);
64  axes->GetYaxis()->SetTitleSize(kBlessedTitleFontSize*scale1);
65  axes->GetXaxis()->SetLabelSize(kBlessedLabelFontSize*scale1);
66  axes->GetYaxis()->SetLabelSize(kBlessedLabelFontSize*scale1);
67  // axes->GetXaxis()->SetTitleOffset(0.8);
68  axes->GetYaxis()->SetTitleOffset(0.95);
69 
70  axes->Draw();
71 
72  TLatex* prelim = new TLatex(.9, .95, "NOvA Simulation");
73  prelim->SetTextColor(kGray+1);
74  prelim->SetNDC();
75  prelim->SetTextSize(2/30.*scale1);
76  prelim->SetTextAlign(32);
77 // prelim->Draw();
78 
79  return c1;
80 }
81 
82 TCanvas * BiProbCanvas(double minx=0, double maxx=40, double miny=0,double maxy=40,
83  TString title=""){
84  auto c1= new TCanvas(UniqueName().c_str(), UniqueName().c_str(), 700, 750);
85  c1->SetLeftMargin(0.14);
86  c1->SetTopMargin(0.08);
87 // c1->SetBottomMargin(0.15);
88  TH2* axes = new TH2F(UniqueName().c_str(), ";P_{#mue};P_{#bar{#mu}#bar{e}}",
89  100, minx, maxx, 100, miny,maxy);
90  axes->SetTitle(title);
91 
92  axes->GetXaxis()->SetTitle("P( #nu_{#mu} #rightarrow #nu_{e} ) (%)");
93  axes->GetYaxis()->SetTitle("P( #bar{#nu}_{#mu} #rightarrow #bar{#nu}_{e} ) (%)");
94  axes->GetXaxis()->CenterTitle();
95  axes->GetYaxis()->CenterTitle();
96 
97  axes->GetXaxis()->SetTitleSize(kBlessedTitleFontSize*scale1);
98  axes->GetYaxis()->SetTitleSize(kBlessedTitleFontSize*scale1);
99  axes->GetXaxis()->SetLabelSize(kBlessedLabelFontSize*scale1);
100  axes->GetYaxis()->SetLabelSize(kBlessedLabelFontSize*scale1);
101  // axes->GetXaxis()->SetTitleOffset(0.8);
102  axes->GetYaxis()->SetTitleOffset(0.95);
103 
104  axes->Draw();
105 
106  TLatex* prelim = new TLatex(.9, .95, "NOvA Simulation");
107  prelim->SetTextColor(kGray+1);
108  prelim->SetNDC();
109  prelim->SetTextSize(2/30.*scale1);
110  prelim->SetTextAlign(32);
111 // prelim->Draw();
112 
113  return c1;
114 }
115 
116 TMarker * GetMarker_dCP (int delta, Int_t color)
117 {
118  TMarker * mark = new TMarker;
119  mark->SetMarkerColor(color);
120  Int_t style;
121  if(delta==0) style = kOpenCircle;
122  if(delta==1) style = kFullCircle;
123  if(delta==2) style = kOpenSquare;
124  if(delta==3) style = kFullSquare;
125  mark->SetMarkerStyle(style);
126  return mark;
127 }
128 
129 
130 // void FakeData()
131 // {
132 // TLatex* prelim = new TLatex(.9, .95, "NOvA Fake Data");
133 // prelim->SetTextColor(kBlue);
134 // prelim->SetNDC();
135 // prelim->SetTextSize(2/30.);
136 // prelim->SetTextAlign(32);
137 // prelim->Draw();
138 // }
140  const IPrediction * predFHC, const IPrediction * predRHC,
141  double potFHC, double potRHC,
142  double cosmFHC=0, double cosmRHC=0,
143  TString label="", Int_t color=1, Int_t style = kSolid,
144  bool markers=true)
145 {
146  TGraph* g = new TGraph;
147  double avgx = 0, avgy = 0;
148  for(int dIdx = 0; dIdx <= 100; ++dIdx){
149  double delta = dIdx*0.02;
150  calc->SetdCP(delta*M_PI);
151  const double P = predFHC->PredictSyst(calc, shift_fhc).Integral(potFHC) + cosmFHC;
152  const double Pbar = predRHC->PredictSyst(calc, shift_rhc).Integral(potRHC) + cosmRHC;
153  g->SetPoint(g->GetN(), P, Pbar);
154 
155  if(markers){
156  if(dIdx%25==0)
157  GetMarker_dCP(dIdx/25,color)->DrawMarker(P,Pbar);
158  }
159  avgx += P;
160  avgy += Pbar;
161  }
162  avgx=avgx/100.;
163  avgy=avgy/100.;
164  TLatex* ltx = new TLatex(avgx, avgy,label);
165  ltx->SetTextAlign(22);
166  ltx->SetTextSize(0.04);
167  ltx->SetTextColor(color);
168  ltx->Draw();
169 
170  g->SetLineWidth(2);
171  g->SetLineColor(color);
172  g->SetLineStyle(style);
173  g->Draw("l");
174  return g;
175 }
176 
178  TString label="", Int_t color=1, Int_t style = kSolid,
179  bool markers=true)
180 {
181  TGraph* g = new TGraph;
182  double avgx = 0, avgy = 0;
183  for(int dIdx = 0; dIdx <= 100; ++dIdx){
184  double delta = dIdx*0.02;
185  calc->SetdCP(delta*M_PI);
186  const double P = calc->P(14, 12, 2)*100.;
187  const double Pbar = calc->P(-14, -12, 2)*100.;
188  g->SetPoint(g->GetN(), P, Pbar);
189 
190  if(markers){
191  if(dIdx%25==0)
192  GetMarker_dCP(dIdx/25,color)->DrawMarker(P,Pbar);
193  }
194  avgx += P;
195  avgy += Pbar;
196  }
197  avgx=avgx/100.;
198  avgy=avgy/100.;
199  TLatex* ltx = new TLatex(avgx, avgy,label);
200  ltx->SetTextAlign(22);
201  ltx->SetTextSize(0.04);
202  ltx->SetTextColor(color);
203  ltx->Draw();
204 
205  g->SetLineWidth(2);
206  g->SetLineColor(color);
207  g->SetLineStyle(style);
208  g->Draw("l");
209  return g;
210 }
211 
212 TGraph* GetDataPoint(double x, double y)
213 {
214  auto gr = new TGraphAsymmErrors();
215  gr->SetPoint(0,x,y);
216  gr->SetMarkerStyle(kFullCircle);
217  gr->SetLineWidth(2);
218  gr->SetMarkerColor(kBlack);
219  TFeldmanCousins fc(0.6827);//1 sigma
220  if ( y < 50 ) gr->SetPointEYlow(0, y-fc.CalculateLowerLimit(y,0));
221  else gr->SetPointEYlow(0,sqrt(y));
222  if ( y < 30 ) gr->SetPointEYhigh(0,fc.CalculateUpperLimit(y,0)-y);
223  else gr->SetPointEYhigh(0,sqrt(y));
224 
225  if ( x < 50 ) gr->SetPointEXlow(0, x-fc.CalculateLowerLimit(x,0));
226  else gr->SetPointEXlow(0,sqrt(x));
227  if ( x < 30 ) gr->SetPointEXhigh(0,fc.CalculateUpperLimit(x,0)-x);
228  else gr->SetPointEXhigh(0,sqrt(x));
229 
230  return gr;
231 }
232 
233 
234 TLegend * Legend_dCP(double x1, double y1,double x2, double y2)
235 {
236  auto leg = new TLegend(x1,y1,x2,y2);
237 // leg->SetFillStyle(1001);
238  // leg->SetFillColor(kWhite);
239  leg->SetFillStyle(0);
240  leg->SetTextSize(scale1*kBlessedLabelFontSize);
241  leg->AddEntry(GetMarker_dCP(0,1),"#delta_{CP}= 0","p");
242  leg->AddEntry(GetMarker_dCP(1,1),"#delta_{CP}= #pi/2","p");
243  leg->AddEntry(GetMarker_dCP(2,1),"#delta_{CP}= #pi","p");
244  leg->AddEntry(GetMarker_dCP(3,1),"#delta_{CP}= 3#pi/2","p");
245  leg->SetNColumns(2);
246  return leg;
247 }
248 
249 TLegend * Legend_BFV(double x1, double y1, double x2, double y2, TMarker* mark, TString text){
250  auto leg = new TLegend(x1,y1,x2,y2);
251  leg->SetFillStyle(0);
252  leg->SetTextSize(scale1*kBlessedLabelFontSize);
253  leg->SetTextColor(mark->GetMarkerColor());
254  leg->AddEntry(mark, text,"p");
255  return leg;
256 }
257 
258 TLatex * HieLabel(int hie, Int_t color, double x, double y, bool val=false)
259 {
260  auto ltx = new TLatex();
261  ltx->SetTextSize(scale1*kBlessedLabelFontSize);
262  ltx->SetTextColor(color);
263  ltx->SetTextAlign(22);
264  if(val){
265  if(hie>0) ltx->DrawLatex(x,y,"#splitline{ NH}{#Deltam_{32}^{2}=#plus2.40#times10^{-3}eV^{2}}");
266  if(hie<0) ltx->DrawLatex(x,y,"#splitline{ IH}{#Deltam_{32}^{2}=#minus2.44#times10^{-3}eV^{2}}");
267  }
268  else{
269  if(hie>0) ltx->DrawLatex(x,y,"NH");
270  if(hie<0) ltx->DrawLatex(x,y,"IH");
271  }
272 // if(hie>0) ltx->DrawLatex(x,y,"#splitline{ NH}{#Deltam_{32}^{2}=#plus2.45#times10^{-3}eV^{2}}");
273 // if(hie<0) ltx->DrawLatex(x,y,"#splitline{ IH}{#Deltam_{32}^{2}=#minus2.51#times10^{-3}eV^{2}}");
274 // if(hie<0) ltx->DrawLatex(x,y,"#Deltam_{32}^{2}<0");
275 
276  return ltx;
277 }
278 TLatex * OctLabel(int oct, Int_t color, double x, double y, bool val=false)
279 {
280  auto ltx = new TLatex();
281  ltx->SetTextSize(scale1*kBlessedLabelFontSize);
282  ltx->SetTextColor(color);
283  ltx->SetTextAlign(22);
284  if(val){
285  if(oct>0) ltx->DrawLatex(x,y,"#splitline{ UO}{sin^{2}#theta_{23}=0.56}");
286  if(oct<0) ltx->DrawLatex(x,y,"#splitline{ LO}{sin^{2}#theta_{23}=0.46}");
287  }
288  else{
289  if(oct>0) ltx->DrawLatex(x,y,"UO");
290  if(oct<0) ltx->DrawLatex(x,y,"LO");
291  if(oct==0) ltx->DrawLatex(x, y, "sin^{2}#theta_{23}=0.5");
292  }
293  // if(oct<0) ltx->DrawLatex(x,y,"#splitline{ IH}{#Deltam_{32}^{2}=#minus2.55#times10^{-3}eV^{2}}");
294 // if(hie>0) ltx->DrawLatex(x,y,"#splitline{ NH}{#Deltam_{32}^{2}=#plus2.45#times10^{-3}eV^{2}}");
295 // if(hie<0) ltx->DrawLatex(x,y,"#splitline{ IH}{#Deltam_{32}^{2}=#minus2.51#times10^{-3}eV^{2}}");
296 // if(hie<0) ltx->DrawLatex(x,y,"#Deltam_{32}^{2}<0");
297 
298  return ltx;
299 }
300 TPaveText * PaveParams (double x1, double y1, double x2, double y2, bool prob=false, std::string text = "")
301 {
302  auto pave = new TPaveText(x1,y1,x2,y2,"NDC NB");
303  pave->SetTextAlign(33); //right top
304  pave->SetFillStyle(0);
305  pave->SetLineColorAlpha(0,0);
306  pave->SetTextSize(scale1*kBlessedLabelFontSize);
307  //pave->AddText("|#Deltam_{32}^{2}|=2.67#times10^{-3}eV^{2}");
308  if(prob) pave->AddText(text.c_str());
309  else pave->AddText("sin^{2}2#theta_{13}=0.085");
310  // pave->AddText("sin^{2}#theta_{23}=0.46,0.59");
311 // pave->AddText("sin^{2}#theta_{23}=0.47,0.56");
312  return pave;
313 }
314 
315 TPaveText* PavePOT(double x1, double y1, double x2, double y2)
316 {
317  auto pave = new TPaveText(x1,y1,x2,y2,"NDC NB");
318  pave->SetTextAlign(13); //;eft top
319  pave->SetFillStyle(0);
320  pave->SetLineColorAlpha(0,0);
321  pave->SetTextSize(scale1*kBlessedLabelFontSize);
322  pave->AddText("NOvA FD");
323  pave->AddText("13.60#times10^{20} POT-equiv (#nu)");
324  pave->AddText("12.50#times10^{20} POT (#bar{#nu})");
325  return pave;
326 }
327 
328 
329 TMarker * BestFitMarker (double x, double y, int color = kViolet-5){
330  auto bfmarker = new TMarker (x,y,kStar);
331  bfmarker->SetMarkerStyle(kFullStar);
332  bfmarker->SetMarkerColor(color);
333  bfmarker->SetMarkerSize(3);
334  return bfmarker;
335 }
336 
337 void SetBestFitParams(TFile* bestfitfile, std::string quad, osc::IOscCalcAdjustable* &calc,
338  SystShifts &shift_nue_fhc, SystShifts &shift_nue_rhc,
339  std::vector<const ISyst*> systs_nue_fhc, std::vector<const ISyst*> systs_nue_rhc)
340 {
341  calc = (osc::IOscCalcAdjustable*)(LoadFrom<osc::IOscCalc>(bestfitfile, (quad+"_calc").c_str())).release();
342  auto systshift = LoadFrom<SystShifts>(bestfitfile, (quad+"_systs").c_str()).release();
343  shift_nue_fhc = SystShifts::Nominal();
344  shift_nue_rhc = SystShifts::Nominal();
345  for(auto syst: systshift->ActiveSysts()){
346  if(std::find(systs_nue_fhc.begin(), systs_nue_fhc.end(), syst) != systs_nue_fhc.end())
347  shift_nue_fhc.SetShift(syst, systshift->GetShift(syst));
348  }
349  for(auto syst: systshift->ActiveSysts()){
350  if(std::find(systs_nue_rhc.begin(), systs_nue_rhc.end(), syst) != systs_nue_rhc.end())
351  shift_nue_rhc.SetShift(syst, systshift->GetShift(syst));
352  }
353 
354 }
355 
356 void bicount()
357 {
358 
359  TString folder = "biprob/";
360 
361  auto systs_nue_fhc = get3FlavorAna2020AllSysts(EAnaType2020::kNueAna, true, BeamType2020::kFHC, false, true);
362  auto systs_nue_rhc = get3FlavorAna2020AllSysts(EAnaType2020::kNueAna, true, BeamType2020::kRHC, false, true);
363 
364  TFile* bestfitfile = new TFile("/nova/ana/3flavor/Ana2020/Fits/BestFits/bestfits_joint_realData_both_systs.root");
365 
367  SystShifts shift_nue_fhc;
368  SystShifts shift_nue_rhc;
369 
370  // calc->SetDmsq32(2.48e-3);
371  // calc->SetTh23(asin(sqrt(0.56)));
372  // calc->SetdCP(2.*M_PI);
373  std::string decomp_FHC = "combo";
374  std::string decomp_RHC = "prop";
375 
376  auto predFHC = GetNuePrediction2020(decomp_FHC, DefaultOscCalc(), true, "fhc", false);
377  auto predRHC = GetNuePrediction2020(decomp_RHC, DefaultOscCalc(), true, "rhc", false);
378  auto spec_cosmFHC = GetNueCosmics2020("fhc").first;
379  auto spec_cosmRHC = GetNueCosmics2020("rhc").first;
380 
381  double potFHC = kAna2020FHCPOT;
382  double potRHC = kAna2020RHCPOT;
383 
384  double cosmFHC = spec_cosmFHC->Integral(kAna2020FHCLivetime, 0, kLivetime);
385  double cosmRHC = spec_cosmRHC->Integral(kAna2020RHCLivetime, 0, kLivetime);
386  std::vector<std::string> quads = {"NH_UO", "NH_LO", "IH_UO", "IH_LO"};
387 
388  auto ca = BiCountCanvas(15,130,13,62,"");
389 
390  for(auto quad: quads){
391  SetBestFitParams(bestfitfile, quad, calc, shift_nue_fhc, shift_nue_rhc, systs_nue_fhc, systs_nue_rhc);
392  Int_t theoryColor = (quad.find("NH") != string::npos ? k3SigmaConfidenceColorNH : kPrimColorIH);
393 
394  auto g1 = BicountEllipse_dCP(calc, shift_nue_fhc, shift_nue_rhc,
395  predFHC, predRHC, potFHC, potRHC,
396  cosmFHC, cosmRHC,
397  /*TString::Format("%.2f", ssth)*/"", theoryColor);
398  }
399 
400  Legend_dCP(0.14,0.12,0.52,0.23)->Draw();
401  HieLabel(-1,kPrimColorIH,40,48, true);
402  HieLabel(+1,k3SigmaConfidenceColorNH,105, 22, true);
403  OctLabel(-1,kBlack,57,30, true);
404  OctLabel(+1,kBlack,100,40, true);
405  PaveParams(0.52,0.83,0.89,0.92)->Draw();
406  PavePOT(0.15,0.78,0.5,0.92)->Draw();
407  Preliminary();
408  gPad->Print(folder + "bicount_basic.pdf");
409 
410  SetBestFitParams(bestfitfile, "NH_UO", calc, shift_nue_fhc, shift_nue_rhc, systs_nue_fhc, systs_nue_rhc);
411  TPad* newpad1 = (TPad*)gPad->Clone();
412  TPad* newpad2 = (TPad*)newpad1->Clone();
413  TPad* newpad3 = (TPad*)newpad1->Clone();
414 
415  auto ca2 = BiCountCanvas(25,150,20,60,"");
416  newpad1->cd();
417  newpad1->Draw();
418  auto datapoint1 = GetDataPoint(82,33);
419  datapoint1->Draw("pe");
420  Preliminary();
421  gPad->Print(folder + "bicount_data.pdf");
422 
423  auto ca3 = BiCountCanvas(25,150,20,60,"");
424  newpad2->cd();
425  newpad2->Draw();
426  auto bfmarker = BestFitMarker(predFHC->PredictSyst(calc, shift_nue_fhc).Integral(potFHC) + cosmFHC,
427  predRHC->PredictSyst(calc, shift_nue_rhc).Integral(potRHC) + cosmRHC);
428 
429  bfmarker->Draw();
430  Legend_BFV(0.55, 0.12, 0.89,0.17, bfmarker, "2020 best fit")->Draw();
431  Preliminary();
432 
433  newpad2->Print(folder + "bicount_bfv.pdf");
434  auto datapoint2 = GetDataPoint(82,33);
435  datapoint2->Draw("pe");
436  gPad->Print(folder + "bicount_bfv_data.pdf");
437 
438  auto ca4 = BiCountCanvas(25,150,20,60,"");
439  newpad3->cd();
440  newpad3->Draw();
441  auto bfmarker2 = BestFitMarker(predFHC->PredictSyst(calc, shift_nue_fhc).Integral(potFHC) + cosmFHC,
442  predRHC->PredictSyst(calc, shift_nue_rhc).Integral(potRHC) + cosmRHC);
443 
444  bfmarker2->Draw();
445  Legend_BFV(0.55, 0.12, 0.89,0.17, bfmarker2, "2020 best fit")->Draw();
446  Preliminary();
447 
448  newpad3->Print(folder + "bicount_bfv.pdf");
449  gPad->Print(folder + "bicount_bfv.pdf");
450  return;
451 }
452 
TGraph * GetDataPoint(double x, double y)
Definition: bicount.C:212
const Color_t kPrimColorIH
Definition: Style.h:64
Cuts and Vars for the 2020 FD DiF Study.
Definition: vars.h:6
Float_t y1[n_points_granero]
Definition: compare.C:5
double delta
Definition: runWimpSim.h:98
Simple record of shifts applied to systematic parameters.
Definition: SystShifts.h:20
double maxy
Float_t x1[n_points_granero]
Definition: compare.C:5
TLatex * HieLabel(int hie, Int_t color, double x, double y, bool val=false)
Definition: bicount.C:258
T sqrt(T number)
Definition: d0nt_math.hpp:156
TLatex * OctLabel(int oct, Int_t color, double x, double y, bool val=false)
Definition: bicount.C:278
void bicount()
Definition: bicount.C:356
TPaveText * PaveParams(double x1, double y1, double x2, double y2, bool prob=false, std::string text="")
Definition: bicount.C:300
TMarker * BestFitMarker(double x, double y, int color=kViolet-5)
Definition: bicount.C:329
double Integral(double exposure, double *err=0, EExposureType expotype=kPOT) const
Return total number of events scaled to pot.
Definition: Spectrum.cxx:333
TLegend * Legend_dCP(double x1, double y1, double x2, double y2)
Definition: bicount.C:234
static SystShifts Nominal()
Definition: SystShifts.h:34
osc::OscCalcDumb calc
osc::IOscCalcAdjustable * DefaultOscCalc()
Create a new calculator with default assumptions for all parameters.
Definition: Calcs.cxx:49
#define M_PI
Definition: SbMath.h:34
list markers
Definition: styles.py:7
void SetBestFitParams(TFile *bestfitfile, std::string quad, osc::IOscCalcAdjustable *&calc, SystShifts &shift_nue_fhc, SystShifts &shift_nue_rhc, std::vector< const ISyst * > systs_nue_fhc, std::vector< const ISyst * > systs_nue_rhc)
Definition: bicount.C:337
std::pair< Spectrum *, double > GetNueCosmics2020(std::string beam, bool GetFromUPS=false, bool NERSC=false)
const char * label
TLegend * Legend_BFV(double x1, double y1, double x2, double y2, TMarker *mark, TString text)
Definition: bicount.C:249
#define P(a, b, c, d, e, x)
TPaveText * PavePOT(double x1, double y1, double x2, double y2)
Definition: bicount.C:315
TMarker * GetMarker_dCP(int delta, Int_t color)
Definition: bicount.C:116
const Color_t k3SigmaConfidenceColorNH
Definition: Style.h:78
const IPrediction * GetNuePrediction2020(std::string decomp, osc::IOscCalc *calc, bool corrSysts, std::string beam, bool isFakeData, bool GetFromUPS=false, bool minimizeMemory=true, bool NERSC=false)
const double kAna2020FHCLivetime
Definition: Exposures.h:237
TCanvas * BiCountCanvas(double minx=0, double maxx=40, double miny=0, double maxy=40, TString title="")
Definition: bicount.C:48
virtual Spectrum PredictSyst(osc::IOscCalc *calc, const SystShifts &syst) const
Definition: IPrediction.cxx:72
const double kAna2020FHCPOT
Definition: Exposures.h:233
TLatex * prelim
Definition: Xsec_final.C:133
const double kAna2020RHCPOT
Definition: Exposures.h:235
void Preliminary()
virtual T P(int flavBefore, int flavAfter, double E)=0
E in GeV; flavors as PDG codes (so, neg==>antinu)
::xsd::cxx::tree::string< char, simple_type > string
Definition: Database.h:154
const double kAna2020RHCLivetime
Definition: Exposures.h:238
TCanvas * BiProbCanvas(double minx=0, double maxx=40, double miny=0, double maxy=40, TString title="")
Definition: bicount.C:82
std::vector< const ISyst * > get3FlavorAna2020AllSysts(const EAnaType2020 ana, const bool smallgenie, const BeamType2020 beam, const bool isFit, const bool ptExtrap)
const double scale1
Definition: bicount.C:47
c1
Definition: demo5.py:24
Standard interface to all prediction techniques.
Definition: IPrediction.h:57
const Float_t kBlessedLabelFontSize
Definition: Style.h:90
TGraph * BicountEllipse_dCP(osc::IOscCalcAdjustable *calc, SystShifts shift_fhc, SystShifts shift_rhc, const IPrediction *predFHC, const IPrediction *predRHC, double potFHC, double potRHC, double cosmFHC=0, double cosmRHC=0, TString label="", Int_t color=1, Int_t style=kSolid, bool markers=true)
Definition: bicount.C:139
const Float_t kBlessedTitleFontSize
Definition: Style.h:89
void SetShift(const ISyst *syst, double shift, bool force=false)
Definition: SystShifts.cxx:78
std::string UniqueName()
Return a different string each time, for creating histograms.
Definition: Utilities.cxx:30
TGraph * BiprobEllipse_dCP(osc::IOscCalcAdjustable *calc, TString label="", Int_t color=1, Int_t style=kSolid, bool markers=true)
Definition: bicount.C:177
virtual void SetdCP(const T &dCP)=0