From 7aab9ef525dfc6db27e205fea0d942b2b9f5f807 Mon Sep 17 00:00:00 2001 From: shahoian Date: Tue, 9 Sep 2025 17:40:19 +0200 Subject: [PATCH] MCStudy: fix ITS/TPC extrapolation, optionally add TPC track.refs --- .../GlobalTrackingWorkflow/study/CMakeLists.txt | 2 +- .../GlobalTrackingStudy/TrackMCStudyConfig.h | 1 + .../GlobalTrackingStudy/TrackMCStudyTypes.h | 3 ++- .../study/src/TrackMCStudy.cxx | 15 ++++++++++++--- 4 files changed, 16 insertions(+), 5 deletions(-) diff --git a/Detectors/GlobalTrackingWorkflow/study/CMakeLists.txt b/Detectors/GlobalTrackingWorkflow/study/CMakeLists.txt index 776d3946283c3..ab900c7efd87b 100644 --- a/Detectors/GlobalTrackingWorkflow/study/CMakeLists.txt +++ b/Detectors/GlobalTrackingWorkflow/study/CMakeLists.txt @@ -9,7 +9,7 @@ # granted to it by virtue of its status as an Intergovernmental Organization # or submit itself to any jurisdiction. -#add_compile_options(-O0 -g -fPIC) +add_compile_options(-O0 -g -fPIC) o2_add_library(GlobalTrackingStudy TARGETVARNAME targetName diff --git a/Detectors/GlobalTrackingWorkflow/study/include/GlobalTrackingStudy/TrackMCStudyConfig.h b/Detectors/GlobalTrackingWorkflow/study/include/GlobalTrackingStudy/TrackMCStudyConfig.h index 74d77eb3d53de..2b92c00a989cf 100644 --- a/Detectors/GlobalTrackingWorkflow/study/include/GlobalTrackingStudy/TrackMCStudyConfig.h +++ b/Detectors/GlobalTrackingWorkflow/study/include/GlobalTrackingStudy/TrackMCStudyConfig.h @@ -27,6 +27,7 @@ struct TrackMCStudyConfig : o2::conf::ConfigurableParamHelper occTPCV{}; + std::vector trackRefsTPC{}; o2::track::TrackPar track{}; o2::MCCompLabel label{}; float occTPC = -1.f; @@ -73,7 +74,7 @@ struct MCTrackInfo { float getTrackParTPCPar(int i, float b, float x = 90) const; float getTrackParTPCPhiSec(float b, float x = 90) const; - ClassDefNV(MCTrackInfo, 7); + ClassDefNV(MCTrackInfo, 8); }; struct RecTrack { diff --git a/Detectors/GlobalTrackingWorkflow/study/src/TrackMCStudy.cxx b/Detectors/GlobalTrackingWorkflow/study/src/TrackMCStudy.cxx index 531a4ec746ccf..9dba400fe6edc 100644 --- a/Detectors/GlobalTrackingWorkflow/study/src/TrackMCStudy.cxx +++ b/Detectors/GlobalTrackingWorkflow/study/src/TrackMCStudy.cxx @@ -507,7 +507,7 @@ void TrackMCStudy::process(const o2::globaltracking::RecoContainer& recoData) } LOGP(info, "collected {} MC tracks", mSelMCTracks.size()); - if (params.minTPCRefsToExtractClRes > 0) { // prepare MC trackrefs for TPC + if (params.minTPCRefsToExtractClRes > 0 || params.storeTPCTrackRefs) { // prepare MC trackrefs for TPC processTPCTrackRefs(); } @@ -532,6 +532,15 @@ void TrackMCStudy::process(const o2::globaltracking::RecoContainer& recoData) } return lhs.gid.getSource() > rhs.gid.getSource(); }); + if (params.storeTPCTrackRefs) { + auto rft = mSelTRefIdx.find(entry.first); + if (rft != mSelTRefIdx.end()) { + auto rfent = rft->second; + for (int irf = rfent.first; irf < rfent.second; irf++) { + trackFam.mcTrackInfo.trackRefsTPC.push_back(mSelTRefs[irf]); + } + } + } // fill track params int tcnt = 0; for (auto& tref : tracks) { @@ -598,8 +607,8 @@ void TrackMCStudy::process(const o2::globaltracking::RecoContainer& recoData) tcnt++; } if (trackFam.entITS > -1 && trackFam.entTPC > -1) { // ITS and TPC were found but matching failed - auto vidITS = tracks[trackFam.entITS].gid; - auto vidTPC = tracks[trackFam.entTPC].gid; + auto vidITS = recoData.getITSContributorGID(tracks[trackFam.entITS].gid); + auto vidTPC = recoData.getTPCContributorGID(tracks[trackFam.entTPC].gid); auto trcTPC = recoData.getTrackParam(vidTPC); auto trcITS = recoData.getTrackParamOut(vidITS); if (propagateToRefX(trcTPC, trcITS)) {