Skip to content

Commit d32d8a4

Browse files
committed
Fix: fix collision index
1 parent 072bffc commit d32d8a4

28 files changed

+192
-298
lines changed

PWGCF/Femto/Core/baseSelection.h

Lines changed: 0 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -259,25 +259,7 @@ class BaseSelection
259259
template <typename R>
260260
void setBitmask(int observableIndex, R bitmask)
261261
{
262-
// if there are no selections configured, bail out
263-
if (mSelectionContainers.at(observableIndex).isEmpty()) {
264-
return;
265-
}
266-
// if any previous observable did not pass minimal selections, there is no point in setting bitmask for other observables
267-
// minimal selection for each observable is computed after adding it
268-
if (mPassesMinimalSelections == false) {
269-
return;
270-
}
271-
// set bitmask for given observable
272262
mSelectionContainers.at(observableIndex).setBitmask(bitmask);
273-
// check if minimal selction for this observable holds
274-
if (mSelectionContainers.at(observableIndex).passesAsMinimalCut() == false) {
275-
mPassesMinimalSelections = false;
276-
}
277-
// check if any optional selection holds
278-
if (mSelectionContainers.at(observableIndex).passesAsOptionalCut() == true) {
279-
mPassesOptionalSelections = true;
280-
}
281263
}
282264

283265
/// \brief Print detailed information about all configured selections.

PWGCF/Femto/Core/cascadeHistManager.h

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -216,13 +216,17 @@ class CascadeHistManager
216216
template <typename T1, typename T2>
217217
void fill(T1 const& cascadeCandidate, T2 const& tracks)
218218
{
219+
// this used to work, still under investigation
220+
// auto bachelor = cascadeCandidate.template bachelor_as<T2>();
221+
// auto posDaughter = cascadeCandidate.template posDau_as<T2>();
222+
// auto negDaughter = cascadeCandidate.template negDau_as<T2>();
219223

220-
auto bachelor = cascadeCandidate.template bachelor_as<T2>();
221-
mBachelorManager.fill(bachelor, tracks);
222-
auto posDaughter = cascadeCandidate.template posDau_as<T2>();
224+
auto posDaughter = tracks.rawIteratorAt(cascadeCandidate.posDauId() - tracks.offset());
223225
mPosDauManager.fill(posDaughter, tracks);
224-
auto negDaughter = cascadeCandidate.template negDau_as<T2>();
226+
auto negDaughter = tracks.rawIteratorAt(cascadeCandidate.negDauId() - tracks.offset());
225227
mNegDauManager.fill(negDaughter, tracks);
228+
auto bachelor = tracks.rawIteratorAt(cascadeCandidate.bachelorId() - tracks.offset());
229+
mBachelorManager.fill(bachelor, tracks);
226230

227231
if constexpr (modes::isFlagSet(mode, modes::Mode::kAnalysis)) {
228232
mHistogramRegistry->fill(HIST(cascadePrefix) + HIST(AnalysisDir) + HIST(getHistName(kPt, HistTable)), cascadeCandidate.pt());

PWGCF/Femto/Core/closePairRejection.h

Lines changed: 20 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -243,13 +243,17 @@ class ClosePairRejectionV0V0
243243
mCtrNeg.setMagField(magField);
244244
}
245245
template <typename T1, typename T2, typename T3>
246-
void setPair(T1 const& v01, T2 const& v02, T3 const& /*tracks*/)
246+
void setPair(T1 const& v01, T2 const& v02, T3 const& tracks)
247247
{
248-
auto posDau1 = v01.template posDau_as<T3>();
249-
auto negDau1 = v01.template posDau_as<T3>();
248+
// auto posDau1 = v01.template posDau_as<T3>();
249+
// auto negDau1 = v01.template posDau_as<T3>();
250+
auto posDau1 = tracks.rawIteratorAt(v01.posDauId() - tracks.offset());
251+
auto negDau1 = tracks.rawIteratorAt(v01.negDauId() - tracks.offset());
250252

251-
auto posDau2 = v02.template posDau_as<T3>();
252-
auto negDau2 = v02.template posDau_as<T3>();
253+
// auto posDau2 = v02.template posDau_as<T3>();
254+
// auto negDau2 = v02.template posDau_as<T3>();
255+
auto posDau2 = tracks.rawIteratorAt(v02.posDauId() - tracks.offset());
256+
auto negDau2 = tracks.rawIteratorAt(v02.negDauId() - tracks.offset());
253257

254258
mCtrPos.compute(posDau1, posDau2);
255259
mCtrNeg.compute(negDau1, negDau2);
@@ -287,13 +291,15 @@ class ClosePairRejectionTrackV0 // can also be used for any particle type that h
287291
mCtr.setMagField(magField);
288292
}
289293
template <typename T1, typename T2, typename T3>
290-
void setPair(const T1& track, const T2& v0, const T3 /*trackTable*/)
294+
void setPair(const T1& track, const T2& v0, const T3 trackTable)
291295
{
292296
if (track.signedPt() > 0) {
293-
auto daughter = v0.template posDau_as<T3>();
297+
// auto daughter = v0.template posDau_as<T3>();
298+
auto daughter = trackTable.rawIteratorAt(v0.posDauId() - trackTable.offset());
294299
mCtr.compute(track, daughter);
295300
} else {
296-
auto daughter = v0.template negDau_as<T3>();
301+
// auto daughter = v0.template negDau_as<T3>();
302+
auto daughter = trackTable.rawIteratorAt(v0.negDauId() - trackTable.offset());
297303
mCtr.compute(track, daughter);
298304
}
299305
}
@@ -328,9 +334,10 @@ class ClosePairRejectionTrackCascade
328334
mCtr.setMagField(magField);
329335
}
330336
template <typename T1, typename T2, typename T3>
331-
void setPair(const T1& track, const T2& cascade, const T3 /*trackTable*/)
337+
void setPair(const T1& track, const T2& cascade, const T3 trackTable)
332338
{
333-
auto bachelor = cascade.template posDau_as<T3>();
339+
// auto bachelor = cascade.template posDau_as<T3>();
340+
auto bachelor = trackTable.rawIteratorAt(cascade.bachelorId() - trackTable.offset());
334341
mCtr.compute(track, bachelor);
335342
}
336343

@@ -365,9 +372,10 @@ class ClosePairRejectionTrackKink
365372
}
366373

367374
template <typename T1, typename T2, typename T3>
368-
void setPair(const T1& track, const T2& kink, const T3 /*trackTable*/)
375+
void setPair(const T1& track, const T2& kink, const T3 trackTable)
369376
{
370-
auto daughter = kink.template chaDau_as<T3>();
377+
// auto daughter = kink.template chaDau_as<T3>();
378+
auto daughter = trackTable.rawIteratorAt(kink.chaDauId() - trackTable.offset());
371379
mCtr.compute(track, daughter);
372380
}
373381

PWGCF/Femto/Core/collisionBuilder.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -514,7 +514,7 @@ class CollisionBuilderDerivedToDerived
514514
col.mult(),
515515
col.cent(),
516516
col.magField());
517-
newCollisionTable.producedCollisionMask(col.collisionMask());
517+
newCollisionTable.producedCollisionMask(col.mask());
518518
}
519519
};
520520

PWGCF/Femto/Core/kinkHistManager.h

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -274,7 +274,9 @@ class KinkHistManager
274274
template <typename T1, typename T2>
275275
void fill(T1 const& kinkcandidate, T2 const& tracks)
276276
{
277-
auto chaDaughter = kinkcandidate.template chaDau_as<T2>();
277+
// this used to work, still under investigation
278+
// auto chaDaughter = kinkcandidate.template chaDau_as<T2>();
279+
auto chaDaughter = tracks.rawIteratorAt(kinkcandidate.chaDauId() - tracks.offset());
278280
mChaDauManager.fill(chaDaughter, tracks);
279281
fill(kinkcandidate);
280282
}

PWGCF/Femto/Core/pairBuilder.h

Lines changed: 19 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -131,16 +131,16 @@ class PairTrackTrackBuilder
131131
void processSameEvent(T1 const& col, T2& trackTable, T3& partition1, T4& partition2, T5& cache)
132132
{
133133
if (mSameSpecies) {
134-
auto trackSlice1 = partition1->sliceByCached(o2::aod::femtobase::stored::collisionId, col.globalIndex(), cache);
134+
auto trackSlice1 = partition1->sliceByCached(o2::aod::femtobase::stored::fColId, col.globalIndex(), cache);
135135
if (trackSlice1.size() == 0) {
136136
return;
137137
}
138138
mColHistManager.fill(col);
139139
mCprSe.setMagField(col.magField());
140140
pairprocesshelpers::processSameEvent(trackSlice1, trackTable, mTrackHistManager1, mPairHistManagerSe, mCprSe, mRng, mMixIdenticalParticles);
141141
} else {
142-
auto trackSlice1 = partition1->sliceByCached(o2::aod::femtobase::stored::collisionId, col.globalIndex(), cache);
143-
auto trackSlice2 = partition2->sliceByCached(o2::aod::femtobase::stored::collisionId, col.globalIndex(), cache);
142+
auto trackSlice1 = partition1->sliceByCached(o2::aod::femtobase::stored::fColId, col.globalIndex(), cache);
143+
auto trackSlice2 = partition2->sliceByCached(o2::aod::femtobase::stored::fColId, col.globalIndex(), cache);
144144
if (trackSlice1.size() == 0 || trackSlice2.size() == 0) {
145145
return;
146146
}
@@ -259,7 +259,7 @@ class PairV0V0Builder
259259
mV0HistManager1.init(registry, V0HistSpec1, PosDauHistSpec, NegDauHistSpec);
260260

261261
mPairHistManagerSe.setMass(confV0Selection1.pdgCode.value, confV0Selection1.pdgCode.value);
262-
mPairHistManagerSe.setCharge(1, 1);
262+
mPairHistManagerSe.setCharge(1, 1);
263263
mCprSe.init(registry, cprHistSpec, confCpr.detaMax.value, confCpr.dphistarMax.value, confCpr.on.value);
264264

265265
mPairHistManagerMe.setMass(confV0Selection1.pdgCode.value, confV0Selection1.pdgCode.value);
@@ -299,16 +299,16 @@ class PairV0V0Builder
299299
void processSameEvent(T1 const& col, T2& trackTable, T3& /*lambdaTable*/, T4& partition1, T5& partition2, T6& cache)
300300
{
301301
if (mSameSpecies) {
302-
auto v0Slice1 = partition1->sliceByCached(o2::aod::femtobase::stored::collisionId, col.globalIndex(), cache);
302+
auto v0Slice1 = partition1->sliceByCached(o2::aod::femtobase::stored::fColId, col.globalIndex(), cache);
303303
if (v0Slice1.size() == 0) {
304304
return;
305305
}
306306
mColHistManager.fill(col);
307307
mCprSe.setMagField(col.magField());
308308
pairprocesshelpers::processSameEvent(v0Slice1, trackTable, mV0HistManager1, mPairHistManagerSe, mCprSe, mRng, mMixIdenticalParticles);
309309
} else {
310-
auto v0Slice1 = partition1->sliceByCached(o2::aod::femtobase::stored::collisionId, col.globalIndex(), cache);
311-
auto v0Slice2 = partition2->sliceByCached(o2::aod::femtobase::stored::collisionId, col.globalIndex(), cache);
310+
auto v0Slice1 = partition1->sliceByCached(o2::aod::femtobase::stored::fColId, col.globalIndex(), cache);
311+
auto v0Slice2 = partition2->sliceByCached(o2::aod::femtobase::stored::fColId, col.globalIndex(), cache);
312312
if (v0Slice1.size() == 0 || v0Slice2.size() == 0) {
313313
return;
314314
}
@@ -433,8 +433,8 @@ class PairTrackV0Builder
433433
template <typename T1, typename T2, typename T3, typename T4, typename T5, typename T6>
434434
void processSameEvent(T1 const& col, T2& trackTable, T3& trackPartition, T4& /*v0table*/, T5& v0Partition, T6& cache)
435435
{
436-
auto trackSlice = trackPartition->sliceByCached(o2::aod::femtobase::stored::collisionId, col.globalIndex(), cache);
437-
auto v0Slice = v0Partition->sliceByCached(o2::aod::femtobase::stored::collisionId, col.globalIndex(), cache);
436+
auto trackSlice = trackPartition->sliceByCached(o2::aod::femtobase::stored::fColId, col.globalIndex(), cache);
437+
auto v0Slice = v0Partition->sliceByCached(o2::aod::femtobase::stored::fColId, col.globalIndex(), cache);
438438
if (trackSlice.size() == 0 || v0Slice.size() == 0) {
439439
return;
440440
}
@@ -538,8 +538,8 @@ class PairTrackTwoTrackResonanceBuilder
538538
template <typename T1, typename T2, typename T3, typename T4, typename T5, typename T6>
539539
void processSameEvent(T1 const& col, T2& trackTable, T3& trackPartition, T4& /*resonanceTable*/, T5& resonancePartition, T6& cache)
540540
{
541-
auto trackSlice = trackPartition->sliceByCached(o2::aod::femtobase::stored::collisionId, col.globalIndex(), cache);
542-
auto v0Slice = resonancePartition->sliceByCached(o2::aod::femtobase::stored::collisionId, col.globalIndex(), cache);
541+
auto trackSlice = trackPartition->sliceByCached(o2::aod::femtobase::stored::fColId, col.globalIndex(), cache);
542+
auto v0Slice = resonancePartition->sliceByCached(o2::aod::femtobase::stored::fColId, col.globalIndex(), cache);
543543
if (trackSlice.size() == 0 || v0Slice.size() == 0) {
544544
return;
545545
}
@@ -624,12 +624,12 @@ class PairTrackKinkBuilder
624624

625625
mPairHistManagerSe.init(registry, pairHistSpec);
626626
mPairHistManagerSe.setMass(confTrackSelection.pdgCode.value, confKinkSelection.pdgCode.value);
627-
mPairHistManagerSe.setCharge(confTrackSelection.chargeAbs.value, confKinkSelection.sign.value);
627+
mPairHistManagerSe.setCharge(confTrackSelection.chargeAbs.value, 1); // abs charge of kink daughter is always 1
628628
mCprSe.init(registry, cprHistSpec, confCpr.detaMax.value, confCpr.dphistarMax.value, confTrackSelection.chargeAbs.value, confCpr.on.value);
629629

630630
mPairHistManagerMe.init(registry, pairHistSpec);
631631
mPairHistManagerMe.setMass(confTrackSelection.pdgCode.value, confKinkSelection.pdgCode.value);
632-
mPairHistManagerMe.setCharge(confTrackSelection.chargeAbs.value, confKinkSelection.sign.value);
632+
mPairHistManagerMe.setCharge(confTrackSelection.chargeAbs.value, 1); // abs charge of kink daughter is always 1
633633
mCprMe.init(registry, cprHistSpec, confCpr.detaMax.value, confCpr.dphistarMax.value, confTrackSelection.chargeAbs.value, confCpr.on.value);
634634

635635
// setup mixing
@@ -640,8 +640,8 @@ class PairTrackKinkBuilder
640640
template <typename T1, typename T2, typename T3, typename T4, typename T5, typename T6>
641641
void processSameEvent(T1 const& col, T2& trackTable, T3& trackPartition, T4& /*kinktable*/, T5& kinkPartition, T6& cache)
642642
{
643-
auto trackSlice = trackPartition->sliceByCached(o2::aod::femtobase::stored::collisionId, col.globalIndex(), cache);
644-
auto kinkSlice = kinkPartition->sliceByCached(o2::aod::femtobase::stored::collisionId, col.globalIndex(), cache);
643+
auto trackSlice = trackPartition->sliceByCached(o2::aod::femtobase::stored::fColId, col.globalIndex(), cache);
644+
auto kinkSlice = kinkPartition->sliceByCached(o2::aod::femtobase::stored::fColId, col.globalIndex(), cache);
645645
if (trackSlice.size() == 0 || kinkSlice.size() == 0) {
646646
return;
647647
}
@@ -732,12 +732,12 @@ class PairTrackCascadeBuilder
732732

733733
mPairHistManagerSe.init(registry, pairHistSpec);
734734
mPairHistManagerSe.setMass(confTrackSelection.pdgCode.value, confCascadeSelection.pdgCode.value);
735-
mPairHistManagerSe.setCharge(confTrackSelection.chargeAbs.value, confCascadeSelection.sign.value);
735+
mPairHistManagerSe.setCharge(confTrackSelection.chargeAbs.value, 1);
736736
mCprSe.init(registry, cprHistSpec, confCpr.detaMax.value, confCpr.dphistarMax.value, confTrackSelection.chargeAbs.value, confCpr.on.value);
737737

738738
mPairHistManagerMe.init(registry, pairHistSpec);
739739
mPairHistManagerMe.setMass(confTrackSelection.pdgCode.value, confCascadeSelection.pdgCode.value);
740-
mPairHistManagerMe.setCharge(confTrackSelection.chargeAbs.value, confCascadeSelection.sign.value);
740+
mPairHistManagerMe.setCharge(confTrackSelection.chargeAbs.value, 1);
741741
mCprMe.init(registry, cprHistSpec, confCpr.detaMax.value, confCpr.dphistarMax.value, confTrackSelection.chargeAbs.value, confCpr.on.value);
742742

743743
// setup mixing
@@ -748,8 +748,8 @@ class PairTrackCascadeBuilder
748748
template <typename T1, typename T2, typename T3, typename T4, typename T5, typename T6>
749749
void processSameEvent(T1 const& col, T2& trackTable, T3& trackPartition, T4& /*cascadeTable*/, T5& v0Partition, T6& cache)
750750
{
751-
auto trackSlice = trackPartition->sliceByCached(o2::aod::femtobase::stored::collisionId, col.globalIndex(), cache);
752-
auto v0Slice = v0Partition->sliceByCached(o2::aod::femtobase::stored::collisionId, col.globalIndex(), cache);
751+
auto trackSlice = trackPartition->sliceByCached(o2::aod::femtobase::stored::fColId, col.globalIndex(), cache);
752+
auto v0Slice = v0Partition->sliceByCached(o2::aod::femtobase::stored::fColId, col.globalIndex(), cache);
753753
if (trackSlice.size() == 0 || v0Slice.size() == 0) {
754754
return;
755755
}

PWGCF/Femto/Core/pairHistManager.h

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -171,10 +171,10 @@ class PairHistManager
171171
}
172172
void setCharge(int chargeAbsParticle1, int chargeAbsParticle2)
173173
{
174-
// the pt stored is actually pt/z, so in case of particles with z > 1, we have to rescale the pt (this is so far only for He3 the case)
174+
// the pt stored is actually as pt/z for tracks, so in case of particles with z > 1, we have to rescale the pt (this is so far only for He3 the case)
175175
// similarly, for neutral particles, no reason to rescale so we just set absolute charge to 1
176-
mAbsCharge1 = chargeAbsParticle1;
177-
mAbsCharge2 = chargeAbsParticle2;
176+
mAbsCharge1 = std::abs(chargeAbsParticle1);
177+
mAbsCharge2 = std::abs(chargeAbsParticle2);
178178
}
179179

180180
template <typename T1, typename T2>

0 commit comments

Comments
 (0)