template_nonGENIE_systs.C
Go to the documentation of this file.
1 // most basic template. FHC only, energy systematics, 2 choices of theta_23
2 
4 #include "OscLib/OscCalcPMNS.h"
5 #include "OscLib/OscCalc.h"
6 
7 #include "CAFAna/Cuts/Cuts.h"
8 #include "CAFAna/Fit/Fit.h"
9 #include "CAFAna/Vars/FitVars.h"
11 #include "CAFAna/Analysis/Plots.h"
16 #include "CAFAna/Core/Utilities.h"
17 #include "CAFAna/Vars/Vars.h"
19 #include "CAFAna/Core/Loaders.h"
21 #include "CAFAna/Core/Binning.h"
22 #include "CAFAna/Systs/Systs.h"
23 
24 #include "TCanvas.h"
25 #include "TFile.h"
26 #include "TGraph.h"
27 #include "TH1.h"
28 #include "TH2.h"
29 #include "TMath.h"
30 #include "TGaxis.h"
31 #include "TMultiGraph.h"
32 #include "TLegend.h"
33 #include "TLatex.h"
34 #include "TStyle.h"
35 #include "THStack.h"
36 #include "TPaveText.h"
37 
38 #include <cmath>
39 #include <iostream>
40 #include <sstream>
41 #include <string>
42 #include <fstream>
43 #include <iomanip>
44 
45 #include "Utilities/func/MathUtil.h"
46 
47 // Use with Nova style ROOT logon script
48 
49 #define location 0 // 0 for FNAL 1 for caltech
50 #define mcset 0 // 0 = ideal MC goes with pot like 18e20, or 1 = realistic conditions mc for 1st analysis POT
51 #define pot 18e20
52 
53 using namespace ana;
54 
55 void Simulation() // for some reason doesn't always remember definition in Style script
56 {
57  TLatex* prelim = new TLatex(.9, .95, "NO#nuA Simulation");
58  prelim->SetTextColor(kGray+1);
59  prelim->SetNDC();
60  prelim->SetTextSize(2/30.);
61  prelim->SetTextAlign(32);
62  prelim->Draw();
63 }
64 
66 {
67 
68  TGaxis::SetMaxDigits(2);
69 
70  gStyle->SetTitleOffset(.85, "y");
71  gStyle->SetTitleOffset(.84, "x");
72  gStyle->SetTitleSize(0.05,"x");
73 
74  std::string fname, fnameSwap, fnameCosmic;
75 
76  if(mcset==1) {
77 
78  if(location==1) {
79  fname = "$NOVA_DATA/mc/forFA/fd_genie_fhc_nonswap_real.caf.root";
80  fnameSwap = "$NOVA_DATA/mc/forFA/fd_genie_fhc_swap_real.caf.root";
81  fnameCosmic = "/nfs/raid5/kirk/mc/fd_cry/fd_cry.153.caf.root";
82  }
83  else if(location==0) {
84  fname = "prod_caf_FA14-10-28_fd_genie_fhc_nonswap_14db";
85  fnameSwap = "prod_caf_FA14-10-28_fd_genie_fhc_fluxswap_14db";
86  fnameCosmic = "prod_caf_FA14-10-28_fd_cry_all";
87  }
88  }
89 
90  else if(mcset==0) {
91 
92  if(location==1) {
93  fname = "$NOVA_DATA/mc/forFA/fd_genie_fhc_nonswap_ideal.caf.root";
94  fnameSwap = "$NOVA_DATA/mc/forFA/fd_genie_fhc_swap_ideal.caf.root";
95  fnameCosmic = "/nfs/raid5/kirk/mc/fd_cry/fd_cry.153.caf.root";
96  }
97  else if(location==0) {
98  fname = "prod_caf_FA14-10-28_fd_genie_fhc_nonswap_14db";
99  fnameSwap = "prod_caf_FA14-10-28_fd_genie_fhc_fluxswap_14db";
100  fnameCosmic = "prod_caf_FA14-10-28_fd_cry_all";
101  }
102  }
103 
105 
106  calc.SetL(810);
107  calc.SetRho(0); // No matter effects
108  calc.SetDmsq21(7.59e-5);
109  calc.SetDmsq32(2.4e-3);
110  calc.SetTh12(.601);
111  calc.SetTh13(.1567);
112  // calc.SetdCP(TMath::Pi()/2);
113  calc.SetdCP(0);
114  calc.SetTh23(TMath::Pi()/4); // sin^2(2theta) = 1
115 
116  osc::OscCalcPMNS calc2;
117 
118  calc2.SetL(810);
119  calc2.SetRho(0); // No matter effects
120  calc2.SetDmsq21(7.59e-5);
121  calc2.SetDmsq32(2.4e-3);
122  calc2.SetTh12(.601);
123  calc2.SetTh13(.1567);
124  // calc2.SetdCP(TMath::Pi()/2);
125  calc2.SetdCP(0);
126  calc2.SetTh23(TMath::Pi()/4); // sin^2(2theta) = 1
127 
128  const std::string filename = fname;
129  const std::string filenameSwap = fnameSwap;
130  const std::string filenameCosmic = fnameCosmic;
131 
136 
137  // Load up the necessary histograms, seperated by flavour etc
138  NoExtrapGenerator predGenNonQE(
139  HistAxis("Non-QE Neutrino Energy (GeV)", kNumuEnergyBinning,kCCE),
141  PredictionInterp predCC({&kEnergyScaleSyst, &kNormSyst, &kNCScaleSyst},
142  &calc2, predGenNonQE, loaders);
143 
144  NoExtrapGenerator predGenQE(
145  HistAxis("Non-QE Neutrino Energy (GeV)", kNumuEnergyBinning,kQEE),
147  PredictionInterp predQE({&kEnergyScaleSyst, &kNormSyst, &kNCScaleSyst},
148  &calc2, predGenQE, loaders);
149 
150 
151  loaders.Go();
152 
153  Spectrum obsCC = predCC.Predict(&calc); // the prediction
154  Spectrum obsQE = predQE.Predict(&calc);
155  Spectrum fakeCC = obsCC.FakeData(pot); // the data, faked
156  Spectrum fakeQE = obsQE.FakeData(pot);
157  SingleSampleExperiment exptCC(&predCC, fakeCC); // made into an 'experiment'
158  SingleSampleExperiment exptQE(&predQE, fakeQE);
159 
160  TLatex text;
161  text.SetNDC(true);
162  text.SetTextSize(0.04);
163 
164  std::vector<const IExperiment*> exptsAll;
165  exptsAll.push_back(&exptCC);
166  exptsAll.push_back(&exptQE);
167  MultiExperiment exptAll(exptsAll);
168 
169  // now, the same but with a different truth value of theta_23
170  calc.SetTh23(.67264); // sin^2(2theta) = 0.95
171 
172  Spectrum obsCC2 = predCC.Predict(&calc);
173  Spectrum obsQE2 = predQE.Predict(&calc);
174  Spectrum fakeCC2 = obsCC2.FakeData(pot);
175  Spectrum fakeQE2 = obsQE2.FakeData(pot);
176  SingleSampleExperiment exptCC2(&predCC, fakeCC2);
177  SingleSampleExperiment exptQE2(&predQE, fakeQE2);
178 
179  new TCanvas("comp1b","CC spectra .95"); // plot spectra for each sample
180  DataMCComparison(fakeCC2, obsCC2);
181  TH1* ccu2 = predCC.PredictUnoscillated().ToTH1(pot);
182  ccu2->SetLineStyle(7);
183  ccu2->Draw("hist same");
184  gPad->Print("plots/comp1b.ps");
185  new TCanvas("comp2b","QE spectra .95");
186  DataMCComparison(fakeQE2, obsQE2);
187  TH1* qeu2 = predQE.PredictUnoscillated().ToTH1(pot);
188  qeu2->SetLineStyle(7);
189  qeu2->Draw("hist same");
190  gPad->Print("plots/comp2b.ps");
191  gPad->Print("plots/comp3b.ps");
192 
193  std::vector<const IExperiment*> exptsAll2;
194  exptsAll2.push_back(&exptCC2);
195  exptsAll2.push_back(&exptQE2);
196  MultiExperiment exptAll2(exptsAll2);
197 
198  calc.SetTh23(1); // Seed value
199 
200  TH1F *hcc = new TH1F("cc", "cc", 10, 0, 1);
201  TH1F *hqe = new TH1F("qe", "qe", 10, 0, 1);
202  TH1F *hall = new TH1F("all", "all", 10, 0, 1);
203  TH1F *hgreen = new TH1F("green", "green", 10, 0, 1);
204 
205  hcc->SetLineWidth(2);
206  hqe->SetLineWidth(2);
207  hall->SetLineWidth(2);
208  hgreen->SetLineWidth(2);
209  hcc->SetLineColor(2);
210  hqe->SetLineColor(4);
211  hall->SetLineColor(1);
212  hgreen->SetLineColor(kGreen);
213 
214  //The log-likelihood surface: FHC
215  new TCanvas("contoursfhc1","contoursfhc1") ;
216 
217  FrequentistSurface surfCC(&exptCC, &calc,
218  &kFitSinSq2Theta23, 30, .93, 1,
219  &kFitDmSq32Scaled, 30, 2.2, 2.7);
220  surfCC.DrawBestFit(kRed);
221  surfCC.DrawContour(Gaussian90Percent2D(surfCC), kSolid, kRed);
222 
223  FrequentistSurface surfQE(&exptQE, &calc,
224  &kFitSinSq2Theta23, 30, .94, 1,
225  &kFitDmSq32Scaled, 30, 2.2, 2.7);
226  surfQE.DrawBestFit(kBlue);
227  surfQE.DrawContour(Gaussian90Percent2D(surfQE), kSolid, kBlue);
228 
229  FrequentistSurface surfAll(&exptAll, &calc,
230  &kFitSinSq2Theta23, 30, .96, 1,
231  &kFitDmSq32Scaled, 30, 2.2, 2.6);
232  surfAll.DrawBestFit(kBlack);
233  surfAll.DrawContour(Gaussian90Percent2D(surfAll), kSolid, kBlack);
234 
235  Simulation();
236 
237  TLegend *leg = new TLegend(0.11,0.11,0.5,0.45);
238  leg->SetFillColor(10);
239  leg->SetFillStyle(0);
240  leg->SetBorderSize(0);
241  if(pot==18e20) leg->SetHeader("18e20 POT, FHC, 14 kton: 90% CL, no Systs");
242  else if(pot==6e20) leg->SetHeader("6e20 POT, FHC, 14 kton: 90% CL");
243  else if(pot==1e20) leg->SetHeader("1e20 POT, FHC, 14 kton: 90% CL");
244 
245  leg->AddEntry(hcc, "Contained non-QE CC","L");
246  leg->AddEntry(hqe,"Contained QE CC","L");
247  leg->AddEntry(hall,"Combined","L");
248  leg->Draw("same");
249  text.DrawLatex(0.3,0.85,"NO#nuA #nu_{#mu} Sensitivity (14kton, 700kW)");
250 
251  gPad->Print("plots/withcosmics.1.ps");
252  gPad->Print("plots/withcosmics.1.C");
253 
254  //with systs
255  new TCanvas("contoursfhc1syst","contoursfhc1syst") ;
256 
257  FrequentistSurface surfCCSyst(&exptCC, &calc,
258  &kFitSinSq2Theta23, 30, .93, 1,
259  &kFitDmSq32Scaled, 30, 2.2, 2.7, {}, {&kEnergyScaleSyst, &kNormSyst, &kNCScaleSyst});
260  surfCCSyst.DrawBestFit(kRed);
261  surfCCSyst.DrawContour(Gaussian90Percent2D(surfCCSyst), kSolid, kRed);
262 
263  FrequentistSurface surfQESyst(&exptQE, &calc,
264  &kFitSinSq2Theta23, 30, .93, 1,
265  &kFitDmSq32Scaled, 30, 2.2, 2.7, {}, {&kEnergyScaleSyst, &kNormSyst, &kNCScaleSyst});
266  surfQESyst.DrawBestFit(kBlue);
267  surfQESyst.DrawContour(Gaussian90Percent2D(surfQESyst), kSolid, kBlue);
268 
269  FrequentistSurface surfAllSyst(&exptAll, &calc,
270  &kFitSinSq2Theta23, 30, .96, 1,
271  &kFitDmSq32Scaled, 30, 2.2, 2.6, {}, {&kEnergyScaleSyst, &kNormSyst, &kNCScaleSyst});
272  surfAllSyst.DrawBestFit(kBlack);
273  surfAllSyst.DrawContour(Gaussian90Percent2D(surfAllSyst), kSolid, kBlack);
274 
275  Simulation();
276 
277  text.DrawLatex(0.3,0.85,"NO#nuA #nu_{#mu} Sensitivity (14kton, 700kW)");
278 
279  if(pot==18e20) leg->SetHeader("18e20 POT, FHC, 14 kton: 90% CL, all systs");
280 
281  gPad->Print("plots/cosmics.systs.1.ps");
282  gPad->Print("plots/cosmics.systs.1.C");
283 
284  //2
285 
286  new TCanvas("contoursfhc2","contoursfhc2") ;
287 
288  FrequentistSurface surfCC2(&exptCC2, &calc,
289  &kFitSinSq2Theta23, 30, .87, 1,
290  &kFitDmSq32Scaled, 30, 2.1, 2.7);
291  surfCC2.DrawBestFit(kRed);
292  surfCC2.DrawContour(Gaussian90Percent2D(surfCC2), kSolid, kRed);
293 
294  FrequentistSurface surfQE2(&exptQE2, &calc,
295  &kFitSinSq2Theta23, 30, .86, 1,
296  &kFitDmSq32Scaled, 30, 2.1, 2.8);
297  surfQE2.DrawBestFit(kBlue);
298  surfQE2.DrawContour(Gaussian90Percent2D(surfQE2), kSolid, kBlue);
299 
300  FrequentistSurface surfAll2(&exptAll2, &calc,
301  &kFitSinSq2Theta23, 30, .88, 1,
302  &kFitDmSq32Scaled, 30, 2, 2.8);
303  surfAll2.DrawBestFit(kBlack);
304  surfAll2.DrawContour(Gaussian90Percent2D(surfAll2), kSolid, kBlack);
305 
306  leg->Draw("same");
307  text.DrawLatex(0.3,0.85,"NO#nuA #nu_{#mu} Sensitivity (14kton, 700kW)");
308 
309  Simulation();
310 
311  gPad->Print("plots/withcosmics.fhc.2.ps");
312  gPad->Print("plots/withcosmics.fhc.2.C");
313 
314 
315  new TCanvas("contoursfhc2syst","contoursfhc2syst") ;
316 
317  FrequentistSurface surfCCSyst2(&exptCC2, &calc,
318  &kFitSinSq2Theta23, 30, .86, 1,
319  &kFitDmSq32Scaled, 30, 2.1, 2.8, {}, {&kEnergyScaleSyst, &kNormSyst, &kNCScaleSyst});
320  surfCCSyst2.DrawBestFit(kRed);
321  surfCCSyst2.DrawContour(Gaussian90Percent2D(surfCCSyst2), kSolid, kRed);
322 
323  FrequentistSurface surfQESyst2(&exptQE2, &calc,
324  &kFitSinSq2Theta23, 30, .85, 1,
325  &kFitDmSq32Scaled, 30, 2.1, 2.8, {}, {&kEnergyScaleSyst, &kNormSyst, &kNCScaleSyst});
326  surfQESyst2.DrawBestFit(kBlue);
327  surfQESyst2.DrawContour(Gaussian90Percent2D(surfQESyst2), kSolid, kBlue);
328 
329  FrequentistSurface surfAllSyst2(&exptAll2, &calc,
330  &kFitSinSq2Theta23, 30, .88, 1,
331  &kFitDmSq32Scaled, 30, 2, 2.8, {}, {&kEnergyScaleSyst, &kNormSyst, &kNCScaleSyst});
332  surfAllSyst2.DrawBestFit(kBlack);
333  surfAllSyst2.DrawContour(Gaussian90Percent2D(surfAllSyst2), kSolid, kBlack);
334 
335  leg->Draw("same");
336  text.DrawLatex(0.3,0.85,"NO#nuA #nu_{#mu} Sensitivity (14kton, 700kW)");
337 
338  Simulation();
339 
340  gPad->Print("plots/cosmics.syst.fhc.2.ps");
341  gPad->Print("plots/cosmics.syst.fhc.2.C");
342 
343 
344  new TCanvas("contoursfhcsystcomp","contoursfhcsystcomp") ;
345 
346  FrequentistSurface surfAllSystE(&exptAll, &calc, // energy systematics only
347  &kFitSinSq2Theta23, 30, .93, 1,
348  &kFitDmSq32Scaled, 30, 2, 2.8, {}, {&kEnergyScaleSyst});
349  surfAllSystE.DrawBestFit(kGreen);
350  surfAllSystE.DrawContour(Gaussian90Percent2D(surfAllSystE), kSolid, kGreen);
351 
352  FrequentistSurface surfAllSystNC(&exptAll, &calc, // NC scale systs only
353  &kFitSinSq2Theta23, 30, .93, 1,
354  &kFitDmSq32Scaled, 30, 2, 2.8, {}, {&kNCScaleSyst});
355  surfAllSystNC.DrawBestFit(4);
356  surfAllSystNC.DrawContour(Gaussian90Percent2D(surfAllSystNC), kSolid, 4);
357 
358  FrequentistSurface surfAllSystNorm(&exptAll, &calc, // NC scale systs only
359  &kFitSinSq2Theta23, 30, .93, 1,
360  &kFitDmSq32Scaled, 30, 2, 2.8, {}, {&kNormSyst});
361  surfAllSystNorm.DrawBestFit(kMagenta);
362  surfAllSystNorm.DrawContour(Gaussian90Percent2D(surfAllSystNorm), kSolid, kMagenta);
363 
364  surfAllSyst.DrawBestFit(kBlack);
365  surfAllSyst.DrawContour(Gaussian90Percent2D(surfAllSyst), kSolid, kBlack);
366 
367  surfAll.DrawBestFit(2);
368  surfAll.DrawContour(Gaussian90Percent2D(surfAll), kSolid, 2);
369 
370  TLegend *leg3 = new TLegend(0.12,0.12,0.5,0.4);
371  leg3->SetFillColor(10);
372  leg3->SetFillStyle(0);
373  leg3->SetHeader("18e20 POT FHC, 14 kton, 90% CL");
374 
375  leg3->AddEntry(hall, "All systematics","L");
376  leg3->AddEntry(hcc, "No systematics","L");
377  leg3->AddEntry(hqe, "NC scale only","L");
378  leg3->AddEntry(hgreen, "Energy scale only","L");
379  leg3->SetBorderSize(0);
380  leg3->Draw("");
381  text.DrawLatex(0.3,0.92,"NO#nuA #nu_{#mu} Sensitivity (14kton, 700kW)");
382 
383  gPad->Print("plots/cosmics.overlay.ps");
384  gPad->Print("plots/cosmics.overlay.C");
385 
386  new TCanvas("contourscombinenosys","contourscombinenosys") ;
387  surfAll2.DrawBestFit(kBlack);
388  surfAll2.DrawContour(Gaussian2Sigma2D(surfAll2), kSolid, 1);
389  surfAll2.DrawContour(Gaussian68Percent2D(surfAll2), 7, 1);
390 
391  surfAll.DrawBestFit(kRed);
392  surfAll.DrawContour(Gaussian2Sigma2D(surfAll), kSolid, 2);
393  surfAll.DrawContour(Gaussian68Percent2D(surfAll), 7, 2);
394 
395  TH1F *solid = new TH1F("90% CL", "90% CL", 10, 0, 1);
396  TH1F *dashed = new TH1F("68% CL", "68% CL", 10, 0, 1);
397 
398  solid->SetLineWidth(2);
399  dashed->SetLineWidth(2);
400  dashed->SetLineStyle(7);
401  solid->SetLineColor(1);
402  dashed->SetLineColor(1);
403 
404  TLegend *leg4 = new TLegend(0.12,0.12,0.5,0.4);
405  leg4->SetFillColor(10);
406  leg4->SetFillStyle(0);
407  leg4->SetHeader("18e20 POT FHC, 14 kton");
408 
409  leg4->AddEntry(solid, "2 #sigma","L");
410  leg4->AddEntry(dashed,"1 #sigma","L");
411  leg4->SetBorderSize(0);
412  leg4->Draw("");
413  text.DrawLatex(0.3,0.92,"NO#nuA #nu_{#mu} Sensitivity (14kton, 700kW)");
414 
415  gPad->Print("plots/cosmics.overlay.ps");
416  gPad->Print("plots/cosmics.overlay.C");
417 
418  new TCanvas("contourscombinesys","contourscombinesys") ;
419  surfAllSyst2.DrawBestFit(kBlack);
420  surfAllSyst2.DrawContour(Gaussian90Percent2D(surfAllSyst2), kSolid, kBlack);
421  surfAll2.DrawContour(Gaussian90Percent2D(surfAll2), 7, kBlack);
422 
423  surfAllSyst.DrawBestFit(kRed);
424  surfAllSyst.DrawContour(Gaussian90Percent2D(surfAllSyst), kSolid, kRed);
425  surfAll.DrawContour(Gaussian90Percent2D(surfAll), 7, kRed);
426 
427  TLegend *leg2 = new TLegend(0.12,0.12,0.5,0.4);
428  leg2->SetFillColor(10);
429  leg2->SetFillStyle(0);
430  leg2->SetHeader("18e20 POT FHC, 14 kton");
431 
432  leg2->AddEntry(solid, "90% CL, all systematics","L");
433  leg2->AddEntry(dashed,"90% CL, no systematics","L");
434  leg2->SetBorderSize(0);
435  leg2->Draw("");
436  text.DrawLatex(0.3,0.92,"NO#nuA #nu_{#mu} Sensitivity (14kton, 700kW)");
437 
438  gPad->Print("plots/cosmics.systs.overlay.ps");
439  gPad->Print("plots/cosmics.systs.overlay.C");
440 
441 }
Implements systematic errors by interpolation between shifted templates.
enum BeamMode kRed
_HistAxis< Var > HistAxis
Definition: HistAxis.h:103
Far Detector at Ash River.
Definition: SREnums.h:11
void SetDmsq21(const T &dmsq21) override
Definition: OscCalcPMNS.h:35
Cuts and Vars for the 2020 FD DiF Study.
Definition: vars.h:6
void SetTh12(const T &th12) override
Definition: OscCalcPMNS.h:37
void SetTh23(const T &th23) override
Definition: OscCalcPMNS.h:39
Adapt the PMNS calculator to standard interface.
Definition: StanTypedefs.h:28
const FitSinSq2Theta23 kFitSinSq2Theta23
string fnameSwap
Definition: demo4.py:6
Collection of SpectrumLoaders for many configurations.
Definition: Loaders.h:23
void SetL(double L) override
Definition: OscCalcPMNS.h:33
TH2 * Gaussian68Percent2D(const FrequentistSurface &s)
Up-value surface for 68% confidence in 2D in gaussian approximation.
const Cut kNumuCosmicRej([](const caf::SRProxy *sr){return(sr->sel.cosrej.anglekal > 0.5 && sr->sel.cosrej.numucontpid2019 > 0.535 && sr->slc.nhit< 400);})
Definition: NumuCuts.h:32
const Cut kNumuContainFD([](const caf::SRProxy *sr){ std::pair< int, int > planes=calcFirstLastLivePlane(sr->slc.firstplane, std::bitset< 14 >(sr->hdr.dibmask));int planestofront=sr->slc.firstplane-planes.first;int planestoback=planes.second-sr->slc.lastplane;return( sr->slc.ncellsfromedge > 1 &&planestofront > 1 &&planestoback > 1 &&sr->sel.contain.kalfwdcell > 10 &&sr->sel.contain.kalbakcell > 10 &&sr->sel.contain.cosfwdcell > 0 &&sr->sel.contain.cosbakcell > 0);})
Definition: NumuCuts.h:20
TH2 * Gaussian2Sigma2D(const FrequentistSurface &s)
Up-value surface for 2 sigma confidence in 2D in gaussian approximation.
string filename
Definition: shutoffs.py:106
osc::OscCalcDumb calc
Generates FD-only predictions (no extrapolation)
Representation of a spectrum in any variable, with associated POT.
Definition: Spectrum.h:40
void Go()
Call Go() on all the loaders.
Definition: Loaders.cxx:162
Log-likelihood scan across two parameters.
const NormSyst kNormSyst
Definition: Systs.cxx:14
void DrawBestFit(Color_t color, Int_t marker=kFullCircle) const
Draw the best fit point.
Definition: ISurface.cxx:32
#define mcset
void template_nonGENIE_systs()
const Binning kNumuEnergyBinning
Definition: Binnings.cxx:13
Spectrum FakeData(double pot) const
Synonymous with AsimovData(). Retained for compatibility.
Definition: Spectrum.cxx:349
const Cut kNumuQESel([](const caf::SRProxy *sr){std::cout<< "WARNING! Attempting to access kNumuQESel which relies on qepid (which no longer exists.) Aborting..."<< std::endl;abort(); return false;})
Definition: NumuCuts.h:38
void SetdCP(const T &dCP) override
Definition: OscCalcPMNS.h:40
void DrawContour(TH2 *fc, Style_t style, Color_t color, double minchi=-1)
Definition: ISurface.cxx:44
void SetDmsq32(const T &dmsq32) override
Definition: OscCalcPMNS.h:36
const Var kCCE
Definition: NumuVars.h:21
void SetTh13(const T &th13) override
Definition: OscCalcPMNS.h:38
const Cut kNumuNCRej([](const caf::SRProxy *sr){return(sr->sel.remid.pid >0.75);})
Definition: NumuCuts.h:24
const ConstrainedFitVarWithPrior fitDmSq32Scaled_UniformPrior & kFitDmSq32Scaled
TLatex * prelim
Definition: Xsec_final.C:133
#define pot
void SetRho(double rho) override
Definition: OscCalcPMNS.h:34
#define location
Combine multiple component experiments.
void Simulation()
TH2 * Gaussian90Percent2D(const FrequentistSurface &s)
Up-value surface for 90% confidence in 2D in gaussian approximation.
std::vector< Loaders * > loaders
Definition: syst_header.h:386
const Var kQEE
Energy estimator for quasielastic CC events.
Definition: NumuVars.cxx:28
TH1 * DataMCComparison(const Spectrum &data, const Spectrum &mc, EBinType bintype)
Definition: Plots.cxx:35
Float_t e
Definition: plot.C:35
enum BeamMode kGreen
enum BeamMode kBlue
void SetLoaderPath(const std::string &path, caf::Det_t det, DataMC datamc, DataSource src=kBeam, SwappingConfig swap=kNonSwap)
Configure loader via wildcard path.
Definition: Loaders.cxx:25
const NCScaleSyst kNCScaleSyst
Definition: Systs.cxx:16
Compare a single data spectrum to the MC + cosmics expectation.
enum BeamMode string