Skip to content

Commit 74a5210

Browse files
authored
[PWGDQ] fix reduced MCH track index in output table (#16429)
1 parent 17f25d5 commit 74a5210

1 file changed

Lines changed: 32 additions & 9 deletions

File tree

PWGDQ/Tasks/qaMatching.cxx

Lines changed: 32 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -93,7 +93,6 @@ DECLARE_SOA_COLUMN(Pt, pt, float);
9393
DECLARE_SOA_COLUMN(Eta, eta, float);
9494
DECLARE_SOA_COLUMN(Phi, phi, float);
9595
DECLARE_SOA_COLUMN(MatchLabel, matchLabel, int8_t);
96-
DECLARE_SOA_COLUMN(TrackId, trackId, int64_t);
9796
DECLARE_SOA_COLUMN(MatchType, matchType, int8_t);
9897
DECLARE_SOA_COLUMN(MatchChi2, matchChi2, float);
9998
DECLARE_SOA_COLUMN(MatchScore, matchScore, float);
@@ -133,7 +132,6 @@ namespace o2::aod
133132
DECLARE_SOA_TABLE(QaMatchingMCHTrack, "AOD", "QAMCHTRK",
134133
o2::soa::Index<>,
135134
qamatching::ReducedEventId,
136-
qamatching::TrackId,
137135
qamatching::TrackType,
138136
qamatching::P,
139137
qamatching::Pt,
@@ -147,11 +145,20 @@ DECLARE_SOA_TABLE(QaMatchingMCHTrack, "AOD", "QAMCHTRK",
147145
qamatching::PxAtVtx,
148146
qamatching::PyAtVtx,
149147
qamatching::PzAtVtx);
148+
} // namespace o2::aod
149+
150+
namespace qamatching
151+
{
152+
DECLARE_SOA_INDEX_COLUMN_FULL_CUSTOM(ReducedTrack, reducedTrack, int32_t, o2::aod::QaMatchingMCHTrack, "QAMCHTRKs", "");
153+
} // namespace qamatching
154+
155+
namespace o2::aod
156+
{
150157
DECLARE_SOA_TABLE(QaMatchingCandidates, "AOD", "QAMCAND",
151158
o2::soa::Index<>,
152159
qamatching::ReducedEventId,
160+
qamatching::ReducedTrackId,
153161
qamatching::MatchLabel,
154-
qamatching::TrackId,
155162
qamatching::P, qamatching::Pt, qamatching::Eta, qamatching::Phi,
156163
qamatching::MatchType, qamatching::MatchChi2, qamatching::MatchScore, qamatching::MatchRanking,
157164
qamatching::XAtVtx,
@@ -162,6 +169,11 @@ DECLARE_SOA_TABLE(QaMatchingCandidates, "AOD", "QAMCAND",
162169
qamatching::PzAtVtx);
163170
} // namespace o2::aod
164171

172+
namespace qamatching
173+
{
174+
DECLARE_SOA_INDEX_COLUMN_FULL_CUSTOM(Candidate, candidate, int32_t, o2::aod::QaMatchingCandidates, "QAMCANDs", "");
175+
} // namespace qamatching
176+
165177
using MyEvents = soa::Join<aod::Collisions, aod::EvSels, aod::FT0Mults, aod::MFTMults, aod::PVMults, aod::CentFT0Ms, aod::CentFT0As, aod::CentFT0Cs>;
166178
using MyMuons = soa::Join<aod::FwdTracks, aod::FwdTracksCov>;
167179
using MyMuonsMC = soa::Join<aod::FwdTracks, aod::FwdTracksCov, aod::McFwdTrackLabels, aod::FwdTracksDCA, aod::FwdTrkCompColls>;
@@ -458,6 +470,8 @@ struct QaMatching {
458470
std::vector<int64_t> mftTracks;
459471
// vector of MCH(-MID) track indexes
460472
std::vector<int64_t> mchTracks;
473+
// mapping between original and reduced MCH track indexes
474+
std::map<int64_t, int64_t> reducedMchTrackIds;
461475
// matching candidates
462476
MatchingCandidates matchingCandidates;
463477
// vector of MFT-MCH track index pairs belonging to the same MC muon particle
@@ -1986,6 +2000,7 @@ struct QaMatching {
19862000
if (collisionIds.empty())
19872001
return;
19882002

2003+
int64_t reducedMchTrackId = 0;
19892004
for (size_t cid = 0; cid < collisionIds.size(); cid++) {
19902005
const auto& collision = collisions.rawIteratorAt(collisionIds[cid]);
19912006
int64_t collisionIndex = collision.globalIndex();
@@ -2015,6 +2030,8 @@ struct QaMatching {
20152030
// standalone MCH or MCH-MID tracks
20162031
int64_t mchTrackIndex = muonTrack.globalIndex();
20172032
collisionInfo.mchTracks.push_back(mchTrackIndex);
2033+
collisionInfo.reducedMchTrackIds[mchTrackIndex] = reducedMchTrackId;
2034+
reducedMchTrackId += 1;
20182035
} else {
20192036
// global muon tracks (MFT-MCH or MFT-MCH-MID)
20202037
int64_t muonTrackIndex = muonTrack.globalIndex();
@@ -2916,7 +2933,7 @@ struct QaMatching {
29162933

29172934
//-------------------------------
29182935
// Chi2-based matching from production
2919-
fillQaMatchingAodTablesForCollision(collision, muonTracks, collisionInfo.matchingCandidates, matchingMethodCounter, collisionInfo.reducedEventId);
2936+
fillQaMatchingAodTablesForCollision(collision, muonTracks, collisionInfo.matchingCandidates, matchingMethodCounter, collisionInfo.reducedEventId, collisionInfo.reducedMchTrackIds);
29202937
if constexpr (isMC) {
29212938
fillMatchingPlotsMc(collision, collisionInfo, muonTracks, mftTracks, collisionInfo.matchingCandidates, collisionInfo.matchingCandidates, collisionInfo.matchablePairs, cfgMatchingChi2ScoreMftMchLow, fChi2MatchingPlotter.get(), false);
29222939
} else {
@@ -2970,7 +2987,7 @@ struct QaMatching {
29702987
double matchingScoreCut = matchingScoreCuts.at(label);
29712988

29722989
matchingMethodCounter += 1;
2973-
fillQaMatchingAodTablesForCollision(collision, muonTracks, matchingCandidates, matchingMethodCounter, collisionInfo.reducedEventId);
2990+
fillQaMatchingAodTablesForCollision(collision, muonTracks, matchingCandidates, matchingMethodCounter, collisionInfo.reducedEventId, collisionInfo.reducedMchTrackIds);
29742991
if constexpr (isMC) {
29752992
fillMatchingPlotsMc(collision, collisionInfo, muonTracks, mftTracks, matchingCandidates, collisionInfo.matchingCandidates, collisionInfo.matchablePairs, matchingScoreCut, plotter, false);
29762993
} else {
@@ -2988,7 +3005,7 @@ struct QaMatching {
29883005
double matchingScoreCut = matchingScoreCuts.at(label);
29893006

29903007
matchingMethodCounter += 1;
2991-
fillQaMatchingAodTablesForCollision(collision, muonTracks, matchingCandidates, matchingMethodCounter, collisionInfo.reducedEventId);
3008+
fillQaMatchingAodTablesForCollision(collision, muonTracks, matchingCandidates, matchingMethodCounter, collisionInfo.reducedEventId, collisionInfo.reducedMchTrackIds);
29923009
if constexpr (isMC) {
29933010
fillMatchingPlotsMc(collision, collisionInfo, muonTracks, mftTracks, matchingCandidates, collisionInfo.matchingCandidates, collisionInfo.matchablePairs, matchingScoreCut, plotter);
29943011
} else {
@@ -3006,7 +3023,8 @@ struct QaMatching {
30063023
TMUON const& muonTracks,
30073024
const MatchingCandidates& matchingCandidates,
30083025
int8_t matchLabel,
3009-
int32_t reducedEventId)
3026+
int32_t reducedEventId,
3027+
std::map<int64_t, int64_t> reducedMchTrackIds)
30103028
{
30113029
for (const auto& [mchIndex, candidates] : matchingCandidates) {
30123030
if (candidates.empty()) {
@@ -3018,13 +3036,19 @@ struct QaMatching {
30183036
continue;
30193037
}
30203038

3039+
auto reducedMchTrackIdIt = reducedMchTrackIds.find(mchIndex);
3040+
if (reducedMchTrackIdIt == reducedMchTrackIds.end()) {
3041+
continue;
3042+
}
3043+
int64_t reducedMchTrackId = reducedMchTrackIdIt->second;
3044+
30213045
for (const auto& candidate : candidates) {
30223046
const auto& candidateTrack = muonTracks.rawIteratorAt(candidate.globalTrackId);
30233047
auto candidateTrackAtVertex = VarManager::PropagateMuon(candidateTrack, collision, VarManager::kToVertex);
30243048
qaMatchingCandidates(
30253049
reducedEventId,
3050+
reducedMchTrackId,
30263051
matchLabel,
3027-
mchIndex,
30283052
static_cast<float>(candidateTrack.p()),
30293053
static_cast<float>(candidateTrack.pt()),
30303054
static_cast<float>(candidateTrack.eta()),
@@ -3095,7 +3119,6 @@ struct QaMatching {
30953119
}
30963120
qaMatchingMCHTrack(
30973121
reducedEventId,
3098-
mchIndex,
30993122
static_cast<int8_t>(mchTrack.trackType()),
31003123
static_cast<float>(mchTrack.p()),
31013124
static_cast<float>(mchTrack.pt()),

0 commit comments

Comments
 (0)