@@ -235,16 +235,13 @@ struct Phik0shortanalysis {
235235 using V0DauTracks = soa::Join<aod::TracksIU, aod::TracksExtra, aod::pidTPCFullPi>;
236236 using V0DauMCTracks = soa::Join<V0DauTracks, aod::McTrackLabels>;
237237
238- // Defining binning policy, axis and pairs for mixed event
238+ // Defining binning policy and axis for mixed event
239239 ConfigurableAxis axisVertexMixing{" axisVertexMixing" , {20 , -10 , 10 }, " Z vertex axis binning for mixing" };
240240 ConfigurableAxis axisCentralityMixing{" axisCentralityMixing" , {20 , 0 , 100 }, " Multiplicity percentil binning for mixing" };
241241
242242 using BinningTypeVertexCent = ColumnBinningPolicy<aod::collision::PosZ, aod::cent::CentFT0M>;
243243 BinningTypeVertexCent binningOnVertexAndCent{{axisVertexMixing, axisCentralityMixing}, true };
244244
245- Pair<SelCollisions, FullTracks, FullV0s, BinningTypeVertexCent> pairPhiK0S{binningOnVertexAndCent, cfgNoMixedEvents, -1 , &cache};
246- SameKindPair<SelCollisions, FullTracks, BinningTypeVertexCent> pairPhiPion{binningOnVertexAndCent, cfgNoMixedEvents, -1 , &cache};
247-
248245 // Cache for manual slicing
249246 SliceCache cache;
250247
@@ -2738,7 +2735,7 @@ struct Phik0shortanalysis {
27382735 if (pTMother < minPhiPt || std::abs (yMother) > cfgYAcceptance)
27392736 continue ;
27402737
2741- mcPhiHist.fill (HIST (" h3PhiMCRecoNewProc" ), genmultiplicity, recPhi. Pt (), recPhi. Rapidity () );
2738+ mcPhiHist.fill (HIST (" h3PhiMCRecoNewProc" ), genmultiplicity, pTMother, yMother );
27422739 }
27432740 }
27442741
@@ -2905,21 +2902,26 @@ struct Phik0shortanalysis {
29052902
29062903 void processPhiK0SMixingEvent (SelCollisions const & collisions, FullTracks const & fullTracks, FullV0s const & V0s, V0DauTracks const &)
29072904 {
2905+ auto tracksV0sTuple = std::make_tuple (fullTracks, V0s);
2906+ Pair<SelCollisions, FullTracks, FullV0s, BinningTypeVertexCent> pairPhiK0S{binningOnVertexAndCent, cfgNoMixedEvents, -1 , collisions, tracksV0sTuple, &cache};
2907+
29082908 for (auto const & [collision1, tracks1, collision2, v0s2] : pairPhiK0S) {
29092909 float multiplicity = collision1.centFT0M ();
29102910
2911- auto posMixColl = posTracks->sliceByCached (aod::track::collisionId, collision1.globalIndex (), cache);
2912- auto negMixColl = negTracks->sliceByCached (aod::track::collisionId, collision1.globalIndex (), cache);
2911+ Partition<FullTracks> posMixTracks = aod::track::signed1Pt > trackConfigs.cfgCutCharge ;
2912+ posMixTracks.bindTable (tracks1);
2913+ Partition<FullTracks> negMixTracks = aod::track::signed1Pt < trackConfigs.cfgCutCharge ;
2914+ negMixTracks.bindTable (tracks1);
29132915
2914- for (const auto & [track1, track2 , v0] : o2::soa::combinations (o2::soa::CombinationsFullIndexPolicy (posMixColl, negMixColl , v0s2))) {
2915- if (!selectionTrackResonance<false >(track1 , true ) || !selectionPIDKaonpTdependent (track1 ))
2916+ for (const auto & [posTrack1, negTrack1 , v0] : o2::soa::combinations (o2::soa::CombinationsFullIndexPolicy (posMixTracks, negMixTracks , v0s2))) {
2917+ if (!selectionTrackResonance<false >(posTrack1 , true ) || !selectionPIDKaonpTdependent (posTrack1 ))
29162918 continue ;
2917- if (!selectionTrackResonance<false >(track2 , true ) || !selectionPIDKaonpTdependent (track2 ))
2919+ if (!selectionTrackResonance<false >(negTrack1 , true ) || !selectionPIDKaonpTdependent (negTrack1 ))
29182920 continue ;
2919- if (track1 .globalIndex () == track2 .globalIndex ())
2921+ if (posTrack1 .globalIndex () == negTrack1 .globalIndex ())
29202922 continue ;
29212923
2922- ROOT::Math::PxPyPzMVector recPhi = recMother (track1, track2 , massKa, massKa);
2924+ ROOT::Math::PxPyPzMVector recPhi = recMother (posTrack1, negTrack1 , massKa, massKa);
29232925 if (recPhi.Pt () < minPhiPt)
29242926 continue ;
29252927 if (std::abs (recPhi.Rapidity ()) > cfgYAcceptance)
@@ -2940,25 +2942,30 @@ struct Phik0shortanalysis {
29402942 }
29412943 }
29422944
2943- PROCESS_SWITCH (phik0shortanalysis , processPhiK0SMixingEvent, " Process Mixed Event for Phi-K0S Analysis" , false );
2945+ PROCESS_SWITCH (Phik0shortanalysis , processPhiK0SMixingEvent, " Process Mixed Event for Phi-K0S Analysis" , false );
29442946
2945- void processPhiPionMixingEvent (SelCollisions const & collisions, FullTracks const & fullTracks, FullV0s const & V0s, V0DauTracks const & )
2947+ void processPhiPionMixingEvent (SelCollisions const & collisions, FullTracks const & fullTracks)
29462948 {
2949+ auto tracksTuple = std::make_tuple (fullTracks);
2950+ SameKindPair<SelCollisions, FullTracks, BinningTypeVertexCent> pairPhiPion{binningOnVertexAndCent, cfgNoMixedEvents, -1 , collisions, tracksTuple, &cache};
2951+
29472952 for (auto const & [collision1, tracks1, collision2, tracks2] : pairPhiPion) {
29482953 float multiplicity = collision1.centFT0M ();
29492954
2950- auto posMixColl = posTracks->sliceByCached (aod::track::collisionId, collision1.globalIndex (), cache);
2951- auto negMixColl = negTracks->sliceByCached (aod::track::collisionId, collision1.globalIndex (), cache);
2955+ Partition<FullTracks> posMixTracks = aod::track::signed1Pt > trackConfigs.cfgCutCharge ;
2956+ posMixTracks.bindTable (tracks1);
2957+ Partition<FullTracks> negMixTracks = aod::track::signed1Pt < trackConfigs.cfgCutCharge ;
2958+ negMixTracks.bindTable (tracks1);
29522959
2953- for (const auto & [track1, track2 , track] : o2::soa::combinations (o2::soa::CombinationsFullIndexPolicy (posMixColl, negMixColl , tracks2))) {
2954- if (!selectionTrackResonance<false >(track1 , true ) || !selectionPIDKaonpTdependent (track1 ))
2960+ for (const auto & [posTrack1, negTrack1 , track] : o2::soa::combinations (o2::soa::CombinationsFullIndexPolicy (posMixTracks, negMixTracks , tracks2))) {
2961+ if (!selectionTrackResonance<false >(posTrack1 , true ) || !selectionPIDKaonpTdependent (posTrack1 ))
29552962 continue ;
2956- if (!selectionTrackResonance<false >(track2 , true ) || !selectionPIDKaonpTdependent (track2 ))
2963+ if (!selectionTrackResonance<false >(negTrack1 , true ) || !selectionPIDKaonpTdependent (negTrack1 ))
29572964 continue ;
2958- if (track1 .globalIndex () == track2 .globalIndex ())
2965+ if (posTrack1 .globalIndex () == negTrack1 .globalIndex ())
29592966 continue ;
29602967
2961- ROOT::Math::PxPyPzMVector recPhi = recMother (track1, track2 , massKa, massKa);
2968+ ROOT::Math::PxPyPzMVector recPhi = recMother (posTrack1, negTrack1 , massKa, massKa);
29622969 if (recPhi.Pt () < minPhiPt)
29632970 continue ;
29642971 if (std::abs (recPhi.Rapidity ()) > cfgYAcceptance)
@@ -2976,7 +2983,7 @@ struct Phik0shortanalysis {
29762983 }
29772984 }
29782985
2979- PROCESS_SWITCH (phik0shortanalysis , processPhiPionMixingEvent, " Process Mixed Event for Phi-Pion Analysis" , false );
2986+ PROCESS_SWITCH (Phik0shortanalysis , processPhiPionMixingEvent, " Process Mixed Event for Phi-Pion Analysis" , false );
29802987};
29812988
29822989WorkflowSpec defineDataProcessing (ConfigContext const & cfgc)
0 commit comments