1 #include "numuCCMultiTargetSelection.hxx" 2 #include "ND280AnalysisUtils.hxx" 3 #include "EventBoxUtils.hxx" 4 #include "EventBoxTracker.hxx" 6 bool _doMultiPiSelection =
false;
9 numuCCMultiTargetSelection::numuCCMultiTargetSelection(
bool doMultiPi,
bool forceBreak):
SelectionBase(forceBreak,
EventBoxId::kEventBoxTracker){
12 _doMultiPiSelection = doMultiPi;
30 CopySteps(_numuCCSelection,0,1,10,0);
32 if (_doMultiPiSelection){
35 AddStep(0, StepBase::kAction,
"find_pions_FGD1",
new FindPionsAction());
39 SetBranchAlias(0,
"numuCC_FGD1", 0);
50 CopySteps(_numuCCFGD2Selection,0,2,10,1);
52 if (_doMultiPiSelection){
55 AddStep(1, StepBase::kAction,
"find_pions_FGD2",
new FindPionsAction());
60 AddStep(1,0, StepBase::kCut,
"numu CC in water FGD2",
new WaterCut());
61 AddStep(1,1, StepBase::kCut,
"numu CC in scint FGD2",
new ScintillatorCut());
64 SetBranchAlias(1,
"numuCC_FGD2", 1);
65 SetBranchAlias(2,
"numuCC_FGD2-water",1,0);
66 SetBranchAlias(3,
"numuCC_FGD2-scint",1,1);
68 if ( ! _doMultiPiSelection)
return;
77 AddStep(0,0, StepBase::kCut,
"CC-0pi",
new NoPionCut());
78 AddStep(0,1, StepBase::kCut,
"CC-1pi",
new OnePionCut());
79 AddStep(0,2, StepBase::kCut,
"CC-Other",
new OthersCut());
82 SetBranchAlias(4,
"numuCC_FGD1_CC-0pi", 0,0);
83 SetBranchAlias(5,
"numuCC_FGD1_CC-1pi", 0,1);
84 SetBranchAlias(6,
"numuCC_FGD1_CC-Other",0,2);
91 AddStep(1,0,0, StepBase::kCut,
"CC-0pi",
new NoPionCut());
92 AddStep(1,0,1, StepBase::kCut,
"CC-1pi",
new OnePionCut());
93 AddStep(1,0,2, StepBase::kCut,
"CC-Other",
new OthersCut());
96 SetBranchAlias(7,
"numuCC_FGD2-water_CC-0pi", 1,0,0);
97 SetBranchAlias(8,
"numuCC_FGD2-water_CC-1pi", 1,0,1);
98 SetBranchAlias(9,
"numuCC_FGD2-water_CC-Other",1,0,2);
102 AddStep(1,1,0, StepBase::kCut,
"CC-0pi",
new NoPionCut());
103 AddStep(1,1,1, StepBase::kCut,
"CC-1pi",
new OnePionCut());
104 AddStep(1,1,2, StepBase::kCut,
"CC-Other",
new OthersCut());
107 SetBranchAlias(10,
"numuCC_FGD2-scint_CC-0pi", 1,1,0);
108 SetBranchAlias(11,
"numuCC_FGD2-scint_CC-1pi", 1,1,1);
109 SetBranchAlias(12,
"numuCC_FGD2-scint_CC-Other",1,1,2);
113 SetPreSelectionAccumLevel(2);
121 SetDetectorFV(SubDetId::kFGD2);
122 SetDetectorFV(SubDetId::kFGD1, 0);
124 if (_doMultiPiSelection){
125 SetDetectorFV(SubDetId::kFGD1, 4);
126 SetDetectorFV(SubDetId::kFGD1, 5);
127 SetDetectorFV(SubDetId::kFGD1, 6);
137 EventBoxB* EventBox =
event.EventBoxes[EventBoxId::kEventBoxTracker];
141 if ( nTPC == 0)
return false;
144 AnaRecObjectC** selObjects = EventBox->RecObjectsInGroup[EventBoxTracker::kTracksWithTPC];
145 for (Int_t i=0; i<nTPC; ++i) {
147 if ( ! track)
continue;
196 if (!event.EventBoxes[EventBoxId::kEventBoxTracker])
197 event.EventBoxes[EventBoxId::kEventBoxTracker] =
new EventBoxTracker();
199 boxUtils::FillTracksWithTPC(event, SubDetId::kFGD1);
200 boxUtils::FillTracksWithFGD(event, SubDetId::kFGD1);
201 boxUtils::FillTrajsChargedInFGDAndNoTPC(event, SubDetId::kFGD1);
203 boxUtils::FillTracksWithTPC(event, SubDetId::kFGD2);
204 boxUtils::FillTracksWithFGD(event, SubDetId::kFGD2);
205 boxUtils::FillTrajsChargedInFGDAndNoTPC(event, SubDetId::kFGD2);
207 boxUtils::FillTrajsChargedInTPC(event);
Float_t PositionStart[4]
The reconstructed start position of the particle.
void DefineSteps()
Define all steps in the selection.
bool Apply(AnaEventC &event, ToyBoxB &box) const
bool Apply(AnaEventC &event, ToyBoxB &box) const
bool Apply(AnaEventC &event, ToyBoxB &box) const
SubDetId_h DetectorFV
Indicate the FV we are interested in.
void DefineDetectorFV()
Define the detector Fiducial Volume in which this selection is applied.
AnaTrackB * MainTrack
For storing the Main Track (The lepton candidate in geranal: HMN or HMP track)
Int_t GetFgdModuleType(bool IsMC, const Float_t *pos, SubDetId::SubDetEnum det, bool includeGlueSkin=true)
Int_t nRecObjectsInGroup[NMAXRECOBJECTGROUPS]
----—— RecObjects and TrueRecObjects used in the selection and systematics ------------—— ...
virtual const ToyBoxTracker & box(Int_t isel=-1) const
Returns the ToyBoxTracker.
bool Apply(AnaEventC &event, ToyBoxB &box) const
Representation of a global track.
void InitializeEvent(AnaEventC &event)
Fill the EventBox with the objects needed by this selection.
virtual bool GetIsMC() const =0
Return whether this event is from Monte Carlo or not.
bool InFiducialVolume(SubDetId::SubDetEnum det, const Float_t *pos, const Float_t *FVdefmin, const Float_t *FVdefmax)
A cut on event quality. Requires good beam and ND280 data quality flags.
void Initialize()
Initialize this selection: defines the steps and the detectorFV.