HighLAND
numuCC4piFGD2Selection.hxx
1 #ifndef numuCC4piFGD2Selection_h
2 #define numuCC4piFGD2Selection_h
3 
4 #include "SelectionBase.hxx"
5 #include "Parameters.hxx"
6 #include "ToyBoxTracker.hxx"
7 #include "EventBoxId.hxx"
8 #include "SystId.hxx"
9 #include "SubDetId.hxx"
10 #include "numuCC4piSelection.hxx"
11 
12 #include "ToFSenseCorrector.hxx"
13 
15 public:
16  numuCC4piFGD2Selection(bool forceBreak=true);
17  virtual ~numuCC4piFGD2Selection(){}
18 
19  //---- These are mandatory functions
20  void DefineSteps();
21  void DefineDetectorFV();
22  ToyBoxB* MakeToyBox(){return new ToyBoxCC4pi();}
23  bool FillEventSummary(AnaEventC& event, Int_t allCutsPassed[]);
24  SampleId::SampleEnum GetSampleEnum(){return SampleId::kFGD2NuMuCC;}
25  bool IsRelevantRecObjectForSystematic(const AnaEventC& event, AnaRecObjectC* recObj, SystId_h systId, Int_t branch) const;
26  bool IsRelevantRecObjectForSystematicInToy(const AnaEventC&, const ToyBoxB&, AnaRecObjectC*, SystId_h systId, Int_t branch=0) const;
27  bool IsRelevantTrueObjectForSystematic(const AnaEventC& event, AnaTrueObjectC* trueObj, SystId_h systId, Int_t branch) const;
28  bool IsRelevantTrueObjectForSystematicInToy(const AnaEventC&, const ToyBoxB&, AnaTrueObjectC*, SystId_h systId, Int_t branch=0) const;
29  bool IsRelevantSystematic(const AnaEventC& event, const ToyBoxB& box, SystId_h systId, Int_t branch) const;
30  void InitializeEvent(AnaEventC& event);
31  bool CheckRedoSelection(const AnaEventC& event, const ToyBoxB& PreviousToyBox, Int_t& redoFromStep);
32 
33 private:
34  ToFSenseCorrector _tofCorrector;
35 
36 };
37 
39 public:
40  using StepBase::Apply;
41  bool Apply(AnaEventC& event, ToyBoxB& box) const;
43 };
44 
45 namespace numuCC4piFGD2{
46 
48  public:
49  using StepBase::Apply;
50  bool Apply(AnaEventC& event, ToyBoxB& box) const;
52  };
53 
54  class SortTracksAction: public StepBase{
55  public:
56  using StepBase::Apply;
57  bool Apply(AnaEventC& event, ToyBoxB& box) const;
59  };
60 
61  class TrackGQandFVCut: public StepBase{
62  public:
63  using StepBase::Apply;
64  bool Apply(AnaEventC& event, ToyBoxB& box) const;
66  };
67 
68  class VetoAction: public StepBase{
69  public:
70  using StepBase::Apply;
71  bool Apply(AnaEventC& event, ToyBoxB& box) const;
72  StepBase* MakeClone(){return new VetoAction();}
73  };
74 
75  class PIDAction: public StepBase{
76  public:
77  using StepBase::Apply;
78  bool Apply(AnaEventC& event, ToyBoxB& box) const;
79  StepBase* MakeClone(){return new PIDAction();}
80  };
81 }
82 
83 namespace numuCC4piFGD2_utils{
84  const Float_t LAFVmin[3] = {57.66, 57.66, 10.125};
85  const Float_t LAFVmax[3] = {57.66, 57.66, 0.};
86  const Float_t HAFVmin[3] = {57.66, 57.66, 10.125};
87  const Float_t HAFVmax[3] = {57.66, 57.66, 10.125};
88 
89  bool ExternalCut(int topo, const AnaEventC& event, AnaTrackB& candidate);
90  int PIDCut(int topo, const AnaTrackB& candidate);
91 
92 }
93 
94 #endif
ToyBoxB * MakeToyBox()
Create the appropriate type of box.
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) ...
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) ...
void DefineSteps()
Define all steps in the selection.
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...
bool IsRelevantSystematic(const AnaEventC &event, const ToyBoxB &box, SystId_h systId, Int_t branch) const
Is this systematic relevant for this selection.
void InitializeEvent(AnaEventC &event)
Fill the EventBox with the objects needed by this selection.
StepBase * MakeClone()
MANDATORY FUNCTIONS !!!
bool CheckRedoSelection(const AnaEventC &event, const ToyBoxB &PreviousToyBox, Int_t &redoFromStep)
StepBase * MakeClone()
MANDATORY FUNCTIONS !!!
StepBase * MakeClone()
MANDATORY FUNCTIONS !!!
virtual bool Apply(AnaEventC &event, ToyBoxB &box) const
Definition: StepBase.hxx:46
Representation of a global track.
bool Apply(AnaEventC &event, bool &redo)
Apply all steps in the selection.
StepBase * MakeClone()
MANDATORY FUNCTIONS !!!
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...
ToyBoxB ** PreviousToyBox
Array of pointers to the PreviousToyBox (for each event)
void DefineDetectorFV()
Define the detector Fiducial Volume in which this selection is applied.
StepBase * MakeClone()
MANDATORY FUNCTIONS !!!