diff --git a/PWGDQ/Tasks/qaMatching.cxx b/PWGDQ/Tasks/qaMatching.cxx index 8d24d549800..217d8d73278 100644 --- a/PWGDQ/Tasks/qaMatching.cxx +++ b/PWGDQ/Tasks/qaMatching.cxx @@ -3020,7 +3020,7 @@ struct QaMatching { int debugCounter{0}; fillQaMatchingAodEventForCollision(collisionInfo, collision, collisionInfo.reducedEventId, debugCounter); - fillQaMatchingMchTracksForCollision(collisionInfo, collision, muonTracks, taggedMuons, collisionInfo.reducedEventId); + fillQaMatchingMchTracksForCollision(collisionInfo, collision, muonTracks, taggedMuons, collisionInfo.reducedEventId, collisionInfo.reducedMchTrackIds); registry.get(HIST("tracksMultiplicityMFT"))->Fill(collisionInfo.mftTracks.size()); registry.get(HIST("tracksMultiplicityMCH"))->Fill(collisionInfo.mchTracks.size()); @@ -3234,21 +3234,18 @@ struct QaMatching { TCOLLISION const& collision, TMUON const& muonTracks, const std::vector& taggedMuons, - int32_t reducedEventId) + int32_t reducedEventId, + const std::map& reducedMchTrackIds) { - std::vector mchIds; - for (const auto& mchTrack : collisionInfo.mchTracks) { - if (std::find(mchIds.begin(), mchIds.end(), mchTrack.first) == mchIds.end()) { - mchIds.emplace_back(mchTrack.first); - } - } - for (const auto& candidate : collisionInfo.matchingCandidates) { - if (std::find(mchIds.begin(), mchIds.end(), candidate.first) == mchIds.end()) { - mchIds.emplace_back(candidate.first); - } + std::vector> orderedMchIds; + orderedMchIds.reserve(reducedMchTrackIds.size()); + for (const auto& [mchIndex, reducedMchTrackId] : reducedMchTrackIds) { + orderedMchIds.emplace_back(reducedMchTrackId, mchIndex); } + std::sort(orderedMchIds.begin(), orderedMchIds.end()); - for (const auto& mchIndex : mchIds) { + for (const auto& [reducedMchTrackId, mchIndex] : orderedMchIds) { + (void)reducedMchTrackId; auto const& mchTrack = muonTracks.rawIteratorAt(mchIndex); int mftMchMatchAttempts = 0; if (const auto& mchTrackInfoIt = collisionInfo.mchTracks.find(mchIndex); mchTrackInfoIt != collisionInfo.mchTracks.end()) {