From 9c0a7d9acc6be5e7af1dd63c91dd783513ed95be Mon Sep 17 00:00:00 2001 From: rolavick Date: Sun, 22 Mar 2026 13:10:52 +0100 Subject: [PATCH] now using the correct propagation for global muon also in the main loop --- .../TableProducer/upcCandProducerGlobalMuon.cxx | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/PWGUD/TableProducer/upcCandProducerGlobalMuon.cxx b/PWGUD/TableProducer/upcCandProducerGlobalMuon.cxx index cc756d6ea9c..c97704fe2ce 100644 --- a/PWGUD/TableProducer/upcCandProducerGlobalMuon.cxx +++ b/PWGUD/TableProducer/upcCandProducerGlobalMuon.cxx @@ -379,7 +379,21 @@ struct UpcCandProducerGlobalMuon { } if (fUpcCuts.getUseFwdCuts()) { - auto pft = propagateToZero(track); + bool isGlobal = track.trackType() == o2::aod::fwdtrack::ForwardTrackTypeEnum::GlobalMuonTrack || + track.trackType() == o2::aod::fwdtrack::ForwardTrackTypeEnum::GlobalForwardTrack; + o2::dataformats::GlobalFwdTrack pft; + if (isGlobal && fEnableMFT) { + // For global tracks, use MFT helix propagation to vertex instead of + // MCH extrapolation, which fails because the track z is upstream of + // the front absorber (z ~ -60 cm vs absorber at z ~ -90 cm) + o2::track::TrackParCovFwd trackPar = o2::aod::fwdtrackutils::getTrackParCovFwdShift(track, fZShift); + trackPar.propagateToZhelix(0., fBz); + pft.setParameters(trackPar.getParameters()); + pft.setZ(trackPar.getZ()); + pft.setCovariances(trackPar.getCovariances()); + } else { + pft = propagateToZero(track); + } bool pass = cut(pft, track); if (!pass) return false;