Functions | Variables
make_nue_pidtuning.C File Reference
#include "OscLib/OscCalcDumb.h"
#include "CAFAna/Analysis/Calcs.h"
#include "CAFAna/Core/Spectrum.h"
#include "CAFAna/Core/SpectrumLoader.h"
#include "CAFAna/Systs/Systs.h"
#include "CAFAna/Core/SystShifts.h"
#include "CAFAna/Core/LoadFromFile.h"
#include "CAFAna/Cuts/Cuts.h"
#include "CAFAna/Cuts/TimingCuts.h"
#include "3FlavorAna/Cuts/NueCuts2017.h"
#include "CAFAna/Cuts/SpillCuts.h"
#include "CAFAna/Vars/Vars.h"
#include "CAFAna/Vars/FitVars.h"
#include "3FlavorAna/Vars/NumuVars.h"
#include "3FlavorAna/Vars/NueVars.h"
#include "CAFAna/Vars/PPFXWeights.h"
#include "CAFAna/Vars/HistAxes.h"
#include "CAFAna/Prediction/PredictionNoExtrap.h"
#include "Utilities/func/MathUtil.h"
#include "TCanvas.h"
#include "TH2.h"
#include "TH1.h"
#include "TFile.h"
#include "TLegend.h"
#include <iostream>
#include <cmath>

Go to the source code of this file.

Functions

TH2 * TH1ToTH2 (TH1 *h)
 
void PeripheralCuts (std::string name)
 
void CVNCuts (std::string name)
 
void make_nue_pidtuning (bool makePlots=false)
 

Variables

double pot = 8.0e20
 
double lt = 199
 
double dCP = 1.2*TMath::Pi()
 
double dmsq32 = 0.00244
 
double ssth23 = 0.56
 
double ss2th13 = 0.082
 
const Cut kNue2018CVNVsCosPID ([](const caf::SRProxy *sr){double cvn=sr->sel.cvnProd3Train.nueid;double bdt=sr->sel.nuecosrej.cospidcontain;if(cvn > 0.99||(cvn >0.95 &&bdt > 0.57)) return true;return false;})
 
const Cut kNue2018FDPeripheral
 
const Var kNue2018SelectionBin ([](const caf::SRProxy *sr){bool isPeri=kNue2018FDPeripheral(sr);double cvn=sr->sel.cvnProd3Train.nueid;if(isPeri) return float(3.5);if(cvn > 0.75 &&cvn< 0.87) return float(0.5);if(cvn > 0.87 &&cvn< 0.95) return float(1.5);if(cvn > 0.95) return float(2.5);return float(-0.5);})
 
const Var kNue2018AnaBin ([](const caf::SRProxy *sr){int selBin=kNue2018SelectionBin(sr);float nuE=kNueEnergy2017(sr);int nuEBin=nuE/0.5;assert(nuEBin<=8 &&"An event with nuE > 4.5 should never happen");int anaBin=9 *selBin+nuEBin;if(anaBin > 36) anaBin=-1;return anaBin;})
 
const Var kCVNSSe ([](const caf::SRProxy *sr){return sr->sel.cvnProd3Train.nueid;})
 
const Cut kNue2018FDCore = kCVNSSe > 0.75 && kNue2017CorePresel
 
const Cut kNue2018FD = kNue2018FDCore || kNue2018FDPeripheral
 

Function Documentation

void CVNCuts ( std::string  name)

Definition at line 140 of file make_nue_pidtuning.C.

References calc, std::cos(), caf::Proxy< caf::SRNueCosRej >::cospidcontain, om::cout, dCP, ana::DefaultOscCalc(), dmsq32, allTimeWatchdog::endl, plot_validation_datamc::fname, hsig, MECModelEnuComparisons::i, calib::j, ana::Sign::kAntiNu, ana::Current::kCC, ana::kFitDeltaInPiUnits, ana::kFitDmSq32, ana::kFitSinSq2Theta13, ana::kFitSinSqTheta23, ana::kLivetime, ana::kNue2018CVNVsCosPID(), ana::Flavors::kNuMuToNuE, lt, caf::Proxy< caf::SRIDBranch >::nuecosrej, pot, plot_validation_datamc::pred, ana::PredictionExtrap::Predict(), ana::PredictionExtrap::PredictComponent(), runNovaSAM::release, caf::Proxy< caf::StandardRecord >::sel, ana::FitSinSq2Theta13::SetValue(), ana::FitVarWithPrior::SetValue(), ana::ConstrainedFitVarWithPrior::SetValue(), ana::FitDmSq32::SetValue(), std::sqrt(), sr, ss2th13, ssth23, string, and ana::Spectrum::ToTH1().

141 {
142  std::string fname = "out_fdpred.root";
144  LoadFromFile<PredictionNoExtrap>(fname,"pred"+name).release();
145  Spectrum *cos = LoadFromFile<Spectrum>(fname,"cos"+name).release();
146 
148 
149  kFitDeltaInPiUnits.SetValue(calc,dCP/TMath::Pi());
150  kFitDmSq32.SetValue(calc,dmsq32);
153 
154 
157  Spectrum bb = pred->Predict(calc);
158  bb -= sig;
159 
160  TH1 *hbb = bb.ToTH1(pot);
161  TH1 *hcos = cos->ToTH1(lt,kLivetime);
162  TH1 *hsig = sig.ToTH1(pot);
163 
164  TH1 *htot = cos->ToTH1(lt,kLivetime);
165  htot->Add(hbb);
166  htot->Add(hsig);
167 
168  double fom = -1;
169  // Bin boundaries for CVN
170  double best1 = -1;
171  double best2 = -1;
172  double best3 = -1;
173 
174  std::cout << "Finding optimal FOM for 1 CVN bin analysis" << std::endl;
175  for (int i = 1; i <= 50; i++){
176  double sig1 = hsig->Integral(i,50);
177  double tot1 = htot->Integral(i,50);
178  double fom1 = sig1/sqrt(tot1);
179  //double fom1 = sig1/sqrt(tot1);
180  if (fom1 > fom){
181  fom = fom1;
182  best1 = 0.5 + 0.01*(i-1);
183  }
184  }
185  std::cout << fom << ": " << best1 << "-" << "1" << std::endl;
186 
187 
188  std::cout << "Finding optimal FOM for 2 CVN bin analysis" << std::endl;
189  fom = -1; // reset fom
190  for (int i = 1; i <= 49; i++){ // Can't go all the way to 1
191  for (int j = i+1; j <= 50; j++){ // Must start above 1 bin max
192  double sig1 = hsig->Integral(i,j-1);
193  double tot1 = htot->Integral(i,j-1);
194  double fom1 = sig1/sqrt(tot1);
195  double sig2 = hsig->Integral(j,50);
196  double tot2 = htot->Integral(j,50);
197  double fom2 = sig2/sqrt(tot2);
198  if (sqrt(fom1*fom1+fom2*fom2) > fom){
199  fom = sqrt(fom1*fom1+fom2*fom2);
200  best1 = 0.5 + 0.01*(i-1);
201  best2 = 0.5 + 0.01*(j-1);
202  }
203  }
204  }
205  std::cout << fom << ": " << best1 << "-" << best2 << "-1" << std::endl;
206 
207 
208  std::cout << "Finding optimal FOM for 2 CVN bin analysis" << std::endl;
209  fom = -1; // Reset fom
210  for (int i = 1; i <= 48; i++){
211  for (int j = i+1; j <= 49; j++){
212  for (int k = j+1; k <= 50; k++){
213  double sig1 = hsig->Integral(i,j-1);
214  double tot1 = htot->Integral(i,j-1);
215  double fom1 = sig1/sqrt(tot1);
216 
217  double sig2 = hsig->Integral(j,k-1);
218  double tot2 = htot->Integral(j,k-1);
219  double fom2 = sig2/sqrt(tot2);
220 
221  double sig3 = hsig->Integral(k,50);
222  double tot3 = htot->Integral(k,50);
223  double fom3 = sig2/sqrt(tot2);
224 
225  double tfom = sqrt(fom1*fom1+fom2*fom2+fom3*fom3);
226  if (tfom>fom){
227  fom = tfom;
228  best1 = 0.5 + 0.01*(i-1);
229  best2 = 0.5 + 0.01*(j-1);
230  best3 = 0.5 + 0.01*(k-1);
231  }
232  }
233  }
234  }
235  std::cout << fom << ": " << best1 << "-" << best2 << "-" << best3 << "-1" << std::endl;
236 
237 }
Spectrum PredictComponent(osc::IOscCalc *calc, Flavors::Flavors_t flav, Current::Current_t curr, Sign::Sign_t sign) const override
const XML_Char * name
Definition: expat.h:151
double lt
double ssth23
Antineutrinos-only.
Definition: IPrediction.h:50
(&#39; appearance&#39;)
Definition: IPrediction.h:18
TH1D * ToTH1(double exposure, Color_t col=kBlack, Style_t style=kSolid, EExposureType expotype=kPOT, EBinType bintype=kBinContent) const
Histogram made from this Spectrum, scaled to some exposure.
Definition: Spectrum.cxx:176
const FitDmSq32 kFitDmSq32
Definition: FitVars.cxx:18
void SetValue(osc::IOscCalcAdjustable *osc, double val) const override
Definition: FitVars.cxx:177
T sqrt(T number)
Definition: d0nt_math.hpp:156
void SetValue(osc::IOscCalcAdjustable *osc, double val) const override
Forward to wrapped Var&#39;s SetValue()
void SetValue(osc::IOscCalcAdjustable *osc, double val) const override
Definition: FitVars.cxx:48
TH1F * hsig
Definition: Xdiff_gwt.C:59
osc::OscCalcDumb calc
osc::IOscCalcAdjustable * DefaultOscCalc()
Create a new calculator with default assumptions for all parameters.
Definition: Calcs.cxx:49
Representation of a spectrum in any variable, with associated POT.
Definition: Spectrum.h:39
Charged-current interactions.
Definition: IPrediction.h:39
Spectrum Predict(osc::IOscCalc *calc) const override
void SetValue(osc::IOscCalcAdjustable *osc, double val) const override
double dCP
double pot
const double j
Definition: BetheBloch.cxx:29
OStream cout
Definition: OStream.cxx:6
double dmsq32
double ss2th13
const ConstrainedFitVarWithPrior fitSsqTh23_UniformPriorSsqTh23 & kFitSinSqTheta23
T cos(T number)
Definition: d0nt_math.hpp:78
const FitSinSq2Theta13 kFitSinSq2Theta13
Definition: FitVars.cxx:13
Prediction that just uses FD MC, with no extrapolation.
const FitVarWithPrior fitDeltaInPiUnits_UniformPriordCP & kFitDeltaInPiUnits
enum BeamMode string
void make_nue_pidtuning ( bool  makePlots = false)

Definition at line 298 of file make_nue_pidtuning.C.

299 {
300 
301  if (!makePlots){
302 
303  SpectrumLoader lSwap("dpershey_prod4-cosrej_rhc_mc_fluxswap");
304  SpectrumLoader lNonS("dpershey_prod4-cosrej_rhc_mc_nonswap");
305  SpectrumLoader lTauS("dpershey_prod4-cosrej_rhc_mc_tauswap");
306 
307  SpectrumLoader lCosmic("dpershey_prod4-cosrej_cosmicdata_rhctune");
308 
309  lSwap.SetSpillCut(kStandardSpillCuts);
310  lNonS.SetSpillCut(kStandardSpillCuts);
311  lTauS.SetSpillCut(kStandardSpillCuts);
312  lCosmic.SetSpillCut(kStandardSpillCuts);
313 
314  Cut selCore = kNue2017CorePresel;
315  Cut selPeri = kNue2017PeripheralPresel;
317 
318 
319 
320  // Peripheral cuts are 2D PID cuts, set up 2D vars now
321  Var kBDTLight = SIMPLEVAR(sel.nuecosrej.cospidlight);
322  Var kBDTCont = SIMPLEVAR(sel.nuecosrej.cospidcontain);
323 
324  Binning bdtbins = Binning::Simple(50,0.35,0.85);
325  Binning cvnbins = Binning::Simple(50,0.5,1.);
326 
327  Var kLightCVN = Var2D(kBDTLight,bdtbins,
328  kCVNSSe,cvnbins);
329  Var kContCVN = Var2D(kBDTCont,bdtbins,
330  kCVNSSe,cvnbins);
331 
332 
333  // Prediction as a function of CVN, for main PID tuning
334  // Be sure you're using the right core preselection, it may change
335  PredictionNoExtrap predCVN(lNonS,lSwap,lTauS,"",
336  Binning::Simple(50,0.5,1),
337  kCVNSSe, selCore, kNoShift, wei);
338  Spectrum cosCVN(lCosmic,HistAxis("",Binning::Simple(50,0.5,1),kCVNSSe),
339  kInCosmicTimingWindow&&selCore,kNoShift,wei);
340 
341  // 2D predictions for determining peripheral PID cuts
342  PredictionNoExtrap predLightPeri(lNonS,lSwap,lTauS,
343  "",Binning::Simple(2500,0,2500),kLightCVN,
344  selPeri,kNoShift,wei); // BDTLight
345  Spectrum cosLightPeri(lCosmic,
346  HistAxis("",Binning::Simple(2500,0,2500),kLightCVN),
347  selPeri&&kInCosmicTimingWindow,kNoShift,wei);
348  PredictionNoExtrap predContPeri (lNonS,lSwap,lTauS,
349  "",Binning::Simple(2500,0,2500),kContCVN,
350  selPeri,kNoShift,wei); // BDTContain
351  Spectrum cosContPeri (lCosmic,
352  HistAxis("",Binning::Simple(2500,0,2500),kContCVN),
353  selPeri&&kInCosmicTimingWindow,kNoShift,wei);
354 
355  // Prediction with 2017 bin boundaries, just for fun
356  PredictionNoExtrap pred2017(lNonS,lSwap,lTauS,"",
357  Binning::Simple(36,0,36),
359  kNue2018FD,kNoShift,wei);
360  Spectrum cos2017(lCosmic,
361  HistAxis("",Binning::Simple(36,0,36),kNue2018AnaBin),
363 
364 
365 
366 
367 
368 
369 
370 
371 
372  lSwap.Go();
373  lNonS.Go();
374  lTauS.Go();
375  lCosmic.Go();
376 
377  TFile* outFile = new TFile("out_fdcosrej.root","RECREATE");
378  outFile->cd();
379 
380  pred2017.SaveTo(outFile, "pred2017");
381  cos2017.SaveTo(outFile, "cos2017");
382 
383  predCVN.SaveTo(outFile, "predCVN");
384  cosCVN.SaveTo(outFile, "cosCVN");
385 
386  predLightPeri.SaveTo(outFile, "predLightPeri");
387  cosLightPeri .SaveTo(outFile, "cosLightPeri");
388 
389  predContPeri.SaveTo(outFile, "predContPeri");
390  cosContPeri .SaveTo(outFile, "cosContPeri");
391 
392 
393  outFile->Close();
394  } // End if !makePlots
395  else {
396 
397  PeripheralCuts("LightPeri");
398  CVNCuts("CVN");
399 
400  }
401 }
Represent the binning of a Spectrum&#39;s x-axis.
Definition: Binning.h:16
const Var kPPFXFluxCVWgt
Definition: PPFXWeights.h:16
void makePlots()
Definition: makePlots.C:17
#define SIMPLEVAR(CAFNAME)
Definition: Var.h:11
Representation of a spectrum in any variable, with associated POT.
Definition: Spectrum.h:39
const Cut kInCosmicTimingWindow
Is the event far from the start and ends of the spill ? For FD cosmic selection.
Definition: TimingCuts.cxx:165
TFile * outFile
Definition: PlotXSec.C:135
void CVNCuts(std::string name)
const Var kCVNSSe([](const caf::SRProxy *sr){return sr->sel.cvnProd3Train.nueid;})
const Cut kNue2018FD
const Cut kNue2017PeripheralPresel
Definition: NueCuts2017.h:110
const SystShifts kNoShift
Definition: SystShifts.cxx:22
const Binning cvnbins
Collaborates with Spectrum and OscillatableSpectrum to fill spectra from CAF files.
const Cut kNue2017CorePresel
Full preselection for 2017 "core" sample with Cut-based CosRej.
Definition: NueCuts2017.h:105
const Var kNue2018AnaBin([](const caf::SRProxy *sr){int selBin=kNue2018SelectionBin(sr);float nuE=kNueEnergy2017(sr);int nuEBin=nuE/0.5;assert(nuEBin<=8 &&"An event with nuE > 4.5 should never happen");int anaBin=9 *selBin+nuEBin;if(anaBin > 36) anaBin=-1;return anaBin;})
const SpillCut kStandardSpillCuts
Apply this unless you&#39;re doing something special.
Definition: SpillCuts.h:49
Prediction that just uses FD MC, with no extrapolation.
const Var kXSecCVWgt2017
Definition: XsecTunes.h:36
_HistAxis< Var > HistAxis
Definition: HistAxis.h:10
void PeripheralCuts(std::string name)
void PeripheralCuts ( std::string  name)

Definition at line 68 of file make_nue_pidtuning.C.

References calc, allTimeWatchdog::can, std::cos(), om::cout, dCP, ana::DefaultOscCalc(), dmsq32, allTimeWatchdog::endl, plot_validation_datamc::fname, make_syst_table_plots::h, hsig, MECModelEnuComparisons::i, ana::Spectrum::Integral(), calib::j, ana::Sign::kAntiNu, ana::Current::kCC, ana::kFitDeltaInPiUnits, ana::kFitDmSq32, ana::kFitSinSq2Theta13, ana::kFitSinSqTheta23, ana::kLivetime, ana::Flavors::kNuMuToNuE, lt, pot, plot_validation_datamc::pred, ana::PredictionExtrap::Predict(), ana::PredictionExtrap::PredictComponent(), runNovaSAM::release, ana::FitSinSq2Theta13::SetValue(), ana::FitVarWithPrior::SetValue(), ana::ConstrainedFitVarWithPrior::SetValue(), ana::FitDmSq32::SetValue(), std::sqrt(), ss2th13, ssth23, string, TH1ToTH2(), PandAna.Demos.pi0_spectra::tot, ana::Spectrum::ToTH1(), and ana::UniqueName().

69 {
70  std::string fname = "out_fdpred.root";
72  LoadFromFile<PredictionNoExtrap>(fname,"pred"+name).release();
73  Spectrum *cos = LoadFromFile<Spectrum>(fname,"cos"+name).release();
74 
75  // Setup oscillations
77 
78  kFitDeltaInPiUnits.SetValue(calc,dCP/TMath::Pi());
82 
83  // Make signal, background spectra
86  Spectrum bb = pred->Predict(calc);
87  bb -= sig;
88 
89  TH2 *hbb = TH1ToTH2(bb .ToTH1(pot));
90  TH2 *hsig = TH1ToTH2(sig.ToTH1(pot));
91  TH2 *hcos = TH1ToTH2(cos->ToTH1(lt,kLivetime));
92 
93  TH2 *htot = TH1ToTH2(cos->ToTH1(lt,kLivetime));
94  htot->Add(hbb);
95  htot->Add(hsig);
96 
97  std::vector<double> sigs(50,0);
98  std::vector<double> tots(50,0);
99 
100  // scan over CVN bins
101  for (int i = 1; i <= 50; i++){
102  double fom = 0;
103  double bestY = 0;
104  // Calculate a best BDT cut
105  for (int j = 1; j <= 50; j++){
106  double sig = hsig->Integral(i,i,j,50);
107  double tot = htot->Integral(i,i,j,50);
108  if (tot == 0) continue;
109  double cfom = sig/sqrt(tot);
110  if (cfom > fom){
111  fom = cfom;
112  bestY = 0.35 + 0.01*(j-1);
113  }
114  }
115  if (i >=46)
116  std::cout << 0.49 + 0.01*i << " " << bestY << " " << fom << std::endl;
117  //foms.push_back(fom);
118  for (int j = 0; j < i; j++){
119  // Accumalate sig / tot events above this CVN cut, and BDT cuts
120  sigs[j] += hsig->Integral(i,i,(bestY-0.35)/0.01+1,50);
121  tots[j] += htot->Integral(i,i,(bestY-0.35)/0.01+1,50);
122  }
123  }
124 
125  TH1 *h = new TH1F(UniqueName().c_str(),"",50,0.5,1); // FOM vs CVN plot
126  for (int i = 50; i >= 1; i--){
127  h->SetBinContent(i,sigs[i-1]/sqrt(tots[i-1]));
128  }
129 
130  h->GetXaxis()->SetTitle("CVN-SS");
131  h->GetYaxis()->SetTitle("Total FOM");
132  h->GetXaxis()->CenterTitle();
133  h->GetYaxis()->CenterTitle();
134 
135  TCanvas *can = new TCanvas();
136  h->Draw();
137 
138 }
Spectrum PredictComponent(osc::IOscCalc *calc, Flavors::Flavors_t flav, Current::Current_t curr, Sign::Sign_t sign) const override
const XML_Char * name
Definition: expat.h:151
double lt
double ssth23
Antineutrinos-only.
Definition: IPrediction.h:50
(&#39; appearance&#39;)
Definition: IPrediction.h:18
TH1D * ToTH1(double exposure, Color_t col=kBlack, Style_t style=kSolid, EExposureType expotype=kPOT, EBinType bintype=kBinContent) const
Histogram made from this Spectrum, scaled to some exposure.
Definition: Spectrum.cxx:176
const FitDmSq32 kFitDmSq32
Definition: FitVars.cxx:18
void SetValue(osc::IOscCalcAdjustable *osc, double val) const override
Definition: FitVars.cxx:177
T sqrt(T number)
Definition: d0nt_math.hpp:156
void SetValue(osc::IOscCalcAdjustable *osc, double val) const override
Forward to wrapped Var&#39;s SetValue()
double Integral(double exposure, double *err=0, EExposureType expotype=kPOT) const
Return total number of events scaled to pot.
Definition: Spectrum.cxx:277
void SetValue(osc::IOscCalcAdjustable *osc, double val) const override
Definition: FitVars.cxx:48
TH1F * hsig
Definition: Xdiff_gwt.C:59
osc::OscCalcDumb calc
osc::IOscCalcAdjustable * DefaultOscCalc()
Create a new calculator with default assumptions for all parameters.
Definition: Calcs.cxx:49
Representation of a spectrum in any variable, with associated POT.
Definition: Spectrum.h:39
TH2 * TH1ToTH2(TH1 *h)
Charged-current interactions.
Definition: IPrediction.h:39
Spectrum Predict(osc::IOscCalc *calc) const override
void SetValue(osc::IOscCalcAdjustable *osc, double val) const override
double dCP
double pot
const double j
Definition: BetheBloch.cxx:29
OStream cout
Definition: OStream.cxx:6
double dmsq32
double ss2th13
const ConstrainedFitVarWithPrior fitSsqTh23_UniformPriorSsqTh23 & kFitSinSqTheta23
T cos(T number)
Definition: d0nt_math.hpp:78
const FitSinSq2Theta13 kFitSinSq2Theta13
Definition: FitVars.cxx:13
Prediction that just uses FD MC, with no extrapolation.
const FitVarWithPrior fitDeltaInPiUnits_UniformPriordCP & kFitDeltaInPiUnits
std::string UniqueName()
Return a different string each time, for creating histograms.
Definition: Utilities.cxx:28
enum BeamMode string
TH2* TH1ToTH2 ( TH1 *  h)

Definition at line 57 of file make_nue_pidtuning.C.

References MECModelEnuComparisons::i, runNovaSAM::ret, and ana::UniqueName().

Referenced by PeripheralCuts().

58 {
59  TH2 *ret = new TH2F(UniqueName().c_str(),"",50,0.5,1,50,0.35,0.85);
60  for (int i = 1; i <= 2500; i++){
61  int xbin = (i-1)%50 + 1;
62  int ybin = (i-1)/50 + 1;
63  ret->SetBinContent(xbin,ybin,h->GetBinContent(i));
64  }
65  return ret;
66 }
std::string UniqueName()
Return a different string each time, for creating histograms.
Definition: Utilities.cxx:28

Variable Documentation

double dCP = 1.2*TMath::Pi()
double dmsq32 = 0.00244
const Var kCVNSSe([](const caf::SRProxy *sr){return sr->sel.cvnProd3Train.nueid;})
const Var kNue2018AnaBin([](const caf::SRProxy *sr){int selBin=kNue2018SelectionBin(sr);float nuE=kNueEnergy2017(sr);int nuEBin=nuE/0.5;assert(nuEBin<=8 &&"An event with nuE > 4.5 should never happen");int anaBin=9 *selBin+nuEBin;if(anaBin > 36) anaBin=-1;return anaBin;})
const Cut kNue2018CVNVsCosPID([](const caf::SRProxy *sr){double cvn=sr->sel.cvnProd3Train.nueid;double bdt=sr->sel.nuecosrej.cospidcontain;if(cvn > 0.99||(cvn >0.95 &&bdt > 0.57)) return true;return false;})
const Cut kNue2018FD = kNue2018FDCore || kNue2018FDPeripheral

Definition at line 292 of file make_nue_pidtuning.C.

const Cut kNue2018FDCore = kCVNSSe > 0.75 && kNue2017CorePresel

Definition at line 291 of file make_nue_pidtuning.C.

const Cut kNue2018FDPeripheral
Initial value:
const Cut kNue2018CVNVsCosPID([](const caf::SRProxy *sr){double cvn=sr->sel.cvnProd3Train.nueid;double bdt=sr->sel.nuecosrej.cospidcontain;if(cvn > 0.99||(cvn >0.95 &&bdt > 0.57)) return true;return false;})
const Cut kNue2017PeripheralPresel
Definition: NueCuts2017.h:110

Definition at line 253 of file make_nue_pidtuning.C.

const Var kNue2018SelectionBin([](const caf::SRProxy *sr){bool isPeri=kNue2018FDPeripheral(sr);double cvn=sr->sel.cvnProd3Train.nueid;if(isPeri) return float(3.5);if(cvn > 0.75 &&cvn< 0.87) return float(0.5);if(cvn > 0.87 &&cvn< 0.95) return float(1.5);if(cvn > 0.95) return float(2.5);return float(-0.5);})
double lt = 199
double pot = 8.0e20

Definition at line 45 of file make_nue_pidtuning.C.

Referenced by CVNCuts(), and PeripheralCuts().

double ss2th13 = 0.082
double ssth23 = 0.56