@@ -96,6 +96,8 @@ DECLARE_SOA_COLUMN(P, p, float);
9696DECLARE_SOA_COLUMN (Pt, pt, float );
9797DECLARE_SOA_COLUMN (Eta, eta, float );
9898DECLARE_SOA_COLUMN (Phi, phi, float );
99+ DECLARE_SOA_COLUMN (InvQPt, invQPt, float );
100+ DECLARE_SOA_COLUMN (Tanl, tanl, float );
99101DECLARE_SOA_COLUMN (MatchLabel, matchLabel, int8_t );
100102DECLARE_SOA_COLUMN (MatchType, matchType, int8_t );
101103DECLARE_SOA_COLUMN (MatchChi2, matchChi2, float );
@@ -144,6 +146,8 @@ DECLARE_SOA_TABLE(QaMatchingMCHTrack, "AOD", "QAMCHTRK",
144146 qamatching::Pt,
145147 qamatching::Eta,
146148 qamatching::Phi,
149+ qamatching::InvQPt,
150+ qamatching::Tanl,
147151 qamatching::MftMatchAttempts,
148152 qamatching::IsTagged,
149153 qamatching::XAtVtx,
@@ -169,11 +173,22 @@ DECLARE_SOA_TABLE(QaMatchingCandidates, "AOD", "QAMCAND",
169173 qamatching::ReducedEventId,
170174 qamatching::ReducedTrackId,
171175 qamatching::MatchLabel,
172- qamatching::P, qamatching::Pt, qamatching::Eta, qamatching::Phi,
173- qamatching::MatchType, qamatching::MatchChi2, qamatching::MatchScore, qamatching::MatchRanking,
176+ qamatching::P,
177+ qamatching::Pt,
178+ qamatching::Eta,
179+ qamatching::Phi,
180+ qamatching::InvQPt,
181+ qamatching::Tanl,
182+ qamatching::MatchType,
183+ qamatching::MatchChi2,
184+ qamatching::MatchScore,
185+ qamatching::MatchRanking,
174186 qamatching::XAtVtx,
175187 qamatching::YAtVtx,
176188 qamatching::ZAtVtx,
189+ qamatching::FXAtPlaneZ2,
190+ qamatching::FYAtPlaneZ2,
191+ qamatching::FZAtPlaneZ2,
177192 qamatching::PxAtVtx,
178193 qamatching::PyAtVtx,
179194 qamatching::PzAtVtx);
@@ -3083,7 +3098,7 @@ struct QaMatching {
30833098
30843099 // -------------------------------
30853100 // Chi2-based matching from production
3086- fillQaMatchingAodTablesForCollision (collision, muonTracks, mftTracks, collisionInfo.matchingCandidates , matchingMethodCounter, collisionInfo.reducedEventId , collisionInfo.reducedMchTrackIds );
3101+ fillQaMatchingAodTablesForCollision (collision, muonTracks, mftTracks, collisionInfo.matchingCandidates , matchingMethodCounter, collisionInfo.reducedEventId , collisionInfo.reducedMchTrackIds , mftCovs );
30873102 if constexpr (isMC) {
30883103 fillMatchingPlotsMc (collision, collisionInfo, muonTracks, mftTracks, taggedMuons, collisionInfo.matchingCandidates , collisionInfo.matchingCandidates , collisionInfo.matchablePairs , cfgMatchingChi2ScoreMftMchLow, fChi2MatchingPlotter .get (), false );
30893104 } else {
@@ -3114,7 +3129,7 @@ struct QaMatching {
31143129 double matchingScoreCut = matchingScoreCuts.at (label);
31153130
31163131 matchingMethodCounter += 1 ;
3117- fillQaMatchingAodTablesForCollision (collision, muonTracks, mftTracks, matchingCandidates, matchingMethodCounter, collisionInfo.reducedEventId , collisionInfo.reducedMchTrackIds );
3132+ fillQaMatchingAodTablesForCollision (collision, muonTracks, mftTracks, matchingCandidates, matchingMethodCounter, collisionInfo.reducedEventId , collisionInfo.reducedMchTrackIds , mftCovs );
31183133 if constexpr (isMC) {
31193134 fillMatchingPlotsMc (collision, collisionInfo, muonTracks, mftTracks, taggedMuons, matchingCandidates, collisionInfo.matchingCandidates , collisionInfo.matchablePairs , matchingScoreCut, plotter, false );
31203135 } else {
@@ -3132,7 +3147,7 @@ struct QaMatching {
31323147 double matchingScoreCut = matchingScoreCuts.at (label);
31333148
31343149 matchingMethodCounter += 1 ;
3135- fillQaMatchingAodTablesForCollision (collision, muonTracks, mftTracks, matchingCandidates, matchingMethodCounter, collisionInfo.reducedEventId , collisionInfo.reducedMchTrackIds );
3150+ fillQaMatchingAodTablesForCollision (collision, muonTracks, mftTracks, matchingCandidates, matchingMethodCounter, collisionInfo.reducedEventId , collisionInfo.reducedMchTrackIds , mftCovs );
31363151 if constexpr (isMC) {
31373152 fillMatchingPlotsMc (collision, collisionInfo, muonTracks, mftTracks, taggedMuons, matchingCandidates, collisionInfo.matchingCandidates , collisionInfo.matchablePairs , matchingScoreCut, plotter);
31383153 } else {
@@ -3145,14 +3160,15 @@ struct QaMatching {
31453160 fillDimuonPlotsMc (collisionInfo, collisions, muonTracks, mftTracks);
31463161 }
31473162
3148- template <class TCOLLISION , class TMUON , class TMFT >
3163+ template <class TCOLLISION , class TMUON , class TMFT , class CMFT >
31493164 void fillQaMatchingAodTablesForCollision (TCOLLISION const & collision,
31503165 TMUON const & muonTracks,
31513166 TMFT const & mftTracks,
31523167 const MatchingCandidates& matchingCandidates,
31533168 int8_t matchLabel,
31543169 int32_t reducedEventId,
3155- std::map<int64_t , int64_t > reducedMchTrackIds)
3170+ std::map<int64_t , int64_t > reducedMchTrackIds,
3171+ CMFT const & mftCovs)
31563172 {
31573173 for (const auto & [mchIndex, candidates] : matchingCandidates) {
31583174 if (candidates.empty ()) {
@@ -3173,8 +3189,13 @@ struct QaMatching {
31733189 for (const auto & candidate : candidates) {
31743190 const auto & candidateTrack = muonTracks.rawIteratorAt (candidate.globalTrackId );
31753191 const auto & mftTrack = mftTracks.rawIteratorAt (candidate.mftTrackId );
3192+ if (mftTrackCovs.count (mftTrack.globalIndex ()) < 1 ) {
3193+ continue ;
3194+ }
3195+ auto const & mftTrackCov = mftCovs.rawIteratorAt (mftTrackCovs[mftTrack.globalIndex ()]);
31763196 // propagate global forward track to vertex using momentum rescaling method
31773197 auto candidateTrackAtVertex = propagateToVertexMft (mftTrack, mchTrack, collision);
3198+ auto candidateTrackAtPlaneZ2 = propagateToZMft (mftTrack, mftTrackCov, o2::mft::constants::mft::LayerZCoordinate ()[9 ]);
31783199 qaMatchingCandidates (
31793200 reducedEventId,
31803201 reducedMchTrackId,
@@ -3183,13 +3204,18 @@ struct QaMatching {
31833204 static_cast <float >(candidateTrack.pt ()),
31843205 static_cast <float >(candidateTrack.eta ()),
31853206 static_cast <float >(candidateTrack.phi ()),
3207+ static_cast <float >(candidateTrack.signed1Pt ()),
3208+ static_cast <float >(candidateTrack.tgl ()),
31863209 static_cast <int8_t >(candidate.matchType ),
31873210 static_cast <float >(candidate.matchChi2 ),
31883211 static_cast <float >(candidate.matchScore ),
31893212 static_cast <int32_t >(candidate.matchRanking ),
31903213 static_cast <float >(candidateTrackAtVertex.getX ()),
31913214 static_cast <float >(candidateTrackAtVertex.getY ()),
31923215 static_cast <float >(candidateTrackAtVertex.getZ ()),
3216+ static_cast <float >(candidateTrackAtPlaneZ2.getX ()),
3217+ static_cast <float >(candidateTrackAtPlaneZ2.getY ()),
3218+ static_cast <float >(candidateTrackAtPlaneZ2.getZ ()),
31933219 static_cast <float >(candidateTrackAtVertex.getPx ()),
31943220 static_cast <float >(candidateTrackAtVertex.getPy ()),
31953221 static_cast <float >(candidateTrackAtVertex.getPz ()));
@@ -3242,7 +3268,7 @@ struct QaMatching {
32423268 mftMchMatchAttempts = mchTrackInfoIt->second .compatMftTracks .size ();
32433269 }
32443270 auto mchTrackAtVertex = VarManager::PropagateMuon (mchTrack, collision, VarManager::kToVertex );
3245- auto mchTrackAtPlaneZ2 = propagateToZMch (mchTrackAtVertex , o2::mft::constants::mft::LayerZCoordinate ()[9 ]);
3271+ auto mchTrackAtPlaneZ2 = propagateToZMch (mchTrack , o2::mft::constants::mft::LayerZCoordinate ()[9 ]);
32463272 bool isTagged = false ;
32473273 if (std::find (taggedMuons.begin (), taggedMuons.end (), mchIndex) != taggedMuons.end ()) {
32483274 isTagged = true ;
@@ -3254,6 +3280,8 @@ struct QaMatching {
32543280 static_cast <float >(mchTrack.pt ()),
32553281 static_cast <float >(mchTrack.eta ()),
32563282 static_cast <float >(mchTrack.phi ()),
3283+ static_cast <float >(mchTrack.signed1Pt ()),
3284+ static_cast <float >(mchTrack.tgl ()),
32573285 static_cast <int32_t >(mftMchMatchAttempts),
32583286 isTagged,
32593287 static_cast <float >(mchTrackAtVertex.getX ()),
0 commit comments