1 #ifndef nueCCSelection_h 2 #define nueCCSelection_h 4 #include "SelectionBase.hxx" 5 #include "Parameters.hxx" 6 #include "ToyBoxTracker.hxx" 7 #include "EventBoxId.hxx" 9 #include "SubDetId.hxx" 21 bool FillEventSummary(
AnaEventC& event, Int_t allCutsPassed[]);
23 SampleId::SampleEnum GetSampleEnum(){
return SampleId::kFGD1NuECC;}
33 Int_t _FindLeadingTracksStepIndex;
34 Int_t _TotalMultiplicityCutIndex;
35 Int_t _ElecPIDCutIndex;
36 Int_t _ElecPIDStepIndex;
56 ECalNCVetoTrack = NULL;
57 SecondMostEnergeticTPCTrack = NULL;
58 SecondMostEnergeticFGDTPCTrack = NULL;
62 P0DVetoFGD1Tracks = 0;
63 P0DVetoP0DEcalTracks = 0;
64 TPCVetoP0DNearTracks = 0;
65 TPCVetoNearTracks = 0;
67 FGD2ShowerNFGD2TPC3Tracks = 0;
68 FGD2ShowerNFGD1TPC2Tracks = 0;
77 ECalNCVetoTrack = NULL;
78 SecondMostEnergeticTPCTrack = NULL;
79 SecondMostEnergeticFGDTPCTrack = NULL;
83 P0DVetoFGD1Tracks = 0;
84 P0DVetoP0DEcalTracks = 0;
85 TPCVetoP0DNearTracks = 0;
86 TPCVetoNearTracks = 0;
88 FGD2ShowerNFGD2TPC3Tracks = 0;
89 FGD2ShowerNFGD1TPC2Tracks = 0;
120 Int_t TPCVetoFarTracks;
121 Int_t TPCVetoP0DNearTracks;
125 Int_t FGD2ShowerNFGD1TPC2Tracks;
180 _num_tpc_nodes = ND::params().
GetParameterI(
"psycheSelections.nueCCAnalysis.Cuts.Quality.MinTPCNodes");
181 _num_tpc_nodes_ecal = ND::params().
GetParameterI(
"psycheSelections.nueCCAnalysis.Cuts.Quality.MinTPCNodesEcal");
187 Int_t _num_tpc_nodes;
188 Int_t _num_tpc_nodes_ecal;
202 _pullel_accept_min = (Float_t)ND::params().
GetParameterD(
"psycheSelections.nueCCAnalysis.Cuts.PID.PullElecMin");
203 _pullel_accept_max = (Float_t)ND::params().
GetParameterD(
"psycheSelections.nueCCAnalysis.Cuts.PID.PullElecMax");
205 _pullel_accept_tight_min = (Float_t)ND::params().
GetParameterD(
"psycheSelections.nueCCAnalysis.Cuts.PID.PullElecTightMin");
206 _pullel_accept_tight_max = (Float_t)ND::params().
GetParameterD(
"psycheSelections.nueCCAnalysis.Cuts.PID.PullElecTightMax");
208 _minMom_ecal = (Float_t)ND::params().
GetParameterD(
"psycheSelections.nueCCAnalysis.Cuts.EcalThreshold");
214 Float_t _minMom_ecal;
215 Float_t _pullel_accept_min;
216 Float_t _pullel_accept_max;
217 Float_t _pullel_accept_tight_min;
218 Float_t _pullel_accept_tight_max;
224 _pullmu_reject_min = (Float_t)ND::params().
GetParameterD(
"psycheSelections.nueCCAnalysis.Cuts.PID.PullMuonMin");
225 _pullmu_reject_max = (Float_t)ND::params().
GetParameterD(
"psycheSelections.nueCCAnalysis.Cuts.PID.PullMuonMax");
227 _minMom_ecal = (Float_t)ND::params().
GetParameterD(
"psycheSelections.nueCCAnalysis.Cuts.EcalThreshold");
233 Float_t _minMom_ecal;
234 Float_t _pullmu_reject_min;
235 Float_t _pullmu_reject_max;
241 _pullpi_reject_min = (Float_t)ND::params().
GetParameterD(
"psycheSelections.nueCCAnalysis.Cuts.PID.PullPionMin");
242 _pullpi_reject_max = (Float_t)ND::params().
GetParameterD(
"psycheSelections.nueCCAnalysis.Cuts.PID.PullPionMax");
243 _num_tpc_nodes = ND::params().
GetParameterI(
"psycheSelections.nueCCAnalysis.Cuts.Quality.MinTPCNodes");
244 _minMom_ecal = (Float_t)ND::params().
GetParameterD(
"psycheSelections.nueCCAnalysis.Cuts.EcalThreshold");
250 Float_t _minMom_ecal;
251 Float_t _pullpi_reject_min;
252 Float_t _pullpi_reject_max;
253 Int_t _num_tpc_nodes;
259 _Ethreshold = (Float_t)ND::params().
GetParameterD(
"psycheSelections.nueCCAnalysis.Cuts.PID.EThreshold");
260 _Emin_ecal = (Float_t)ND::params().
GetParameterD(
"psycheSelections.nueCCAnalysis.Cuts.PID.EcalEMin");
261 _EoverP = (Float_t)ND::params().
GetParameterD(
"psycheSelections.nueCCAnalysis.Cuts.PID.EoverP");
275 _Ethreshold = (Float_t)ND::params().
GetParameterD(
"psycheSelections.nueCCAnalysis.Cuts.PID.EThreshold");
276 _ecal_mipem_min = (Float_t)ND::params().
GetParameterD(
"psycheSelections.nueCCAnalysis.Cuts.PID.EcalMipEmMin");
283 Float_t _ecal_mipem_min;
289 _pullmu_reject_min = (Float_t)ND::params().
GetParameterD(
"psycheSelections.nueCCAnalysis.Cuts.PID2.PullMuonMin");
290 _pullmu_reject_max = (Float_t)ND::params().
GetParameterD(
"psycheSelections.nueCCAnalysis.Cuts.PID2.PullMuonMax");
296 Float_t _pullmu_reject_min;
297 Float_t _pullmu_reject_max;
303 _vertex_activity = (Float_t)ND::params().
GetParameterD(
"psycheSelections.nueCCAnalysis.Cuts.GammaIso.VertexActivity");
309 Float_t _vertex_activity;
315 _delta_z_min = (Float_t)ND::params().
GetParameterD(
"psycheSelections.nueCCAnalysis.Cuts.TPCVeto.DeltaZMin.FGD1");
321 Float_t _delta_z_min;
334 _delta_pos_max = (Float_t)ND::params().
GetParameterD(
"psycheSelections.nueCCAnalysis.Cuts.PairFinder.DeltaPosMax");
335 _pullel_min = (Float_t)ND::params().
GetParameterD(
"psycheSelections.nueCCAnalysis.Cuts.PairFinder.PullElecMin");
336 _pullel_max = (Float_t)ND::params().
GetParameterD(
"psycheSelections.nueCCAnalysis.Cuts.PairFinder.PullElecMax");
342 Float_t _delta_pos_max;
350 _inv_mass_min = (Float_t)ND::params().
GetParameterD(
"psycheSelections.nueCCAnalysis.Cuts.PairFinder.InvMassMin");
356 Float_t _inv_mass_min;
369 _min_mom = (Float_t)ND::params().
GetParameterD(
"psycheSelections.nueCCAnalysis.Cuts.HiMom.MinMom");
381 _delta_z_min = (Float_t)ND::params().
GetParameterD(
"psycheSelections.nueCCAnalysis.Cuts.ECalVeto.DeltaZMin");
387 Float_t _delta_z_min;
393 _fgdecaltof = (Float_t)ND::params().
GetParameterD(
"psycheSelections.nueCCAnalysis.Cuts.ToF.FGDEcal");
StepBase * MakeClone()
MANDATORY FUNCTIONS !!!
StepBase * MakeClone()
MANDATORY FUNCTIONS !!!
bool IsRelevantRecObjectForSystematic(const AnaEventC &event, AnaRecObjectC *track, SystId_h systId, Int_t branch) const
Is this track relevant for a given systematic (prior to selection, call when initializing the event...
void DefineDetectorFV()
Define the detector Fiducial Volume in which this selection is applied.
void Reset()
This method should be implemented by the derived class. If so it does nothing here.
int GetParameterI(std::string)
Get parameter. Value is returned as integer.
StepBase * MakeClone()
MANDATORY FUNCTIONS !!!
StepBase * MakeClone()
MANDATORY FUNCTIONS !!!
Int_t FGD2ShowerNFGD2TPC3Tracks
FGD2 shower.
Int_t P0DVetoP0DEcalTracks
Number of P0DEcal tracks. Used in the P0D veto cut.
StepBase * MakeClone()
MANDATORY FUNCTIONS !!!
AnaTrackB * ECalVetoTrack
The most-upstream track containing ECal information.
StepBase * MakeClone()
MANDATORY FUNCTIONS !!!
StepBase * MakeClone()
MANDATORY FUNCTIONS !!!
Int_t TPCVetoNearTracks
Updated TPC veto.
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 IsRelevantSystematic(const AnaEventC &event, const ToyBoxB &box, SystId_h systId, Int_t branch) const
Is this systematic relevant for this selection.
StepBase * MakeClone()
MANDATORY FUNCTIONS !!!
Int_t P0DVetoFGD1Tracks
The number of tracks that start in FGD1. Used in the P0D veto cut.
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.
StepBase * MakeClone()
MANDATORY FUNCTIONS !!!
virtual bool Apply(AnaEventC &event, ToyBoxB &box) const
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) ...
AnaTrackB * VetoTrack
The TPC veto track.
StepBase * MakeClone()
MANDATORY FUNCTIONS !!!
Representation of a global track.
Int_t NOOFVTracks
OOFV tracks.
bool Apply(AnaEventC &event, bool &redo)
Apply all steps in the selection.
AnaTrackB * SecondMostEnergeticFGDTPCTrack
The second most energetic TPC track in the same FGD as the main track.
double GetParameterD(std::string)
Get parameter. Value is returned as double.
AnaTrackB * SecondMostEnergeticTPCTrack
The second most energetic TPC track.
ToyBoxB * MakeToyBox()
Create the appropriate type of box.
StepBase * MakeClone()
MANDATORY FUNCTIONS !!!
bool IsRelevantTrueObjectForSystematic(const AnaEventC &event, AnaTrueObjectC *trueTrack, 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 !!!
bool CheckRedoSelection(const AnaEventC &eventC, const ToyBoxB &PreviousToyBox, Int_t &redoFromStep)
AnaTrackB * PairTrack
The particle that isn't HMTrackSelected that forms the e+e- pair with the lowest invariant mass...
StepBase * MakeClone()
MANDATORY FUNCTIONS !!!
void DefineSteps()
Define all steps in the selection.
StepBase * MakeClone()
MANDATORY FUNCTIONS !!!
StepBase * MakeClone()
MANDATORY FUNCTIONS !!!
StepBase * MakeClone()
MANDATORY FUNCTIONS !!!
ToyBoxB ** PreviousToyBox
Array of pointers to the PreviousToyBox (for each event)
Int_t P0DVetoP0DTracks
The number of tracks that start in the P0D. Used in the P0D veto cut.
StepBase * MakeClone()
MANDATORY FUNCTIONS !!!
StepBase * MakeClone()
MANDATORY FUNCTIONS !!!
StepBase * MakeClone()
MANDATORY FUNCTIONS !!!
StepBase * MakeClone()
MANDATORY FUNCTIONS !!!