1515#include " Framework/Logger.h"
1616
1717#include " IOTOFReconstruction/Clusterer.h"
18+ #include " CommonConstants/LHCConstants.h"
1819
1920#include < algorithm>
2021#include < numeric>
@@ -175,6 +176,8 @@ void Clusterer::ClustererThread::findClustersSingleHit(gsl::span<const Digit> di
175176 const uint16_t row = digit.getRow ();
176177 const uint16_t col = digit.getColumn ();
177178 const time_t time = digit.getTime ();
179+ uint64_t nbc = static_cast <uint64_t >(time / o2::constants::lhc::LHCBunchSpacingNS);
180+ float timeWrtBc = time - nbc * o2::constants::lhc::LHCBunchSpacingNS;
178181
179182 if (labelsClusPtr) {
180183 int nStoredLabels = 0 ;
@@ -192,7 +195,7 @@ void Clusterer::ClustererThread::findClustersSingleHit(gsl::span<const Digit> di
192195 constexpr uint16_t firedDigitsMask = (1U << 0 ); // 0x0001 (1)
193196 mClsTopoClassifier .getTopology (firedDigitsMask, minRow, rowSpan, minCol, colSpan, clsTopology);
194197 // Bit 0 corresponds to (rowOffset=0, colOffset=0) in row-major order
195- Cluster cluster (row, col, rowSpan, colSpan, firedDigitsMask, clsTopology, chipID, time);
198+ Cluster cluster (row, col, rowSpan, colSpan, firedDigitsMask, clsTopology, chipID, time, nbc, timeWrtBc );
196199
197200 LOG (debug) << " Pushing back cluster with row: " << row << " , col: " << col
198201 << " , rowSpan: " << static_cast <int >(rowSpan) << " , colSpan: " << static_cast <int >(colSpan)
@@ -271,6 +274,8 @@ void Clusterer::ClustererThread::findClustersMultipleHits(gsl::span<const Digit>
271274 const uint16_t row = digit.getRow ();
272275 const uint16_t col = digit.getColumn ();
273276 const time_t time = digit.getTime ();
277+ uint64_t nbc = static_cast <uint64_t >(time / o2::constants::lhc::LHCBunchSpacingNS);
278+ float timeWrtBc = time - nbc * o2::constants::lhc::LHCBunchSpacingNS;
274279
275280 if (labelsClusPtr) {
276281 int nMcLabels = 0 ;
@@ -288,7 +293,7 @@ void Clusterer::ClustererThread::findClustersMultipleHits(gsl::span<const Digit>
288293 constexpr uint16_t firedDigitsMask = (1U << 0 ); // 0x0001 (1)
289294 mClsTopoClassifier .getTopology (firedDigitsMask, minRow, rowSpan, minCol, colSpan, clsTopology);
290295 // Bit 0 corresponds to (rowOffset=0, colOffset=0) in row-major order
291- Cluster cluster (minRow, minCol, rowSpan, colSpan, firedDigitsMask, clsTopology, chipID, time);
296+ Cluster cluster (minRow, minCol, rowSpan, colSpan, firedDigitsMask, clsTopology, chipID, time, nbc, timeWrtBc );
292297
293298 LOG (debug) << " Pushing back cluster with row: " << row << " , col: " << col
294299 << " , rowSpan: " << static_cast <int >(rowSpan) << " , colSpan: " << static_cast <int >(colSpan)
@@ -321,12 +326,15 @@ void Clusterer::ClustererThread::findClustersMultipleHits(gsl::span<const Digit>
321326 const uint8_t rowSpan = maxRow - minRow + 1 ;
322327 const uint8_t colSpan = maxCol - minCol + 1 ;
323328
329+ uint64_t nbc = static_cast <uint64_t >(clsTime / o2::constants::lhc::LHCBunchSpacingNS);
330+ float timeWrtBc = clsTime - nbc * o2::constants::lhc::LHCBunchSpacingNS;
331+
324332 // Fired digits bitmask packed into a single 16-bit pattern variable
325333 uint16_t firedDigitsMask = 0 ;
326334
327335 if (rowSpan * colSpan > maxFiredDigitsForCls) {
328336 // Overflow precluster: pass InvalidPatternID (or 0) and kHuge topology flag
329- Cluster cluster (minRow, minCol, rowSpan, colSpan, Cluster::InvalidPatternID, Topologies::kHuge , chipID, clsTime);
337+ Cluster cluster (minRow, minCol, rowSpan, colSpan, Cluster::InvalidPatternID, Topologies::kHuge , chipID, clsTime, nbc, timeWrtBc );
330338 mClusters .emplace_back (cluster);
331339 mPatterns .emplace_back (Cluster::InvalidPatternID);
332340 continue ;
@@ -354,7 +362,7 @@ void Clusterer::ClustererThread::findClustersMultipleHits(gsl::span<const Digit>
354362 for (int i = 0 ; i < nMcLabels; i++) {
355363 mLabels .addElement (nStoredCls, mLabelsBuff [i]);
356364 }
357- Cluster cluster (minRow, minCol, rowSpan, colSpan, firedDigitsMask, clsTopology, chipID, clsTime);
365+ Cluster cluster (minRow, minCol, rowSpan, colSpan, firedDigitsMask, clsTopology, chipID, clsTime, nbc, timeWrtBc );
358366 LOG (debug) << " Pushing back cluster with row: " << minRow << " , col: " << minCol
359367 << " , rowSpan: " << static_cast <int >(rowSpan) << " , colSpan: " << static_cast <int >(colSpan)
360368 << " , pattern: " << firedDigitsMask << " , topology: " << static_cast <int >(clsTopology)
0 commit comments