Skip to content

Commit bce4101

Browse files
committed
Fix: fix triplet processing for 2 + 1 case
1 parent 1a073d1 commit bce4101

1 file changed

Lines changed: 63 additions & 76 deletions

File tree

PWGCF/Femto/Core/tripletProcessHelpers.h

Lines changed: 63 additions & 76 deletions
Original file line numberDiff line numberDiff line change
@@ -101,15 +101,8 @@ void processSameEvent(T1 const& SliceParticle,
101101

102102
// process same event for identical 2 particles and 1 other particle
103103
template <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>
113106
void 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
293288
template <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>
307291
void 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

Comments
 (0)