HighLAND
numuCCSelection.hxx
1 #ifndef numuCCSelection_h
2 #define numuCCSelection_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 
12  public:
13  numuCCSelection(bool forceBreak=true);
14  virtual ~numuCCSelection(){}
15 
16  //---- These are mandatory functions
17  void DefineSteps();
18  void DefineDetectorFV();
19  ToyBoxB* MakeToyBox(){return new ToyBoxTracker();}
20  bool FillEventSummary(AnaEventC& event, Int_t allCutsPassed[]);
21  SampleId::SampleEnum GetSampleEnum(){return SampleId::kFGD1NuMuCC;}
22  bool IsRelevantRecObjectForSystematic(const AnaEventC& event, AnaRecObjectC* recObj, SystId_h systId, Int_t branch) const;
23  bool IsRelevantRecObjectForSystematicInToy(const AnaEventC&, const ToyBoxB&, AnaRecObjectC*, SystId_h systId, Int_t branch=0) const;
24  bool IsRelevantTrueObjectForSystematic(const AnaEventC& event, AnaTrueObjectC* trueObj, SystId_h systId, Int_t branch) const;
25  bool IsRelevantTrueObjectForSystematicInToy(const AnaEventC&, const ToyBoxB&, AnaTrueObjectC*, SystId_h systId, Int_t branch=0) const;
26  bool IsRelevantSystematic(const AnaEventC& event, const ToyBoxB& box, SystId_h systId, Int_t branch) const;
27  void InitializeEvent(AnaEventC& event);
28  bool CheckRedoSelection(const AnaEventC& event, const ToyBoxB& PreviousToyBox, Int_t& redoFromStep);
29 
30 protected:
31 
32  Int_t _MuonPIDCutIndex;
33  Int_t _MuonPIDStepIndex;
34  Int_t _FindLeadingTracksStepIndex;
35  Int_t _TotalMultiplicityCutIndex;
36 
37 
38 };
39 
41 public:
42  using StepBase::Apply;
43  bool Apply(AnaEventC& event, ToyBoxB& box) const;
45 };
46 
47 class TrackQualityFiducialCut: public StepBase{
48  public:
49  using StepBase::Apply;
50  bool Apply(AnaEventC& event, ToyBoxB& box) const;
52 };
53 
54 class TotalMultiplicityCut: public StepBase{
55  public:
56  using StepBase::Apply;
57  bool Apply(AnaEventC& event, ToyBoxB& box) const;
59 };
60 
61 
62 class MuonPIDCut: public StepBase{
63  public:
64  MuonPIDCut(){
65  _prod5Cut = (bool) ND::params().GetParameterI("psycheSelections.numuCCMultiPi.Prod5Cuts");
66  }
67  using StepBase::Apply;
68  bool Apply(AnaEventC& event, ToyBoxB& box) const;
69  StepBase* MakeClone(){return new MuonPIDCut();}
70  private:
71  bool _prod5Cut;
72 };
73 
74 class ExternalVetoCut: public StepBase{
75  public:
76  using StepBase::Apply;
77  bool Apply(AnaEventC& event, ToyBoxB& box) const;
79 };
80 
82  public:
83  using StepBase::Apply;
84  bool Apply(AnaEventC& event, ToyBoxB& box) const;
86 };
87 
88 /// Leading tracks with good quality in FGD1
89 class FindLeadingTracksAction: public StepBase{
90  public:
91  using StepBase::Apply;
92  bool Apply(AnaEventC& event, ToyBoxB& box) const;
94 };
95 
96  /// Find the Vertex. For the moment it's just the Star position of the HM track
97 class FindVertexAction: public StepBase{
98  public:
99  using StepBase::Apply;
100  bool Apply(AnaEventC& event, ToyBoxB& box) const;
102 };
103 
104 
105 class FindVetoTrackAction: public StepBase{
106  public:
107  using StepBase::Apply;
108  bool Apply(AnaEventC& event, ToyBoxB& box) const;
110 };
111 
112 class FindOOFVTrackAction: public StepBase{
113  public:
114  using StepBase::Apply;
115  bool Apply(AnaEventC& event, ToyBoxB& box) const;
117 };
118 
119 
120 #endif
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...
int GetParameterI(std::string)
Get parameter. Value is returned as integer.
Definition: Parameters.cxx:217
StepBase * MakeClone()
MANDATORY FUNCTIONS !!!
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 !!!
StepBase * MakeClone()
MANDATORY FUNCTIONS !!!
void InitializeEvent(AnaEventC &event)
Fill the EventBox with the objects needed by this selection.
Leading tracks with good quality in FGD1.
virtual bool Apply(AnaEventC &event, ToyBoxB &box) const
Definition: StepBase.hxx:46
StepBase * MakeClone()
MANDATORY FUNCTIONS !!!
StepBase * MakeClone()
MANDATORY FUNCTIONS !!!
bool Apply(AnaEventC &event, bool &redo)
Apply all steps in the selection.
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) ...
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...
Find the Vertex. For the moment it's just the Star position of the HM track.
StepBase * MakeClone()
MANDATORY FUNCTIONS !!!
bool IsRelevantSystematic(const AnaEventC &event, const ToyBoxB &box, SystId_h systId, Int_t branch) const
Is this systematic relevant for this selection.
ToyBoxB ** PreviousToyBox
Array of pointers to the PreviousToyBox (for each event)
ToyBoxB * MakeToyBox()
Create the appropriate type of box.
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) ...
bool CheckRedoSelection(const AnaEventC &event, const ToyBoxB &PreviousToyBox, Int_t &redoFromStep)