@@ -2316,11 +2316,12 @@ struct qaMatching {
23162316 template <class C , class TMUON , class TMFT , class CMFT >
23172317 void RunChi2Matching (C const & collisions,
23182318 TMUON const & muonTracks,
2319- TMFT const & /* mftTracks*/ ,
2319+ TMFT const & mftTracks,
23202320 CMFT const & mftCovs,
23212321 std::string funcName,
23222322 float matchingPlaneZ,
23232323 int extrapMethod,
2324+ const std::vector<std::pair<int64_t , int64_t >>& matchablePairs,
23242325 const MatchingCandidates& matchingCandidates,
23252326 MatchingCandidates& newMatchingCandidates)
23262327 {
@@ -2410,6 +2411,15 @@ struct qaMatching {
24102411
24112412 for (auto & [mchIndex, globalTracksVector] : newMatchingCandidates) {
24122413 std::sort (globalTracksVector.begin (), globalTracksVector.end (), compareMatchingScore);
2414+
2415+ int ranking = 1 ;
2416+ for (auto & candidate : globalTracksVector) {
2417+ const auto & muonTrack = muonTracks.rawIteratorAt (candidate.globalTrackId );
2418+
2419+ candidate.matchRanking = ranking;
2420+ candidate.matchType = GetMatchType (muonTrack, muonTracks, mftTracks, matchablePairs, ranking);
2421+ ranking += 1 ;
2422+ }
24132423 }
24142424 }
24152425
@@ -2419,6 +2429,7 @@ struct qaMatching {
24192429 TMFT const & mftTracks,
24202430 CMFT const & mftCovs,
24212431 std::string label,
2432+ const std::vector<std::pair<int64_t , int64_t >>& matchablePairs,
24222433 const MatchingCandidates& matchingCandidates,
24232434 MatchingCandidates& newMatchingCandidates)
24242435 {
@@ -2442,15 +2453,16 @@ struct qaMatching {
24422453 auto matchingPlaneZ = matchingPlanesZ[label];
24432454 auto extrapMethod = matchingExtrapMethod[label];
24442455
2445- RunChi2Matching (collisions, muonTracks, mftTracks, mftCovs, funcName, matchingPlaneZ, extrapMethod, matchingCandidates, newMatchingCandidates);
2456+ RunChi2Matching (collisions, muonTracks, mftTracks, mftCovs, funcName, matchingPlaneZ, extrapMethod, matchablePairs, matchingCandidates, newMatchingCandidates);
24462457 }
24472458
24482459 template <class C , class TMUON , class TMFT , class CMFT >
24492460 void RunMLMatching (C const & collisions,
24502461 TMUON const & muonTracks,
2451- TMFT const & /* mftTracks*/ ,
2462+ TMFT const & mftTracks,
24522463 CMFT const & mftCovs,
24532464 std::string label,
2465+ const std::vector<std::pair<int64_t , int64_t >>& matchablePairs,
24542466 const MatchingCandidates& matchingCandidates,
24552467 MatchingCandidates& newMatchingCandidates)
24562468 {
@@ -2539,6 +2551,15 @@ struct qaMatching {
25392551
25402552 for (auto & [mchIndex, globalTracksVector] : newMatchingCandidates) {
25412553 std::sort (globalTracksVector.begin (), globalTracksVector.end (), compareMatchingScore);
2554+
2555+ int ranking = 1 ;
2556+ for (auto & candidate : globalTracksVector) {
2557+ const auto & muonTrack = muonTracks.rawIteratorAt (candidate.globalTrackId );
2558+
2559+ candidate.matchRanking = ranking;
2560+ candidate.matchType = GetMatchType (muonTrack, muonTracks, mftTracks, matchablePairs, ranking);
2561+ ranking += 1 ;
2562+ }
25422563 }
25432564 }
25442565
@@ -2558,7 +2579,7 @@ struct qaMatching {
25582579 FillMatchingPlotsMC (collision, collisionInfo, muonTracks, mftTracks, collisionInfo.matchingCandidates , collisionInfo.matchingCandidates , collisionInfo.matchablePairs , fMatchingChi2ScoreMftMchLow , fChi2MatchingPlotter .get (), false );
25592580 for (auto & [label, func] : matchingChi2Functions) {
25602581 MatchingCandidates matchingCandidates;
2561- RunChi2Matching (collisions, muonTracks, mftTracks, mftCovs, label, collisionInfo.matchingCandidates , matchingCandidates);
2582+ RunChi2Matching (collisions, muonTracks, mftTracks, mftCovs, label, collisionInfo.matchablePairs , collisionInfo. matchingCandidates , matchingCandidates);
25622583
25632584 auto * plotter = fMatchingPlotters .at (label).get ();
25642585 double matchingScoreCut = matchingScoreCuts.at (label);
@@ -2569,7 +2590,7 @@ struct qaMatching {
25692590 // ML-based matching analysis
25702591 for (auto & [label, mlResponse] : matchingMlResponses) {
25712592 MatchingCandidates matchingCandidates;
2572- RunMLMatching (collisions, muonTracks, mftTracks, mftCovs, label, collisionInfo.matchingCandidates , matchingCandidates);
2593+ RunMLMatching (collisions, muonTracks, mftTracks, mftCovs, label, collisionInfo.matchablePairs , collisionInfo. matchingCandidates , matchingCandidates);
25732594
25742595 auto * plotter = fMatchingPlotters .at (label).get ();
25752596 double matchingScoreCut = matchingScoreCuts.at (label);
0 commit comments