All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
NumuCuts.cxx
Go to the documentation of this file.
1 #include <iostream>
3 #include "sbnanaobj/StandardRecord/Proxy/SRProxy.h"
4 #include <cassert>
5 
6 namespace ana{
7 
8  const Cut kNumuBasicQual([](const caf::SRSliceProxy* slc)
9  { //
10  bool hastrk = ( slc->reco.ntrk > 0 );
11  if (!hastrk) return hastrk;
12 
13  unsigned int muIdx = (unsigned int)kPrimMuonIdx(slc);
14  double len = slc->reco.trk[muIdx].len;
15  return (len > 0 );
16  });
17 
18  const Cut kHasFlashMatch([](const caf::SRSliceProxy* slc)
19  {
20  return ( slc->fmatch.present );
21  });
22 
23  const Cut kFlashMatchScore([](const caf::SRSliceProxy* slc)
24  {
25  return ( slc->fmatch.time > 0 &&
26  slc->fmatch.score > 6 );
27  });
28 
30 
31 
32  const Cut kNumuTrkLen([](const caf::SRSliceProxy* slc)
33  { // TO DO: Prim pandora trk len primary_track.length > fConfig.TrackLength
34  bool hastrk = ( slc->reco.ntrk > 0 );
35  if (!hastrk) return hastrk;
36 
37  unsigned int muIdx = (unsigned int)kPrimMuonIdx(slc);
38  double len = slc->reco.trk[muIdx].len;
39  return (len > 50 );
40  });
41 
42  // const Cut kNumuContND([](const caf::SRSliceProxy* slc)
43  // { // TO DO: Trk end-point containment
44  // bool hastrk = ( slc->reco.ntrk > 0 );
45  // if (!hastrk) return hastrk;
46  // // CosmicContain from sbnanalysis OscRecoPostprocess
47  // // ytop: 40 ybottom: 15 zfront: 15 zback: 15
48  // unsigned int muIdx = (unsigned int)kPrimMuonIdx(slc);
49  // return ( slc->reco.trk[muIdx].start.x > ( kNDTopX -15 ) &&
50  // slc->reco.trk[muIdx].start.x < 15 &&
51  // slc->reco.trk[muIdx].start.y > ( kNDTopY -40 ) &&
52  // slc->reco.trk[muIdx].start.y < 15 &&
53  // slc->reco.trk[muIdx].start.z > ( kNDBack -15 ) &&
54  // slc->reco.trk[muIdx].start.z < 15 &&
55  // slc->reco.trk[muIdx].end.x > ( kNDTopX -15 ) &&
56  // slc->reco.trk[muIdx].end.x < 15 &&
57  // slc->reco.trk[muIdx].end.y > ( kNDTopY -40 ) &&
58  // slc->reco.trk[muIdx].end.y < 15 &&
59  // slc->reco.trk[muIdx].end.z > ( kNDBack -15 ) &&
60  // slc->reco.trk[muIdx].end.z < 15 && )
61  // });
62 
63  // const Cut kNumuContFD([](const caf::SRSliceProxy* slc)
64  // { // TO DO: Trk end-point containment
65  // bool hastrk = ( slc->reco.ntrk > 0 );
66  // return ( hastrk );
67  // });
68 
69  // const Cut kNumuVtxFidND([](const caf::SRSliceProxy* slc)
70  // { // TO DO: Vtx Containment
71  // bool hastrk = ( slc->reco.ntrk > 0 );
72  // return ( hastrk );
73 
74  // });
75 
76  // const Cut kNumuVtxFidFD([](const caf::SRSliceProxy* slc)
77  // { // TO DO: Vtx Containment
78  // bool hastrk = ( slc->reco.ntrk > 0 );
79  // return ( hastrk );
80  // });
81 
82  // const Cut kNumuMCSLen([](const caf::SRSliceProxy* slc)
83  // { // TO DO: Prim trk MCS length - primary_track.mcs_momentum < 7. /*garbage value*/&& (fConfig.MCSTrackLength <0. || primary_track.length > fConfig.MCSTrackLength
84  // bool hastrk = ( slc->reco.ntrk > 0 );
85  // return ( hastrk );
86  // });
87 
88 
89  // const Cut kNumuCRTHit([](const caf::SRSliceProxy* slc)
90  // { // TO DO
91  // bool hastrk = ( slc->reco.ntrk > 0 );
92  // return ( hastrk );
93  // });
94 
95  // const Cut kNumuCRTTrk([](const caf::SRSliceProxy* slc)
96  // { // TO DO
97  // bool hastrk = ( slc->reco.ntrk > 0 );
98  // return ( hastrk );
99  // });
100 
101  // const Cut kNumuCRTAct([](const caf::SRSliceProxy* slc)
102  // { // TO DO
103  // bool hastrk = ( slc->reco.ntrk > 0 );
104  // return ( hastrk );
105  // });
106 
107 }
const Cut kNumuTrkLen([](const caf::SRSliceProxy *slc){bool hastrk=(slc->reco.ntrk > 0);if(!hastrk) return hastrk;unsigned int muIdx=(unsigned int) kPrimMuonIdx(slc);double len=slc->reco.trk[muIdx].len;return(len > 50);})
Definition: NumuCuts.h:15
const Var kPrimMuonIdx([](const caf::SRSliceProxy *slc) -> double{if((int) slc->reco.ntrk==0) return-5.0;double best_idx=0;double best_len=-5.0;for(unsigned int trkIdx=0;trkIdx< slc->reco.ntrk;trkIdx++){auto &trk=slc->reco.trk[trkIdx];if(trk.chi2pid[2].pid_ndof< 0) return-5.0;bool isMuonLike=trk.chi2pid[2].chi2_pion > trk.chi2pid[2].chi2_muon;if(isMuonLike &&trk.len > best_len){best_len=trk.len;best_idx=trkIdx;}}return best_idx;})
Definition: NumuVars.h:11
process_name opflashCryoW ana
const Cut kHasFlashMatch([](const caf::SRSliceProxy *slc){return(slc->fmatch.present);})
Definition: NumuCuts.h:9
const Cut kNumuBasicQual([](const caf::SRSliceProxy *slc){bool hastrk=(slc->reco.ntrk > 0);if(!hastrk) return hastrk;unsigned int muIdx=(unsigned int) kPrimMuonIdx(slc);double len=slc->reco.trk[muIdx].len;return(len > 0);})
Definition: NumuCuts.h:7
caf::Proxy< caf::SRSlice > SRSliceProxy
Definition: EpilogFwd.h:2
const Cut kFlashMatchScore([](const caf::SRSliceProxy *slc){return(slc->fmatch.time > 0 &&slc->fmatch.score > 6);})
Definition: NumuCuts.h:11
const Cut kFlashMatchNumuCut
Definition: NumuCuts.cxx:29
_Cut< caf::SRSliceProxy > Cut
Definition: Cut.h:95
Template for Cut and SpillCut.
Definition: Cut.h:16