@@ -83,12 +83,22 @@ namespace globalmuonmatching
8383DECLARE_SOA_COLUMN (IsTagged, isTagged, bool ); // ! Whether the MCH(-MID) track passes tagging cuts
8484DECLARE_SOA_COLUMN (MatchRanking, matchRanking, int32_t ); // ! Match candidate ranking (-1 for base MCH entries)
8585DECLARE_SOA_COLUMN (MixedGroupIndex, mixedGroupIndex, int32_t ); // ! Mixed-event group index (-1 for same-event candidates)
86+ DECLARE_SOA_COLUMN (DeltaBc, deltaBc, int64_t ); // ! |ΔBC| between mixed collisions (-1 if same-event)
87+ DECLARE_SOA_COLUMN (DeltaPhi, deltaPhi, float ); // ! |Δφ| between mixed MCH tracks (-1 if same-event)
88+ DECLARE_SOA_COLUMN (DeltaR, deltaR, float ); // ! ΔR = r2−r1 between mixed MCH tracks (-1 if same-event)
89+ DECLARE_SOA_COLUMN (DeltaAttemptsRel, deltaAttemptsRel, float ); // ! relative Δ(nMatchAttempts) (-1 if same-event)
90+ DECLARE_SOA_COLUMN (DeltaZ, deltaZ, float ); // ! |Δvz| between mixed collisions (-1 if same-event)
8691} // namespace globalmuonmatching
8792
8893DECLARE_SOA_TABLE (GmmCandFwdTrkExtras, " AOD" , " GMMCANDEXTRA" , // ! Extra info joinable to FwdTracksReAlign
8994 globalmuonmatching::IsTagged,
9095 globalmuonmatching::MatchRanking,
91- globalmuonmatching::MixedGroupIndex);
96+ globalmuonmatching::MixedGroupIndex,
97+ globalmuonmatching::DeltaBc,
98+ globalmuonmatching::DeltaPhi,
99+ globalmuonmatching::DeltaR,
100+ globalmuonmatching::DeltaAttemptsRel,
101+ globalmuonmatching::DeltaZ);
92102} // namespace o2::aod
93103
94104using MyEvents = soa::Join<aod::Collisions, aod::EvSels>;
@@ -128,6 +138,11 @@ struct GlobalMuonMatching {
128138 double matchChi2{-1 };
129139 int matchRanking{-1 };
130140 int32_t mixedGroupIndex{-1 };
141+ int64_t deltaBc{-1 };
142+ float deltaPhi{-1 .f };
143+ float deltaR{-1 .f };
144+ float deltaAttemptsRel{-1 .f };
145+ float deltaZ{-1 .f };
131146 };
132147
133148 struct MchTrackInfo {
@@ -933,7 +948,7 @@ struct GlobalMuonMatching {
933948 track.trackTimeRes ());
934949
935950 storeFwdTrackCovariance (trackPar.getCovariances ());
936- gmCandidateFwdTrackExtras (isTagged, -1 , -1 );
951+ gmCandidateFwdTrackExtras (isTagged, -1 , -1 , - 1 , - 1 . f , - 1 . f , - 1 . f , - 1 . f );
937952 if (hasBcSlice) {
938953 gmAmbiguousFwdTracksReAlign (mGmmCandFwdTrackRowIndex , bcSlice.data ());
939954 }
@@ -1015,7 +1030,14 @@ struct GlobalMuonMatching {
10151030 mchTrack.trackTimeRes ());
10161031
10171032 storeFwdTrackCovariance (globalMuonRefit.getCovariances ());
1018- gmCandidateFwdTrackExtras (isMchTrackTagged (mchTrack.globalIndex ()), candidate.matchRanking , candidate.mixedGroupIndex );
1033+ gmCandidateFwdTrackExtras (isMchTrackTagged (mchTrack.globalIndex ()),
1034+ candidate.matchRanking ,
1035+ candidate.mixedGroupIndex ,
1036+ candidate.deltaBc ,
1037+ candidate.deltaPhi ,
1038+ candidate.deltaR ,
1039+ candidate.deltaAttemptsRel ,
1040+ candidate.deltaZ );
10191041 if (hasBcSlice) {
10201042 gmAmbiguousFwdTracksReAlign (mGmmCandFwdTrackRowIndex , bcSlice.data ());
10211043 }
@@ -1357,8 +1379,14 @@ struct GlobalMuonMatching {
13571379 // add the candidates of MCH track #2 to the list of mixed candidates of track #1
13581380 mchTrackInfo1.mixedMatchingCandidates .push_back (mchTrackInfo2.matchingCandidates );
13591381 // update the muon track index of the mixed candidates to the index of track #1
1382+ // and store the mixing deltas for this group
13601383 for (auto & candidate : mchTrackInfo1.mixedMatchingCandidates .back ()) { // o2-linter: disable=const-ref-in-for-loop (object is modified in loop)
13611384 candidate.muonTrackId = mchIndex1;
1385+ candidate.deltaBc = deltaBc;
1386+ candidate.deltaPhi = deltaPhi;
1387+ candidate.deltaR = deltaR;
1388+ candidate.deltaAttemptsRel = deltaAttemptsRel;
1389+ candidate.deltaZ = deltaZ;
13621390 }
13631391 }
13641392 }
@@ -1554,6 +1582,13 @@ struct GlobalMuonMatching {
15541582 break ;
15551583 }
15561584 result.mixedGroupIndex = useMixedMatchingCandidates ? mixedGroupIndex : -1 ;
1585+ if (useMixedMatchingCandidates && !candidatesGroup.empty ()) {
1586+ result.deltaBc = candidatesGroup.front ().deltaBc ;
1587+ result.deltaPhi = candidatesGroup.front ().deltaPhi ;
1588+ result.deltaR = candidatesGroup.front ().deltaR ;
1589+ result.deltaAttemptsRel = candidatesGroup.front ().deltaAttemptsRel ;
1590+ result.deltaZ = candidatesGroup.front ().deltaZ ;
1591+ }
15571592 storedCandidates.push_back (result);
15581593 ++nStoredThisGroup;
15591594 }
@@ -1647,6 +1682,13 @@ struct GlobalMuonMatching {
16471682 break ;
16481683 }
16491684 result.mixedGroupIndex = useMixedMatchingCandidates ? mixedGroupIndex : -1 ;
1685+ if (useMixedMatchingCandidates && !candidatesGroup.empty ()) {
1686+ result.deltaBc = candidatesGroup.front ().deltaBc ;
1687+ result.deltaPhi = candidatesGroup.front ().deltaPhi ;
1688+ result.deltaR = candidatesGroup.front ().deltaR ;
1689+ result.deltaAttemptsRel = candidatesGroup.front ().deltaAttemptsRel ;
1690+ result.deltaZ = candidatesGroup.front ().deltaZ ;
1691+ }
16501692 storedCandidates.push_back (result);
16511693 ++nStoredThisGroup;
16521694 }
0 commit comments