From 99f03792117717dc0d92acee58d62db7e5f6bd9b Mon Sep 17 00:00:00 2001 From: Maurice Coquet Date: Thu, 2 Oct 2025 16:56:02 +0200 Subject: [PATCH 1/2] Possibility to deactivate track propagation for ML matching --- PWGDQ/Core/MuonMatchingMlResponse.h | 11 +++++------ PWGDQ/TableProducer/tableMakerMC_withAssoc.cxx | 10 +++++++--- PWGDQ/TableProducer/tableMaker_withAssoc.cxx | 10 +++++++--- 3 files changed, 19 insertions(+), 12 deletions(-) diff --git a/PWGDQ/Core/MuonMatchingMlResponse.h b/PWGDQ/Core/MuonMatchingMlResponse.h index a77deb53397..236a4f48329 100644 --- a/PWGDQ/Core/MuonMatchingMlResponse.h +++ b/PWGDQ/Core/MuonMatchingMlResponse.h @@ -263,8 +263,8 @@ class MlResponseMFTMuonMatch : public MlResponse return inputFeature; } - template - float returnFeatureGlob(uint8_t idx, T1 const& muonglob, T2 const& muon, T3 const& mft, C1 const& mftcov, U const& collision) + template + float returnFeatureGlob(uint8_t idx, T1 const& muonglob, T2 const& muon, T3 const& mft, U const& collision) { float inputFeature = 0.; switch (idx) { @@ -285,7 +285,6 @@ class MlResponseMFTMuonMatch : public MlResponse CHECK_AND_FILL_MUONGLOB_TRACK(Rabs, rAtAbsorberEnd); // Below are dummy files to remove warning of unused parameters CHECK_AND_FILL_MFTMUON_COLLISION(posZ); - CHECK_AND_FILL_MFT_COV(cXXMFT, cXX); } return inputFeature; } @@ -325,12 +324,12 @@ class MlResponseMFTMuonMatch : public MlResponse return inputFeatures; } - template - std::vector getInputFeaturesGlob(T1 const& muonglob, T2 const& muon, T3 const& mft, C1 const& mftcov, U const& collision) + template + std::vector getInputFeaturesGlob(T1 const& muonglob, T2 const& muon, T3 const& mft, U const& collision) { std::vector inputFeatures; for (const auto& idx : MlResponse::mCachedIndices) { - float inputFeature = returnFeatureGlob(idx, muonglob, muon, mft, mftcov, collision); + float inputFeature = returnFeatureGlob(idx, muonglob, muon, mft, collision); inputFeatures.emplace_back(inputFeature); } return inputFeatures; diff --git a/PWGDQ/TableProducer/tableMakerMC_withAssoc.cxx b/PWGDQ/TableProducer/tableMakerMC_withAssoc.cxx index 23cfd2d9042..9da00a80646 100644 --- a/PWGDQ/TableProducer/tableMakerMC_withAssoc.cxx +++ b/PWGDQ/TableProducer/tableMakerMC_withAssoc.cxx @@ -939,12 +939,16 @@ struct TableMakerMC { if (static_cast(muon.trackType()) < 2) { auto muonID = muon.matchMCHTrackId(); auto muontrack = muon.template matchMCHTrack_as(); - auto muonprop = VarManager::PropagateMuon(muontrack, collision, VarManager::kToMatching); auto mfttrack = muon.template matchMFTTrack_as(); auto const& mfttrackcov = mfCovs.rawIteratorAt(map_mfttrackcovs[mfttrack.globalIndex()]); - o2::track::TrackParCovFwd mftprop = VarManager::PropagateFwd(mfttrack, mfttrackcov, VarManager::GetMatchingPlane()); + o2::track::TrackParCovFwd mftprop = VarManager::FwdToTrackPar(mfttrack, mfttrackcov); + o2::dataformats::GlobalFwdTrack muonprop = VarManager::FwdToTrackPar(muontrack, muontrack); + if (fConfigVariousOptions.fzMatching.value < 0.){ + mftprop = VarManager::PropagateFwd(mfttrack, mfttrackcov, fConfigVariousOptions.fzMatching.value); + muonprop = VarManager::PropagateMuon(muontrack, collision, VarManager::kToMatching); + } std::vector output; - std::vector inputML = matchingMlResponse.getInputFeaturesGlob(muon, muonprop, mftprop, mfttrackcov, collision); + std::vector inputML = matchingMlResponse.getInputFeaturesGlob(muon, muonprop, mftprop, collision); matchingMlResponse.isSelectedMl(inputML, 0, output); float score = output[0]; if (mCandidates.find(muonID) == mCandidates.end()) { diff --git a/PWGDQ/TableProducer/tableMaker_withAssoc.cxx b/PWGDQ/TableProducer/tableMaker_withAssoc.cxx index 415c237d3ad..99e4d14ddf5 100644 --- a/PWGDQ/TableProducer/tableMaker_withAssoc.cxx +++ b/PWGDQ/TableProducer/tableMaker_withAssoc.cxx @@ -1193,12 +1193,16 @@ struct TableMaker { if (static_cast(muon.trackType()) < 2) { auto muonID = muon.matchMCHTrackId(); auto muontrack = muon.template matchMCHTrack_as(); - auto muonprop = VarManager::PropagateMuon(muontrack, collision, VarManager::kToMatching); auto mfttrack = muon.template matchMFTTrack_as(); auto const& mfttrackcov = mfCovs.rawIteratorAt(map_mfttrackcovs[mfttrack.globalIndex()]); - o2::track::TrackParCovFwd mftprop = VarManager::PropagateFwd(mfttrack, mfttrackcov, VarManager::GetMatchingPlane()); + o2::track::TrackParCovFwd mftprop = VarManager::FwdToTrackPar(mfttrack, mfttrackcov); + o2::dataformats::GlobalFwdTrack muonprop = VarManager::FwdToTrackPar(muontrack, muontrack); + if (fConfigVariousOptions.fzMatching.value < 0.){ + mftprop = VarManager::PropagateFwd(mfttrack, mfttrackcov, fConfigVariousOptions.fzMatching.value); + muonprop = VarManager::PropagateMuon(muontrack, collision, VarManager::kToMatching); + } std::vector output; - std::vector inputML = matchingMlResponse.getInputFeaturesGlob(muon, muonprop, mftprop, mfttrackcov, collision); + std::vector inputML = matchingMlResponse.getInputFeaturesGlob(muon, muonprop, mftprop, collision); matchingMlResponse.isSelectedMl(inputML, 0, output); float score = output[0]; if (mCandidates.find(muonID) == mCandidates.end()) { From dc7362c2b73d4289ea815d0fa79ad1f11265ddb0 Mon Sep 17 00:00:00 2001 From: ALICE Action Bot Date: Thu, 2 Oct 2025 15:03:03 +0000 Subject: [PATCH 2/2] Please consider the following formatting changes --- PWGDQ/TableProducer/tableMakerMC_withAssoc.cxx | 2 +- PWGDQ/TableProducer/tableMaker_withAssoc.cxx | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/PWGDQ/TableProducer/tableMakerMC_withAssoc.cxx b/PWGDQ/TableProducer/tableMakerMC_withAssoc.cxx index 9da00a80646..f9be380c416 100644 --- a/PWGDQ/TableProducer/tableMakerMC_withAssoc.cxx +++ b/PWGDQ/TableProducer/tableMakerMC_withAssoc.cxx @@ -943,7 +943,7 @@ struct TableMakerMC { auto const& mfttrackcov = mfCovs.rawIteratorAt(map_mfttrackcovs[mfttrack.globalIndex()]); o2::track::TrackParCovFwd mftprop = VarManager::FwdToTrackPar(mfttrack, mfttrackcov); o2::dataformats::GlobalFwdTrack muonprop = VarManager::FwdToTrackPar(muontrack, muontrack); - if (fConfigVariousOptions.fzMatching.value < 0.){ + if (fConfigVariousOptions.fzMatching.value < 0.) { mftprop = VarManager::PropagateFwd(mfttrack, mfttrackcov, fConfigVariousOptions.fzMatching.value); muonprop = VarManager::PropagateMuon(muontrack, collision, VarManager::kToMatching); } diff --git a/PWGDQ/TableProducer/tableMaker_withAssoc.cxx b/PWGDQ/TableProducer/tableMaker_withAssoc.cxx index 99e4d14ddf5..a8c39eeb184 100644 --- a/PWGDQ/TableProducer/tableMaker_withAssoc.cxx +++ b/PWGDQ/TableProducer/tableMaker_withAssoc.cxx @@ -1195,12 +1195,12 @@ struct TableMaker { auto muontrack = muon.template matchMCHTrack_as(); auto mfttrack = muon.template matchMFTTrack_as(); auto const& mfttrackcov = mfCovs.rawIteratorAt(map_mfttrackcovs[mfttrack.globalIndex()]); - o2::track::TrackParCovFwd mftprop = VarManager::FwdToTrackPar(mfttrack, mfttrackcov); - o2::dataformats::GlobalFwdTrack muonprop = VarManager::FwdToTrackPar(muontrack, muontrack); - if (fConfigVariousOptions.fzMatching.value < 0.){ + o2::track::TrackParCovFwd mftprop = VarManager::FwdToTrackPar(mfttrack, mfttrackcov); + o2::dataformats::GlobalFwdTrack muonprop = VarManager::FwdToTrackPar(muontrack, muontrack); + if (fConfigVariousOptions.fzMatching.value < 0.) { mftprop = VarManager::PropagateFwd(mfttrack, mfttrackcov, fConfigVariousOptions.fzMatching.value); muonprop = VarManager::PropagateMuon(muontrack, collision, VarManager::kToMatching); - } + } std::vector output; std::vector inputML = matchingMlResponse.getInputFeaturesGlob(muon, muonprop, mftprop, collision); matchingMlResponse.isSelectedMl(inputML, 0, output);