Skip to content

Commit 2ffc5cd

Browse files
authored
[PWGUD] preslice particles (#15776)
1 parent 3b21258 commit 2ffc5cd

File tree

1 file changed

+11
-2
lines changed

1 file changed

+11
-2
lines changed

PWGUD/Tasks/flowMcUpc.cxx

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -109,6 +109,8 @@ struct FlowMcUpc {
109109
return true;
110110
}
111111

112+
PresliceUnsorted<aod::UDMcParticles> partPerMcCollision = aod::udmcparticle::udMcCollisionId;
113+
112114
void processMCTrue(aod::UDMcCollisions::iterator const& mcCollision, McParts const& mcParts, aod::BCs const& bcs)
113115
{
114116
if (bcs.size() == 0) {
@@ -122,7 +124,9 @@ struct FlowMcUpc {
122124
// event within range
123125
histos.fill(HIST("hImpactParameter"), imp);
124126

125-
for (auto const& mcParticle : mcParts) {
127+
auto const& tempParts = mcParts.sliceBy(partPerMcCollision, static_cast<int64_t>(mcCollision.globalIndex()));
128+
129+
for (auto const& mcParticle : tempParts) {
126130
auto momentum = std::array<double, 3>{mcParticle.px(), mcParticle.py(), mcParticle.pz()};
127131
int pdgCode = std::abs(mcParticle.pdgCode());
128132

@@ -147,6 +151,9 @@ struct FlowMcUpc {
147151
using MCRecoTracks = soa::Join<aod::UDTracks, aod::UDTracksPID, aod::UDTracksExtra, aod::UDTracksFlags, aod::UDTracksDCA, aod::UDMcTrackLabels>;
148152
using MCRecoCollisions = soa::Join<aod::UDCollisions, aod::SGCollisions, aod::UDCollisionSelExtras, aod::UDCollisionsSels, aod::UDZdcsReduced, aod::UDMcCollsLabels>;
149153

154+
// PresliceUnsorted<MCRecoTracks> trackPerMcParticle = aod::udmctracklabel::udMcParticleId;
155+
Preslice<MCRecoTracks> trackPerCollision = aod::udtrack::udCollisionId; // sorted preslice used because the pair track-collision is already sorted in processDataSG function
156+
150157
void processReco(MCRecoCollisions::iterator const& collision, MCRecoTracks const& tracks)
151158
{
152159
histos.fill(HIST("RecoProcessEventCounter"), 0.5);
@@ -162,7 +169,9 @@ struct FlowMcUpc {
162169

163170
float vtxz = collision.posZ();
164171

165-
for (const auto& track : tracks) {
172+
auto const& tempTracks = tracks.sliceBy(trackPerCollision, static_cast<int64_t>(collision.globalIndex()));
173+
174+
for (const auto& track : tempTracks) {
166175
// focus on bulk: e, mu, pi, k, p
167176
auto momentum = std::array<double, 3>{track.px(), track.py(), track.pz()};
168177
double pt = RecoDecay::pt(momentum);

0 commit comments

Comments
 (0)