HighLAND
antiNueCCSelection.hxx
1 #ifndef antiNueCCSelection_h
2 #define antiNueCCSelection_h
3 
4 #include "SelectionBase.hxx"
5 #include "Parameters.hxx"
6 #include "ToyBoxTracker.hxx"
7 #include "SystId.hxx"
8 #include "SubDetId.hxx"
9 
10 #include "nueCCSelection.hxx"
11 
13  public:
14  antiNueCCSelection(bool forceBreak=true);
15  virtual ~antiNueCCSelection(){}
16 
17  //---- These are mandatory functions
18  void DefineSteps();
19  void DefineDetectorFV();
20  ToyBoxB* MakeToyBox(){return new ToyBoxNueCC();}
21 
22  void InitializeEvent(AnaEventC& eventC);
23  bool FillEventSummary(AnaEventC& event, Int_t allCutsPassed[]);
24  SampleId::SampleEnum GetSampleEnum(){return SampleId::kFGD1AntiNuECC;}
25 
26  bool IsRelevantRecObjectForSystematic(const AnaEventC& event, AnaRecObjectC* recObj, SystId_h systId, Int_t branch) const;
27  bool IsRelevantRecObjectForSystematicInToy(const AnaEventC&, const ToyBoxB&, AnaRecObjectC*, SystId_h systId, Int_t branch) const;
28  bool IsRelevantTrueObjectForSystematic(const AnaEventC& event, AnaTrueObjectC* trueObj, SystId_h systId, Int_t branch) const;
29  bool IsRelevantTrueObjectForSystematicInToy(const AnaEventC&, const ToyBoxB&, AnaTrueObjectC*, SystId_h systId, Int_t branch) const;
30  bool IsRelevantSystematic(const AnaEventC& event, const ToyBoxB& boxB, SystId_h systId, Int_t branch) const;
31  bool CheckRedoSelection(const AnaEventC& eventC, const ToyBoxB& PreviousToyBoxB, Int_t& redoFromStep);
32 
33 protected:
34  nueCCSelection _nueCCSelection;
35 
36  Int_t _FindLeadingTracksStepIndex;
37  Int_t _TotalMultiplicityCutIndex;
38  Int_t _ElecPIDCutIndex;
39  Int_t _ElecPIDStepIndex;
40 
41  // Variables needed from datacard
42  Float_t _protonregion_low;
43 };
44 
46 public:
47  using StepBase::Apply;
48  bool Apply(AnaEventC& event, ToyBoxB& boxB) const;
50 };
51 
53 public:
54  using StepBase::Apply;
55  bool Apply(AnaEventC& event, ToyBoxB& boxB) const;
57 };
58 
60 public:
61  using StepBase::Apply;
62  bool Apply(AnaEventC& eventC, ToyBoxB& boxB) const;
64 };
65 
67 public:
68  using StepBase::Apply;
69  bool Apply(AnaEventC& event, ToyBoxB& boxB) const;
71 };
72 
74 public:
76  _protonregion_low = (Float_t)ND::params().GetParameterD("psycheSelections.antiNueCCAnalysis.Analysis.ProtonMomentumRegion.Low");
77  _protonregion_high = (Float_t)ND::params().GetParameterD("psycheSelections.antiNueCCAnalysis.Analysis.ProtonMomentumRegion.High");
78  _pullelec_reject_min = (Float_t)ND::params().GetParameterD("psycheSelections.antiNueCCAnalysis.Cuts.PID2.PullElecMin");
79  _pullelec_reject_max = (Float_t)ND::params().GetParameterD("psycheSelections.antiNueCCAnalysis.Cuts.PID2.PullElecMax");
80  };
81  using StepBase::Apply;
82  bool Apply(AnaEventC& event, ToyBoxB& boxB) const;
84 protected:
85  Float_t _protonregion_low;
86  Float_t _protonregion_high;
87  Float_t _pullelec_reject_min;
88  Float_t _pullelec_reject_max;
89 };
90 
92 public:
94  _Ethreshold = (Float_t)ND::params().GetParameterD("psycheSelections.nueCCAnalysis.Cuts.PID.EThreshold");
95  _Emin_ecal = (Float_t)ND::params().GetParameterD("psycheSelections.nueCCAnalysis.Cuts.PID.EcalEMin");
96  _EoverP = (Float_t)ND::params().GetParameterD("psycheSelections.nueCCAnalysis.Cuts.PID.EoverP");
97  };
98  using StepBase::Apply;
99  bool Apply(AnaEventC& event, ToyBoxB& boxB) const;
101 protected:
102  Float_t _Ethreshold;
103  Float_t _Emin_ecal;
104  Float_t _EoverP;
105 };
106 
108 public:
110  _emhip = (Float_t)ND::params().GetParameterD("psycheSelections.antiNueCCAnalysis.Cuts.PID.EmHip");
111  _emhipfhc = (Float_t)ND::params().GetParameterD("psycheSelections.antiNueCCAnalysis.Cuts.PID.FHC.EmHip");
112  _protonregion_low = (Float_t)ND::params().GetParameterD("psycheSelections.antiNueCCAnalysis.Analysis.ProtonMomentumRegion.Low");
113  }
114  using StepBase::Apply;
115  bool Apply(AnaEventC& event, ToyBoxB& boxB) const;
117 protected:
118  Float_t _emhip;
119  Float_t _emhipfhc;
120  Float_t _protonregion_low;
121 };
122 
124 public:
126  _protonregion_low = (Float_t)ND::params().GetParameterD("psycheSelections.antiNueCCAnalysis.Analysis.ProtonMomentumRegion.Low");
127  _eoverp = (Float_t)ND::params().GetParameterD("psycheSelections.antiNueCCAnalysis.Cuts.PID.EoverP");
128  _eoverpfhc = (Float_t)ND::params().GetParameterD("psycheSelections.antiNueCCAnalysis.Cuts.PID.FHC.EoverP");
129  };
130  using StepBase::Apply;
131  bool Apply(AnaEventC& event, ToyBoxB& boxB) const;
133 protected:
134  Float_t _protonregion_low;
135  Float_t _eoverp;
136  Float_t _eoverpfhc;
137  };
138 
140 public:
142  _protonregion_low = (Float_t)ND::params().GetParameterD("psycheSelections.antiNueCCAnalysis.Analysis.ProtonMomentumRegion.Low");
143  _protonregion_high = (Float_t)ND::params().GetParameterD("psycheSelections.antiNueCCAnalysis.Analysis.ProtonMomentumRegion.High");
144  }
145  using StepBase::Apply;
146  bool Apply(AnaEventC& event, ToyBoxB& boxB) const;
148 protected:
149  Float_t _protonregion_low;
150  Float_t _protonregion_high;
151 };
152 
154 public:
156  _protonregion_low = (Float_t)ND::params().GetParameterD("psycheSelections.antiNueCCAnalysis.Analysis.ProtonMomentumRegion.Low");
157  _fgdecaltof = (Float_t)ND::params().GetParameterD("psycheSelections.antiNueCCAnalysis.Cuts.ToF.FGDEcal");
158  _fgd1fgd2tof = (Float_t)ND::params().GetParameterD("psycheSelections.antiNueCCAnalysis.Cuts.ToF.FGD1FGD2");
159  };
160  using StepBase::Apply;
161  bool Apply(AnaEventC& eventC, ToyBoxB& boxB) const;
163 protected:
164  Float_t _protonregion_low;
165  Float_t _fgdecaltof;
166  Float_t _fgd1fgd2tof;
167 };
168 
169 
170 #endif
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 !!!
StepBase * MakeClone()
MANDATORY FUNCTIONS !!!
bool CheckRedoSelection(const AnaEventC &eventC, const ToyBoxB &PreviousToyBoxB, Int_t &redoFromStep)
bool IsRelevantTrueObjectForSystematicInToy(const AnaEventC &, const ToyBoxB &, AnaTrueObjectC *, SystId_h systId, Int_t branch) const
Is this true track relevant for a given systematic (after selection, called for each toy) ...
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 Apply(AnaEventC &event, bool &redo)
Apply all steps in the selection.
double GetParameterD(std::string)
Get parameter. Value is returned as double.
Definition: Parameters.cxx:229
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...
void DefineSteps()
Define all steps in the selection.
ToyBoxB * MakeToyBox()
Create the appropriate type of box.
StepBase * MakeClone()
MANDATORY FUNCTIONS !!!
void InitializeEvent(AnaEventC &eventC)
Fill the EventBox with the objects needed by this selection.
bool IsRelevantRecObjectForSystematicInToy(const AnaEventC &, const ToyBoxB &, AnaRecObjectC *, SystId_h systId, Int_t branch) const
Is this track relevant for a given systematic (after selection, called for each toy) ...
bool IsRelevantSystematic(const AnaEventC &event, const ToyBoxB &boxB, SystId_h systId, Int_t branch) const
Is this systematic relevant for this selection.
void DefineDetectorFV()
Define the detector Fiducial Volume in which this selection is applied.
StepBase * MakeClone()
MANDATORY FUNCTIONS !!!