From 15ffcdfd2fdef1a52244d9ee8dc8e9e8ac62f798 Mon Sep 17 00:00:00 2001 From: Maurice Coquet Date: Tue, 3 Mar 2026 16:37:11 +0100 Subject: [PATCH 1/2] Fixing fwdtrackextension --- Common/TableProducer/fwdtrackextension.cxx | 23 ++++++++++++++-------- 1 file changed, 15 insertions(+), 8 deletions(-) diff --git a/Common/TableProducer/fwdtrackextension.cxx b/Common/TableProducer/fwdtrackextension.cxx index 18a038c323d..2021b9c89c9 100644 --- a/Common/TableProducer/fwdtrackextension.cxx +++ b/Common/TableProducer/fwdtrackextension.cxx @@ -50,7 +50,7 @@ struct FwdTrackExtension { Configurable geoPath{"geoPath", "GLO/Config/GeometryAligned", "Path of the geometry file"}; Configurable grpmagPath{"grpmagPath", "GLO/Config/GRPMagField", "CCDB path of the GRPMagField object"}; Configurable configCcdbUrl{"configCcdbUrl", "http://alice-ccdb.cern.ch", "url of the ccdb repository"}; - Configurable refitGlobalMuon{"refitGlobalMuon", true, "Recompute parameters of global muons"}; + Configurable refitGlobalMuon{"refitGlobalMuon", false, "Recompute parameters of global muons"}; Service fCCDB; o2::parameters::GRPMagField* grpmag = nullptr; // for run 3, we access GRPMagField from GLO/Config/GRPMagField @@ -69,8 +69,15 @@ struct FwdTrackExtension { } } - void process(aod::Collisions::iterator const& collision, o2::aod::BCsWithTimestamps const& /*...*/, MuonsWithCov const& tracks, aod::MFTTracks const& /*...*/) + //void process(aod::Collisions::iterator const& collision, o2::aod::BCsWithTimestamps const& /*...*/, MuonsWithCov const& tracks, aod::MFTTracks const& /*...*/) + void process(aod::Collisions const& collisions, MuonsWithCov const& tracks, aod::MFTTracks const& /*...*/, o2::aod::BCsWithTimestamps const& /*...*/) { + for (const auto& track : tracks) { + const auto trackType = track.trackType(); + float dcaX = -999; + float dcaY = -999; + if (track.has_collision()) { + auto const& collision = track.collision(); auto bc = collision.template bc_as(); if (fCurrentRun != bc.runNumber()) { grpmag = fCCDB->getForTimeStamp(grpmagPath, bc.timestamp()); @@ -83,9 +90,8 @@ struct FwdTrackExtension { fCurrentRun = bc.runNumber(); } const float zField = grpmag->getNominalL3Field(); - for (const auto& track : tracks) { - const auto trackType = track.trackType(); - o2::dataformats::GlobalFwdTrack fwdtrack = o2::aod::fwdtrackutils::getTrackParCovFwd(track, track); + + o2::track::TrackParCovFwd fwdtrack = o2::aod::fwdtrackutils::getTrackParCovFwdShift(track, 0.0); if (refitGlobalMuon && (trackType == o2::aod::fwdtrack::ForwardTrackTypeEnum::GlobalMuonTrack || trackType == o2::aod::fwdtrack::ForwardTrackTypeEnum::GlobalForwardTrack)) { auto muontrack = track.template matchMCHTrack_as(); auto mfttrack = track.template matchMFTTrack_as(); @@ -95,9 +101,10 @@ struct FwdTrackExtension { o2::track::TrackParCovFwd mft{mfttrack.z(), tpars, tcovs, mfttrack.chi2()}; fwdtrack = o2::aod::fwdtrackutils::refitGlobalMuonCov(propmuon, mft); } - const auto proptrack = o2::aod::fwdtrackutils::propagateTrackParCovFwd(fwdtrack, trackType, collision, o2::aod::fwdtrackutils::propagationPoint::kToDCA, 0.f, zField); - const float dcaX = (proptrack.getX() - collision.posX()); - const float dcaY = (proptrack.getY() - collision.posY()); + auto proptrack = o2::aod::fwdtrackutils::propagateTrackParCovFwd(fwdtrack, trackType, collision, o2::aod::fwdtrackutils::propagationPoint::kToDCA, 0.f, zField); + dcaX = (proptrack.getX() - collision.posX()); + dcaY = (proptrack.getY() - collision.posY()); + } fwdDCA(dcaX, dcaY); } } From bc4487e900f8c346138b81b5431b4becaf5aae5e Mon Sep 17 00:00:00 2001 From: Maurice Coquet Date: Tue, 3 Mar 2026 16:39:42 +0100 Subject: [PATCH 2/2] Clang format --- Common/TableProducer/fwdtrackextension.cxx | 55 +++++++++++----------- 1 file changed, 27 insertions(+), 28 deletions(-) diff --git a/Common/TableProducer/fwdtrackextension.cxx b/Common/TableProducer/fwdtrackextension.cxx index 2021b9c89c9..5ffdf73bf7a 100644 --- a/Common/TableProducer/fwdtrackextension.cxx +++ b/Common/TableProducer/fwdtrackextension.cxx @@ -69,41 +69,40 @@ struct FwdTrackExtension { } } - //void process(aod::Collisions::iterator const& collision, o2::aod::BCsWithTimestamps const& /*...*/, MuonsWithCov const& tracks, aod::MFTTracks const& /*...*/) - void process(aod::Collisions const& collisions, MuonsWithCov const& tracks, aod::MFTTracks const& /*...*/, o2::aod::BCsWithTimestamps const& /*...*/) + void process(MuonsWithCov const& tracks, aod::MFTTracks const& /*...*/, o2::aod::BCsWithTimestamps const& /*...*/, aod::Collisions const& /*...*/) { for (const auto& track : tracks) { const auto trackType = track.trackType(); float dcaX = -999; float dcaY = -999; if (track.has_collision()) { - auto const& collision = track.collision(); - auto bc = collision.template bc_as(); - if (fCurrentRun != bc.runNumber()) { - grpmag = fCCDB->getForTimeStamp(grpmagPath, bc.timestamp()); - if (grpmag != nullptr) { - LOGF(info, "Init field from GRP"); - o2::base::Propagator::initFieldFromGRP(grpmag); - } - LOGF(info, "Set field for muons"); - o2::mch::TrackExtrap::setField(); - fCurrentRun = bc.runNumber(); - } - const float zField = grpmag->getNominalL3Field(); + auto const& collision = track.collision(); + auto bc = collision.template bc_as(); + if (fCurrentRun != bc.runNumber()) { + grpmag = fCCDB->getForTimeStamp(grpmagPath, bc.timestamp()); + if (grpmag != nullptr) { + LOGF(info, "Init field from GRP"); + o2::base::Propagator::initFieldFromGRP(grpmag); + } + LOGF(info, "Set field for muons"); + o2::mch::TrackExtrap::setField(); + fCurrentRun = bc.runNumber(); + } + const float zField = grpmag->getNominalL3Field(); - o2::track::TrackParCovFwd fwdtrack = o2::aod::fwdtrackutils::getTrackParCovFwdShift(track, 0.0); - if (refitGlobalMuon && (trackType == o2::aod::fwdtrack::ForwardTrackTypeEnum::GlobalMuonTrack || trackType == o2::aod::fwdtrack::ForwardTrackTypeEnum::GlobalForwardTrack)) { - auto muontrack = track.template matchMCHTrack_as(); - auto mfttrack = track.template matchMFTTrack_as(); - o2::dataformats::GlobalFwdTrack propmuon = o2::aod::fwdtrackutils::propagateMuon(muontrack, muontrack, collision, o2::aod::fwdtrackutils::propagationPoint::kToVertex, 0.f, zField); - SMatrix5 tpars(mfttrack.x(), mfttrack.y(), mfttrack.phi(), mfttrack.tgl(), mfttrack.signed1Pt()); - SMatrix55 tcovs{}; - o2::track::TrackParCovFwd mft{mfttrack.z(), tpars, tcovs, mfttrack.chi2()}; - fwdtrack = o2::aod::fwdtrackutils::refitGlobalMuonCov(propmuon, mft); - } - auto proptrack = o2::aod::fwdtrackutils::propagateTrackParCovFwd(fwdtrack, trackType, collision, o2::aod::fwdtrackutils::propagationPoint::kToDCA, 0.f, zField); - dcaX = (proptrack.getX() - collision.posX()); - dcaY = (proptrack.getY() - collision.posY()); + o2::track::TrackParCovFwd fwdtrack = o2::aod::fwdtrackutils::getTrackParCovFwdShift(track, 0.0); + if (refitGlobalMuon && (trackType == o2::aod::fwdtrack::ForwardTrackTypeEnum::GlobalMuonTrack || trackType == o2::aod::fwdtrack::ForwardTrackTypeEnum::GlobalForwardTrack)) { + auto muontrack = track.template matchMCHTrack_as(); + auto mfttrack = track.template matchMFTTrack_as(); + o2::dataformats::GlobalFwdTrack propmuon = o2::aod::fwdtrackutils::propagateMuon(muontrack, muontrack, collision, o2::aod::fwdtrackutils::propagationPoint::kToVertex, 0.f, zField); + SMatrix5 tpars(mfttrack.x(), mfttrack.y(), mfttrack.phi(), mfttrack.tgl(), mfttrack.signed1Pt()); + SMatrix55 tcovs{}; + o2::track::TrackParCovFwd mft{mfttrack.z(), tpars, tcovs, mfttrack.chi2()}; + fwdtrack = o2::aod::fwdtrackutils::refitGlobalMuonCov(propmuon, mft); + } + auto proptrack = o2::aod::fwdtrackutils::propagateTrackParCovFwd(fwdtrack, trackType, collision, o2::aod::fwdtrackutils::propagationPoint::kToDCA, 0.f, zField); + dcaX = (proptrack.getX() - collision.posX()); + dcaY = (proptrack.getY() - collision.posY()); } fwdDCA(dcaX, dcaY); }