@@ -34,7 +34,8 @@ namespace o2::its
3434{
3535using o2::its::constants::GB;
3636
37- Tracker::Tracker (TrackerTraits7* traits) : mTraits (traits)
37+ template <int nLayers>
38+ Tracker<nLayers>::Tracker(TrackerTraits<nLayers>* traits) : mTraits (traits)
3839{
3940 // / Initialise standard configuration with 1 iteration
4041 mTrkParams .resize (1 );
@@ -44,7 +45,8 @@ Tracker::Tracker(TrackerTraits7* traits) : mTraits(traits)
4445 }
4546}
4647
47- void Tracker::clustersToTracks (const LogFunc& logger, const LogFunc& error)
48+ template <int nLayers>
49+ void Tracker<nLayers>::clustersToTracks(const LogFunc& logger, const LogFunc& error)
4850{
4951 LogFunc evalLog = [](const std::string&) {};
5052
@@ -158,7 +160,8 @@ void Tracker::clustersToTracks(const LogFunc& logger, const LogFunc& error)
158160 }
159161}
160162
161- void Tracker::computeRoadsMClabels ()
163+ template <int nLayers>
164+ void Tracker<nLayers>::computeRoadsMClabels()
162165{
163166 // / Moore's Voting Algorithm
164167 if (!mTimeFrame ->hasMCinformation ()) {
@@ -171,7 +174,7 @@ void Tracker::computeRoadsMClabels()
171174
172175 for (int iRoad{0 }; iRoad < roadsNum; ++iRoad) {
173176
174- Road< 5 > & currentRoad{mTimeFrame ->getRoads ()[iRoad]};
177+ auto & currentRoad{mTimeFrame ->getRoads ()[iRoad]};
175178 std::vector<std::pair<MCCompLabel, size_t >> occurrences;
176179 bool isFakeRoad{false };
177180 bool isFirstRoadCell{true };
@@ -262,7 +265,8 @@ void Tracker::computeRoadsMClabels()
262265 }
263266}
264267
265- void Tracker::computeTracksMClabels ()
268+ template <int nLayers>
269+ void Tracker<nLayers>::computeTracksMClabels()
266270{
267271 for (int iROF{0 }; iROF < mTimeFrame ->getNrof (); ++iROF) {
268272 for (auto & track : mTimeFrame ->getTracks (iROF)) {
@@ -320,7 +324,8 @@ void Tracker::computeTracksMClabels()
320324 }
321325}
322326
323- void Tracker::rectifyClusterIndices ()
327+ template <int nLayers>
328+ void Tracker<nLayers>::rectifyClusterIndices()
324329{
325330 for (int iROF{0 }; iROF < mTimeFrame ->getNrof (); ++iROF) {
326331 for (auto & track : mTimeFrame ->getTracks (iROF)) {
@@ -334,17 +339,21 @@ void Tracker::rectifyClusterIndices()
334339 }
335340}
336341
337- void Tracker::adoptTimeFrame (TimeFrame7& tf)
342+ template <int nLayers>
343+ void Tracker<nLayers>::adoptTimeFrame(TimeFrame<nLayers>& tf)
338344{
339345 mTimeFrame = &tf;
340346 mTraits ->adoptTimeFrame (&tf);
341347}
342348
343- void Tracker::printSummary () const
349+ template <int nLayers>
350+ void Tracker<nLayers>::printSummary() const
344351{
345352 auto avgTF = mTotalTime * 1 .e -3 / ((mTimeFrameCounter > 0 ) ? (double )mTimeFrameCounter : -1.0 );
346353 auto avgTFwithDropped = mTotalTime * 1 .e -3 / (((mTimeFrameCounter + mNumberOfDroppedTFs ) > 0 ) ? (double )(mTimeFrameCounter + mNumberOfDroppedTFs ) : -1.0 );
347354 LOGP (info, " Tracker summary: Processed {} TFs (dropped {}) in TOT={:.2f} s, AVG/TF={:.2f} ({:.2f}) s" , mTimeFrameCounter , mNumberOfDroppedTFs , mTotalTime * 1 .e -3 , avgTF, avgTFwithDropped);
348355}
349356
357+ template class Tracker <7 >;
358+
350359} // namespace o2::its
0 commit comments