@@ -29,15 +29,15 @@ static constexpr float mPion = 0.139; // TDatabasePDG::Instance()->GetParticle(2
2929
3030enum JCollisionSel {
3131 sel8 = 0 ,
32- sel8Full = 1 ,
33- sel8FullPbPb = 2 ,
34- selMC = 3 ,
35- selMCFull = 4 ,
36- selMCFullPbPb = 5 ,
37- selUnanchoredMC = 6 ,
38- selTVX = 7 ,
39- sel7 = 8 ,
40- sel7KINT7 = 9
32+ sel7 = 1 ,
33+ sel7KINT7 = 2 ,
34+ selTVX = 3 ,
35+ selNoTimeFrameBorder = 4 ,
36+ selNoITSROFrameBorder = 5 ,
37+ selNoSameBunchPileup = 6 ,
38+ selIsGoodZvtxFT0vsPV = 7 ,
39+ selNoCollInTimeRangeStandard = 8 ,
40+ selNoCollInRofStandard = 9
4141};
4242
4343enum JCollisionSubGeneratorId {
@@ -46,50 +46,96 @@ enum JCollisionSubGeneratorId {
4646};
4747
4848template <typename T>
49- bool selectCollision (T const & collision, int eventSelection = - 1 , bool skipMBGapEvents = true )
49+ bool selectCollision (T const & collision, std::vector< int > eventSelectionMaskBits , bool skipMBGapEvents = true )
5050{
5151 if (skipMBGapEvents && collision.subGeneratorId () == JCollisionSubGeneratorId::mbGap) {
5252 return false ;
5353 }
54- if (eventSelection == - 1 ) {
54+ if (eventSelectionMaskBits. size () == 0 ) {
5555 return true ;
5656 }
57- return (collision.eventSel () & (1 << eventSelection));
57+ for (auto eventSelectionMaskBit : eventSelectionMaskBits) {
58+ if (!(collision.eventSel () & (1 << eventSelectionMaskBit))) {
59+ return false ;
60+ }
61+ }
62+ return true ;
63+ }
64+
65+ bool eventSelectionMasksContainSelection (std::string eventSelectionMasks, std::string selection)
66+ {
67+ size_t position = 0 ;
68+ while ((position = eventSelectionMasks.find (selection, position)) != std::string::npos) {
69+ bool validStart = (position == 0 || eventSelectionMasks[position - 1 ] == ' +' );
70+ bool validEnd = (position + selection.length () == eventSelectionMasks.length () || eventSelectionMasks[position + selection.length ()] == ' +' );
71+ if (validStart && validEnd) {
72+ return true ;
73+ }
74+ position += selection.length ();
75+ }
76+ return false ;
5877}
5978
60- int initialiseEventSelection (std::string eventSelection )
79+ std::vector< int > initialiseEventSelectionBits (std::string eventSelectionMasks )
6180{
62- if (eventSelection == " sel8" ) {
63- return JCollisionSel::sel8;
81+ std::vector<int > eventSelectionMaskBits;
82+ if (eventSelectionMasksContainSelection (eventSelectionMasks, " sel8" )) {
83+ eventSelectionMaskBits.push_back (JCollisionSel::sel8);
6484 }
65- if (eventSelection == " sel8Full " ) {
66- return JCollisionSel::sel8Full ;
85+ if (eventSelectionMasksContainSelection (eventSelectionMasks, " sel7 " ) ) {
86+ eventSelectionMaskBits. push_back ( JCollisionSel::sel7) ;
6787 }
68- if (eventSelection == " sel8FullPbPb " ) {
69- return JCollisionSel::sel8FullPbPb ;
88+ if (eventSelectionMasksContainSelection (eventSelectionMasks, " sel7KINT7 " ) ) {
89+ eventSelectionMaskBits. push_back ( JCollisionSel::sel7KINT7) ;
7090 }
71- if (eventSelection == " selMC " ) {
72- return JCollisionSel::selMC ;
91+ if (eventSelectionMasksContainSelection (eventSelectionMasks, " TVX " ) ) {
92+ eventSelectionMaskBits. push_back ( JCollisionSel::selTVX) ;
7393 }
74- if (eventSelection == " selMCFull " ) {
75- return JCollisionSel::selMCFull ;
94+ if (eventSelectionMasksContainSelection (eventSelectionMasks, " NoTimeFrameBorder " ) ) {
95+ eventSelectionMaskBits. push_back ( JCollisionSel::selNoTimeFrameBorder) ;
7696 }
77- if (eventSelection == " selMCFullPbPb " ) {
78- return JCollisionSel::selMCFullPbPb ;
97+ if (eventSelectionMasksContainSelection (eventSelectionMasks, " NoITSROFrameBorder " ) ) {
98+ eventSelectionMaskBits. push_back ( JCollisionSel::selNoITSROFrameBorder) ;
7999 }
80- if (eventSelection == " selUnanchoredMC " ) {
81- return JCollisionSel::selUnanchoredMC ;
100+ if (eventSelectionMasksContainSelection (eventSelectionMasks, " NoSameBunchPileup " ) ) {
101+ eventSelectionMaskBits. push_back ( JCollisionSel::selNoSameBunchPileup) ;
82102 }
83- if (eventSelection == " selTVX " ) {
84- return JCollisionSel::selTVX ;
103+ if (eventSelectionMasksContainSelection (eventSelectionMasks, " IsGoodZvtxFT0vsPV " ) ) {
104+ eventSelectionMaskBits. push_back ( JCollisionSel::selIsGoodZvtxFT0vsPV) ;
85105 }
86- if (eventSelection == " sel7 " ) {
87- return JCollisionSel::sel7 ;
106+ if (eventSelectionMasksContainSelection (eventSelectionMasks, " NoCollInTimeRangeStandard " ) ) {
107+ eventSelectionMaskBits. push_back ( JCollisionSel::selNoCollInTimeRangeStandard) ;
88108 }
89- if (eventSelection == " sel7KINT7 " ) {
90- return JCollisionSel::sel7KINT7 ;
109+ if (eventSelectionMasksContainSelection (eventSelectionMasks, " NoCollInRofStandard " ) ) {
110+ eventSelectionMaskBits. push_back ( JCollisionSel::selNoCollInRofStandard) ;
91111 }
92- return -1 ;
112+
113+ if (eventSelectionMasksContainSelection (eventSelectionMasks, " sel8Full" )) {
114+ eventSelectionMaskBits.push_back (JCollisionSel::sel8);
115+ eventSelectionMaskBits.push_back (JCollisionSel::selNoSameBunchPileup);
116+ }
117+ if (eventSelectionMasksContainSelection (eventSelectionMasks, " sel8FullPbPb" )) {
118+ eventSelectionMaskBits.push_back (JCollisionSel::selNoCollInTimeRangeStandard);
119+ eventSelectionMaskBits.push_back (JCollisionSel::selNoCollInRofStandard);
120+ }
121+ if (eventSelectionMasksContainSelection (eventSelectionMasks, " selUnanchoredMC" )) {
122+ eventSelectionMaskBits.push_back (JCollisionSel::selTVX);
123+ eventSelectionMaskBits.push_back (JCollisionSel::selNoTimeFrameBorder);
124+ }
125+ if (eventSelectionMasksContainSelection (eventSelectionMasks, " selMC" )) {
126+ eventSelectionMaskBits.push_back (JCollisionSel::selTVX);
127+ }
128+ if (eventSelectionMasksContainSelection (eventSelectionMasks, " selMCFull" )) {
129+ eventSelectionMaskBits.push_back (JCollisionSel::selTVX);
130+ eventSelectionMaskBits.push_back (JCollisionSel::selNoTimeFrameBorder);
131+ eventSelectionMaskBits.push_back (JCollisionSel::selNoSameBunchPileup);
132+ }
133+ if (eventSelectionMasksContainSelection (eventSelectionMasks, " selMCFullPbPb" )) {
134+ eventSelectionMaskBits.push_back (JCollisionSel::selTVX);
135+ eventSelectionMaskBits.push_back (JCollisionSel::selNoCollInTimeRangeStandard);
136+ eventSelectionMaskBits.push_back (JCollisionSel::selNoCollInRofStandard);
137+ }
138+ return eventSelectionMaskBits;
93139}
94140
95141template <typename T>
@@ -98,12 +144,6 @@ uint16_t setEventSelectionBit(T const& collision)
98144 uint16_t bit = 0 ;
99145 if (collision.sel8 ()) {
100146 SETBIT (bit, JCollisionSel::sel8);
101- if (collision.selection_bit (o2::aod::evsel::kNoSameBunchPileup ) && collision.selection_bit (o2::aod::evsel::kIsGoodZvtxFT0vsPV )) {
102- SETBIT (bit, JCollisionSel::sel8Full);
103- if (collision.selection_bit (o2::aod::evsel::kNoCollInTimeRangeStandard )) {
104- SETBIT (bit, JCollisionSel::sel8FullPbPb);
105- }
106- }
107147 }
108148 if (collision.sel7 ()) {
109149 SETBIT (bit, JCollisionSel::sel7);
@@ -113,16 +153,24 @@ uint16_t setEventSelectionBit(T const& collision)
113153 }
114154 if (collision.selection_bit (o2::aod::evsel::kIsTriggerTVX )) {
115155 SETBIT (bit, JCollisionSel::selTVX);
116- SETBIT (bit, JCollisionSel::selUnanchoredMC);
117- if (collision.selection_bit (o2::aod::evsel::kNoTimeFrameBorder )) {
118- SETBIT (bit, JCollisionSel::selMC);
119- if (collision.selection_bit (o2::aod::evsel::kNoSameBunchPileup ) && collision.selection_bit (o2::aod::evsel::kIsGoodZvtxFT0vsPV )) {
120- SETBIT (bit, JCollisionSel::selMCFull);
121- if (collision.selection_bit (o2::aod::evsel::kNoCollInTimeRangeStandard )) {
122- SETBIT (bit, JCollisionSel::selMCFullPbPb);
123- }
124- }
125- }
156+ }
157+ if (collision.selection_bit (o2::aod::evsel::kNoTimeFrameBorder )) {
158+ SETBIT (bit, JCollisionSel::selNoTimeFrameBorder);
159+ }
160+ if (collision.selection_bit (o2::aod::evsel::kNoITSROFrameBorder )) {
161+ SETBIT (bit, JCollisionSel::selNoITSROFrameBorder);
162+ }
163+ if (collision.selection_bit (o2::aod::evsel::kNoSameBunchPileup )) {
164+ SETBIT (bit, JCollisionSel::selNoSameBunchPileup);
165+ }
166+ if (collision.selection_bit (o2::aod::evsel::kIsGoodZvtxFT0vsPV )) {
167+ SETBIT (bit, JCollisionSel::selIsGoodZvtxFT0vsPV);
168+ }
169+ if (collision.selection_bit (o2::aod::evsel::kNoCollInTimeRangeStandard )) {
170+ SETBIT (bit, JCollisionSel::selNoCollInTimeRangeStandard);
171+ }
172+ if (collision.selection_bit (o2::aod::evsel::kNoCollInRofStandard )) {
173+ SETBIT (bit, JCollisionSel::selNoCollInRofStandard);
126174 }
127175 return bit;
128176}
@@ -210,67 +258,67 @@ std::vector<int> initialiseTriggerMaskBits(std::string triggerMasks)
210258{
211259 std::vector<int > triggerMaskBits;
212260 if (triggerMasksContainTrigger (triggerMasks, " fJetChLowPt" )) {
213- triggerMaskBits.push_back (JetChLowPt);
261+ triggerMaskBits.push_back (JTrigSel:: JetChLowPt);
214262 }
215263 if (triggerMasksContainTrigger (triggerMasks, " fJetChHighPt" )) {
216- triggerMaskBits.push_back (JetChHighPt);
264+ triggerMaskBits.push_back (JTrigSel:: JetChHighPt);
217265 }
218266 if (triggerMasksContainTrigger (triggerMasks, " fTrackLowPt" )) {
219- triggerMaskBits.push_back (TrackLowPt);
267+ triggerMaskBits.push_back (JTrigSel:: TrackLowPt);
220268 }
221269 if (triggerMasksContainTrigger (triggerMasks, " fTrackHighPt" )) {
222- triggerMaskBits.push_back (TrackHighPt);
270+ triggerMaskBits.push_back (JTrigSel:: TrackHighPt);
223271 }
224272 if (triggerMasksContainTrigger (triggerMasks, " fJetD0ChLowPt" )) {
225- triggerMaskBits.push_back (JetD0ChLowPt);
273+ triggerMaskBits.push_back (JTrigSel:: JetD0ChLowPt);
226274 }
227275 if (triggerMasksContainTrigger (triggerMasks, " fJetD0ChHighPt" )) {
228- triggerMaskBits.push_back (JetD0ChHighPt);
276+ triggerMaskBits.push_back (JTrigSel:: JetD0ChHighPt);
229277 }
230278 if (triggerMasksContainTrigger (triggerMasks, " fJetLcChLowPt" )) {
231- triggerMaskBits.push_back (JetLcChLowPt);
279+ triggerMaskBits.push_back (JTrigSel:: JetLcChLowPt);
232280 }
233281 if (triggerMasksContainTrigger (triggerMasks, " fJetLcChHighPt" )) {
234- triggerMaskBits.push_back (JetLcChHighPt);
282+ triggerMaskBits.push_back (JTrigSel:: JetLcChHighPt);
235283 }
236284 if (triggerMasksContainTrigger (triggerMasks, " fEMCALReadout" )) {
237- triggerMaskBits.push_back (EMCALReadout);
285+ triggerMaskBits.push_back (JTrigSel:: EMCALReadout);
238286 }
239287 if (triggerMasksContainTrigger (triggerMasks, " fJetFullHighPt" )) {
240- triggerMaskBits.push_back (JetFullHighPt);
288+ triggerMaskBits.push_back (JTrigSel:: JetFullHighPt);
241289 }
242290 if (triggerMasksContainTrigger (triggerMasks, " fJetFullLowPt" )) {
243- triggerMaskBits.push_back (JetFullLowPt);
291+ triggerMaskBits.push_back (JTrigSel:: JetFullLowPt);
244292 }
245293 if (triggerMasksContainTrigger (triggerMasks, " fJetNeutralHighPt" )) {
246- triggerMaskBits.push_back (JetNeutralHighPt);
294+ triggerMaskBits.push_back (JTrigSel:: JetNeutralHighPt);
247295 }
248296 if (triggerMasksContainTrigger (triggerMasks, " fJetNeutralLowPt" )) {
249- triggerMaskBits.push_back (JetNeutralLowPt);
297+ triggerMaskBits.push_back (JTrigSel:: JetNeutralLowPt);
250298 }
251299 if (triggerMasksContainTrigger (triggerMasks, " fGammaVeryHighPtEMCAL" )) {
252- triggerMaskBits.push_back (GammaVeryHighPtEMCAL);
300+ triggerMaskBits.push_back (JTrigSel:: GammaVeryHighPtEMCAL);
253301 }
254302 if (triggerMasksContainTrigger (triggerMasks, " fGammaVeryHighPtDCAL" )) {
255- triggerMaskBits.push_back (GammaVeryHighPtDCAL);
303+ triggerMaskBits.push_back (JTrigSel:: GammaVeryHighPtDCAL);
256304 }
257305 if (triggerMasksContainTrigger (triggerMasks, " fGammaHighPtEMCAL" )) {
258- triggerMaskBits.push_back (GammaHighPtEMCAL);
306+ triggerMaskBits.push_back (JTrigSel:: GammaHighPtEMCAL);
259307 }
260308 if (triggerMasksContainTrigger (triggerMasks, " fGammaHighPtDCAL" )) {
261- triggerMaskBits.push_back (GammaHighPtDCAL);
309+ triggerMaskBits.push_back (JTrigSel:: GammaHighPtDCAL);
262310 }
263311 if (triggerMasksContainTrigger (triggerMasks, " fGammaLowPtEMCAL" )) {
264- triggerMaskBits.push_back (GammaLowPtEMCAL);
312+ triggerMaskBits.push_back (JTrigSel:: GammaLowPtEMCAL);
265313 }
266314 if (triggerMasksContainTrigger (triggerMasks, " fGammaLowPtDCAL" )) {
267- triggerMaskBits.push_back (GammaLowPtDCAL);
315+ triggerMaskBits.push_back (JTrigSel:: GammaLowPtDCAL);
268316 }
269317 if (triggerMasksContainTrigger (triggerMasks, " fGammaVeryLowPtEMCAL" )) {
270- triggerMaskBits.push_back (GammaVeryLowPtEMCAL);
318+ triggerMaskBits.push_back (JTrigSel:: GammaVeryLowPtEMCAL);
271319 }
272320 if (triggerMasksContainTrigger (triggerMasks, " fGammaVeryLowPtDCAL" )) {
273- triggerMaskBits.push_back (GammaVeryLowPtDCAL);
321+ triggerMaskBits.push_back (JTrigSel:: GammaVeryLowPtDCAL);
274322 }
275323 return triggerMaskBits;
276324}
0 commit comments