1 #ifndef numuCC4piMultiPiSelection_h 2 #define numuCC4piMultiPiSelection_h 4 #include "SelectionBase.hxx" 5 #include "Parameters.hxx" 6 #include "ToyBoxTracker.hxx" 7 #include "EventBoxId.hxx" 9 #include "SubDetId.hxx" 11 #include "ToFSenseCorrector.hxx" 13 #include "numuCC4piSelection.hxx" 24 bool FillEventSummary(
AnaEventC& event, Int_t allCutsPassed[]);
25 SampleId::SampleEnum GetSampleEnum(){
return SampleId::kFGD1NuMuCC0Pi;}
45 LowAngle.clear(); HighAngle.clear();
46 FwdTracks.clear(); BwdTracks.clear(); HAFwdTracks.clear(); HABwdTracks.clear();
47 FwdTracks_Veto.clear(); BwdTracks_Veto.clear(); HAFwdTracks_Veto.clear(); HABwdTracks_Veto.clear();
48 FwdTracks_PID.clear(); BwdTracks_PID.clear(); HAFwdTracks_PID.clear(); HABwdTracks_PID.clear();
50 nPositivePionTPCtracks = 0;
51 nNegativePionTPCtracks = 0;
53 nIsoFGDPiontracks = 0;
56 nIsoFGDElPi0tracks = 0;
66 for(
int i = 0; i < 100; i ++){
67 PositivePionTPCtracks[i] = NULL;
68 NegativePionTPCtracks[i] = NULL;
69 MichelElectrons[i] = NULL;
70 IsoFGDPiontracks[i] = NULL;
71 PosPi0TPCtracks[i] = NULL;
72 ElPi0TPCtracks[i] = NULL;
73 IsoFGDElPi0tracks[i] = NULL;
80 LowAngle.clear(); HighAngle.clear();
81 FwdTracks.clear(); BwdTracks.clear(); HAFwdTracks.clear(); HABwdTracks.clear();
82 FwdTracks_Veto.clear(); BwdTracks_Veto.clear(); HAFwdTracks_Veto.clear(); HABwdTracks_Veto.clear();
83 FwdTracks_PID.clear(); BwdTracks_PID.clear(); HAFwdTracks_PID.clear(); HABwdTracks_PID.clear();
85 for(
int i = 0; i <nPositivePionTPCtracks ; i ++)
86 PositivePionTPCtracks[i] = NULL;
87 for(
int i = 0; i <nNegativePionTPCtracks ; i ++)
88 NegativePionTPCtracks[i] = NULL;
89 for(
int i = 0; i <nMichelElectrons ; i ++)
90 MichelElectrons[i] = NULL;
91 for(
int i = 0; i <nIsoFGDPiontracks ; i ++)
92 IsoFGDPiontracks[i] = NULL;
93 for(
int i = 0; i <nPosPi0TPCtracks ; i ++)
94 PosPi0TPCtracks[i] = NULL;
95 for(
int i = 0; i <nElPi0TPCtracks ; i ++)
96 ElPi0TPCtracks[i] = NULL;
97 for(
int i = 0; i <nIsoFGDElPi0tracks ; i ++)
98 IsoFGDElPi0tracks[i] = NULL;
100 nPositivePionTPCtracks = 0;
101 nNegativePionTPCtracks = 0;
102 nMichelElectrons = 0;
103 nIsoFGDPiontracks = 0;
104 nPosPi0TPCtracks = 0;
106 nIsoFGDElPi0tracks = 0;
121 int nPositivePionTPCtracks;
125 int nNegativePionTPCtracks;
129 int nMichelElectrons;
133 int nIsoFGDPiontracks;
138 int nPosPi0TPCtracks;
143 int nIsoFGDElPi0tracks;
149 std::vector<AnaTrackB*> ISOEcal;
173 useTPCPions = (bool)ND::params().
GetParameterI(
"psycheSelections.numuCC4piMultiPi.UseTPCPions");
174 useME = (bool)ND::params().
GetParameterI(
"psycheSelections.numuCC4piMultiPi.UseME");
175 useFGDPions = (bool)ND::params().
GetParameterI(
"psycheSelections.numuCC4piMultiPi.UseFGDPions");
176 useOldSecondaryPID = (bool) ND::params().
GetParameterI(
"psycheSelections.numuCC4piMultiPi.OldSecondaryPID");
177 prod5Cut = (bool)ND::params().
GetParameterI(
"psycheSelections.numuCC4piMultiPi.Prod5Cuts");
182 bool useOldSecondaryPID;
193 MostUpstreamLayerHitCut = (bool)ND::params().
GetParameterI(
"psycheSelections.numuCC4piMultiPi.MostUpstreamLayerHitCut");
194 prod5Cut = (bool)ND::params().
GetParameterI(
"psycheSelections.numuCC4piMultiPi.Prod5Cuts");
196 int MostUpstreamLayerHitCut;
242 bool TPCElPi0Selection(
AnaTrackB *track);
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) ...
int GetParameterI(std::string)
Get parameter. Value is returned as integer.
void InitializeEvent(AnaEventC &event)
Fill the EventBox with the objects needed by this selection.
void DefineDetectorFV()
Define the detector Fiducial Volume in which this selection is applied.
bool IsRelevantSystematic(const AnaEventC &event, const ToyBoxB &box, SystId_h systId, Int_t branch) const
Is this systematic relevant for this selection.
bool CheckRedoSelection(const AnaEventC &event, const ToyBoxB &PreviousToyBox, Int_t &redoFromStep)
StepBase * MakeClone()
MANDATORY FUNCTIONS !!!
void DefineSteps()
Define all steps in the selection.
StepBase * MakeClone()
MANDATORY FUNCTIONS !!!
SubDetEnum
Enumeration of all detector systems and subdetectors.
virtual bool Apply(AnaEventC &event, ToyBoxB &box) const
Representation of a global track.
bool Apply(AnaEventC &event, bool &redo)
Apply 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 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 !!!
virtual void Reset()
This method should be implemented by the derived class. If so it does nothing here.
ToyBoxB * MakeToyBox()
Create the appropriate type of box.
StepBase * MakeClone()
MANDATORY FUNCTIONS !!!
StepBase * MakeClone()
MANDATORY FUNCTIONS !!!
ToyBoxB ** PreviousToyBox
Array of pointers to the PreviousToyBox (for each event)
StepBase * MakeClone()
MANDATORY FUNCTIONS !!!
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) ...