@@ -45,12 +45,7 @@ namespace o2::analysis::femto
4545namespace pairbuilder
4646{
4747
48- template <const char * prefixTrack1,
49- const char * prefixTrack2,
50- const char * prefixSe,
51- const char * prefixMe,
52- const char * prefixCprSe,
53- const char * prefixCprMe>
48+ template <const char * prefixTrack1, const char * prefixTrack2, const char * prefixSe, const char * prefixMe, const char * prefixCprSe, const char * prefixCprMe>
5449class PairTrackTrackBuilder
5550{
5651 public:
@@ -128,6 +123,7 @@ class PairTrackTrackBuilder
128123 randomSeed = static_cast <uint64_t >(confMixing.seed .value );
129124 }
130125 mRng = std::mt19937 (randomSeed);
126+ mDist = std::uniform_int_distribution (static_cast <int >(pairprocesshelpers::kOrder12 ), static_cast <int >(pairprocesshelpers::kOrder21 ));
131127 }
132128 }
133129
@@ -142,7 +138,11 @@ class PairTrackTrackBuilder
142138 }
143139 mColHistManager .template fill <mode>(col);
144140 mCprSe .setMagField (col.magField ());
145- pairprocesshelpers::processSameEvent<mode>(trackSlice1, trackTable, col, mTrackHistManager1 , mPairHistManagerSe , mCprSe , mPc , mRng , mMixIdenticalParticles );
141+ pairprocesshelpers::PairOrder pairOrder = pairprocesshelpers::kOrder12 ;
142+ if (mMixIdenticalParticles ) {
143+ pairOrder = static_cast <pairprocesshelpers::PairOrder>(mDist (mRng ));
144+ }
145+ pairprocesshelpers::processSameEvent<mode>(trackSlice1, trackTable, col, mTrackHistManager1 , mPairHistManagerSe , mCprSe , mPc , pairOrder);
146146 } else {
147147 auto trackSlice1 = partition1->sliceByCached (o2::aod::femtobase::stored::fColId , col.globalIndex (), cache);
148148 auto trackSlice2 = partition2->sliceByCached (o2::aod::femtobase::stored::fColId , col.globalIndex (), cache);
@@ -166,7 +166,11 @@ class PairTrackTrackBuilder
166166 }
167167 mColHistManager .template fill <mode>(col, mcCols);
168168 mCprSe .setMagField (col.magField ());
169- pairprocesshelpers::processSameEvent<mode>(trackSlice1, trackTable, mcParticles, mcMothers, mcPartonicMothers, col, mcCols, mTrackHistManager1 , mPairHistManagerSe , mCprSe , mPc , mRng , mMixIdenticalParticles );
169+ pairprocesshelpers::PairOrder pairOrder = pairprocesshelpers::kOrder12 ;
170+ if (mMixIdenticalParticles ) {
171+ pairOrder = static_cast <pairprocesshelpers::PairOrder>(mDist (mRng ));
172+ }
173+ pairprocesshelpers::processSameEvent<mode>(trackSlice1, trackTable, mcParticles, mcMothers, mcPartonicMothers, col, mcCols, mTrackHistManager1 , mPairHistManagerSe , mCprSe , mPc , pairOrder);
170174 } else {
171175 auto trackSlice1 = partition1->sliceByCached (o2::aod::femtobase::stored::fColId , col.globalIndex (), cache);
172176 auto trackSlice2 = partition2->sliceByCached (o2::aod::femtobase::stored::fColId , col.globalIndex (), cache);
@@ -186,13 +190,13 @@ class PairTrackTrackBuilder
186190 if (mSameSpecies ) {
187191 switch (mMixingPolicy ) {
188192 case static_cast <int >(pairhistmanager::kVtxMult ):
189- pairprocesshelpers::processMixedEvent<mode>(cols, partition1, trackTable, cache, binsVtxMult, mMixingDepth , mPairHistManagerMe , mCprMe , mPc );
193+ pairprocesshelpers::processMixedEvent<mode>(cols, partition1, partition1, trackTable, cache, binsVtxMult, mMixingDepth , mPairHistManagerMe , mCprMe , mPc );
190194 break ;
191195 case static_cast <int >(pairhistmanager::kVtxCent ):
192- pairprocesshelpers::processMixedEvent<mode>(cols, partition1, trackTable, cache, binsVtxCent, mMixingDepth , mPairHistManagerMe , mCprMe , mPc );
196+ pairprocesshelpers::processMixedEvent<mode>(cols, partition1, partition1, trackTable, cache, binsVtxCent, mMixingDepth , mPairHistManagerMe , mCprMe , mPc );
193197 break ;
194198 case static_cast <int >(pairhistmanager::kVtxMultCent ):
195- pairprocesshelpers::processMixedEvent<mode>(cols, partition1, trackTable, cache, binsVtxMultCent, mMixingDepth , mPairHistManagerMe , mCprMe , mPc );
199+ pairprocesshelpers::processMixedEvent<mode>(cols, partition1, partition1, trackTable, cache, binsVtxMultCent, mMixingDepth , mPairHistManagerMe , mCprMe , mPc );
196200 break ;
197201 default :
198202 LOG (fatal) << " Invalid binning policiy specifed. Breaking..." ;
@@ -220,13 +224,13 @@ class PairTrackTrackBuilder
220224 if (mSameSpecies ) {
221225 switch (mMixingPolicy ) {
222226 case static_cast <int >(pairhistmanager::kVtxMult ):
223- pairprocesshelpers::processMixedEvent<mode>(cols, mcCols, partition1, trackTable, mcParticles, cache, binsVtxMult, mMixingDepth , mPairHistManagerMe , mCprMe , mPc );
227+ pairprocesshelpers::processMixedEvent<mode>(cols, mcCols, partition1, partition1, trackTable, mcParticles, cache, binsVtxMult, mMixingDepth , mPairHistManagerMe , mCprMe , mPc );
224228 break ;
225229 case static_cast <int >(pairhistmanager::kVtxCent ):
226- pairprocesshelpers::processMixedEvent<mode>(cols, mcCols, partition1, trackTable, mcParticles, cache, binsVtxCent, mMixingDepth , mPairHistManagerMe , mCprMe , mPc );
230+ pairprocesshelpers::processMixedEvent<mode>(cols, mcCols, partition1, partition1, trackTable, mcParticles, cache, binsVtxCent, mMixingDepth , mPairHistManagerMe , mCprMe , mPc );
227231 break ;
228232 case static_cast <int >(pairhistmanager::kVtxMultCent ):
229- pairprocesshelpers::processMixedEvent<mode>(cols, mcCols, partition1, trackTable, mcParticles, cache, binsVtxMultCent, mMixingDepth , mPairHistManagerMe , mCprMe , mPc );
233+ pairprocesshelpers::processMixedEvent<mode>(cols, mcCols, partition1, partition1, trackTable, mcParticles, cache, binsVtxMultCent, mMixingDepth , mPairHistManagerMe , mCprMe , mPc );
230234 break ;
231235 default :
232236 LOG (fatal) << " Invalid binning policiy specifed. Breaking..." ;
@@ -257,11 +261,12 @@ class PairTrackTrackBuilder
257261 closepairrejection::ClosePairRejectionTrackTrack<prefixCprSe> mCprSe ;
258262 closepairrejection::ClosePairRejectionTrackTrack<prefixCprMe> mCprMe ;
259263 paircleaner::TrackTrackPairCleaner mPc ;
260- std::mt19937 mRng ;
261264 pairhistmanager::MixingPolicy mMixingPolicy = pairhistmanager::MixingPolicy::kVtxMult ;
262- bool mSameSpecies = false ;
263265 int mMixingDepth = 5 ;
266+ bool mSameSpecies = false ;
264267 bool mMixIdenticalParticles = false ;
268+ std::mt19937 mRng ;
269+ std::uniform_int_distribution<> mDist ;
265270};
266271
267272template <const char * prefixV01,
@@ -375,7 +380,11 @@ class PairV0V0Builder
375380 }
376381 mColHistManager .template fill <mode>(col);
377382 mCprSe .setMagField (col.magField ());
378- pairprocesshelpers::processSameEvent<mode>(v0Slice1, trackTable, col, mV0HistManager1 , mPairHistManagerSe , mCprSe , mPc , mRng , mMixIdenticalParticles );
383+ pairprocesshelpers::PairOrder pairOrder = pairprocesshelpers::kOrder12 ;
384+ if (mMixIdenticalParticles ) {
385+ pairOrder = static_cast <pairprocesshelpers::PairOrder>(mDist (mRng ));
386+ }
387+ pairprocesshelpers::processSameEvent<mode>(v0Slice1, trackTable, col, mV0HistManager1 , mPairHistManagerSe , mCprSe , mPc , pairOrder);
379388 } else {
380389 auto v0Slice1 = partition1->sliceByCached (o2::aod::femtobase::stored::fColId , col.globalIndex (), cache);
381390 auto v0Slice2 = partition2->sliceByCached (o2::aod::femtobase::stored::fColId , col.globalIndex (), cache);
@@ -395,13 +404,13 @@ class PairV0V0Builder
395404 if (mSameSpecies ) {
396405 switch (mMixingPolicy ) {
397406 case static_cast <int >(pairhistmanager::kVtxMult ):
398- pairprocesshelpers::processMixedEvent<mode>(cols, partition1, trackTable, cache, binsVtxMult, mMixingDepth , mPairHistManagerMe , mCprMe , mPc );
407+ pairprocesshelpers::processMixedEvent<mode>(cols, partition1, partition1, trackTable, cache, binsVtxMult, mMixingDepth , mPairHistManagerMe , mCprMe , mPc );
399408 break ;
400409 case static_cast <int >(pairhistmanager::kVtxCent ):
401- pairprocesshelpers::processMixedEvent<mode>(cols, partition1, trackTable, cache, binsVtxCent, mMixingDepth , mPairHistManagerMe , mCprMe , mPc );
410+ pairprocesshelpers::processMixedEvent<mode>(cols, partition1, partition1, trackTable, cache, binsVtxCent, mMixingDepth , mPairHistManagerMe , mCprMe , mPc );
402411 break ;
403412 case static_cast <int >(pairhistmanager::kVtxMultCent ):
404- pairprocesshelpers::processMixedEvent<mode>(cols, partition1, trackTable, cache, binsVtxMultCent, mMixingDepth , mPairHistManagerMe , mCprMe , mPc );
413+ pairprocesshelpers::processMixedEvent<mode>(cols, partition1, partition1, trackTable, cache, binsVtxMultCent, mMixingDepth , mPairHistManagerMe , mCprMe , mPc );
405414 break ;
406415 default :
407416 LOG (fatal) << " Invalid binning policiy specifed. Breaking..." ;
@@ -432,11 +441,12 @@ class PairV0V0Builder
432441 closepairrejection::ClosePairRejectionV0V0<prefixCprPosSe, prefixCprNegSe> mCprSe ;
433442 closepairrejection::ClosePairRejectionV0V0<prefixCprPosMe, prefixCprNegMe> mCprMe ;
434443 paircleaner::V0V0PairCleaner mPc ;
435- std::mt19937 mRng ;
436444 pairhistmanager::MixingPolicy mMixingPolicy = pairhistmanager::MixingPolicy::kVtxMult ;
437445 bool mSameSpecies = false ;
438446 int mMixingDepth = 5 ;
439447 bool mMixIdenticalParticles = false ;
448+ std::mt19937 mRng ;
449+ std::uniform_int_distribution<> mDist ;
440450};
441451
442452template <const char * prefixTrack,
0 commit comments