@@ -89,6 +89,7 @@ class PairTrackTrackBuilder
8989 mColHistManager .template init <mode>(registry, colHistSpec);
9090 mPairHistManagerSe .template init <mode>(registry, pairHistSpec, confPairBinning, confPairCuts);
9191 mPairHistManagerMe .template init <mode>(registry, pairHistSpec, confPairBinning, confPairCuts);
92+ mPc .template init <mode>(confPairCuts);
9293
9394 if (mSameSpecies ) {
9495 mTrackHistManager1 .template init <mode>(registry, trackHistSpec1, confTrackSelection1);
@@ -130,6 +131,7 @@ class PairTrackTrackBuilder
130131 }
131132 }
132133
134+ // data
133135 template <modes::Mode mode, typename T1, typename T2, typename T3, typename T4, typename T5>
134136 void processSameEvent (T1 const & col, T2& trackTable, T3& partition1, T4& partition2, T5& cache)
135137 {
@@ -153,6 +155,30 @@ class PairTrackTrackBuilder
153155 }
154156 }
155157
158+ // mc
159+ template <modes::Mode mode, typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9>
160+ void processSameEvent (T1 const & col, T2 const & mcCols, T3& trackTable, T4& partition1, T5& partition2, T6 const & mcParticles, T7 const & mcMothers, T8 const & mcPartonicMothers, T9& cache)
161+ {
162+ if (mSameSpecies ) {
163+ auto trackSlice1 = partition1->sliceByCached (o2::aod::femtobase::stored::fColId , col.globalIndex (), cache);
164+ if (trackSlice1.size () == 0 ) {
165+ return ;
166+ }
167+ mColHistManager .template fill <mode>(col, mcCols);
168+ mCprSe .setMagField (col.magField ());
169+ pairprocesshelpers::processSameEvent<mode>(trackSlice1, trackTable, mcParticles, mcMothers, mcPartonicMothers, col, mcCols, mTrackHistManager1 , mPairHistManagerSe , mCprSe , mPc , mRng , mMixIdenticalParticles );
170+ } else {
171+ auto trackSlice1 = partition1->sliceByCached (o2::aod::femtobase::stored::fColId , col.globalIndex (), cache);
172+ auto trackSlice2 = partition2->sliceByCached (o2::aod::femtobase::stored::fColId , col.globalIndex (), cache);
173+ if (trackSlice1.size () == 0 || trackSlice2.size () == 0 ) {
174+ return ;
175+ }
176+ mColHistManager .template fill <mode>(col, mcCols);
177+ mCprSe .setMagField (col.magField ());
178+ pairprocesshelpers::processSameEvent<mode>(trackSlice1, trackSlice2, trackTable, mcParticles, mcMothers, mcPartonicMothers, col, mcCols, mTrackHistManager1 , mTrackHistManager2 , mPairHistManagerSe , mCprSe , mPc );
179+ }
180+ }
181+
156182 template <modes::Mode mode, typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8>
157183 void processMixedEvent (T1 const & cols, T2& trackTable, T3& partition1, T4& partition2, T5& cache, T6& binsVtxMult, T7& binsVtxCent, T8& binsVtxMultCent)
158184 {
@@ -188,6 +214,40 @@ class PairTrackTrackBuilder
188214 }
189215 }
190216
217+ template <modes::Mode mode, typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9, typename T10>
218+ void processMixedEvent (T1 const & cols, T2 const & mcCols, T3& trackTable, T4& partition1, T5& partition2, T6 const & mcParticles, T7& cache, T8& binsVtxMult, T9& binsVtxCent, T10& binsVtxMultCent)
219+ {
220+ if (mSameSpecies ) {
221+ switch (mMixingPolicy ) {
222+ case static_cast <int >(pairhistmanager::kVtxMult ):
223+ pairprocesshelpers::processMixedEvent<mode>(cols, mcCols, partition1, trackTable, mcParticles, cache, binsVtxMult, mMixingDepth , mPairHistManagerMe , mCprMe , mPc );
224+ break ;
225+ case static_cast <int >(pairhistmanager::kVtxCent ):
226+ pairprocesshelpers::processMixedEvent<mode>(cols, mcCols, partition1, trackTable, mcParticles, cache, binsVtxCent, mMixingDepth , mPairHistManagerMe , mCprMe , mPc );
227+ break ;
228+ case static_cast <int >(pairhistmanager::kVtxMultCent ):
229+ pairprocesshelpers::processMixedEvent<mode>(cols, mcCols, partition1, trackTable, mcParticles, cache, binsVtxMultCent, mMixingDepth , mPairHistManagerMe , mCprMe , mPc );
230+ break ;
231+ default :
232+ LOG (fatal) << " Invalid binning policiy specifed. Breaking..." ;
233+ }
234+ } else {
235+ switch (mMixingPolicy ) {
236+ case static_cast <int >(pairhistmanager::kVtxMult ):
237+ pairprocesshelpers::processMixedEvent<mode>(cols, mcCols, partition1, partition2, trackTable, mcParticles, cache, binsVtxMult, mMixingDepth , mPairHistManagerMe , mCprMe , mPc );
238+ break ;
239+ case static_cast <int >(pairhistmanager::kVtxCent ):
240+ pairprocesshelpers::processMixedEvent<mode>(cols, mcCols, partition1, partition2, trackTable, mcParticles, cache, binsVtxCent, mMixingDepth , mPairHistManagerMe , mCprMe , mPc );
241+ break ;
242+ case static_cast <int >(pairhistmanager::kVtxMultCent ):
243+ pairprocesshelpers::processMixedEvent<mode>(cols, mcCols, partition1, partition2, trackTable, mcParticles, cache, binsVtxMultCent, mMixingDepth , mPairHistManagerMe , mCprMe , mPc );
244+ break ;
245+ default :
246+ LOG (fatal) << " Invalid binning policiy specifed. Breaking..." ;
247+ }
248+ }
249+ }
250+
191251 private:
192252 colhistmanager::CollisionHistManager mColHistManager ;
193253 trackhistmanager::TrackHistManager<prefixTrack1> mTrackHistManager1 ;
0 commit comments