From 10ceb49e85d63dcc653ec7648589efc8b28ee015 Mon Sep 17 00:00:00 2001 From: fchinu Date: Mon, 18 May 2026 10:56:22 +0200 Subject: [PATCH 1/2] Refactor selection function, return simple int instead of reference to int --- .../ITS/include/DataFormatsITS/TrackITS.h | 4 +- .../include/ITStracking/Configuration.h | 2 +- .../include/ITStracking/TrackerTraits.h | 2 - .../include/ITStracking/TrackingConfigParam.h | 4 +- .../ITSMFT/ITS/tracking/src/TrackerTraits.cxx | 42 ++++++++----------- 5 files changed, 23 insertions(+), 31 deletions(-) diff --git a/DataFormats/Detectors/ITSMFT/ITS/include/DataFormatsITS/TrackITS.h b/DataFormats/Detectors/ITSMFT/ITS/include/DataFormatsITS/TrackITS.h index 7f656e873960b..89f6416c6e177 100644 --- a/DataFormats/Detectors/ITSMFT/ITS/include/DataFormatsITS/TrackITS.h +++ b/DataFormats/Detectors/ITSMFT/ITS/include/DataFormatsITS/TrackITS.h @@ -192,9 +192,9 @@ class TrackITSExt : public TrackITS getClusterRefs().setEntries(ncl); } - GPUhdi() const int& getClusterIndex(int lr) const { return mIndex[lr]; } + GPUhdi() const int getClusterIndex(int lr) const { return mIndex[lr]; } - GPUh() const int& getFirstLayerClusterIndex() const + GPUh() const int getFirstLayerClusterIndex() const { int firstLayer = getFirstClusterLayer(); return getClusterIndex(firstLayer); diff --git a/Detectors/ITSMFT/ITS/tracking/include/ITStracking/Configuration.h b/Detectors/ITSMFT/ITS/tracking/include/ITStracking/Configuration.h index 8426d5fb5e711..852c5ecd24633 100644 --- a/Detectors/ITSMFT/ITS/tracking/include/ITStracking/Configuration.h +++ b/Detectors/ITSMFT/ITS/tracking/include/ITStracking/Configuration.h @@ -70,7 +70,6 @@ struct TrackingParameters { float DiamondCov[6] = {25.e-6f, 0.f, 0.f, 25.e-6f, 0.f, 36.f}; /// General parameters - bool AllowSharingFirstCluster = false; int ClusterSharing = 0; int MinTrackLength = 7; int MaxHoles = 0; @@ -100,6 +99,7 @@ struct TrackingParameters { bool DropTFUponFailure = false; // Selections on tracks sharing clusters + bool AllowSharingFirstCluster = false; float SharedClusterMaxDeltaPhi = 0.05f; // For tracks sharing clusters, maximum allowed delta phi at the cluster position float SharedClusterMaxDeltaEta = 0.03f; // For tracks sharing clusters, maximum allowed delta eta at the cluster position bool SharedClusterOppositeSign = false; // For tracks sharing clusters, require opposite sign of the tracklets diff --git a/Detectors/ITSMFT/ITS/tracking/include/ITStracking/TrackerTraits.h b/Detectors/ITSMFT/ITS/tracking/include/ITStracking/TrackerTraits.h index 0318461434ef6..647403bb6b548 100644 --- a/Detectors/ITSMFT/ITS/tracking/include/ITStracking/TrackerTraits.h +++ b/Detectors/ITSMFT/ITS/tracking/include/ITStracking/TrackerTraits.h @@ -58,8 +58,6 @@ class TrackerTraits void acceptTracks(int iteration, bounded_vector& tracks, bounded_vector>& firstClusters, bounded_vector>& sharedFirstClusters); void markTracks(int iteration, bounded_vector>& sharedFirstClusters); - bool areTracksSelected(int iteration, const TrackITSExt& t1, const TrackITSExt& t2); - void updateTrackingParameters(const std::vector& trkPars) { mTrkParams = trkPars; diff --git a/Detectors/ITSMFT/ITS/tracking/include/ITStracking/TrackingConfigParam.h b/Detectors/ITSMFT/ITS/tracking/include/ITStracking/TrackingConfigParam.h index a2f37751ddd38..77947514e380c 100644 --- a/Detectors/ITSMFT/ITS/tracking/include/ITStracking/TrackingConfigParam.h +++ b/Detectors/ITSMFT/ITS/tracking/include/ITStracking/TrackingConfigParam.h @@ -102,9 +102,9 @@ struct TrackerParamConfig : public o2::conf::ConfigurableParamHelper::max(); bool dropTFUponFailure = false; bool fataliseUponFailure = true; // granular management of the fatalisation in async mode - bool allowSharingFirstCluster = false; // allow first cluster sharing among tracks - + // Selections on tracks sharing clusters + bool allowSharingFirstCluster = false; // allow first cluster sharing among tracks float sharedClusterMaxDeltaPhi = 0.05f; // Maximum allowed delta phi at the cluster position float sharedClusterMaxDeltaEta = 0.03f; // Maximum allowed delta eta at the cluster position bool sharedClusterOppositeSign = false; // Require opposite sign of the tracklets diff --git a/Detectors/ITSMFT/ITS/tracking/src/TrackerTraits.cxx b/Detectors/ITSMFT/ITS/tracking/src/TrackerTraits.cxx index e068e2d568502..e0aacd9399529 100644 --- a/Detectors/ITSMFT/ITS/tracking/src/TrackerTraits.cxx +++ b/Detectors/ITSMFT/ITS/tracking/src/TrackerTraits.cxx @@ -881,6 +881,23 @@ void TrackerTraits::markTracks(int iteration, bounded_vectorgetClusterROF(t1FirstLayer, t1.getClusterIndex(t1FirstLayer)) != mTimeFrame->getClusterROF(t2FirstLayer, t2.getClusterIndex(t2FirstLayer))) { + return false; + } + if (o2::math_utils::detail::deltaPhiSmall(t1.getPhi(), t2.getPhi()) > mTrkParams[iteration].SharedClusterMaxDeltaPhi) { + return false; + } + if (std::abs(t1.getEta() - t2.getEta()) > mTrkParams[iteration].SharedClusterMaxDeltaEta) { + return false; + } + if (mTrkParams[iteration].SharedClusterOppositeSign && t1.getSign() == t2.getSign()) { + return false; + } + return true; + }; + for (int i{0}; i < static_cast(tracks.size()); ++i) { auto& track = tracks[i]; int firstLayer{track.getFirstClusterLayer()}, firstCluster{track.getFirstLayerClusterIndex()}; @@ -888,11 +905,7 @@ void TrackerTraits::markTracks(int iteration, bounded_vector(tracks.size()) && tracks[j].getFirstLayerClusterIndex() == firstCluster) { auto& track2 = tracks[j]; - if (areTracksSelected(iteration, track, track2)) { - for (int iLayer{track.getFirstClusterLayer()}; iLayer < track.getFirstClusterLayer() + track.getNClusters(); ++iLayer) { - } - for (int iLayer{track2.getFirstClusterLayer()}; iLayer < track2.getFirstClusterLayer() + track2.getNClusters(); ++iLayer) { - } + if (areTracksSelected(track, track2)) { track.setSharedClusters(); track2.setSharedClusters(); } @@ -903,25 +916,6 @@ void TrackerTraits::markTracks(int iteration, bounded_vector -bool TrackerTraits::areTracksSelected(int iteration, const TrackITSExt& t1, const TrackITSExt& t2) -{ - const auto t1FirstLayer{t1.getFirstClusterLayer()}, t2FirstLayer{t2.getFirstClusterLayer()}; - if (mTimeFrame->getClusterROF(t1FirstLayer, t1.getClusterIndex(t1FirstLayer)) != mTimeFrame->getClusterROF(t2FirstLayer, t2.getClusterIndex(t2FirstLayer))) { - return false; - } - if (o2::math_utils::detail::deltaPhiSmall(t1.getPhi(), t2.getPhi()) > mTrkParams[iteration].SharedClusterMaxDeltaPhi) { - return false; - } - if (std::abs(t1.getEta() - t2.getEta()) > mTrkParams[iteration].SharedClusterMaxDeltaEta) { - return false; - } - if (mTrkParams[iteration].SharedClusterOppositeSign && t1.getSign() == t2.getSign()) { - return false; - } - return true; -} - template void TrackerTraits::setBz(float bz) { From e0b9d10028a319e04b9d930ec058b0c5ed1f8708 Mon Sep 17 00:00:00 2001 From: ALICE Action Bot Date: Mon, 18 May 2026 08:57:07 +0000 Subject: [PATCH 2/2] Please consider the following formatting changes --- .../ITS/tracking/include/ITStracking/TrackingConfigParam.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Detectors/ITSMFT/ITS/tracking/include/ITStracking/TrackingConfigParam.h b/Detectors/ITSMFT/ITS/tracking/include/ITStracking/TrackingConfigParam.h index 77947514e380c..69aa3c5fdaf06 100644 --- a/Detectors/ITSMFT/ITS/tracking/include/ITStracking/TrackingConfigParam.h +++ b/Detectors/ITSMFT/ITS/tracking/include/ITStracking/TrackingConfigParam.h @@ -102,7 +102,7 @@ struct TrackerParamConfig : public o2::conf::ConfigurableParamHelper::max(); bool dropTFUponFailure = false; bool fataliseUponFailure = true; // granular management of the fatalisation in async mode - + // Selections on tracks sharing clusters bool allowSharingFirstCluster = false; // allow first cluster sharing among tracks float sharedClusterMaxDeltaPhi = 0.05f; // Maximum allowed delta phi at the cluster position