1 #include "numuBkgInAntiNuModeCCMultiTrackFGD2Selection.hxx" 2 #include "antiNumuCCMultiTrackFGD2Selection.hxx" 3 #include "baseSelection.hxx" 4 #include "CutUtils.hxx" 5 #include "EventBoxUtils.hxx" 6 #include "Parameters.hxx" 7 #include "SubDetId.hxx" 9 #include "VersioningUtils.hxx" 10 #include "SystematicUtils.hxx" 14 numuBkgInAntiNuModeCCMultiTrackFGD2Selection::numuBkgInAntiNuModeCCMultiTrackFGD2Selection(
bool forceBreak):
SelectionBase(forceBreak,
EventBoxId::kEventBoxTracker){
19 _numuBkgInAntiNuModeCCFGD2Selection.Initialize();
20 _numuBkgInAntiNuModeCCMultiTrackSelection.Initialize();
28 CopySteps(_numuBkgInAntiNuModeCCFGD2Selection);
43 SetBranchAlias(0,
"CC1Track",0);
44 SetBranchAlias(1,
"CCNTracks",1);
47 SetPreSelectionAccumLevel(2);
55 SetDetectorFV(SubDetId::kFGD2);
57 _numuCCMultiPiFGD2Selection.SetDetectorFV(SubDetId::kFGD2);
58 _numuBkgInAntiNuModeCCFGD2Selection.SetDetectorFV(SubDetId::kFGD2);
59 _numuBkgInAntiNuModeCCMultiTrackSelection.SetDetectorFV(SubDetId::kFGD2);
63 bool numuBkgInAntiNuModeCCMultiTrackFGD2Selection::FillEventSummary(
AnaEventC& event, Int_t allCutsPassed[]){
68 static_cast<AnaEventSummaryB*
>(
event.Summary)->EventSample = SampleId::kFGD2NuMuBkgInAntiNuModeCC1Track;
71 else if (allCutsPassed[1]){
72 static_cast<AnaEventSummaryB*
>(
event.Summary)->EventSample = SampleId::kFGD2NuMuBkgInAntiNuModeCCNTracks;
75 return (static_cast<AnaEventSummaryB*>(event.
Summary)->EventSample != SampleId::kUnassigned);
88 static_cast<AnaEventSummaryB*
>(
event.Summary)->LeptonCandidate[SampleId::kFGD2NuMuBkgInAntiNuModeCC1Track] = box.
HMNtrack;
89 static_cast<AnaEventSummaryB*>(event.
Summary)->LeptonCandidate[SampleId::kFGD2NuMuBkgInAntiNuModeCCNTracks] = box.
HMNtrack;
91 for(
int i = 0; i < 4; ++i){
93 static_cast<AnaEventSummaryB*>(event.
Summary)->VertexPosition[SampleId::kFGD2NuMuBkgInAntiNuModeCCNTracks][i] = box.
HMNtrack->
PositionStart[i];
107 return _numuCCMultiPiFGD2Selection.IsRelevantRecObjectForSystematic(event,track,systId,branch);
114 return _numuCCMultiPiFGD2Selection.IsRelevantTrueObjectForSystematic(event,trueTrack,systId,branch);
121 return _numuBkgInAntiNuModeCCMultiTrackSelection.IsRelevantSystematic(event,box,systId,branch);
128 _numuCCMultiPiFGD2Selection.InitializeEvent(event);
135 return _numuCCMultiPiFGD2Selection.CheckRedoSelection(event, PreviousToyBox, redoFromStep);
void DefineDetectorFV()
Define the detector Fiducial Volume in which this selection is applied.
AnaTrueVertexB * TrueVertex
Pointer to the AnaTrueVertexB of the interaction that created this AnaTrueParticleB.
Float_t PositionStart[4]
The reconstructed start position of the particle.
void InitializeEvent(AnaEventC &event)
Fill the EventBox with the objects needed by this selection.
void DefineSteps()
Define all steps in the selection.
AnaTrackB * HMNtrack
For storing the highest momentum negative track.
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...
bool Apply(AnaEventC &event, ToyBoxB &box) const
bool IsRelevantSystematic(const AnaEventC &event, const ToyBoxB &box, SystId_h systId, Int_t branch) const
Is this systematic relevant for this selection.
AnaEventSummaryC * Summary
A summary of the event with high level quantities.
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...
AnaTrueParticleB * GetTrueParticle() const
Return a casted version of the AnaTrueObject associated.
bool CheckRedoSelection(const AnaEventC &event, const ToyBoxB &PreviousToyBox, Int_t &redoFromStep)
void Initialize()
Initialize this selection: defines the steps and the detectorFV.