Skip to content

Commit 8120c60

Browse files
committed
Fixed partitioning in mixed event
1 parent d4e1a0b commit 8120c60

File tree

1 file changed

+29
-22
lines changed

1 file changed

+29
-22
lines changed

PWGLF/Tasks/Strangeness/phik0shortanalysis.cxx

Lines changed: 29 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -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

29822989
WorkflowSpec defineDataProcessing(ConfigContext const& cfgc)

0 commit comments

Comments
 (0)