HighLAND
numuCC4piSelection.hxx
1 #ifndef numuCC4piSelection_h
2 #define numuCC4piSelection_h
3 
4 #include "SelectionBase.hxx"
5 #include "SubDetId.hxx"
6 #include "ToyBoxTracker.hxx"
7 #include "EventBoxId.hxx"
8 #include "SystId.hxx"
9 #include "SubDetId.hxx"
10 
11 #include "ToFSenseCorrector.hxx"
12 
14  public:
15  numuCC4piSelection(bool forceBreak=true);
16  virtual ~numuCC4piSelection(){}
17 
18  //---- These are mandatory functions
19  void DefineSteps();
20  void DefineDetectorFV();
21  inline ToyBoxB* MakeToyBox();
22  bool FillEventSummary(AnaEventC& event, Int_t allCutsPassed[]);
23  SampleId::SampleEnum GetSampleEnum(){return SampleId::kFGD1NuMuCC;}
24  bool IsRelevantRecObjectForSystematic(const AnaEventC& event, AnaRecObjectC* recObj, SystId_h systId, Int_t branch) const;
25  bool IsRelevantRecObjectForSystematicInToy(const AnaEventC&, const ToyBoxB&, AnaRecObjectC*, SystId_h systId, Int_t branch=0) const;
26  bool IsRelevantTrueObjectForSystematic(const AnaEventC& event, AnaTrueObjectC* trueObj, SystId_h systId, Int_t branch) const;
27  bool IsRelevantTrueObjectForSystematicInToy(const AnaEventC&, const ToyBoxB&, AnaTrueObjectC*, SystId_h systId, Int_t branch=0) const;
28  bool IsRelevantSystematic(const AnaEventC& event, const ToyBoxB& box, SystId_h systId, Int_t branch) const;
29  void InitializeEvent(AnaEventC& event);
30  bool CheckRedoSelection(const AnaEventC& event, const ToyBoxB& PreviousToyBox, Int_t& redoFromStep);
31 
32 };
33 
34 class ToyBoxCC4pi: public ToyBoxTracker{
35 
36  public:
37 
38  ToyBoxCC4pi() {
39  MainTrack = NULL;
40  LowAngle.clear(); HighAngle.clear();
41  FwdTracks.clear(); BwdTracks.clear(); HAFwdTracks.clear(); HABwdTracks.clear();
42  FwdTracks_Veto.clear(); BwdTracks_Veto.clear(); HAFwdTracks_Veto.clear(); HABwdTracks_Veto.clear();
43  FwdTracks_PID.clear(); BwdTracks_PID.clear(); HAFwdTracks_PID.clear(); HABwdTracks_PID.clear(); CSFD2Tracks_PID.clear(); CSECALTracks_PID.clear();
44  }
45 
46  virtual void Reset(){
47  ResetBase();
48  MainTrack = NULL;
49  LowAngle.clear(); HighAngle.clear();
50  FwdTracks.clear(); BwdTracks.clear(); HAFwdTracks.clear(); HABwdTracks.clear();
51  FwdTracks_Veto.clear(); BwdTracks_Veto.clear(); HAFwdTracks_Veto.clear(); HABwdTracks_Veto.clear();
52  FwdTracks_PID.clear(); BwdTracks_PID.clear(); HAFwdTracks_PID.clear(); HABwdTracks_PID.clear(); CSFD2Tracks_PID.clear(); CSECALTracks_PID.clear();
53  }
54 
55  virtual ~ToyBoxCC4pi(){}
56 
57  /// For storing tracks information in the bunch.
59  std::vector<AnaTrackB*> LowAngle, HighAngle;
60  std::vector<AnaTrackB*> FwdTracks, BwdTracks, HAFwdTracks, HABwdTracks;
61  std::vector<AnaTrackB*> FwdTracks_Veto, BwdTracks_Veto, HAFwdTracks_Veto, HABwdTracks_Veto;
62  std::vector<AnaTrackB*> FwdTracks_PID, BwdTracks_PID, HAFwdTracks_PID, HABwdTracks_PID, CSFD2Tracks_PID, CSECALTracks_PID;
63 
64 };
65 
67 
69  public:
70  using StepBase::Apply;
71  bool Apply(AnaEventC& event, ToyBoxB& box) const;
73 };
74 
75 class SortTracksAction: public StepBase{
76  public:
77  using StepBase::Apply;
78  bool Apply(AnaEventC& event, ToyBoxB& box) const;
80 };
81 
82 class TrackGQandFVCut: public StepBase{
83  public:
84  using StepBase::Apply;
85  bool Apply(AnaEventC& event, ToyBoxB& box) const;
87 };
88 
89 class VetoAction: public StepBase{
90  public:
91  using StepBase::Apply;
92  bool Apply(AnaEventC& event, ToyBoxB& box) const;
93  StepBase* MakeClone(){return new VetoAction();}
94 };
95 
96 class PIDAction: public StepBase{
97  public:
98  using StepBase::Apply;
99  bool Apply(AnaEventC& event, ToyBoxB& box) const;
100  StepBase* MakeClone(){return new PIDAction();}
101 };
102 
104  public:
105  using StepBase::Apply;
106  bool Apply(AnaEventC& event, ToyBoxB& box) const;
108 };
109 
111  public:
112  using StepBase::Apply;
113  bool Apply(AnaEventC& event, ToyBoxB& box) const;
115 };
116 
117 
118 class Fwd_Quality: public StepBase{
119  public:
120  using StepBase::Apply;
121  bool Apply(AnaEventC& event, ToyBoxB& box) const;
122  StepBase* MakeClone(){return new Fwd_Quality();}
123 };
124 class Fwd_Veto: public StepBase{
125  public:
126  using StepBase::Apply;
127  bool Apply(AnaEventC& event, ToyBoxB& box) const;
128  StepBase* MakeClone(){return new Fwd_Veto();}
129 };
130 class Fwd_PID: public StepBase{
131  public:
132  using StepBase::Apply;
133  bool Apply(AnaEventC& event, ToyBoxB& box) const;
134  StepBase* MakeClone(){return new Fwd_PID();}
135 };
136 class Fwd_4pi: public StepBase{
137  public:
138  using StepBase::Apply;
139  bool Apply(AnaEventC& event, ToyBoxB& box) const;
140  StepBase* MakeClone(){return new Fwd_4pi();}
141 };
142 
143 class Bwd_Quality: public StepBase{
144  public:
145  using StepBase::Apply;
146  bool Apply(AnaEventC& event, ToyBoxB& box) const;
147  StepBase* MakeClone(){return new Bwd_Quality();}
148 };
149 class Bwd_Veto: public StepBase{
150  public:
151  using StepBase::Apply;
152  bool Apply(AnaEventC& event, ToyBoxB& box) const;
153  StepBase* MakeClone(){return new Bwd_Veto();}
154 };
155 class Bwd_PID: public StepBase{
156  public:
157  using StepBase::Apply;
158  bool Apply(AnaEventC& event, ToyBoxB& box) const;
159  StepBase* MakeClone(){return new Bwd_PID();}
160 };
161 class Bwd_4pi: public StepBase{
162  public:
163  using StepBase::Apply;
164  bool Apply(AnaEventC& event, ToyBoxB& box) const;
165  StepBase* MakeClone(){return new Bwd_4pi();}
166 };
167 
168 class HAFwd_Quality: public StepBase{
169  public:
170  using StepBase::Apply;
171  bool Apply(AnaEventC& event, ToyBoxB& box) const;
172  StepBase* MakeClone(){return new HAFwd_Quality();}
173 };
174 class HAFwd_Veto: public StepBase{
175  public:
176  using StepBase::Apply;
177  bool Apply(AnaEventC& event, ToyBoxB& box) const;
178  StepBase* MakeClone(){return new HAFwd_Veto();}
179 };
180 class HAFwd_PID: public StepBase{
181  public:
182  using StepBase::Apply;
183  bool Apply(AnaEventC& event, ToyBoxB& box) const;
184  StepBase* MakeClone(){return new HAFwd_PID();}
185 };
186 class HAFwd_4pi: public StepBase{
187  public:
188  using StepBase::Apply;
189  bool Apply(AnaEventC& event, ToyBoxB& box) const;
190  StepBase* MakeClone(){return new HAFwd_4pi();}
191 };
192 
193 class HABwd_Quality: public StepBase{
194  public:
195  using StepBase::Apply;
196  bool Apply(AnaEventC& event, ToyBoxB& box) const;
197  StepBase* MakeClone(){return new HABwd_Quality();}
198 };
199 class HABwd_Veto: public StepBase{
200  public:
201  using StepBase::Apply;
202  bool Apply(AnaEventC& event, ToyBoxB& box) const;
203  StepBase* MakeClone(){return new HABwd_Veto();}
204 };
205 class HABwd_PID: public StepBase{
206  public:
207  using StepBase::Apply;
208  bool Apply(AnaEventC& event, ToyBoxB& box) const;
209  StepBase* MakeClone(){return new HABwd_PID();}
210 };
211 class HABwd_4pi: public StepBase{
212  public:
213  using StepBase::Apply;
214  bool Apply(AnaEventC& event, ToyBoxB& box) const;
215  StepBase* MakeClone(){return new HABwd_4pi();}
216 };
217 
218 class CSFGD2_PID: public StepBase{
219  public:
220  using StepBase::Apply;
221  bool Apply(AnaEventC& event, ToyBoxB& box) const;
222  StepBase* MakeClone(){return new CSFGD2_PID();}
223 };
224 class CSFGD2_4pi: public StepBase{
225  public:
226  using StepBase::Apply;
227  bool Apply(AnaEventC& event, ToyBoxB& box) const;
228  StepBase* MakeClone(){return new CSFGD2_4pi();}
229 };
230 
231 class CSECAL_PID: public StepBase{
232  public:
233  using StepBase::Apply;
234  bool Apply(AnaEventC& event, ToyBoxB& box) const;
235  StepBase* MakeClone(){return new CSECAL_PID();}
236 };
237 class CSECAL_4pi: public StepBase{
238  public:
239  using StepBase::Apply;
240  bool Apply(AnaEventC& event, ToyBoxB& box) const;
241  StepBase* MakeClone(){return new CSECAL_4pi();}
242 };
243 
244 
245 #endif
bool IsRelevantSystematic(const AnaEventC &event, const ToyBoxB &box, SystId_h systId, Int_t branch) const
Is this systematic relevant for this selection.
bool IsRelevantRecObjectForSystematic(const AnaEventC &event, AnaRecObjectC *recObj, SystId_h systId, Int_t branch) const
Is this track relevant for a given systematic (prior to selection, call when initializing the event...
StepBase * MakeClone()
MANDATORY FUNCTIONS !!!
StepBase * MakeClone()
MANDATORY FUNCTIONS !!!
bool CheckRedoSelection(const AnaEventC &event, const ToyBoxB &PreviousToyBox, Int_t &redoFromStep)
virtual void Reset()
This method should be implemented by the derived class. If so it does nothing here.
StepBase * MakeClone()
MANDATORY FUNCTIONS !!!
StepBase * MakeClone()
MANDATORY FUNCTIONS !!!
StepBase * MakeClone()
MANDATORY FUNCTIONS !!!
StepBase * MakeClone()
MANDATORY FUNCTIONS !!!
StepBase * MakeClone()
MANDATORY FUNCTIONS !!!
StepBase * MakeClone()
MANDATORY FUNCTIONS !!!
StepBase * MakeClone()
MANDATORY FUNCTIONS !!!
StepBase * MakeClone()
MANDATORY FUNCTIONS !!!
StepBase * MakeClone()
MANDATORY FUNCTIONS !!!
StepBase * MakeClone()
MANDATORY FUNCTIONS !!!
void DefineSteps()
Define all steps in the selection.
StepBase * MakeClone()
MANDATORY FUNCTIONS !!!
StepBase * MakeClone()
MANDATORY FUNCTIONS !!!
StepBase * MakeClone()
MANDATORY FUNCTIONS !!!
StepBase * MakeClone()
MANDATORY FUNCTIONS !!!
StepBase * MakeClone()
MANDATORY FUNCTIONS !!!
virtual bool Apply(AnaEventC &event, ToyBoxB &box) const
Definition: StepBase.hxx:46
bool IsRelevantTrueObjectForSystematicInToy(const AnaEventC &, const ToyBoxB &, AnaTrueObjectC *, SystId_h systId, Int_t branch=0) const
Is this true track relevant for a given systematic (after selection, called for each toy) ...
StepBase * MakeClone()
MANDATORY FUNCTIONS !!!
void InitializeEvent(AnaEventC &event)
Fill the EventBox with the objects needed by this selection.
Representation of a global track.
bool Apply(AnaEventC &event, bool &redo)
Apply all steps in the selection.
ToyBoxB * MakeToyBox()
Create the appropriate type of box.
StepBase * MakeClone()
MANDATORY FUNCTIONS !!!
AnaTrackB * MainTrack
For storing tracks information in the bunch.
StepBase * MakeClone()
MANDATORY FUNCTIONS !!!
void DefineDetectorFV()
Define the detector Fiducial Volume in which this selection is applied.
StepBase * MakeClone()
MANDATORY FUNCTIONS !!!
StepBase * MakeClone()
MANDATORY FUNCTIONS !!!
StepBase * MakeClone()
MANDATORY FUNCTIONS !!!
bool IsRelevantTrueObjectForSystematic(const AnaEventC &event, AnaTrueObjectC *trueObj, SystId_h systId, Int_t branch) const
Is this true track relevant for a given systematic (prior to selection, call when initializing the ev...
StepBase * MakeClone()
MANDATORY FUNCTIONS !!!
StepBase * MakeClone()
MANDATORY FUNCTIONS !!!
Find the Vertex. For the moment it&#39;s just the Star position of the HM track.
StepBase * MakeClone()
MANDATORY FUNCTIONS !!!
StepBase * MakeClone()
MANDATORY FUNCTIONS !!!
ToyBoxB ** PreviousToyBox
Array of pointers to the PreviousToyBox (for each event)
bool IsRelevantRecObjectForSystematicInToy(const AnaEventC &, const ToyBoxB &, AnaRecObjectC *, SystId_h systId, Int_t branch=0) const
Is this track relevant for a given systematic (after selection, called for each toy) ...