From 030515cd5f862f635ed29f2466277420efe86987 Mon Sep 17 00:00:00 2001 From: Lucamicheletti92 Date: Fri, 17 Apr 2026 15:06:45 +0200 Subject: [PATCH 1/4] Update of FwdTrkExt task to improve memory consumption --- Common/TableProducer/fwdtrackextension.cxx | 56 +++++++++++----------- 1 file changed, 29 insertions(+), 27 deletions(-) diff --git a/Common/TableProducer/fwdtrackextension.cxx b/Common/TableProducer/fwdtrackextension.cxx index ea7f6f83093..4ee7891030a 100644 --- a/Common/TableProducer/fwdtrackextension.cxx +++ b/Common/TableProducer/fwdtrackextension.cxx @@ -82,34 +82,36 @@ struct FwdTrackExtension { 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); + if (propInTheAbsorber) { + if (fCurrentRun != bc.runNumber()) { + grpmag = fCCDB->getForTimeStamp(grpmagPath, bc.timestamp()); + if (grpmag != nullptr) { + LOGF(info, "Init field from GRP"); + o2::base::Propagator::initFieldFromGRP(grpmag); + } + if (propInTheAbsorber) { + LOGF(info, "Set field for muons"); + o2::mch::TrackExtrap::setField(); + } + fCurrentRun = bc.runNumber(); } - if (propInTheAbsorber) { - LOGF(info, "Set field for muons"); - o2::mch::TrackExtrap::setField(); - } - fCurrentRun = bc.runNumber(); - } - const float zField = grpmag->getNominalL3Field(); + 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); - } - if (!propInTheAbsorber && (trackType == o2::aod::fwdtrack::ForwardTrackTypeEnum::MuonStandaloneTrack || trackType == o2::aod::fwdtrack::ForwardTrackTypeEnum::MCHStandaloneTrack)) { - 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); + } + if (trackType == o2::aod::fwdtrack::ForwardTrackTypeEnum::MuonStandaloneTrack || trackType == o2::aod::fwdtrack::ForwardTrackTypeEnum::MCHStandaloneTrack) { + 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()); + } } else { dcaX = track.pDca() / std::numbers::sqrt2 / track.p(); dcaY = dcaX; @@ -124,4 +126,4 @@ WorkflowSpec defineDataProcessing(ConfigContext const& cfgc) { WorkflowSpec workflow{adaptAnalysisTask(cfgc)}; return workflow; -} +} \ No newline at end of file From 3d9f226a60efa7d9c6c1be7bd0edbcc820a62d5f Mon Sep 17 00:00:00 2001 From: Lucamicheletti92 Date: Fri, 17 Apr 2026 15:08:42 +0200 Subject: [PATCH 2/4] Fix clang --- Common/TableProducer/fwdtrackextension.cxx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Common/TableProducer/fwdtrackextension.cxx b/Common/TableProducer/fwdtrackextension.cxx index 4ee7891030a..45b3a1fce73 100644 --- a/Common/TableProducer/fwdtrackextension.cxx +++ b/Common/TableProducer/fwdtrackextension.cxx @@ -126,4 +126,4 @@ WorkflowSpec defineDataProcessing(ConfigContext const& cfgc) { WorkflowSpec workflow{adaptAnalysisTask(cfgc)}; return workflow; -} \ No newline at end of file +} From 6b321f521a2701ef51701fef9eeb58eb923a5a60 Mon Sep 17 00:00:00 2001 From: Lucamicheletti92 Date: Fri, 17 Apr 2026 15:42:47 +0200 Subject: [PATCH 3/4] removing useless condition --- Common/TableProducer/fwdtrackextension.cxx | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/Common/TableProducer/fwdtrackextension.cxx b/Common/TableProducer/fwdtrackextension.cxx index 45b3a1fce73..706ee19db53 100644 --- a/Common/TableProducer/fwdtrackextension.cxx +++ b/Common/TableProducer/fwdtrackextension.cxx @@ -89,10 +89,8 @@ struct FwdTrackExtension { LOGF(info, "Init field from GRP"); o2::base::Propagator::initFieldFromGRP(grpmag); } - if (propInTheAbsorber) { - LOGF(info, "Set field for muons"); - o2::mch::TrackExtrap::setField(); - } + LOGF(info, "Set field for muons"); + o2::mch::TrackExtrap::setField(); fCurrentRun = bc.runNumber(); } const float zField = grpmag->getNominalL3Field(); From 0bddcaeee0572c0778654806c97f31804f97f71d Mon Sep 17 00:00:00 2001 From: Lucamicheletti92 Date: Fri, 17 Apr 2026 19:55:59 +0200 Subject: [PATCH 4/4] Back to minimal fix --- Common/TableProducer/fwdtrackextension.cxx | 50 +++++++++++----------- 1 file changed, 25 insertions(+), 25 deletions(-) diff --git a/Common/TableProducer/fwdtrackextension.cxx b/Common/TableProducer/fwdtrackextension.cxx index 706ee19db53..17b8f99fa88 100644 --- a/Common/TableProducer/fwdtrackextension.cxx +++ b/Common/TableProducer/fwdtrackextension.cxx @@ -82,37 +82,37 @@ struct FwdTrackExtension { if (track.has_collision()) { auto const& collision = track.collision(); auto bc = collision.template bc_as(); - if (propInTheAbsorber) { - if (fCurrentRun != bc.runNumber()) { - grpmag = fCCDB->getForTimeStamp(grpmagPath, bc.timestamp()); - if (grpmag != nullptr) { - LOGF(info, "Init field from GRP"); - o2::base::Propagator::initFieldFromGRP(grpmag); - } + if (fCurrentRun != bc.runNumber()) { + grpmag = fCCDB->getForTimeStamp(grpmagPath, bc.timestamp()); + if (grpmag != nullptr) { + LOGF(info, "Init field from GRP"); + o2::base::Propagator::initFieldFromGRP(grpmag); + } + if (propInTheAbsorber) { LOGF(info, "Set field for muons"); o2::mch::TrackExtrap::setField(); - fCurrentRun = bc.runNumber(); } - const float zField = grpmag->getNominalL3Field(); + 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); - } - if (trackType == o2::aod::fwdtrack::ForwardTrackTypeEnum::MuonStandaloneTrack || trackType == o2::aod::fwdtrack::ForwardTrackTypeEnum::MCHStandaloneTrack) { - 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()); - } - } else { + 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); + } + if (!propInTheAbsorber && (trackType == o2::aod::fwdtrack::ForwardTrackTypeEnum::MuonStandaloneTrack || trackType == o2::aod::fwdtrack::ForwardTrackTypeEnum::MCHStandaloneTrack)) { dcaX = track.pDca() / std::numbers::sqrt2 / track.p(); dcaY = dcaX; + } else { + 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);