From 549aa226316ed3edb1b6379285766f3428ef0877 Mon Sep 17 00:00:00 2001 From: Felix Schlepper Date: Sun, 22 Jun 2025 17:44:58 +0200 Subject: [PATCH] ITS3: fix tracking after refactor Signed-off-by: Felix Schlepper --- .../tracking/include/ITStracking/TimeFrame.h | 3 +- .../ITSMFT/ITS/tracking/src/TimeFrame.cxx | 30 +++++++++++-------- .../ITS3/reconstruction/src/IOUtils.cxx | 2 ++ 3 files changed, 22 insertions(+), 13 deletions(-) diff --git a/Detectors/ITSMFT/ITS/tracking/include/ITStracking/TimeFrame.h b/Detectors/ITSMFT/ITS/tracking/include/ITStracking/TimeFrame.h index 248e63aef382c..8b857df7cdd80 100644 --- a/Detectors/ITSMFT/ITS/tracking/include/ITStracking/TimeFrame.h +++ b/Detectors/ITSMFT/ITS/tracking/include/ITStracking/TimeFrame.h @@ -91,6 +91,7 @@ struct TimeFrame { gsl::span::iterator& pattIt, const itsmft::TopologyDictionary* dict, const dataformats::MCTruthContainer* mcLabels = nullptr); + void resetROFrameData(); int getTotalClusters() const; auto& getTotVertIteration() { return mTotVertPerIteration; } @@ -138,7 +139,7 @@ struct TimeFrame { gsl::span getClusterLabels(int layerId, const int clId) const { return mClusterLabels->getLabels(mClusterExternalIndices[layerId][clId]); } int getClusterExternalIndex(int layerId, const int clId) const { return mClusterExternalIndices[layerId][clId]; } int getClusterSize(int clusterId) const { return mClusterSize[clusterId]; } - void setClusterSize(const bounded_vector& v) { mClusterSize = v; } + void setClusterSize(bounded_vector& v) { mClusterSize = std::move(v); } auto& getTrackletsLabel(int layer) { return mTrackletLabels[layer]; } auto& getCellsLabel(int layer) { return mCellLabels[layer]; } diff --git a/Detectors/ITSMFT/ITS/tracking/src/TimeFrame.cxx b/Detectors/ITSMFT/ITS/tracking/src/TimeFrame.cxx index 1a3132413c450..9c683112791ab 100644 --- a/Detectors/ITSMFT/ITS/tracking/src/TimeFrame.cxx +++ b/Detectors/ITSMFT/ITS/tracking/src/TimeFrame.cxx @@ -136,18 +136,7 @@ int TimeFrame::loadROFrameData(gsl::span rofs, const itsmft::TopologyDictionary* dict, const dataformats::MCTruthContainer* mcLabels) { - for (int iLayer{0}; iLayer < nLayers; ++iLayer) { - deepVectorClear(mUnsortedClusters[iLayer], mMemoryPool.get()); - deepVectorClear(mTrackingFrameInfo[iLayer], mMemoryPool.get()); - deepVectorClear(mClusterExternalIndices[iLayer], mMemoryPool.get()); - clearResizeBoundedVector(mROFramesClusters[iLayer], 1, mMemoryPool.get(), 0); - - if (iLayer < 2) { - deepVectorClear(mTrackletsIndexROF[iLayer], mMemoryPool.get()); - deepVectorClear(mNTrackletsPerCluster[iLayer], mMemoryPool.get()); - deepVectorClear(mNTrackletsPerClusterSum[iLayer], mMemoryPool.get()); - } - } + resetROFrameData(); GeometryTGeo* geom = GeometryTGeo::Instance(); geom->fillMatrixCache(o2::math_utils::bit2Mask(o2::math_utils::TransformType::T2L, o2::math_utils::TransformType::L2G)); @@ -213,6 +202,23 @@ int TimeFrame::loadROFrameData(gsl::span rofs, return mNrof; } +template +void TimeFrame::resetROFrameData() +{ + for (int iLayer{0}; iLayer < nLayers; ++iLayer) { + deepVectorClear(mUnsortedClusters[iLayer], mMemoryPool.get()); + deepVectorClear(mTrackingFrameInfo[iLayer], mMemoryPool.get()); + deepVectorClear(mClusterExternalIndices[iLayer], mMemoryPool.get()); + clearResizeBoundedVector(mROFramesClusters[iLayer], 1, mMemoryPool.get(), 0); + + if (iLayer < 2) { + deepVectorClear(mTrackletsIndexROF[iLayer], mMemoryPool.get()); + deepVectorClear(mNTrackletsPerCluster[iLayer], mMemoryPool.get()); + deepVectorClear(mNTrackletsPerClusterSum[iLayer], mMemoryPool.get()); + } + } +} + template void TimeFrame::prepareClusters(const TrackingParameters& trkParam, const int maxLayers) { diff --git a/Detectors/Upgrades/ITS3/reconstruction/src/IOUtils.cxx b/Detectors/Upgrades/ITS3/reconstruction/src/IOUtils.cxx index a01eb77af1677..acba8022e376f 100644 --- a/Detectors/Upgrades/ITS3/reconstruction/src/IOUtils.cxx +++ b/Detectors/Upgrades/ITS3/reconstruction/src/IOUtils.cxx @@ -64,6 +64,8 @@ int loadROFrameDataITS3(its::TimeFrame<7>* tf, const its3::TopologyDictionary* dict, const dataformats::MCTruthContainer* mcLabels) { + tf->resetROFrameData(); + auto geom = its::GeometryTGeo::Instance(); geom->fillMatrixCache(o2::math_utils::bit2Mask(o2::math_utils::TransformType::T2L, o2::math_utils::TransformType::L2G));