NumuCCIncCuts.cxx
Go to the documentation of this file.
2 
4 
5 namespace ana
6 {
7 
8  const Cut kNumuMyQuality([](const caf::SRProxy* sr)
9  {
10  return (sr->trk.kalman.ntracks > 0 &&
11  sr->slc.nhit > 20 &&
12  sr->slc.ncontplanes > 4);
13  });
14 
15  const Cut kIsFiducial([](const caf::SRProxy* sr)
16  {
17  int ibesttrk = kBestTrack(sr);
18 
19  if( sr->trk.kalman.ntracks < 1 ) return false;
20 
21  if(ibesttrk < 0 || ibesttrk >= int(sr->trk.kalman.ntracks))
22  return false;
23 
24  bool isfid = (sr->trk.kalman.tracks[ibesttrk].start.X() < vtxmax.X() &&
25  sr->trk.kalman.tracks[ibesttrk].start.X() > vtxmin.X() &&
26  sr->trk.kalman.tracks[ibesttrk].start.Y() > vtxmin.Y() &&
27  sr->trk.kalman.tracks[ibesttrk].start.Y() < vtxmax.Y() &&
28  sr->trk.kalman.tracks[ibesttrk].start.Z() > vtxmin.Z() &&
29  sr->trk.kalman.tracks[ibesttrk].start.Z() < vtxmax.Z());
30 
31  return isfid;
32  });
33 
34  const Cut kNumuTightContainND([](const caf::SRProxy* sr)
35  {
36  if( sr->vtx.nelastic < 1 ) return false;
37 
38  int ibesttrk = kBestTrack(sr);
39 
40  // reconstructed showers all contained
41  for( unsigned int i = 0; i < sr->vtx.elastic[0].fuzzyk.nshwlid; ++i ) {
42  TVector3 start = sr->vtx.elastic[0].fuzzyk.png[i].shwlid.start;
43  TVector3 stop = sr->vtx.elastic[0].fuzzyk.png[i].shwlid.stop;
44  if( std::min( start.X(), stop.X() ) < -180.0 ) return false;
45  if( std::max( start.X(), stop.X() ) > 180.0 ) return false;
46  if( std::min( start.Y(), stop.Y() ) < -180.0 ) return false;
47  if( std::max( start.Y(), stop.Y() ) > 180.0 ) return false;
48  if( std::min( start.Z(), stop.Z() ) < 20.0 ) return false;
49  if( std::max( start.Z(), stop.Z() ) > 1525.0 ) return false;
50  }
51 
52  // only primary muon track present in muon catcher
53  if( sr->trk.kalman.ntracks < 1 ) return false;
54 
55  for( int i = 0; i < int(sr->trk.kalman.ntracks); ++i ) {
56  if( i == ibesttrk ) continue;
57  else if( sr->trk.kalman.tracks[i].start.Z() > 1275 ||
58  sr->trk.kalman.tracks[i].stop.Z() > 1275 )
59  return false;
60  }
61 
62  if(ibesttrk < 0 || ibesttrk >= int(sr->trk.kalman.ntracks))
63  return false;
64 
65  return ((sr->trk.kalman.tracks[ibesttrk].stop.Z() < 1275
66  || sr->trk.kalman.tracks[ibesttrk].trkyposattrans < 55 ) // air gap
67  && sr->trk.kalman.tracks[ibesttrk].trkfwdcellnd > 5
68  && sr->trk.kalman.tracks[ibesttrk].trkbakcellnd > 10);
69  });
70 
72  {
73 
74  return (sr->vtx.X() < vtxmax.X() &&
75  sr->vtx.X() > vtxmin.X() &&
76  sr->vtx.Y() > vtxmin.Y() &&
77  sr->vtx.Y() < vtxmax.Y() &&
78  sr->vtx.Z() > vtxmin.Z() &&
79  sr->vtx.Z() < vtxmax.Z() );
80  });
81 
83  {
84 
85  return (sr->vtx.X() < tvtxmax.X() &&
86  sr->vtx.X() > tvtxmin.X() &&
87  sr->vtx.Y() > tvtxmin.Y() &&
88  sr->vtx.Y() < tvtxmax.Y() &&
89  sr->vtx.Z() > tvtxmin.Z() &&
90  sr->vtx.Z() < tvtxmax.Z() );
91  });
92 
93  const NuTruthCut kTrueECutST([](const caf::SRNeutrinoProxy* truth)
94  {
95  return (truth->E > 0.75 &&
96  truth->E < 4.0 );
97  });
98 
99  const NuTruthCut kIsNumuCCST([](const caf::SRNeutrinoProxy* truth)
100  {
101  return (truth->iscc &&
102  truth->pdg == 14);
103  });
104 
105  const NuTruthCut kIsNCST([](const caf::SRNeutrinoProxy* truth)
106  {
107  return !truth->iscc;
108  });
109 
110 
111  const NuTruthCut kIsAntiNumuCCST([](const caf::SRNeutrinoProxy* truth)
112  {
113  return (truth->iscc &&
114  truth->pdg == -14);
115  });
116 
117  const NuTruthCut kIsNueorbarCCST([](const caf::SRNeutrinoProxy* truth)
118  {
119  return (truth->iscc &&
120  std::abs(truth->pdg) == 12);
121  });
122 
123  const NuTruthCut kIsNueCCST([](const caf::SRNeutrinoProxy* truth)
124  {
125  return (truth->iscc &&
126  truth->pdg == 12);
127  });
128 
129  const NuTruthCut kIsAntiNueCCST([](const caf::SRNeutrinoProxy* truth)
130  {
131  return (truth->iscc &&
132  truth->pdg == -12);
133  });
134 
141 
144 
146  {
147  float trueMuKE = kTrueMuKEST(truth);
148  float trueMuCostheta = kTrueMuCosthetaST(truth);
149 
150  return ((trueMuKE >= 0.5) && (
151  (trueMuCostheta >= 0.94 && trueMuCostheta <=1.00 && trueMuKE < 2.5) ||
152  (trueMuCostheta >= 0.91 && trueMuCostheta < 0.94 && trueMuKE < 2.2) ||
153  (trueMuCostheta >= 0.88 && trueMuCostheta < 0.91 && trueMuKE < 1.9) ||
154  (trueMuCostheta >= 0.85 && trueMuCostheta < 0.88 && trueMuKE < 1.8) ||
155  (trueMuCostheta >= 0.80 && trueMuCostheta < 0.85 && trueMuKE < 1.4) ||
156  (trueMuCostheta >= 0.74 && trueMuCostheta < 0.80 && trueMuKE < 1.4) ||
157  (trueMuCostheta >= 0.68 && trueMuCostheta < 0.74 && trueMuKE < 1.4) ||
158  (trueMuCostheta >= 0.62 && trueMuCostheta < 0.68 && trueMuKE < 1.3) ||
159  (trueMuCostheta >= 0.56 && trueMuCostheta < 0.62 && trueMuKE < 1.2) ||
160  (trueMuCostheta >= 0.50 && trueMuCostheta < 0.56 && trueMuKE < 1.1) ));
161  });
162 
163  const Cut kTrueMuKECut = CutFromNuTruthCut(kTrueMuKECutST);
164  const Cut kTrueMuCosCut = CutFromNuTruthCut(kTrueMuCosCutST);
169 
171  const Cut kRecoMuKECut = kRecoMuKE > 0.5 && kRecoMuKE < 2.5;
172 
173  const Cut kRecoMuonPhaseSpaceCut([](const caf::SRProxy* sr)
174  {
175  float recoMuKE = kRecoMuKE(sr);
176  float recoMuCostheta = kRecoMuCostheta(sr);
177 
178  return ((recoMuKE >= 0.5) && (
179  (recoMuCostheta >= 0.94 && recoMuCostheta <=1.00 && recoMuKE < 2.5) ||
180  (recoMuCostheta >= 0.91 && recoMuCostheta < 0.94 && recoMuKE < 2.2) ||
181  (recoMuCostheta >= 0.88 && recoMuCostheta < 0.91 && recoMuKE < 1.9) ||
182  (recoMuCostheta >= 0.85 && recoMuCostheta < 0.88 && recoMuKE < 1.8) ||
183  (recoMuCostheta >= 0.80 && recoMuCostheta < 0.85 && recoMuKE < 1.4) ||
184  (recoMuCostheta >= 0.74 && recoMuCostheta < 0.80 && recoMuKE < 1.4) ||
185  (recoMuCostheta >= 0.68 && recoMuCostheta < 0.74 && recoMuKE < 1.4) ||
186  (recoMuCostheta >= 0.62 && recoMuCostheta < 0.68 && recoMuKE < 1.3) ||
187  (recoMuCostheta >= 0.56 && recoMuCostheta < 0.62 && recoMuKE < 1.2) ||
188  (recoMuCostheta >= 0.50 && recoMuCostheta < 0.56 && recoMuKE < 1.1) ));
189  });
190 
191  const Cut kRecoECut = kRecoE < 4.0 && kRecoE > 0.75;
192  const Cut kMuonIDCut = kMuonID > 0.24;
193 
194  // --------------------------------------------------------------
195  // analysis signal cuts
196 
198  kMuonIDCut && // PID cut
199  kIsFiducial && // fiducial cut
200  kNumuMyQuality && // ensures reconstruction
201  kNumuTightContainND; // containment
202 
203  const Cut kAllNumuCC1DCuts = kAllNumuCCCuts && kRecoMuonPhaseSpaceCut;
204 
207 
208  const Cut kIsTrueSig = CutFromNuTruthCut(kIsTrueSigST);
209 
211 
212  // Don't want to delete this yet, in case it is used. Defining new ones.
215 
216  const Cut kIsTrueSignal = CutFromNuTruthCut(kIsTrueSignalST);
217 
220 
221  const Cut kIsTrueFiducialNumuCC = CutFromNuTruthCut(kIsTrueFiducialNumuCCST);
222 
223  const Cut kPreSel =
224  kNumuMyQuality &&
225  kIsFiducial &&
227 
229  kAllNumuCCCuts && kTrueFiducial;
231  kAllNumuCCCuts && !kTrueFiducial;
232 
233  // --------------------------------------------------------------
234  const Cut kTrueMuon([](const caf::SRProxy* sr)
235  {
236  if(sr->trk.kalman.ntracks < 1 ) return false;
237 
238  int ibesttrk = kBestTrack(sr);
239 
240  if(ibesttrk < 0 || ibesttrk >= int(sr->trk.kalman.ntracks))
241  return false;
242 
243  bool muon = std::abs(sr->trk.kalman.tracks[ibesttrk].truth.pdg) == 13;
244 
245  if (!muon) return false;
246 
247  return muon;
248 
249  });
250 
251  const Cut kActive([](const caf::SRProxy* sr)
252  {
253  if(sr->trk.kalman.ntracks < 1 ) return false;
254 
255  int ibesttrk = kBestTrack(sr);
256 
257  if(ibesttrk < 0 || ibesttrk >= int(sr->trk.kalman.ntracks))
258  return false;
259 
260  return (sr->trk.kalman.tracks[ibesttrk].leninact > 0 &&
261  sr->trk.kalman.tracks[ibesttrk].lenincat < 0);
262 
263  });
264 
265 
266  const Cut kActiveandCatcher([](const caf::SRProxy* sr)
267  {
268  if(sr->trk.kalman.ntracks < 1 ) return false;
269 
270  int ibesttrk = kBestTrack(sr);
271 
272  if(ibesttrk < 0 || ibesttrk >= int(sr->trk.kalman.ntracks))
273  return false;
274 
275  return (sr->trk.kalman.tracks[ibesttrk].leninact > 0 &&
276  sr->trk.kalman.tracks[ibesttrk].lenincat > 0);
277 
278  });
279 
280  ////Cuts related to muon energy scale systematics:
281 
282  const Cut kRecoMuKECutUp = kRecoMuKEUp > 0.5 && kRecoMuKEUp < 2.5;
283  const Cut kRecoMuKECutDw = kRecoMuKEDw > 0.5 && kRecoMuKEDw < 2.5;
284 
286  (kRecoMuCostheta < 0.56 && kRecoMuKEUp < 0.9) ||
287  (kRecoMuCostheta >= 0.56 && kRecoMuCostheta < 0.62 && kRecoMuKEUp < 1.0) ||
288  (kRecoMuCostheta >= 0.62 && kRecoMuCostheta < 0.68 && kRecoMuKEUp < 1.1) ||
289  (kRecoMuCostheta >= 0.68 && kRecoMuCostheta < 0.74 && kRecoMuKEUp < 1.2) ||
290  (kRecoMuCostheta >= 0.74 && kRecoMuCostheta < 0.80 && kRecoMuKEUp < 1.4) ||
291  (kRecoMuCostheta >= 0.80 && kRecoMuCostheta < 0.85 && kRecoMuKEUp < 1.5) ||
292  (kRecoMuCostheta >= 0.85 && kRecoMuCostheta < 0.88 && kRecoMuKEUp < 1.6) ||
293  (kRecoMuCostheta >= 0.88 && kRecoMuCostheta < 0.91 && kRecoMuKEUp < 2.0) ||
294  (kRecoMuCostheta >= 0.91 && kRecoMuCostheta < 0.94 && kRecoMuKEUp < 2.4) ||
295  kRecoMuCostheta >= 0.94;
296 
298  (kRecoMuCostheta < 0.56 && kRecoMuKEDw < 0.9) ||
299  (kRecoMuCostheta >= 0.56 && kRecoMuCostheta < 0.62 && kRecoMuKEDw < 1.0) ||
300  (kRecoMuCostheta >= 0.62 && kRecoMuCostheta < 0.68 && kRecoMuKEDw < 1.1) ||
301  (kRecoMuCostheta >= 0.68 && kRecoMuCostheta < 0.74 && kRecoMuKEDw < 1.2) ||
302  (kRecoMuCostheta >= 0.74 && kRecoMuCostheta < 0.80 && kRecoMuKEDw < 1.4) ||
303  (kRecoMuCostheta >= 0.80 && kRecoMuCostheta < 0.85 && kRecoMuKEDw < 1.5) ||
304  (kRecoMuCostheta >= 0.85 && kRecoMuCostheta < 0.88 && kRecoMuKEDw < 1.6) ||
305  (kRecoMuCostheta >= 0.88 && kRecoMuCostheta < 0.91 && kRecoMuKEDw < 2.0) ||
306  (kRecoMuCostheta >= 0.91 && kRecoMuCostheta < 0.94 && kRecoMuKEDw < 2.4) ||
307  kRecoMuCostheta >= 0.94;
308 
310  kMuonIDCut &&
311  kIsFiducial &&
312  kNumuMyQuality &&
313  kNumuTightContainND &&
314  kRecoMuKECutUp && kRecoMuCosCut &&
316 
318  kMuonIDCut &&
319  kIsFiducial &&
320  kNumuMyQuality &&
321  kNumuTightContainND &&
322  kRecoMuKECutDw && kRecoMuCosCut &&
324 
325 
326 }//end of namespace
const Cut kPreSel
caf::Proxy< unsigned int > nshwlid
Definition: SRProxy.h:2040
const NuTruthCut kIsNCST([](const caf::SRNeutrinoProxy *truth){return!truth->iscc;})
Definition: NumuCCIncCuts.h:37
T max(const caf::Proxy< T > &a, T b)
const Cut kRecoMuCosCut
const NuTruthCut kIsNueCCST([](const caf::SRNeutrinoProxy *truth){return(truth->iscc &&truth->pdg==12);})
Definition: NumuCCIncCuts.h:40
caf::Proxy< caf::SRFuzzyK > fuzzyk
Definition: SRProxy.h:2059
const NuTruthCut kIsTrueSigST
Cuts and Vars for the 2020 FD DiF Study.
Definition: vars.h:6
const NuTruthVar kTrueMuCosthetaST([](const caf::SRNeutrinoProxy *nu){if(abs(nu->pdg)!=14||!nu->iscc) return-5.0;int nprims=nu->prim.size();for(int iprim=0;iprim< nprims;iprim++){if(abs(nu->prim[iprim].pdg)==13){TVector3 mudir=nu->prim[iprim].p.Vect();TVector3 beamdir=NuMIBeamDirection(caf::kNEARDET);return mudir.Unit().Dot(beamdir.Unit());}}return-5.0;})
const Var kRecoMuKE
const Var kRecoE
Definition: NumuCCIncVars.h:97
const Cut kNumuTightContainND([](const caf::SRProxy *sr){if(sr->vtx.nelastic< 1) return false;int ibesttrk=kBestTrack(sr);for(unsigned int i=0;i< sr->vtx.elastic[0].fuzzyk.nshwlid;++i){TVector3 start=sr->vtx.elastic[0].fuzzyk.png[i].shwlid.start;TVector3 stop=sr->vtx.elastic[0].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(int i=0;i< int(sr->trk.kalman.ntracks);++i){if(i==ibesttrk) continue;else if(sr->trk.kalman.tracks[i].start.Z() > 1275|| sr->trk.kalman.tracks[i].stop.Z() > 1275) return false;}if(ibesttrk< 0||ibesttrk >=int(sr->trk.kalman.ntracks)) return false;return((sr->trk.kalman.tracks[ibesttrk].stop.Z()< 1275 ||sr->trk.kalman.tracks[ibesttrk].trkyposattrans< 55) &&sr->trk.kalman.tracks[ibesttrk].trkfwdcellnd > 5 &&sr->trk.kalman.tracks[ibesttrk].trkbakcellnd > 10);})
Definition: NumuCCIncCuts.h:29
const NuTruthCut kTrueMuCosCutST
const NuTruthCut kIsTrueSignalST
const TVector3 vtxmin(-130,-176, 225)
caf::Proxy< size_t > ntracks
Definition: SRProxy.h:1778
Proxy for caf::SRNeutrino.
Definition: SRProxy.h:510
const NuTruthCut kIsTrueSig1DST
const NuTruthCut kTrueDetectorST([](const caf::SRNeutrinoProxy *sr){return(sr->vtx.X()< tvtxmax.X()&& sr->vtx.X() > tvtxmin.X()&& sr->vtx.Y() > tvtxmin.Y()&& sr->vtx.Y()< tvtxmax.Y()&& sr->vtx.Z() > tvtxmin.Z()&& sr->vtx.Z()< tvtxmax.Z());})
Definition: NumuCCIncCuts.h:32
const Cut kAllNumuCCCutsTrueNotFiducial
const Cut kTrueMuCosCut
const Cut kTrueMuKECut
Proxy for caf::StandardRecord.
Definition: SRProxy.h:2126
const NuTruthCut kTrueECutST([](const caf::SRNeutrinoProxy *truth){return(truth->E > 0.75 && truth->E< 4.0);})
Definition: NumuCCIncCuts.h:34
const Cut kActiveandCatcher([](const caf::SRProxy *sr){if(sr->trk.kalman.ntracks< 1) return false;int ibesttrk=kBestTrack(sr);if(ibesttrk< 0||ibesttrk >=int(sr->trk.kalman.ntracks)) return false;return(sr->trk.kalman.tracks[ibesttrk].leninact > 0 && sr->trk.kalman.tracks[ibesttrk].lenincat > 0);})
Definition: NumuCCIncCuts.h:98
const NuTruthCut kIsAntiNumuCCST([](const caf::SRNeutrinoProxy *truth){return(truth->iscc && truth->pdg==-14);})
Definition: NumuCCIncCuts.h:38
caf::Proxy< unsigned int > ncontplanes
Definition: SRProxy.h:1314
const Cut kNumuMyQuality([](const caf::SRProxy *sr){return(sr->trk.kalman.ntracks > 0 && sr->slc.nhit > 20 && sr->slc.ncontplanes > 4);})
Definition: NumuCCIncCuts.h:25
const NuTruthVar kTrueMuKEST([](const caf::SRNeutrinoProxy *nu){float ke=-5;if(abs(nu->pdg)!=14||!nu->iscc) return ke;int nprims=nu->prim.size();for(int iprim=0;iprim< nprims;iprim++){if(abs(nu->prim[iprim].pdg)==13){double E=nu->prim[iprim].p.T();ke=E-MuonMass();}}return ke;})
const Cut kRecoECut
const NuTruthCut kTrueFiducialST([](const caf::SRNeutrinoProxy *sr){return(sr->vtx.X()< vtxmax.X()&& sr->vtx.X() > vtxmin.X()&& sr->vtx.Y() > vtxmin.Y()&& sr->vtx.Y()< vtxmax.Y()&& sr->vtx.Z() > vtxmin.Z()&& sr->vtx.Z()< vtxmax.Z());})
Definition: NumuCCIncCuts.h:31
const Cut kRecoMuKECut
caf::Proxy< float > E
Definition: SRProxy.h:520
const Cut kActive([](const caf::SRProxy *sr){if(sr->trk.kalman.ntracks< 1) return false;int ibesttrk=kBestTrack(sr);if(ibesttrk< 0||ibesttrk >=int(sr->trk.kalman.ntracks)) return false;return(sr->trk.kalman.tracks[ibesttrk].leninact > 0 && sr->trk.kalman.tracks[ibesttrk].lenincat< 0);})
Definition: NumuCCIncCuts.h:96
float abs(float number)
Definition: d0nt_math.hpp:39
_Cut< caf::SRNeutrinoProxy > NuTruthCut
Cut designed to be used over the nuTree, ie all neutrinos, not just those that got slices...
Definition: Cut.h:104
const Var kRecoMuCostheta([](const caf::SRProxy *sr){int ibesttrk=kBestTrack(sr);if(sr->trk.kalman.ntracks< 1) return-1000.f;if(ibesttrk< 0||ibesttrk >=int(sr->trk.kalman.ntracks)) return-1000.f;TVector3 dir=sr->trk.kalman.tracks[ibesttrk].dir;TVector3 beamdir=NuMIBeamDirection(sr->hdr.det);return(float) dir.Dot(beamdir);})
const Cut kRecoMuKECutDw
caf::Proxy< caf::SRElastic > elastic
Definition: SRProxy.h:2118
const NuTruthCut kIsTrueFiducialNumuCCST
caf::Proxy< caf::SRVector3D > vtx
Definition: SRProxy.h:573
caf::Proxy< std::vector< caf::SRFuzzyKProng > > png
Definition: SRProxy.h:2043
const Var kMuonID
Definition: NDXSecMuonPID.h:32
const Cut kRecoMuonPhaseSpaceCutUp
caf::Proxy< unsigned int > nhit
Definition: SRProxy.h:1315
if(dump)
const Cut kIsNCCut
caf::Proxy< caf::SRTrackBranch > trk
Definition: SRProxy.h:2145
const Cut kRecoMuonPhaseSpaceCutDw
const Cut kIsAntiNueCC
const Cut kIsTrueFiducialNumuCC
const Cut kTrueFiducial
caf::Proxy< bool > iscc
Definition: SRProxy.h:538
_Cut< caf::SRProxy > Cut
Representation of a cut (selection) to be applied to a caf::StandardRecord object.
Definition: Cut.h:96
const Cut kRecoMuKECutUp
caf::StandardRecord * sr
const Cut kTrueMuon([](const caf::SRProxy *sr){if(sr->trk.kalman.ntracks< 1) return false;int ibesttrk=kBestTrack(sr);if(ibesttrk< 0||ibesttrk >=int(sr->trk.kalman.ntracks)) return false;bool muon=std::abs(sr->trk.kalman.tracks[ibesttrk].truth.pdg)==13;if(!muon) return false;return muon;})
Definition: NumuCCIncCuts.h:94
const NuTruthCut kTrueMuKECutST
const Cut kIsNumuCCCut
const NuTruthCut kTrueMuonPhaseSpaceCutST([](const caf::SRNeutrinoProxy *truth){float trueMuKE=kTrueMuKEST(truth);float trueMuCostheta=kTrueMuCosthetaST(truth);return((trueMuKE >=0.5)&&( (trueMuCostheta >=0.94 &&trueMuCostheta<=1.00 &&trueMuKE< 2.5)|| (trueMuCostheta >=0.91 &&trueMuCostheta< 0.94 &&trueMuKE< 2.2)|| (trueMuCostheta >=0.88 &&trueMuCostheta< 0.91 &&trueMuKE< 1.9)|| (trueMuCostheta >=0.85 &&trueMuCostheta< 0.88 &&trueMuKE< 1.8)|| (trueMuCostheta >=0.80 &&trueMuCostheta< 0.85 &&trueMuKE< 1.4)|| (trueMuCostheta >=0.74 &&trueMuCostheta< 0.80 &&trueMuKE< 1.4)|| (trueMuCostheta >=0.68 &&trueMuCostheta< 0.74 &&trueMuKE< 1.4)|| (trueMuCostheta >=0.62 &&trueMuCostheta< 0.68 &&trueMuKE< 1.3)|| (trueMuCostheta >=0.56 &&trueMuCostheta< 0.62 &&trueMuKE< 1.2)|| (trueMuCostheta >=0.50 &&trueMuCostheta< 0.56 &&trueMuKE< 1.1)));})
Definition: NumuCCIncCuts.h:53
const Cut kMuonIDCut
const Cut kIsFiducial([](const caf::SRProxy *sr){int ibesttrk=kBestTrack(sr);if(sr->trk.kalman.ntracks< 1) return false;if(ibesttrk< 0||ibesttrk >=int(sr->trk.kalman.ntracks)) return false;bool isfid=(sr->trk.kalman.tracks[ibesttrk].start.X()< vtxmax.X()&&sr->trk.kalman.tracks[ibesttrk].start.X() > vtxmin.X()&&sr->trk.kalman.tracks[ibesttrk].start.Y() > vtxmin.Y()&&sr->trk.kalman.tracks[ibesttrk].start.Y()< vtxmax.Y()&&sr->trk.kalman.tracks[ibesttrk].start.Z() > vtxmin.Z()&&sr->trk.kalman.tracks[ibesttrk].start.Z()< vtxmax.Z());return isfid;})
Definition: NumuCCIncCuts.h:27
const Var kRecoMuKEDw
const Cut kTrueECut
const Cut kIsNueorbarCC
const TVector3 tvtxmax(192, 194, 1270)
const Cut kIsTrueSig
const Cut kAllNumuCC1DCuts
const Cut kAllNumuCCCutsTrueFiducial
caf::Proxy< caf::SRKalman > kalman
Definition: SRProxy.h:1797
const Cut kRecoMuonPhaseSpaceCut([](const caf::SRProxy *sr){float recoMuKE=kRecoMuKE(sr);float recoMuCostheta=kRecoMuCostheta(sr);return((recoMuKE >=0.5)&&( (recoMuCostheta >=0.94 &&recoMuCostheta<=1.00 &&recoMuKE< 2.5)|| (recoMuCostheta >=0.91 &&recoMuCostheta< 0.94 &&recoMuKE< 2.2)|| (recoMuCostheta >=0.88 &&recoMuCostheta< 0.91 &&recoMuKE< 1.9)|| (recoMuCostheta >=0.85 &&recoMuCostheta< 0.88 &&recoMuKE< 1.8)|| (recoMuCostheta >=0.80 &&recoMuCostheta< 0.85 &&recoMuKE< 1.4)|| (recoMuCostheta >=0.74 &&recoMuCostheta< 0.80 &&recoMuKE< 1.4)|| (recoMuCostheta >=0.68 &&recoMuCostheta< 0.74 &&recoMuKE< 1.4)|| (recoMuCostheta >=0.62 &&recoMuCostheta< 0.68 &&recoMuKE< 1.3)|| (recoMuCostheta >=0.56 &&recoMuCostheta< 0.62 &&recoMuKE< 1.2)|| (recoMuCostheta >=0.50 &&recoMuCostheta< 0.56 &&recoMuKE< 1.1)));})
Definition: NumuCCIncCuts.h:65
caf::Proxy< caf::SRSlice > slc
Definition: SRProxy.h:2142
const Cut kAllNumuCCCutsUp
const TVector3 tvtxmin(-191,-187, 0)
caf::Proxy< short int > pdg
Definition: SRProxy.h:552
caf::Proxy< std::vector< caf::SRKalmanTrack > > tracks
Definition: SRProxy.h:1780
T min(const caf::Proxy< T > &a, T b)
const NuTruthCut kIsNueorbarCCST([](const caf::SRNeutrinoProxy *truth){return(truth->iscc && std::abs(truth->pdg)==12);})
Definition: NumuCCIncCuts.h:39
Template for Cut and SpillCut.
Definition: Cut.h:15
caf::Proxy< caf::SRVertexBranch > vtx
Definition: SRProxy.h:2146
const TVector3 vtxmax(160, 160, 1000)
const Cut kTrueDetector
const NuTruthCut kIsAntiNueCCST([](const caf::SRNeutrinoProxy *truth){return(truth->iscc && truth->pdg==-12);})
Definition: NumuCCIncCuts.h:41
const Cut kAllNumuCCCutsDw
const Cut kIsAntiNumuCC
const Cut kIsTrueSignal
const Cut kIsNueCC
const Cut kAllNumuCCCuts
Cut CutFromNuTruthCut(const NuTruthCut &stc)
Definition: Cut.cxx:7
const Var kRecoMuKEUp
const NuTruthCut kIsNumuCCST([](const caf::SRNeutrinoProxy *truth){return(truth->iscc &&truth->pdg==14);})
Definition: NumuCCIncCuts.h:36
const Var kBestTrack
Definition: NDXSecMuonPID.h:33
const Cut kTrueMuonPhaseSpaceCut