Skip to content

Commit 4c68d44

Browse files
committed
add ACTS proto-tracker
1 parent 260cd0d commit 4c68d44

File tree

2 files changed

+41
-41
lines changed

2 files changed

+41
-41
lines changed

Detectors/Upgrades/ALICE3/TRK/reconstruction/include/TRKReconstruction/TrackerACTS.h

Lines changed: 15 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -48,26 +48,26 @@ namespace gpu
4848
{
4949
class GPUChainITS;
5050
}
51-
namespace its
51+
namespace trk
5252
{
5353

5454
template <int nLayers>
55-
class Tracker
55+
class TrackerACTS
5656
{
5757
using LogFunc = std::function<void(const std::string& s)>;
5858

5959
public:
60-
Tracker(TrackerTraits<nLayers>* traits);
60+
TrackerACTS(o2::its::TrackerTraits<nLayers>* traits);
6161

62-
void adoptTimeFrame(TimeFrame<nLayers>& tf);
62+
void adoptTimeFrame(o2::its::TimeFrame<nLayers>& tf);
6363

6464
void clustersToTracks(
6565
const LogFunc& = [](const std::string& s) { std::cout << s << '\n'; },
6666
const LogFunc& = [](const std::string& s) { std::cerr << s << '\n'; });
6767

68-
void setParameters(const std::vector<TrackingParameters>& p) { mTrkParams = p; }
69-
void setMemoryPool(std::shared_ptr<BoundedMemoryResource> pool) { mMemoryPool = pool; }
70-
std::vector<TrackingParameters>& getParameters() { return mTrkParams; }
68+
void setParameters(const std::vector<o2::its::TrackingParameters>& p) { mTrkParams = p; }
69+
void setMemoryPool(std::shared_ptr<o2::its::BoundedMemoryResource> pool) { mMemoryPool = pool; }
70+
std::vector<o2::its::TrackingParameters>& getParameters() { return mTrkParams; }
7171
void setBz(float bz) { mTraits->setBz(bz); }
7272
bool isMatLUT() const { return mTraits->isMatLUT(); }
7373
void setNThreads(int n, std::shared_ptr<tbb::task_arena>& arena) { mTraits->setNThreads(n, arena); }
@@ -88,18 +88,18 @@ class Tracker
8888
void rectifyClusterIndices();
8989

9090
template <typename... T, typename... F>
91-
float evaluateTask(void (Tracker::*task)(T...), std::string_view taskName, int iteration, LogFunc logger, F&&... args);
91+
float evaluateTask(void (TrackerACTS::*task)(T...), std::string_view taskName, int iteration, LogFunc logger, F&&... args);
9292

93-
TrackerTraits<nLayers>* mTraits = nullptr; /// Observer pointer, not owned by this class
94-
TimeFrame<nLayers>* mTimeFrame = nullptr; /// Observer pointer, not owned by this class
93+
o2::its::TrackerTraits<nLayers>* mTraits = nullptr; /// Observer pointer, not owned by this class
94+
o2::its::TimeFrame<nLayers>* mTimeFrame = nullptr; /// Observer pointer, not owned by this class
9595

96-
std::vector<TrackingParameters> mTrkParams;
96+
std::vector<o2::its::TrackingParameters> mTrkParams;
9797
o2::gpu::GPUChainITS* mRecoChain = nullptr;
9898

9999
unsigned int mNumberOfDroppedTFs{0};
100100
unsigned int mTimeFrameCounter{0};
101101
double mTotalTime{0};
102-
std::shared_ptr<BoundedMemoryResource> mMemoryPool;
102+
std::shared_ptr<o2::its::BoundedMemoryResource> mMemoryPool;
103103

104104
enum State {
105105
TFInit = 0,
@@ -115,11 +115,11 @@ class Tracker
115115

116116
template <int nLayers>
117117
template <typename... T, typename... F>
118-
float Tracker<nLayers>::evaluateTask(void (Tracker<nLayers>::*task)(T...), std::string_view taskName, int iteration, LogFunc logger, F&&... args)
118+
float TrackerACTS<nLayers>::evaluateTask(void (TrackerACTS<nLayers>::*task)(T...), std::string_view taskName, int iteration, LogFunc logger, F&&... args)
119119
{
120120
float diff{0.f};
121121

122-
if constexpr (constants::DoTimeBenchmarks) {
122+
if constexpr (o2::its::constants::DoTimeBenchmarks) {
123123
auto start = std::chrono::high_resolution_clock::now();
124124
(this->*task)(std::forward<F>(args)...);
125125
auto end = std::chrono::high_resolution_clock::now();
@@ -152,7 +152,7 @@ float Tracker<nLayers>::evaluateTask(void (Tracker<nLayers>::*task)(T...), std::
152152
return diff;
153153
}
154154

155-
} // namespace its
155+
} // namespace trk
156156
} // namespace o2
157157

158158
#endif /* ALICE3_INCLUDE_TRACKER_H_ */

Detectors/Upgrades/ALICE3/TRK/reconstruction/src/TrackerACTS.cxx

Lines changed: 26 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313
/// \brief
1414
///
1515

16-
#include "ITStracking/Tracker.h"
16+
#include "TRKReconstruction/TrackerACTS.h"
1717

1818
#include "ITStracking/BoundedAllocator.h"
1919
#include "ITStracking/Cell.h"
@@ -35,18 +35,18 @@ namespace o2::trk
3535
using o2::its::constants::GB;
3636

3737
template <int nLayers>
38-
Tracker<nLayers>::Tracker(TrackerTraits<nLayers>* traits) : mTraits(traits)
38+
TrackerACTS<nLayers>::TrackerACTS(o2::its::TrackerTraits<nLayers>* traits) : mTraits(traits)
3939
{
4040
/// Initialise standard configuration with 1 iteration
4141
mTrkParams.resize(1);
4242
if (traits->isGPU()) {
43-
ITSGpuTrackingParamConfig::Instance().maybeOverride();
44-
ITSGpuTrackingParamConfig::Instance().printKeyValues(true, true);
43+
o2::its::ITSGpuTrackingParamConfig::Instance().maybeOverride();
44+
o2::its::ITSGpuTrackingParamConfig::Instance().printKeyValues(true, true);
4545
}
4646
}
4747

4848
template <int nLayers>
49-
void Tracker<nLayers>::clustersToTracks(const LogFunc& logger, const LogFunc& error)
49+
void TrackerACTS<nLayers>::clustersToTracks(const LogFunc& logger, const LogFunc& error)
5050
{
5151
LogFunc evalLog = [](const std::string&) {};
5252

@@ -91,28 +91,28 @@ void Tracker<nLayers>::clustersToTracks(const LogFunc& logger, const LogFunc& er
9191
iVertex = std::min(maxNvertices, 0);
9292
logger(std::format("==== ITS {} Tracking iteration {} summary ====", mTraits->getName(), iteration));
9393

94-
total += evaluateTask(&Tracker::initialiseTimeFrame, StateNames[mCurState = TFInit], iteration, logger, iteration);
94+
total += evaluateTask(&TrackerACTS::initialiseTimeFrame, StateNames[mCurState = TFInit], iteration, logger, iteration);
9595
do {
9696
for (iROFs = 0; iROFs < nROFsIterations; ++iROFs) {
97-
timeTracklets += evaluateTask(&Tracker::computeTracklets, StateNames[mCurState = Trackleting], iteration, evalLog, iteration, iROFs, iVertex);
97+
timeTracklets += evaluateTask(&TrackerACTS::computeTracklets, StateNames[mCurState = Trackleting], iteration, evalLog, iteration, iROFs, iVertex);
9898
nTracklets += mTraits->getTFNumberOfTracklets();
9999
float trackletsPerCluster = mTraits->getTFNumberOfClusters() > 0 ? float(mTraits->getTFNumberOfTracklets()) / float(mTraits->getTFNumberOfClusters()) : 0.f;
100100
if (trackletsPerCluster > mTrkParams[iteration].TrackletsPerClusterLimit) {
101101
error(std::format("Too many tracklets per cluster ({}) in iteration {} in ROF span {}-{}:, check the detector status and/or the selections. Current limit is {}",
102102
trackletsPerCluster, iteration, iROFs, iROFs + mTrkParams[iteration].nROFsPerIterations, mTrkParams[iteration].TrackletsPerClusterLimit));
103103
break;
104104
}
105-
timeCells += evaluateTask(&Tracker::computeCells, StateNames[mCurState = Celling], iteration, evalLog, iteration);
105+
timeCells += evaluateTask(&TrackerACTS::computeCells, StateNames[mCurState = Celling], iteration, evalLog, iteration);
106106
nCells += mTraits->getTFNumberOfCells();
107107
float cellsPerCluster = mTraits->getTFNumberOfClusters() > 0 ? float(mTraits->getTFNumberOfCells()) / float(mTraits->getTFNumberOfClusters()) : 0.f;
108108
if (cellsPerCluster > mTrkParams[iteration].CellsPerClusterLimit) {
109109
error(std::format("Too many cells per cluster ({}) in iteration {} in ROF span {}-{}, check the detector status and/or the selections. Current limit is {}",
110110
cellsPerCluster, iteration, iROFs, iROFs + mTrkParams[iteration].nROFsPerIterations, mTrkParams[iteration].CellsPerClusterLimit));
111111
break;
112112
}
113-
timeNeighbours += evaluateTask(&Tracker::findCellsNeighbours, StateNames[mCurState = Neighbouring], iteration, evalLog, iteration);
113+
timeNeighbours += evaluateTask(&TrackerACTS::findCellsNeighbours, StateNames[mCurState = Neighbouring], iteration, evalLog, iteration);
114114
nNeighbours += mTimeFrame->getNumberOfNeighbours();
115-
timeRoads += evaluateTask(&Tracker::findRoads, StateNames[mCurState = Roading], iteration, evalLog, iteration);
115+
timeRoads += evaluateTask(&TrackerACTS::findRoads, StateNames[mCurState = Roading], iteration, evalLog, iteration);
116116
}
117117
} while (++iVertex < maxNvertices);
118118
logger(std::format(" - Tracklet finding: {} tracklets found in {:.2f} ms", nTracklets, timeTracklets));
@@ -122,7 +122,7 @@ void Tracker<nLayers>::clustersToTracks(const LogFunc& logger, const LogFunc& er
122122
total += timeTracklets + timeCells + timeNeighbours + timeRoads;
123123
if (mTraits->supportsExtendTracks() && mTrkParams[iteration].UseTrackFollower) {
124124
int nExtendedTracks{-mTimeFrame->mNExtendedTracks}, nExtendedClusters{-mTimeFrame->mNExtendedUsedClusters};
125-
auto timeExtending = evaluateTask(&Tracker::extendTracks, "Extending tracks", iteration, evalLog, iteration);
125+
auto timeExtending = evaluateTask(&TrackerACTS::extendTracks, "Extending tracks", iteration, evalLog, iteration);
126126
total += timeExtending;
127127
logger(std::format(" - Extending Tracks: {} extended tracks using {} clusters found in {:.2f} ms", nExtendedTracks + mTimeFrame->mNExtendedTracks, nExtendedClusters + mTimeFrame->mNExtendedUsedClusters, timeExtending));
128128
}
@@ -132,14 +132,14 @@ void Tracker<nLayers>::clustersToTracks(const LogFunc& logger, const LogFunc& er
132132
}
133133
if (mTraits->supportsFindShortPrimaries() && mTrkParams[0].FindShortTracks) {
134134
auto nTracksB = mTimeFrame->getNumberOfTracks();
135-
total += evaluateTask(&Tracker::findShortPrimaries, "Short primaries finding", 0, logger);
135+
total += evaluateTask(&TrackerACTS::findShortPrimaries, "Short primaries finding", 0, logger);
136136
auto nTracksA = mTimeFrame->getNumberOfTracks();
137137
logger(std::format(" `-> found {} additional tracks", nTracksA - nTracksB));
138138
}
139-
if constexpr (constants::DoTimeBenchmarks) {
139+
if constexpr (o2::its::constants::DoTimeBenchmarks) {
140140
logger(std::format("=== TimeFrame {} processing completed in: {:.2f} ms using {} thread(s) ===", mTimeFrameCounter, total, mTraits->getNThreads()));
141141
}
142-
} catch (const BoundedMemoryResource::MemoryLimitExceeded& err) {
142+
} catch (const o2::its::BoundedMemoryResource::MemoryLimitExceeded& err) {
143143
handleException(err);
144144
return;
145145
} catch (const std::bad_alloc& err) {
@@ -168,7 +168,7 @@ void Tracker<nLayers>::clustersToTracks(const LogFunc& logger, const LogFunc& er
168168
}
169169

170170
template <int nLayers>
171-
void Tracker<nLayers>::computeRoadsMClabels()
171+
void TrackerACTS<nLayers>::computeRoadsMClabels()
172172
{
173173
/// Moore's Voting Algorithm
174174
if (!mTimeFrame->hasMCinformation()) {
@@ -189,7 +189,7 @@ void Tracker<nLayers>::computeRoadsMClabels()
189189
for (int iCell{0}; iCell < mTrkParams[0].CellsPerRoad(); ++iCell) {
190190
const int currentCellIndex{currentRoad[iCell]};
191191

192-
if (currentCellIndex == constants::UnusedIndex) {
192+
if (currentCellIndex == o2::its::constants::UnusedIndex) {
193193
if (isFirstRoadCell) {
194194
continue;
195195
} else {
@@ -273,7 +273,7 @@ void Tracker<nLayers>::computeRoadsMClabels()
273273
}
274274

275275
template <int nLayers>
276-
void Tracker<nLayers>::computeTracksMClabels()
276+
void TrackerACTS<nLayers>::computeTracksMClabels()
277277
{
278278
for (int iROF{0}; iROF < mTimeFrame->getNrof(); ++iROF) {
279279
for (auto& track : mTimeFrame->getTracks(iROF)) {
@@ -282,7 +282,7 @@ void Tracker<nLayers>::computeTracksMClabels()
282282

283283
for (int iCluster = 0; iCluster < TrackITSExt::MaxClusters; ++iCluster) {
284284
const int index = track.getClusterIndex(iCluster);
285-
if (index == constants::UnusedIndex) {
285+
if (index == o2::its::constants::UnusedIndex) {
286286
continue;
287287
}
288288
auto labels = mTimeFrame->getClusterLabels(iCluster, index);
@@ -312,7 +312,7 @@ void Tracker<nLayers>::computeTracksMClabels()
312312
// set fake clusters pattern
313313
for (int ic{TrackITSExt::MaxClusters}; ic--;) {
314314
auto clid = track.getClusterIndex(ic);
315-
if (clid != constants::UnusedIndex) {
315+
if (clid != o2::its::constants::UnusedIndex) {
316316
auto labelsSpan = mTimeFrame->getClusterLabels(ic, clid);
317317
for (const auto& currentLabel : labelsSpan) {
318318
if (currentLabel == maxOccurrencesValue) {
@@ -332,13 +332,13 @@ void Tracker<nLayers>::computeTracksMClabels()
332332
}
333333

334334
template <int nLayers>
335-
void Tracker<nLayers>::rectifyClusterIndices()
335+
void TrackerACTS<nLayers>::rectifyClusterIndices()
336336
{
337337
for (int iROF{0}; iROF < mTimeFrame->getNrof(); ++iROF) {
338338
for (auto& track : mTimeFrame->getTracks(iROF)) {
339339
for (int iCluster = 0; iCluster < TrackITSExt::MaxClusters; ++iCluster) {
340340
const int index = track.getClusterIndex(iCluster);
341-
if (index != constants::UnusedIndex) {
341+
if (index != o2::its::constants::UnusedIndex) {
342342
track.setExternalClusterIndex(iCluster, mTimeFrame->getClusterExternalIndex(iCluster, index));
343343
}
344344
}
@@ -347,24 +347,24 @@ void Tracker<nLayers>::rectifyClusterIndices()
347347
}
348348

349349
template <int nLayers>
350-
void Tracker<nLayers>::adoptTimeFrame(TimeFrame<nLayers>& tf)
350+
void TrackerACTS<nLayers>::adoptTimeFrame(o2::its::TimeFrame<nLayers>& tf)
351351
{
352352
mTimeFrame = &tf;
353353
mTraits->adoptTimeFrame(&tf);
354354
}
355355

356356
template <int nLayers>
357-
void Tracker<nLayers>::printSummary() const
357+
void TrackerACTS<nLayers>::printSummary() const
358358
{
359359
auto avgTF = mTotalTime * 1.e-3 / ((mTimeFrameCounter > 0) ? (double)mTimeFrameCounter : -1.0);
360360
auto avgTFwithDropped = mTotalTime * 1.e-3 / (((mTimeFrameCounter + mNumberOfDroppedTFs) > 0) ? (double)(mTimeFrameCounter + mNumberOfDroppedTFs) : -1.0);
361-
LOGP(info, "Tracker summary: Processed {} TFs (dropped {}) in TOT={:.2f} s, AVG/TF={:.2f} ({:.2f}) s", mTimeFrameCounter, mNumberOfDroppedTFs, mTotalTime * 1.e-3, avgTF, avgTFwithDropped);
361+
LOGP(info, "TrackerACTS summary: Processed {} TFs (dropped {}) in TOT={:.2f} s, AVG/TF={:.2f} ({:.2f}) s", mTimeFrameCounter, mNumberOfDroppedTFs, mTotalTime * 1.e-3, avgTF, avgTFwithDropped);
362362
}
363363

364-
template class Tracker<7>;
364+
template class TrackerACTS<7>;
365365
// ALICE3 upgrade
366366
#ifdef ENABLE_UPGRADES
367-
template class Tracker<11>;
367+
template class TrackerACTS<11>;
368368
#endif
369369

370370
} // namespace o2::trk

0 commit comments

Comments
 (0)