@@ -101,15 +101,8 @@ void processSameEvent(T1 const& SliceParticle,
101101
102102// process same event for identical 2 particles and 1 other particle
103103template <modes::Mode mode,
104- typename T1 ,
105- typename T2 ,
106- typename T3 ,
107- typename T4 ,
108- typename T5 ,
109- typename T6 ,
110- typename T7 ,
111- typename T8 ,
112- typename T9 >
104+ typename T1 , typename T2 , typename T3 , typename T4 ,
105+ typename T5 , typename T6 , typename T7 , typename T8 , typename T9 >
113106void processSameEvent (T1 const & SliceParticle1, // 1&2 have same species
114107 T2 const & SliceParticle3,
115108 T3 const & TrackTable,
@@ -128,37 +121,39 @@ void processSameEvent(T1 const& SliceParticle1, // 1&2 have same species
128121 ParticleHistManager3.template fill <mode>(part, TrackTable);
129122 }
130123
131- for (auto const & [p1, p2, p3] : o2::soa::combinations (o2::soa::CombinationsStrictlyUpperIndexPolicy (SliceParticle1, SliceParticle1, SliceParticle3))) {
124+ for (auto const & p3 : SliceParticle3) {
125+ for (auto const & [p1, p2] : o2::soa::combinations (o2::soa::CombinationsStrictlyUpperIndexPolicy (SliceParticle1, SliceParticle1))) {
132126
133- // check if triplet is clean
134- if (!TcManager.isCleanTriplet (p1, p2, p3, TrackTable)) {
135- continue ;
136- }
127+ // check if triplet is clean
128+ if (!TcManager.isCleanTriplet (p1, p2, p3, TrackTable)) {
129+ continue ;
130+ }
137131
138- // check if triplet is close
139- CtrManager.setTriplet (p1, p2, p3, TrackTable);
140- if (CtrManager.isCloseTriplet ()) {
141- continue ;
142- }
132+ // check if triplet is close
133+ CtrManager.setTriplet (p1, p2, p3, TrackTable);
134+ if (CtrManager.isCloseTriplet ()) {
135+ continue ;
136+ }
143137
144- // Randomize triplet order if enabled
145- // only kOrder123 and kOrder213 are meaningful here since particle 1 & 2 are the same species
146- switch (tripletOrder) {
147- case kOrder213 :
148- TripletHistManager.setTriplet (p2, p1, p3, Collision);
149- break ;
150- case kOrder123 :
151- default :
152- TripletHistManager.setTriplet (p1, p2, p3, Collision);
153- break ;
154- }
138+ // Randomize triplet order if enabled
139+ // only kOrder123 and kOrder213 are meaningful here since particle 1 & 2 are the same species
140+ switch (tripletOrder) {
141+ case kOrder213 :
142+ TripletHistManager.setTriplet (p2, p1, p3, Collision);
143+ break ;
144+ case kOrder123 :
145+ default :
146+ TripletHistManager.setTriplet (p1, p2, p3, Collision);
147+ break ;
148+ }
155149
156- // fill deta-dphi histograms with q3 cutoff
157- CtrManager.fill (TripletHistManager.getQ3 ());
150+ // fill deta-dphi histograms with q3 cutoff
151+ CtrManager.fill (TripletHistManager.getQ3 ());
158152
159- // if triplet cuts are configured check them before filling
160- if (TripletHistManager.checkTripletCuts ()) {
161- TripletHistManager.template fill <mode>();
153+ // if triplet cuts are configured check them before filling
154+ if (TripletHistManager.checkTripletCuts ()) {
155+ TripletHistManager.template fill <mode>();
156+ }
162157 }
163158 }
164159}
@@ -198,7 +193,7 @@ void processSameEvent(T1 const& SliceParticle1,
198193 ParticleHistManager3.template fill <mode>(part, TrackTable);
199194 }
200195
201- for (auto const & [p1, p2, p3] : o2::soa::combinations (o2::soa::CombinationsStrictlyUpperIndexPolicy (SliceParticle1, SliceParticle2, SliceParticle3))) {
196+ for (auto const & [p1, p2, p3] : o2::soa::combinations (o2::soa::CombinationsFullIndexPolicy (SliceParticle1, SliceParticle2, SliceParticle3))) {
202197
203198 // check if triplet is clean
204199 if (!TcManager.isCleanTriplet (p1, p2, p3, TrackTable)) {
@@ -291,19 +286,8 @@ void processSameEvent(T1 const& SliceParticle,
291286
292287// process same event for 2 identical particles and one other with mc information
293288template <modes::Mode mode,
294- typename T1 ,
295- typename T2 ,
296- typename T3 ,
297- typename T4 ,
298- typename T5 ,
299- typename T6 ,
300- typename T7 ,
301- typename T8 ,
302- typename T9 ,
303- typename T10 ,
304- typename T11 ,
305- typename T12 ,
306- typename T13 >
289+ typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 ,
290+ typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 >
307291void processSameEvent (T1 const & SliceParticle1,
308292 T2 const & SliceParticle3,
309293 T3 const & TrackTable,
@@ -325,32 +309,35 @@ void processSameEvent(T1 const& SliceParticle1,
325309 for (auto const & part : SliceParticle3) {
326310 ParticleHistManager3.template fill <mode>(part, TrackTable, mcParticles, mcMothers, mcPartonicMothers);
327311 }
328- for (auto const & [p1, p2, p3] : o2::soa::combinations (o2::soa::CombinationsStrictlyUpperIndexPolicy (SliceParticle1, SliceParticle1, SliceParticle3))) {
329- // check if triplet is clean
330- if (!TcManager.isCleanTriplet (p1, p2, p3, TrackTable, mcPartonicMothers)) {
331- continue ;
332- }
333- // check if triplet is close
334- CtrManager.setTriplet (p1, p2, p3, TrackTable);
335- if (CtrManager.isCloseTriplet ()) {
336- continue ;
337- }
338- // Randomize triplet order if enabled
339- // only kOrder123 and kOrder213 are meaningful here since particle 1 & 2 are the same species
340- switch (tripletOrder) {
341- case kOrder213 :
342- TripletHistManager.setTripletMc (p2, p1, p3, mcParticles, Collision, mcCollisions);
343- break ;
344- case kOrder123 :
345- default :
346- TripletHistManager.setTripletMc (p1, p2, p3, mcParticles, Collision, mcCollisions);
347- break ;
348- }
349- // fill deta-dphi histograms with q3 cutoff
350- CtrManager.fill (TripletHistManager.getQ3 ());
351- // if triplet cuts are configured check them before filling
352- if (TripletHistManager.checkTripletCuts ()) {
353- TripletHistManager.template fill <mode>();
312+
313+ for (auto const & p3 : SliceParticle3) {
314+ for (auto const & [p1, p2] : o2::soa::combinations (o2::soa::CombinationsStrictlyUpperIndexPolicy (SliceParticle1, SliceParticle1))) {
315+ // check if triplet is clean
316+ if (!TcManager.isCleanTriplet (p1, p2, p3, TrackTable, mcPartonicMothers)) {
317+ continue ;
318+ }
319+ // check if triplet is close
320+ CtrManager.setTriplet (p1, p2, p3, TrackTable);
321+ if (CtrManager.isCloseTriplet ()) {
322+ continue ;
323+ }
324+ // Randomize triplet order if enabled
325+ // only kOrder123 and kOrder213 are meaningful here since particle 1 & 2 are the same species
326+ switch (tripletOrder) {
327+ case kOrder213 :
328+ TripletHistManager.setTripletMc (p2, p1, p3, mcParticles, Collision, mcCollisions);
329+ break ;
330+ case kOrder123 :
331+ default :
332+ TripletHistManager.setTripletMc (p1, p2, p3, mcParticles, Collision, mcCollisions);
333+ break ;
334+ }
335+ // fill deta-dphi histograms with q3 cutoff
336+ CtrManager.fill (TripletHistManager.getQ3 ());
337+ // if triplet cuts are configured check them before filling
338+ if (TripletHistManager.checkTripletCuts ()) {
339+ TripletHistManager.template fill <mode>();
340+ }
354341 }
355342 }
356343}
@@ -397,7 +384,7 @@ void processSameEvent(T1 const& SliceParticle1,
397384 for (auto const & part : SliceParticle3) {
398385 ParticleHistManager3.template fill <mode>(part, TrackTable, mcParticles, mcMothers, mcPartonicMothers);
399386 }
400- for (auto const & [p1, p2, p3] : o2::soa::combinations (o2::soa::CombinationsStrictlyUpperIndexPolicy (SliceParticle1, SliceParticle2, SliceParticle3))) {
387+ for (auto const & [p1, p2, p3] : o2::soa::combinations (o2::soa::CombinationsFullIndexPolicy (SliceParticle1, SliceParticle2, SliceParticle3))) {
401388 // check if triplet is clean
402389 if (!TcManager.isCleanTriplet (p1, p2, p3, TrackTable, mcPartonicMothers)) {
403390 continue ;
0 commit comments