hyperon_macro.C
Go to the documentation of this file.
1 #pragma once
2 
3 #include "CAFAna/Core/Binning.h"
4 #include "CAFAna/Core/Spectrum.h"
7 #include "CAFAna/Core/Var.h"
8 #include "CAFAna/Core/MultiVar.h"
9 
12 #include "CAFAna/Vars/Vars.h"
15 
16 #include "CAFAna/Cuts/Cuts.h"
22 #include "CAFAna/Cuts/SpillCuts.h"
23 
27 
29 
31 
32 #include "Utilities/rootlogon.C"
33 
34 #include "TCanvas.h"
35 #include "TH2.h"
36 #include "TProfile.h"
37 #include "TSystem.h"
38 
39 using namespace ana;
40 
41 
42 void hyperon_macro(bool IsFarDet = true)
43 {
44 
45  std::string sFD_ND = ( IsFarDet == true ? "FD" : "ND" );
46  std::string sOutFile = "hyp_"+sFD_ND+".root";
47 
48  // --- Loaders ---
49  std::string hyp = "";
50  if (IsFarDet) {
51  hyp = "jwolcott_hyperon-ccqe-sim_fd_numubar-nonswap_caf"; // 50 files
52 // hyp = "jwolcott_hyperon-ccqe-sim_fd_nuebar-nonswap_caf";
53 // hyp = "jwolcott_hyperon-ccqe-sim_fd_nuebar-fluxswap_caf";
54 
55  }
56  else {
57  hyp = "/pnfs/nova/persistent/users/jwolcott/hyperon-ccqe-sim/nd/numubar-hyperon-ccqe_gen.nd.caf.root";
58  }
59 
60  SpectrumLoader ldr(hyp);
61 
62  // --- Selection Cuts ---
63  std::vector<std::string> cutNames; std::vector<Cut> kDetCuts;
64  if (IsFarDet) {
65  cutNames.emplace_back("kNoCut"); kDetCuts.emplace_back(kNoCut);
66  cutNames.emplace_back("qual"); kDetCuts.emplace_back(kNumuQuality);
67  cutNames.emplace_back("qual+cont"); kDetCuts.emplace_back(kNumuQuality && kNumuContainFD2017);
68  cutNames.emplace_back("qual+cont+PID"); kDetCuts.emplace_back(kNumuQuality && kNumuContainFD2017 && kNumuPID2018);
69  cutNames.emplace_back("full"); kDetCuts.emplace_back(kNumuCutFD2018);
70  }
71  else {
72  cutNames.emplace_back("kNoCut"); kDetCuts.emplace_back(kNoCut);
73  cutNames.emplace_back("qual"); kDetCuts.emplace_back(kNumuQuality);
74  cutNames.emplace_back("qual+cont"); kDetCuts.emplace_back(kNumuQuality && kNumuContainND2017);
75  cutNames.emplace_back("full"); kDetCuts.emplace_back(kNumuQuality && kNumuContainND2017 && kNumuPID2018);
76  }
77  unsigned int nDet = kDetCuts.size();
78 
79  // --- Quantiles ---
80  auto cvmfs_dir = std::getenv("NUMUDATA_DIR");
81  if (!cvmfs_dir) { std::cerr << "Couldn't find UPS dir for numu prediction!" << std::endl; return; }
82  std::string fdspecfile = std::string(cvmfs_dir) + "/ana2018/Quantiles/quantiles__rhc_full__numu2018.root";
83 
84  TFile* inFile = TFile::Open(fdspecfile.c_str());
85  TH2 *FDSpec2D = (TH2*)inFile->FindObjectAny( "FDSpec2D" );
86  const int NHadEFracQuantiles = 4;
87  std::vector<Cut> HadEFracQuantCuts = QuantileCutsFromTH2(FDSpec2D, kNumuCCOptimisedAxis, kHadEFracAxis, NHadEFracQuantiles);
88  HadEFracQuantCuts.push_back( kNoCut );
89  std::vector<std::string> quantNames = { "Quant1", "Quant2", "Quant3", "Quant4", "AllQuant" };
90  const unsigned int nQ = quantNames.size();
91 
92  // --- Cuts by Channel ---
93  const Cut kIsLambda([](const caf::SRProxy* sr){
94  if(sr->mc.nnu==0) return false;
95  for(unsigned int pIdx = 0; pIdx < sr->mc.nu[0].prim.size(); ++pIdx){
96  if(sr->mc.nu[0].prim[pIdx].pdg == 3122) return true;
97  }
98  return false;
99  });
100 
101  const Cut kIsSigmaP([](const caf::SRProxy* sr){
102  if(sr->mc.nnu==0) return false;
103  for(unsigned int pIdx = 0; pIdx < sr->mc.nu[0].prim.size(); ++pIdx){
104  if(sr->mc.nu[0].prim[pIdx].pdg == 3222) return true;
105  }
106  return false;
107  });
108 
109  const Cut kIsSigma0([](const caf::SRProxy* sr){
110  if(sr->mc.nnu==0) return false;
111  for(unsigned int pIdx = 0; pIdx < sr->mc.nu[0].prim.size(); ++pIdx){
112  if(sr->mc.nu[0].prim[pIdx].pdg == 3212) return true;
113  }
114  return false;
115  });
116 
117  const Cut kIsSigmaM([](const caf::SRProxy* sr){
118  if(sr->mc.nnu==0) return false;
119  for(unsigned int pIdx = 0; pIdx < sr->mc.nu[0].prim.size(); ++pIdx){
120  if(sr->mc.nu[0].prim[pIdx].pdg == 3112) return true;
121  }
122  return false;
123  });
124 
125  std::vector<std::string> channelNames; std::vector<Cut> kChannelCuts;
126  channelNames = {"AllChannels", "Lambda", "Sigma+", "Sigma0", "Sigma-"};
127  kChannelCuts = {kNoCut, kIsLambda, kIsSigmaP, kIsSigma0, kIsSigmaM};
128  const unsigned int nCh = channelNames.size();
129 
130  // --- Additional Vars ---
131  // reco - true
132  const Var kRmT([](const caf::SRProxy* sr){
133  if (sr->mc.nnu == 0) return -5.;
134  return kCCE(sr) - kTrueE(sr);
135  });
136 
137  // (reco - true) / true
138  const Var kRmToT([](const caf::SRProxy* sr){
139  if (sr->mc.nnu == 0) return -5.;
140  if(kTrueE(sr) == 0) return -5.;
141  return (kCCE(sr) - kTrueE(sr))/kTrueE(sr);
142  });
143 
144  // number of prongs
145  const Var kNprongs([](const caf::SRProxy* sr){
146  double npng = -5;
147  if(!sr->vtx.elastic.IsValid) return npng;
148  npng = sr->vtx.elastic.fuzzyk.npng;
149  return npng;
150  });
151 
152  // W
153  const Var kW([](const caf::SRProxy* sr){
154  double W = -5;
155  if(sr->mc.nnu == 0) return W;
156  if(sr->mc.nu[0].W2<0) return W;
157  W = sqrt(sr->mc.nu[0].W2);
158  return W;
159  });
160 
161  // vertex X
162  const Var kVx([](const caf::SRProxy* sr){
163  double pos = -5;
164  if(sr->mc.nnu == 0) return pos;
165  pos = sr->mc.nu[0].vtx.x;
166  return pos;
167  });
168 
169  // vertex Y
170  const Var kVy([](const caf::SRProxy* sr){
171  double pos = -5;
172  if(sr->mc.nnu == 0) return pos;
173  pos = sr->mc.nu[0].vtx.y;
174  return pos;
175  });
176 
177  // vertex Z
178  const Var kVz([](const caf::SRProxy* sr){
179  double pos = -5;
180  if(sr->mc.nnu == 0) return pos;
181  pos = sr->mc.nu[0].vtx.z;
182  return pos;
183  });
184 
185  // --- Binning ---
186  const Binning RmT_bins = Binning::Simple(80, -2, 2);
187  const Binning RmToT_bins = Binning::Simple(200, -1, 1);
188  const Binning mu_bins = Binning::Simple(100, 0, 5);
189  const Binning had_bins = Binning::Simple(40, 0, 2);
190  const Binning png_bins = Binning::Simple(10, 0, 9);
191  const Binning W_bins = Binning::Simple(60, 0, 3);
192  const Binning id_bins = Binning::Simple(120, -0.1, 1.1);
193  const Binning xybins = Binning::Simple(160, -800, 800);
194  const Binning zbins = Binning::Simple(610, 0, 6100);
195  const Binning TLbins = Binning::Simple(600,0.0,60.0);
196  const Binning Scatbins = Binning::Simple(200,-0.5,0.5);
197  const Binning dEdxbins = Binning::Simple(200,-3.0,2.0);
198  const Binning MFbins = Binning::Simple(120,-0.1,1.1);
199 
200  // --- Spectra ---
201  Spectrum *RmT_hyp [nDet][nQ][nCh];
202  Spectrum *RmToT_hyp [nDet][nQ][nCh];
203  Spectrum *trueHadE_hyp [nDet][nQ][nCh];
204  Spectrum *recoHadE_hyp [nDet][nQ][nCh];
205  Spectrum *png_hyp [nDet][nQ][nCh];
206  Spectrum *trueNuE_hyp [nDet][nQ][nCh];
207  Spectrum *recoNuE_hyp [nDet][nQ][nCh];
208  Spectrum *trueMuonE_hyp[nDet][nQ][nCh];
209  Spectrum *recoMuonE_hyp[nDet][nQ][nCh];
210  Spectrum *remid_hyp [nDet][nQ][nCh];
211  Spectrum *cvnprod3_hyp [nDet][nQ][nCh];
212  Spectrum *cvn2017_hyp [nDet][nQ][nCh];
213  Spectrum *Vx_hyp [nDet][nQ][nCh];
214  Spectrum *Vy_hyp [nDet][nQ][nCh];
215  Spectrum *Vz_hyp [nDet][nQ][nCh];
216  Spectrum *trklen_hyp [nDet][nQ][nCh];
217  Spectrum *scatLL_hyp [nDet][nQ][nCh];
218  Spectrum *dedxLL_hyp [nDet][nQ][nCh];
219  Spectrum *MF_hyp [nDet][nQ][nCh];
220 
221  for (unsigned int det=0; det<nDet; ++det) {
222  for (unsigned int quant=0; quant<nQ; ++quant) {
223  for (unsigned int chan=0; chan<nCh; ++chan){
224  Cut hyp_cut = kDetCuts[det] && HadEFracQuantCuts[quant] && kChannelCuts[chan];
225  std::string hypStr = " for Cut "+cutNames[det]+", "+quantNames[quant] +", "+channelNames[chan];
226 
227  RmT_hyp [det][quant][chan] = new Spectrum("Reco - True (GeV)"+hypStr, RmT_bins, ldr, kRmT, hyp_cut);
228  RmToT_hyp [det][quant][chan] = new Spectrum("(Reco - True)/True"+hypStr, RmToT_bins, ldr, kRmToT, hyp_cut);
229  trueHadE_hyp [det][quant][chan] = new Spectrum("true nu - reco muon"+hypStr, had_bins, ldr, kTrueE-kMuE, hyp_cut);
230  recoHadE_hyp [det][quant][chan] = new Spectrum("Hadronic Energy"+hypStr, had_bins, ldr, kHadE, hyp_cut);
231  png_hyp [det][quant][chan] = new Spectrum("Number of Prongs"+hypStr, png_bins, ldr, kNprongs, hyp_cut);
232  trueNuE_hyp [det][quant][chan] = new Spectrum("kTrueE"+hypStr, mu_bins, ldr, kTrueE, hyp_cut);
233  recoNuE_hyp [det][quant][chan] = new Spectrum("kCCE"+hypStr, mu_bins, ldr, kCCE, hyp_cut);
234  trueMuonE_hyp [det][quant][chan] = new Spectrum("kTrueMuonE"+hypStr, mu_bins, ldr, kTrueMuonE, hyp_cut);
235  recoMuonE_hyp [det][quant][chan] = new Spectrum("kMuE"+hypStr, mu_bins, ldr, kMuE, hyp_cut);
236  remid_hyp [det][quant][chan] = new Spectrum("remid"+hypStr, id_bins, ldr, SIMPLEVAR(sel.remid.pid), hyp_cut);
237  cvnprod3_hyp [det][quant][chan] = new Spectrum("cvnprod3"+hypStr, id_bins, ldr, SIMPLEVAR(sel.cvnProd3Train.numuid), hyp_cut);
238  cvn2017_hyp [det][quant][chan] = new Spectrum("cvn2017"+hypStr, id_bins, ldr, SIMPLEVAR(sel.cvn2017.numuid), hyp_cut);
239  Vx_hyp [det][quant][chan] = new Spectrum("true vertex x"+hypStr, xybins, ldr, kVx, hyp_cut);
240  Vy_hyp [det][quant][chan] = new Spectrum("true vertex y"+hypStr, xybins, ldr, kVy, hyp_cut);
241  Vz_hyp [det][quant][chan] = new Spectrum("true vertex z"+hypStr, zbins, ldr, kVz, hyp_cut);
242  trklen_hyp [det][quant][chan] = new Spectrum("trklen"+hypStr, TLbins, ldr, kTrkLength, hyp_cut);
243  scatLL_hyp [det][quant][chan] = new Spectrum("scatLL"+hypStr, Scatbins, ldr, kReMIdScatLLH, hyp_cut);
244  dedxLL_hyp [det][quant][chan] = new Spectrum("dEdxLL"+hypStr, dEdxbins, ldr, kReMIdDEDxLLH, hyp_cut);
245  MF_hyp [det][quant][chan] = new Spectrum("meas. frac."+hypStr, MFbins, ldr, kReMIdMeasFrac, hyp_cut);
246  }
247  }
248  }
249 
250  // --- Do all the things!
251  ldr.Go();
252 
253  // --- Save all the things!
254  TFile *OutFile = new TFile(sOutFile.c_str(),"RECREATE");
255  for (unsigned int det=0; det<nDet; ++det) {
256  for (unsigned int quant=0; quant<nQ; ++quant) {
257  for (unsigned int chan=0; chan<nCh; ++chan){
258  std::string hypStr = cutNames[det]+"_"+quantNames[quant] +"_"+channelNames[chan];
259  RmT_hyp [det][quant][chan] -> OverridePOT(kAna2018RHCPOT);
260  RmToT_hyp [det][quant][chan] -> OverridePOT(kAna2018RHCPOT);
261  trueHadE_hyp [det][quant][chan] -> OverridePOT(kAna2018RHCPOT);
262  recoHadE_hyp [det][quant][chan] -> OverridePOT(kAna2018RHCPOT);
263  png_hyp [det][quant][chan] -> OverridePOT(kAna2018RHCPOT);
264  trueNuE_hyp [det][quant][chan] -> OverridePOT(kAna2018RHCPOT);
265  recoNuE_hyp [det][quant][chan] -> OverridePOT(kAna2018RHCPOT);
266  trueMuonE_hyp [det][quant][chan] -> OverridePOT(kAna2018RHCPOT);
267  recoMuonE_hyp [det][quant][chan] -> OverridePOT(kAna2018RHCPOT);
268  remid_hyp [det][quant][chan] -> OverridePOT(kAna2018RHCPOT);
269  cvnprod3_hyp [det][quant][chan] -> OverridePOT(kAna2018RHCPOT);
270  cvn2017_hyp [det][quant][chan] -> OverridePOT(kAna2018RHCPOT);
271  Vx_hyp [det][quant][chan] -> OverridePOT(kAna2018RHCPOT);
272  Vy_hyp [det][quant][chan] -> OverridePOT(kAna2018RHCPOT);
273  Vz_hyp [det][quant][chan] -> OverridePOT(kAna2018RHCPOT);
274  trklen_hyp [det][quant][chan] -> OverridePOT(kAna2018RHCPOT);
275  scatLL_hyp [det][quant][chan] -> OverridePOT(kAna2018RHCPOT);
276  dedxLL_hyp [det][quant][chan] -> OverridePOT(kAna2018RHCPOT);
277  MF_hyp [det][quant][chan] -> OverridePOT(kAna2018RHCPOT);
278 
279  RmT_hyp [det][quant][chan] -> SaveTo(OutFile, TString("RmT_hyp_")+TString(hypStr));
280  RmToT_hyp [det][quant][chan] -> SaveTo(OutFile, TString("RmToT_hyp_")+TString(hypStr));
281  trueHadE_hyp [det][quant][chan] -> SaveTo(OutFile, TString("trueHadE_hyp_")+TString(hypStr));
282  recoHadE_hyp [det][quant][chan] -> SaveTo(OutFile, TString("recoHadE_hyp_")+TString(hypStr));
283  png_hyp [det][quant][chan] -> SaveTo(OutFile, TString("png_hyp_")+TString(hypStr));
284  trueNuE_hyp [det][quant][chan] -> SaveTo(OutFile, TString("trueNuE_hyp_")+TString(hypStr));
285  recoNuE_hyp [det][quant][chan] -> SaveTo(OutFile, TString("recoNuE_hyp_")+TString(hypStr));
286  trueMuonE_hyp [det][quant][chan] -> SaveTo(OutFile, TString("trueMuonE_hyp_")+TString(hypStr));
287  recoMuonE_hyp [det][quant][chan] -> SaveTo(OutFile, TString("recoMuonE_hyp_")+TString(hypStr));
288  remid_hyp [det][quant][chan] -> SaveTo(OutFile, TString("remid_hyp_")+TString(hypStr));
289  cvnprod3_hyp [det][quant][chan] -> SaveTo(OutFile, TString("cvnprod3_hyp_")+TString(hypStr));
290  cvn2017_hyp [det][quant][chan] -> SaveTo(OutFile, TString("cvn2017_hyp_")+TString(hypStr));
291  Vx_hyp [det][quant][chan] -> SaveTo(OutFile, TString("Vx_hyp_")+TString(hypStr));
292  Vy_hyp [det][quant][chan] -> SaveTo(OutFile, TString("Vy_hyp_")+TString(hypStr));
293  Vz_hyp [det][quant][chan] -> SaveTo(OutFile, TString("Vz_hyp_")+TString(hypStr));
294  trklen_hyp [det][quant][chan] -> SaveTo(OutFile, TString("trklen_hyp_")+TString(hypStr));
295  scatLL_hyp [det][quant][chan] -> SaveTo(OutFile, TString("scatLL_hyp_")+TString(hypStr));
296  dedxLL_hyp [det][quant][chan] -> SaveTo(OutFile, TString("dedxLL_hyp_")+TString(hypStr));
297  MF_hyp [det][quant][chan] -> SaveTo(OutFile, TString("MF_hyp_")+TString(hypStr));
298  }
299  }
300  }
301  OutFile->Close();
302 }
const Var kHadE
Definition: NumuVars.h:23
caf::Proxy< size_t > npng
Definition: SRProxy.h:2038
caf::Proxy< caf::SRFuzzyK > fuzzyk
Definition: SRProxy.h:2059
Represent the binning of a Spectrum&#39;s x-axis.
Definition: Binning.h:16
Cuts and Vars for the 2020 FD DiF Study.
Definition: vars.h:6
const Var kReMIdScatLLH
Definition: NumuVars.cxx:555
void SaveTo(const osc::IOscCalc &x, TDirectory *dir, const std::string &name)
const Binning zbins
Definition: NumuCCIncBins.h:21
const Cut kNumuContainND2017([](const caf::SRProxy *sr){if(!sr->vtx.elastic.IsValid) return false;for(unsigned int i=0;i< sr->vtx.elastic.fuzzyk.nshwlid;++i){TVector3 start=sr->vtx.elastic.fuzzyk.png[i].shwlid.start;TVector3 stop=sr->vtx.elastic.fuzzyk.png[i].shwlid.stop;if(std::min(start.X(), stop.X())< -180.0) return false;if(std::max(start.X(), stop.X()) > 180.0) return false;if(std::min(start.Y(), stop.Y())< -180.0) return false;if(std::max(start.Y(), stop.Y()) > 180.0) return false;if(std::min(start.Z(), stop.Z())< 20.0) return false;if(std::max(start.Z(), stop.Z()) > 1525.0) return false;}if(sr->trk.kalman.ntracks< 1) return false;for(unsigned int i=0;i< sr->trk.kalman.ntracks;++i){if(i==sr->trk.kalman.idxremid) continue;else if(sr->trk.kalman.tracks[i].start.Z() > 1275||sr->trk.kalman.tracks[i].stop.Z() > 1275) return false;}return(sr->trk.kalman.ntracks > sr->trk.kalman.idxremid &&sr->slc.firstplane > 1 &&sr->slc.lastplane< 212 &&sr->trk.kalman.tracks[0].start.Z()< 1100 &&(sr->trk.kalman.tracks[0].stop.Z()< 1275 ||sr->sel.contain.kalyposattrans< 55) &&sr->sel.contain.kalfwdcellnd > 5 &&sr->sel.contain.kalbakcellnd > 10);})
Definition: NumuCuts2017.h:11
Proxy for caf::StandardRecord.
Definition: SRProxy.h:2126
const Binning xybins
Definition: NumuCCIncBins.h:18
T sqrt(T number)
Definition: d0nt_math.hpp:156
caf::Proxy< std::vector< caf::SRNeutrino > > nu
Definition: SRProxy.h:618
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
OStream cerr
Definition: OStream.cxx:7
const unsigned int nQ
Definition: hyperon_plot.C:61
caf::Proxy< short int > nnu
Definition: SRProxy.h:617
const Var kReMIdMeasFrac
Definition: NumuVars.cxx:557
const unsigned int nDet
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
Representation of a spectrum in any variable, with associated POT.
Definition: Spectrum.h:40
const double kAna2018RHCPOT
Definition: Exposures.h:208
caf::Proxy< caf::SRElastic > elastic
Definition: SRProxy.h:2118
ifstream inFile
Definition: AnaPlotMaker.h:34
const Var kTrueE([](const caf::SRProxy *sr){assert(sr->mc.nnu==1);return sr->mc.nu[0].E;})
Definition: Vars.cxx:85
const Cut kNumuContainFD2017
Definition: NumuCuts2017.h:21
std::string getenv(std::string const &name)
const Var kCCE
Definition: NumuVars.h:21
caf::StandardRecord * sr
virtual void Go() override
Load all the registered spectra.
std::vector< float > Spectrum
Definition: Constants.h:610
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
const Var kW
caf::Proxy< caf::SRTruthBranch > mc
Definition: SRProxy.h:2138
caf::Proxy< bool > IsValid
Definition: SRProxy.h:2058
Collaborates with Spectrum and OscillatableSpectrum to fill spectra from CAF files.
const Var kTrueMuonE([](const caf::SRProxy *sr){if(sr->mc.nnu==0) return 0.f;if(sr->mc.nu[0].prim.empty()) return 0.f;if(std::abs(sr->mc.nu[0].prim[0].pdg)!=13) return 0.f;return float(sr->mc.nu[0].prim[0].p.E);})
Definition: NumuVars.h:107
const Cut kNumuPID2018([](const caf::SRProxy *sr){std::cout<< "ERROR::kNumuPID2018, cutting on both cvnProd3Train and cvn2017."<< " Neither branch exists anymore. Returning False."<< std::endl;abort();return false;})
Definition: NumuCuts2018.h:22
#define SIMPLEVAR(CAFNAME)
For Vars where literally all you need is a single CAF variable.
Definition: Var.h:88
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 Cut kNumuCutFD2018
Definition: NumuCuts2018.h:39
const Var kReMIdDEDxLLH
Definition: NumuVars.cxx:556
TFile * OutFile
caf::Proxy< caf::SRVertexBranch > vtx
Definition: SRProxy.h:2146
const Cut kNumuQuality
Definition: NumuCuts.h:18
const Var kMuE
Definition: NumuVars.h:22
static Binning Simple(int n, double lo, double hi, const std::vector< std::string > &labels={})
Definition: Binning.cxx:107
#define W(x)
const Cut kNoCut
The simplest possible cut: pass everything, used as a default.
Definition: Cut.h:109
void hyperon_macro(bool IsFarDet=true)
Definition: hyperon_macro.C:42
const unsigned int nCh
Definition: hyperon_plot.C:66
enum BeamMode string