Analyse_Data2DataComp_kNumu2020ND.C
Go to the documentation of this file.
1 #include "CAFAna/Cuts/Cuts.h"
8 #include "CAFAna/Core/Var.h"
10 #include "CAFAna/Vars/HistAxes.h"
14 
15 #include "TFile.h"
16 #include "TSystem.h"
17 
18 
19 using namespace ana;
20 
21 void Analyse_Data2DataComp_kNumu2020ND(bool isFHC = true, std::string data1 = "", std::string data2 = "", std::string s_OutFile = "") {
22 
23  //CUTS TO DIVIDE DETECTOR INTO QUADRANTS.
24  const Cut kUpperWest([](const caf::SRProxy* sr){
25  return ( sr->slc.meanpos.x > 0.0 ) && ( sr->slc.meanpos.y > 0.0 );
26  });
27 
28  const Cut kLowerEast([](const caf::SRProxy* sr){
29  return ( sr->slc.meanpos.x < 0.0 ) && ( sr->slc.meanpos.y < 0.0 );
30  });
31 
32  //VECTORS FOR CUSTOM BINNING.
33  const std::vector<double> vec_HadNHit_Binning = {0, 2, 4, 6, 8, 10, 12, 14, 18, 22, 26, 30, 34, 38, 45, 55, 70, 85, 100};
34 
35  //DEFINE SOME VARIABLES TO PLOT.
36  const Var kTrkCalE ([](const caf::SRProxy* sr) { return (sr->trk.kalman.ntracks < 1 ? 0. : (float)sr->trk.kalman.tracks[0].calE); });
37  const Var kTrkCalEPerNHit([](const caf::SRProxy* sr){
38  float TrkCalE = (sr->trk.kalman.ntracks < 1 ? 0. : (float)sr->trk.kalman.tracks[0].calE);
39  float MuNHit = (sr->trk.kalman.ntracks < 1 ? 0. : (float)sr->trk.kalman.tracks[0].nhit);
40  return (MuNHit <= 0 ? 0. : TrkCalE/MuNHit);
41  });
42  //SOME SELECTION VARIABLES TO PLOT.
43  const Var kCVNLoosePreselPtp_numuid = SIMPLEVAR(sel.cvnloosepreselptp.numuid);
44  const Var kCVNLoosePreselPtp_nueid = SIMPLEVAR(sel.cvnloosepreselptp.nueid);
45  const Var kCVNLoosePreselPtp_ncid = SIMPLEVAR(sel.cvnloosepreselptp.ncid);
46  const Var kCVNLoosePreselPtp_cosmicid = SIMPLEVAR(sel.cvnloosepreselptp.cosmicid);
47  const Var kCVNOldPreselPtp_numuid = SIMPLEVAR(sel.cvnoldpresel.numuid);
48  const Var kCVNOldPreselPtp_nueid = SIMPLEVAR(sel.cvnoldpresel.nueid);
49  const Var kCVNOldPreselPtp_ncid = SIMPLEVAR(sel.cvnoldpresel.ncid);
50  const Var kCVNOldPreselPtp_cosmicid = SIMPLEVAR(sel.cvnoldpresel.cosmicid);
51 
52  std::vector<SpectrumLoader*> loaders;
53  loaders.push_back(new SpectrumLoader(data1));
54  loaders.push_back(new SpectrumLoader(data2));
55 
56  //GET HADE QUANTILES.
57  std::string sFHC_RHC = "rhc";
58  if(isFHC) sFHC_RHC = "fhc";
59 
60  std::string fdspecfile = (std::string)std::getenv("NUMUDATA_DIR")+"lib/ana2020/Quantiles/quantiles_"+sFHC_RHC+"_full_numu2020.root";
61 
62  std::cout << "\n\nACCESSING QUANTILE BOUNDARY INFORMATION FROM FILE:\n" << fdspecfile << "\n\n\n";
63 
64  TFile* f_In = TFile::Open( fdspecfile.c_str() );
65  TH2 *FDSpec2D = (TH2*)f_In->FindObjectAny( "FDSpec2D" );
66  const int NHadEFracQuantiles = 4;
67  std::vector<Cut> QuantCuts = QuantileCutsFromTH2(FDSpec2D, kNumuCCOptimisedAxis, kHadEFracAxis, NHadEFracQuantiles);
68  QuantCuts.push_back(kNoCut);
69 
70  //DEFINE ARRAY OF LOADERS AND SPECTRA.
71  unsigned int nLoader = 2;
72  unsigned int nQuant = 5;
73  std::vector<Spectrum*> mySpecs[nLoader][nQuant];
74 
75  for(unsigned int Q = 0; Q < nQuant; ++Q) {
76  for(unsigned int L = 0; L < nLoader; ++L){
77 
78  // DEFINE ALL SPECTRA HERE:
79  mySpecs[L][Q].push_back(new Spectrum("Nu E (all slices)", kNumuCCEOptimisedBinning, *loaders[L], kCCE, kNumu2020ND && QuantCuts[Q]));
80  mySpecs[L][Q].push_back(new Spectrum("Nu E (upper-West)", kNumuCCEOptimisedBinning, *loaders[L], kCCE, kNumu2020ND && QuantCuts[Q] && kUpperWest));
81  mySpecs[L][Q].push_back(new Spectrum("Nu E (lower-East)", kNumuCCEOptimisedBinning, *loaders[L], kCCE, kNumu2020ND && QuantCuts[Q] && kLowerEast));
82 
83  mySpecs[L][Q].push_back(new Spectrum("NHit in Slice (all slices)", Binning::Simple(25, 0, 300), *loaders[L], kNHit, kNumu2020ND && QuantCuts[Q]));
84  mySpecs[L][Q].push_back(new Spectrum("NHit in Slice (upper-West)", Binning::Simple(25, 0, 300), *loaders[L], kNHit, kNumu2020ND && QuantCuts[Q] && kUpperWest));
85  mySpecs[L][Q].push_back(new Spectrum("NHit in Slice (lower-East)", Binning::Simple(25, 0, 300), *loaders[L], kNHit, kNumu2020ND && QuantCuts[Q] && kLowerEast));
86 
87  mySpecs[L][Q].push_back(new Spectrum("Mu Trk Length, (m) (all slices)", Binning::Simple(50, 0, 16), *loaders[L], kTrkLength, kNumu2020ND && QuantCuts[Q]));
88  mySpecs[L][Q].push_back(new Spectrum("Mu Trk Length, (m) (upper-West)", Binning::Simple(50, 0, 16), *loaders[L], kTrkLength, kNumu2020ND && QuantCuts[Q] && kUpperWest));
89  mySpecs[L][Q].push_back(new Spectrum("Mu Trk Length, (m) (lower-East)", Binning::Simple(50, 0, 16), *loaders[L], kTrkLength, kNumu2020ND && QuantCuts[Q] && kLowerEast));
90 
91  mySpecs[L][Q].push_back(new Spectrum("Mu RecoE, (GeV) (all slices)", Binning::Simple(50, 0, 4.5), *loaders[L], kCCE - kHadE, kNumu2020ND && QuantCuts[Q]));
92  mySpecs[L][Q].push_back(new Spectrum("Mu RecoE, (GeV) (upper-West)", Binning::Simple(50, 0, 4.5), *loaders[L], kCCE - kHadE, kNumu2020ND && QuantCuts[Q] && kUpperWest));
93  mySpecs[L][Q].push_back(new Spectrum("Mu RecoE, (GeV) (lower-East)", Binning::Simple(50, 0, 4.5), *loaders[L], kCCE - kHadE, kNumu2020ND && QuantCuts[Q] && kLowerEast));
94 
95  mySpecs[L][Q].push_back(new Spectrum("Mu CalE, (GeV) (all slices)", Binning::Simple(25, 0, 4), *loaders[L], kTrkCalE, kNumu2020ND && QuantCuts[Q]));
96  mySpecs[L][Q].push_back(new Spectrum("Mu CalE, (GeV) (upper-West)", Binning::Simple(25, 0, 4), *loaders[L], kTrkCalE, kNumu2020ND && QuantCuts[Q] && kUpperWest));
97  mySpecs[L][Q].push_back(new Spectrum("Mu CalE, (GeV) (lower-East)", Binning::Simple(25, 0, 4), *loaders[L], kTrkCalE, kNumu2020ND && QuantCuts[Q] && kLowerEast));
98 
99  mySpecs[L][Q].push_back(new Spectrum("Mu NHit (all slices)", Binning::Simple(25, 0, 220), *loaders[L], kTrkNhits, kNumu2020ND && QuantCuts[Q]));
100  mySpecs[L][Q].push_back(new Spectrum("Mu NHit (upper-West)", Binning::Simple(25, 0, 220), *loaders[L], kTrkNhits, kNumu2020ND && QuantCuts[Q] && kUpperWest));
101  mySpecs[L][Q].push_back(new Spectrum("Mu NHit (lower-East)", Binning::Simple(25, 0, 220), *loaders[L], kTrkNhits, kNumu2020ND && QuantCuts[Q] && kLowerEast));
102 
103  mySpecs[L][Q].push_back(new Spectrum("Muon CalE / Hit, (GeV) (all slices)", Binning::Simple(25, 0.0, 0.03), *loaders[L], kTrkCalEPerNHit, kNumu2020ND && QuantCuts[Q]));
104  mySpecs[L][Q].push_back(new Spectrum("Muon CalE / Hit, (GeV) (upper-West)", Binning::Simple(25, 0.0, 0.03), *loaders[L], kTrkCalEPerNHit, kNumu2020ND && QuantCuts[Q] && kUpperWest));
105  mySpecs[L][Q].push_back(new Spectrum("Muon CalE / Hit, (GeV) (lower-East)", Binning::Simple(25, 0.0, 0.03), *loaders[L], kTrkCalEPerNHit, kNumu2020ND && QuantCuts[Q] && kLowerEast));
106 
107  mySpecs[L][Q].push_back(new Spectrum("Had RecoE, (GeV) (all slices)", Binning::Simple(25, 0, 3), *loaders[L], kHadE, kNumu2020ND && QuantCuts[Q]));
108  mySpecs[L][Q].push_back(new Spectrum("Had RecoE, (GeV) (upper-West)", Binning::Simple(50, 0, 3), *loaders[L], kHadE, kNumu2020ND && QuantCuts[Q] && kUpperWest));
109  mySpecs[L][Q].push_back(new Spectrum("Had RecoE, (GeV) (lower-East)", Binning::Simple(50, 0, 3), *loaders[L], kHadE, kNumu2020ND && QuantCuts[Q] && kLowerEast));
110 
111  mySpecs[L][Q].push_back(new Spectrum("Had CalE, (GeV) (all slices)", Binning::Simple(50, 0, 2), *loaders[L], kNumuHadCalE, kNumu2020ND && QuantCuts[Q]));
112  mySpecs[L][Q].push_back(new Spectrum("Had CalE, (GeV) (upper-West)", Binning::Simple(50, 0, 2), *loaders[L], kNumuHadCalE, kNumu2020ND && QuantCuts[Q] && kUpperWest));
113  mySpecs[L][Q].push_back(new Spectrum("Had CalE, (GeV) (lower-East)", Binning::Simple(50, 0, 2), *loaders[L], kNumuHadCalE, kNumu2020ND && QuantCuts[Q] && kLowerEast));
114 
115  mySpecs[L][Q].push_back(new Spectrum("Had NHit (all slices)", Binning::Custom(vec_HadNHit_Binning), *loaders[L], kHadNHit, kNumu2020ND && QuantCuts[Q]));
116  mySpecs[L][Q].push_back(new Spectrum("Had NHit (upper-West)", Binning::Custom(vec_HadNHit_Binning), *loaders[L], kHadNHit, kNumu2020ND && QuantCuts[Q] && kUpperWest));
117  mySpecs[L][Q].push_back(new Spectrum("Had NHit (lower-East)", Binning::Custom(vec_HadNHit_Binning), *loaders[L], kHadNHit, kNumu2020ND && QuantCuts[Q] && kLowerEast));
118 
119  mySpecs[L][Q].push_back(new Spectrum("Had CalE / Hit, (GeV) (all slices)", Binning::Simple(50, 0.0, 0.03), *loaders[L], kHadEPerNHit, kNumu2020ND && QuantCuts[Q]));
120  mySpecs[L][Q].push_back(new Spectrum("Had CalE / Hit, (GeV) (upper-West)", Binning::Simple(50, 0.0, 0.03), *loaders[L], kHadEPerNHit, kNumu2020ND && QuantCuts[Q] && kUpperWest));
121  mySpecs[L][Q].push_back(new Spectrum("Had CalE / Hit, (GeV) (lower-East)", Binning::Simple(50, 0.0, 0.03), *loaders[L], kHadEPerNHit, kNumu2020ND && QuantCuts[Q] && kLowerEast));
122 
123  //CVN VARS.
124  mySpecs[L][Q].push_back(new Spectrum("CVNLoosePreselPtp Numu Score (all slices)", Binning::Simple(25, 0, 1.01), *loaders[L], kCVNLoosePreselPtp_numuid, kNumu2020ND && QuantCuts[Q]));
125  mySpecs[L][Q].push_back(new Spectrum("CVNLoosePreselPtp Numu Score (upper-West)", Binning::Simple(25, 0, 1.01), *loaders[L], kCVNLoosePreselPtp_numuid, kNumu2020ND && QuantCuts[Q] && kUpperWest));
126  mySpecs[L][Q].push_back(new Spectrum("CVNLoosePreselPtp Numu Score (lower-East)", Binning::Simple(25, 0, 1.01), *loaders[L], kCVNLoosePreselPtp_numuid, kNumu2020ND && QuantCuts[Q] && kLowerEast));
127 
128  mySpecs[L][Q].push_back(new Spectrum("CVNLoosePreselPtp Nue Score (all slices)", Binning::Simple(25, 0, 1.01), *loaders[L], kCVNLoosePreselPtp_nueid, kNumu2020ND && QuantCuts[Q]));
129  mySpecs[L][Q].push_back(new Spectrum("CVNLoosePreselPtp Nue Score (upper-West)", Binning::Simple(25, 0, 1.01), *loaders[L], kCVNLoosePreselPtp_nueid, kNumu2020ND && QuantCuts[Q] && kUpperWest));
130  mySpecs[L][Q].push_back(new Spectrum("CVNLoosePreselPtp Nue Score (lower-East)", Binning::Simple(25, 0, 1.01), *loaders[L], kCVNLoosePreselPtp_nueid, kNumu2020ND && QuantCuts[Q] && kLowerEast));
131  mySpecs[L][Q].push_back(new Spectrum("CVNLoosePreselPtp NC Score (all slices)", Binning::Simple(25, 0, 1.01), *loaders[L], kCVNLoosePreselPtp_ncid, kNumu2020ND && QuantCuts[Q]));
132  mySpecs[L][Q].push_back(new Spectrum("CVNLoosePreselPtp NC Score (upper-West)", Binning::Simple(25, 0, 1.01), *loaders[L], kCVNLoosePreselPtp_ncid, kNumu2020ND && QuantCuts[Q] && kUpperWest));
133  mySpecs[L][Q].push_back(new Spectrum("CVNLoosePreselPtp NC Score (lower-East)", Binning::Simple(25, 0, 1.01), *loaders[L], kCVNLoosePreselPtp_ncid, kNumu2020ND && QuantCuts[Q] && kLowerEast));
134 
135  mySpecs[L][Q].push_back(new Spectrum("CVNLoosePreselPtp Cosmic Score (all slices)", Binning::Simple(25, 0, 1.01), *loaders[L], kCVNLoosePreselPtp_cosmicid, kNumu2020ND && QuantCuts[Q]));
136  mySpecs[L][Q].push_back(new Spectrum("CVNLoosePreselPtp Cosmic Score (upper-West)", Binning::Simple(25, 0, 1.01), *loaders[L], kCVNLoosePreselPtp_cosmicid, kNumu2020ND && QuantCuts[Q] && kUpperWest));
137  mySpecs[L][Q].push_back(new Spectrum("CVNLoosePreselPtp Cosmic Score (lower-East)", Binning::Simple(25, 0, 1.01), *loaders[L], kCVNLoosePreselPtp_cosmicid, kNumu2020ND && QuantCuts[Q] && kLowerEast));
138 
139  mySpecs[L][Q].push_back(new Spectrum("CVNOldPreselPtp Numu Score (all slices)", Binning::Simple(25, 0, 1.01), *loaders[L], kCVNOldPreselPtp_numuid, kNumu2020ND && QuantCuts[Q]));
140  mySpecs[L][Q].push_back(new Spectrum("CVNOldPreselPtp Numu Score (upper-West)", Binning::Simple(25, 0, 1.01), *loaders[L], kCVNOldPreselPtp_numuid, kNumu2020ND && QuantCuts[Q] && kUpperWest));
141  mySpecs[L][Q].push_back(new Spectrum("CVNOldPreselPtp Numu Score (lower-East)", Binning::Simple(25, 0, 1.01), *loaders[L], kCVNOldPreselPtp_numuid, kNumu2020ND && QuantCuts[Q] && kLowerEast));
142 
143  mySpecs[L][Q].push_back(new Spectrum("CVNOldPreselPtp Nue Score (all slices)", Binning::Simple(25, 0, 1.01), *loaders[L], kCVNOldPreselPtp_nueid, kNumu2020ND && QuantCuts[Q]));
144  mySpecs[L][Q].push_back(new Spectrum("CVNOldPreselPtp Nue Score (upper-West)", Binning::Simple(25, 0, 1.01), *loaders[L], kCVNOldPreselPtp_nueid, kNumu2020ND && QuantCuts[Q] && kUpperWest));
145  mySpecs[L][Q].push_back(new Spectrum("CVNOldPreselPtp Nue Score (lower-East)", Binning::Simple(25, 0, 1.01), *loaders[L], kCVNOldPreselPtp_nueid, kNumu2020ND && QuantCuts[Q] && kLowerEast));
146  mySpecs[L][Q].push_back(new Spectrum("CVNOldPreselPtp NC Score (all slices)", Binning::Simple(25, 0, 1.01), *loaders[L], kCVNOldPreselPtp_ncid, kNumu2020ND && QuantCuts[Q]));
147  mySpecs[L][Q].push_back(new Spectrum("CVNOldPreselPtp NC Score (upper-West)", Binning::Simple(25, 0, 1.01), *loaders[L], kCVNOldPreselPtp_ncid, kNumu2020ND && QuantCuts[Q] && kUpperWest));
148  mySpecs[L][Q].push_back(new Spectrum("CVNOldPreselPtp NC Score (lower-East)", Binning::Simple(25, 0, 1.01), *loaders[L], kCVNOldPreselPtp_ncid, kNumu2020ND && QuantCuts[Q] && kLowerEast));
149 
150  mySpecs[L][Q].push_back(new Spectrum("CVNOldPreselPtp Cosmic Score (all slices)", Binning::Simple(25, 0, 1.01), *loaders[L], kCVNOldPreselPtp_cosmicid, kNumu2020ND && QuantCuts[Q]));
151  mySpecs[L][Q].push_back(new Spectrum("CVNOldPreselPtp Cosmic Score (upper-West)", Binning::Simple(25, 0, 1.01), *loaders[L], kCVNOldPreselPtp_cosmicid, kNumu2020ND && QuantCuts[Q] && kUpperWest));
152  mySpecs[L][Q].push_back(new Spectrum("CVNOldPreselPtp Cosmic Score (lower-East)", Binning::Simple(25, 0, 1.01), *loaders[L], kCVNOldPreselPtp_cosmicid, kNumu2020ND && QuantCuts[Q] && kLowerEast));
153 
154  /*
155  mySpecs[L][Q].push_back(new Spectrum("CVN Numu 2018 Score (all slices)", Binning::Simple(25, 0, 1.01), *loaders[L], kCVNm, kNumu2020ND && QuantCuts[Q]));
156  mySpecs[L][Q].push_back(new Spectrum("CVN Numu 2018 Score (upper-West)", Binning::Simple(25, 0, 1.01), *loaders[L], kCVNm, kNumu2020ND && QuantCuts[Q] && kUpperWest));
157  mySpecs[L][Q].push_back(new Spectrum("CVN Numu 2018 Score (lower-East)", Binning::Simple(25, 0, 1.01), *loaders[L], kCVNm, kNumu2020ND && QuantCuts[Q] && kLowerEast));
158 
159  mySpecs[L][Q].push_back(new Spectrum("Remid (all slices)", kRemidBinning, *loaders[L], kRemID, kNumu2020ND && QuantCuts[Q]));
160  mySpecs[L][Q].push_back(new Spectrum("Remid (upper-West)", kRemidBinning, *loaders[L], kRemID, kNumu2020ND && QuantCuts[Q] && kUpperWest));
161  mySpecs[L][Q].push_back(new Spectrum("Remid (lower-East)", kRemidBinning, *loaders[L], kRemID, kNumu2020ND && QuantCuts[Q] && kLowerEast));
162  */
163  }
164  }
165 
166  loaders[0]->SetSpillCut(kStandardSpillCuts);
167  loaders[0]->Go();
168  loaders[1]->SetSpillCut(kStandardSpillCuts);
169  loaders[1]->Go();
170 
171  //LOOP OVER ARRAY AND WRITE OUT SPECTRA TO FILE.
172  char dirName[256];
173  TFile *outFile = new TFile(s_OutFile.c_str(), "RECREATE");
174 
175  for(unsigned int L = 0; L < nLoader; ++L){
176  for(unsigned int Q = 0; Q < nQuant; ++Q) {
177  for(unsigned int S = 0; S < mySpecs[L][Q].size(); ++S) {
178 
179  sprintf(dirName, "dir_Var%d_Q%d_DataSet%d", S, Q, L);
180  mySpecs[L][Q][S]->SaveTo(outFile, dirName);
181  }
182  }
183  }
184 
185  std::cout << "\n\n\nALL DONE!\n\n\n";
186 
187 }
const Var kHadE
Definition: NumuVars.h:23
const Var kHadNHit([](const caf::SRProxy *sr){unsigned int nought=0;if(sr->trk.kalman.ntracks< 1) return nought;return sr->slc.nhit-sr->trk.kalman.tracks[0].nhit;})
Definition: NumuVars.h:61
Cuts and Vars for the 2020 FD DiF Study.
Definition: vars.h:6
#define S(x, n)
caf::Proxy< size_t > ntracks
Definition: SRProxy.h:1756
Proxy for caf::StandardRecord.
Definition: SRProxy.h:2108
const HistAxis kHadEFracAxis("E_{had.} / E_{#nu}", Binning::Simple(200, 0, 1), kHadEFrac)
HistAxis that implements Hadronic Energy fraction binning used by L.Vinton to derive Hadronic Energy ...
Definition: HistAxes.h:30
const Cut kNumu2020ND
Definition: NumuCuts2020.h:57
void Analyse_Data2DataComp_kNumu2020ND(bool isFHC=true, std::string data1="", std::string data2="", std::string s_OutFile="")
const Var kTrkCalEPerNHit([](const caf::SRProxy *sr){if(sr->trk.kalman.ntracks< 1) return 0.f;return sr->trk.kalman.tracks[0].calE/sr->trk.kalman.tracks[0].nhit;})
Definition: NumuVars.h:68
const Var kTrkLength([](const caf::SRProxy *sr){if(sr->trk.kalman.ntracks< 1) return-5.f;return sr->trk.kalman.tracks[0].len/100;})
Definition: NumuVars.h:65
const Var kHadEPerNHit([](const caf::SRProxy *sr){if(sr->trk.kalman.ntracks< 1) return 0.0f;int nHit=sr->slc.nhit-sr->trk.kalman.tracks[0].nhit;if(nHit<=0) return 0.0f;float hadE=sr->energy.numu.hadcalE;return hadE/nHit;})
Definition: NumuVars.h:63
const Var kNumuHadCalE
Definition: NumuVars.cxx:538
#define SIMPLEVAR(CAFNAME)
For Vars where literally all you need is a single CAF variable.
Definition: Var.h:88
TFile * outFile
Definition: PlotXSec.C:135
caf::Proxy< caf::SRTrackBranch > trk
Definition: SRProxy.h:2127
static constexpr double L
caf::Proxy< float > x
Definition: SRProxy.h:105
std::string getenv(std::string const &name)
const Var kNHit
Definition: Vars.cxx:71
const Var kCCE
Definition: NumuVars.h:21
const Var kTrkCalE([](const caf::SRProxy *sr){if(sr->trk.kalman.ntracks< 1) return 0.f;return float(sr->trk.kalman.tracks[0].calE);})
Definition: NumuVars.h:67
caf::StandardRecord * sr
static Binning Custom(const std::vector< double > &edges)
Definition: Binning.cxx:161
std::vector< float > Spectrum
Definition: Constants.h:570
const HistAxis kNumuCCOptimisedAxis("Reconstructed Neutrino Energy (GeV)", kNumuCCEOptimisedBinning, kCCE)
HistAxis that implements optimised numuCCE from L. Vinton. See docdb 16332. This was close to &#39;custC&#39;...
Definition: HistAxes.h:24
static bool isFHC
OStream cout
Definition: OStream.cxx:6
caf::Proxy< caf::SRKalman > kalman
Definition: SRProxy.h:1775
::xsd::cxx::tree::string< char, simple_type > string
Definition: Database.h:154
std::string dirName
Definition: PlotSpectra.h:47
caf::Proxy< caf::SRSlice > slc
Definition: SRProxy.h:2124
Collaborates with Spectrum and OscillatableSpectrum to fill spectra from CAF files.
caf::Proxy< float > y
Definition: SRProxy.h:106
const int nQuant
Definition: varsandcuts.h:4
caf::Proxy< caf::SRVector3D > meanpos
Definition: SRProxy.h:1289
std::vector< Loaders * > loaders
Definition: syst_header.h:386
const Binning kNumuCCEOptimisedBinning
Optimised binning for numuCCE from L. Vinton. See docdb 16332. This was close to &#39;custC&#39; in that talk...
Definition: Binnings.cxx:28
std::vector< Cut > QuantileCutsFromTH2(TH2 *quantileHist, const HistAxis &independentAxis, const HistAxis &quantileAxis, const unsigned int &numQuantiles, const bool verbose)
: Do the same as the QuantileCuts function but taking in the TH2 instead of making it...
const SpillCut kStandardSpillCuts
Apply this unless you&#39;re doing something special.
Definition: SpillCuts.h:49
caf::Proxy< std::vector< caf::SRKalmanTrack > > tracks
Definition: SRProxy.h:1758
static Binning Simple(int n, double lo, double hi, const std::vector< std::string > &labels={})
Definition: Binning.cxx:114
const Cut kNoCut
The simplest possible cut: pass everything, used as a default.
Definition: Cut.h:109
const Var kTrkNhits([](const caf::SRProxy *sr){if(sr->trk.kalman.ntracks< 1) return 65535;return int(sr->trk.kalman.tracks[0].nhit);})
Definition: NumuVars.h:59