From e700e09af60d90633c45586e578d2a63a6d75eb3 Mon Sep 17 00:00:00 2001 From: Fabrizio Grosa Date: Tue, 25 Apr 2023 21:39:22 +0200 Subject: [PATCH] Adapt tracker to work with 8 layers for ITS3 --- Detectors/ITSMFT/ITS/tracking/CMakeLists.txt | 7 +++++++ .../tracking/include/ITStracking/IndexTableUtils.h | 4 ++-- .../ITSMFT/ITS/tracking/include/ITStracking/Road.h | 4 ++++ .../ITS/tracking/include/ITStracking/TimeFrame.h | 2 ++ .../tracking/include/ITStracking/TrackerTraits.h | 2 +- Detectors/ITSMFT/ITS/tracking/src/TimeFrame.cxx | 14 ++++++++++++++ 6 files changed, 30 insertions(+), 3 deletions(-) diff --git a/Detectors/ITSMFT/ITS/tracking/CMakeLists.txt b/Detectors/ITSMFT/ITS/tracking/CMakeLists.txt index 16a1595a2d6c5..25e19f6a4ee00 100644 --- a/Detectors/ITSMFT/ITS/tracking/CMakeLists.txt +++ b/Detectors/ITSMFT/ITS/tracking/CMakeLists.txt @@ -9,6 +9,13 @@ # granted to it by virtue of its status as an Intergovernmental Organization # or submit itself to any jurisdiction. +# see if its3 4-layer tracking option is enabled +option(ENABLE_ITS3_4L "Enable its3 4-layer tracking option" OFF) +if (ENABLE_ITS3_4L) + MESSAGE(STATUS "Enable its3 4-layer tracking option") + add_definitions(-DENABLE_ITS3_4L) +endif() + o2_add_library(ITStracking TARGETVARNAME targetName SOURCES src/ClusterLines.cxx diff --git a/Detectors/ITSMFT/ITS/tracking/include/ITStracking/IndexTableUtils.h b/Detectors/ITSMFT/ITS/tracking/include/ITStracking/IndexTableUtils.h index 9bdc3a813092d..ed4027f77f360 100644 --- a/Detectors/ITSMFT/ITS/tracking/include/ITStracking/IndexTableUtils.h +++ b/Detectors/ITSMFT/ITS/tracking/include/ITStracking/IndexTableUtils.h @@ -48,8 +48,8 @@ class IndexTableUtils int mNzBins = 0; int mNphiBins = 0; float mInversePhiBinSize = 0.f; - float mLayerZ[7] = {0.f, 0.f, 0.f, 0.f, 0.f, 0.f, 0.f}; - float mInverseZBinSize[7] = {0.f, 0.f, 0.f, 0.f, 0.f, 0.f, 0.f}; + float mLayerZ[8] = {0.f, 0.f, 0.f, 0.f, 0.f, 0.f, 0.f, 0.f}; + float mInverseZBinSize[8] = {0.f, 0.f, 0.f, 0.f, 0.f, 0.f, 0.f, 0.f}; }; template diff --git a/Detectors/ITSMFT/ITS/tracking/include/ITStracking/Road.h b/Detectors/ITSMFT/ITS/tracking/include/ITStracking/Road.h index 06a6933d39834..6ffc82c637334 100644 --- a/Detectors/ITSMFT/ITS/tracking/include/ITStracking/Road.h +++ b/Detectors/ITSMFT/ITS/tracking/include/ITStracking/Road.h @@ -60,7 +60,11 @@ class Road final } private: +#ifndef ENABLE_ITS3_4L int mCellIds[maxRoadSize]; +#else + int mCellIds[maxRoadSize + 1]; +#endif // int mLabel; unsigned char mRoadSize; bool mIsFakeRoad; diff --git a/Detectors/ITSMFT/ITS/tracking/include/ITStracking/TimeFrame.h b/Detectors/ITSMFT/ITS/tracking/include/ITStracking/TimeFrame.h index f09a3778a9471..f21bb813af1ba 100644 --- a/Detectors/ITSMFT/ITS/tracking/include/ITStracking/TimeFrame.h +++ b/Detectors/ITSMFT/ITS/tracking/include/ITStracking/TimeFrame.h @@ -202,6 +202,8 @@ class TimeFrame void addTrackingFrameInfoToLayer(int layer, T&&... args); void addClusterExternalIndexToLayer(int layer, const int idx); + void resizeVectors(int nLayers); + /// Debug and printing void checkTrackletLUTs(); void printROFoffsets(); diff --git a/Detectors/ITSMFT/ITS/tracking/include/ITStracking/TrackerTraits.h b/Detectors/ITSMFT/ITS/tracking/include/ITStracking/TrackerTraits.h index e468a3628f82c..171b45afbd22d 100644 --- a/Detectors/ITSMFT/ITS/tracking/include/ITStracking/TrackerTraits.h +++ b/Detectors/ITSMFT/ITS/tracking/include/ITStracking/TrackerTraits.h @@ -136,7 +136,7 @@ inline const int4 TrackerTraits::getBinsRect(const Cluster& currentCluster, int inline void TrackerTraits::initialiseTimeFrame(const int iteration) { - mTimeFrame->initialise(iteration, mTrkParams[iteration], 7); + mTimeFrame->initialise(iteration, mTrkParams[iteration], mTrkParams[iteration].NLayers); setIsGPU(false); } diff --git a/Detectors/ITSMFT/ITS/tracking/src/TimeFrame.cxx b/Detectors/ITSMFT/ITS/tracking/src/TimeFrame.cxx index 2a0eeb1902fb6..05233cac73602 100644 --- a/Detectors/ITSMFT/ITS/tracking/src/TimeFrame.cxx +++ b/Detectors/ITSMFT/ITS/tracking/src/TimeFrame.cxx @@ -455,6 +455,20 @@ void TimeFrame::checkTrackletLUTs() } } +void TimeFrame::resizeVectors(int nLayers) +{ + mMinR.resize(nLayers, 10000.); + mMaxR.resize(nLayers, -1.); + mClusters.resize(nLayers); + mUnsortedClusters.resize(nLayers); + mTrackingFrameInfo.resize(nLayers); + mClusterExternalIndices.resize(nLayers); + mUsedClusters.resize(nLayers); + mROframesClusters.resize(nLayers, {0}); + mNClustersPerROF.resize(nLayers); + mTrackletsIndexROf.resize(2, {0}); +} + void TimeFrame::printTrackletLUTonLayer(int i) { std::cout << "--------" << std::endl