Skip to content

Commit dc9ce91

Browse files
committed
store bc and time wrt bc in cluster
1 parent c985746 commit dc9ce91

2 files changed

Lines changed: 22 additions & 7 deletions

File tree

  • Detectors/Upgrades/ALICE3/IOTOF

‎Detectors/Upgrades/ALICE3/IOTOF/DataFormatsIOTOF/include/DataFormatsIOTOF/Cluster.h‎

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -113,17 +113,19 @@ class Cluster
113113
static constexpr uint16_t InvalidPatternID = static_cast<uint16_t>(ClusterInfo::MaskPattern);
114114

115115
Cluster() = default;
116-
Cluster(UShort_t row, UShort_t col, UShort_t rowSpan, UShort_t colSpan, UShort_t patt, UShort_t topo, UShort_t chipID = 0, time_t time = 0.0f)
117-
: mChipID(chipID), mTime(time)
116+
Cluster(UShort_t row, UShort_t col, UShort_t rowSpan, UShort_t colSpan, UShort_t patt, UShort_t topo, UShort_t chipID = 0, time_t time = 0.0f, uint64_t bc = 0, float timeWrtBc = 0.0f)
117+
: mChipID(chipID), mTime(time), mBc(bc), mTimeWrtBc(timeWrtBc)
118118
{
119119
mClusterInfo.data = ClusterInfo::pack(row, col, rowSpan, colSpan, patt, topo);
120120
}
121121

122-
void set(UShort_t row, UShort_t col, UShort_t rowSpan, UShort_t colSpan, UShort_t patt, UShort_t topo, UShort_t chipID, time_t time)
122+
void set(UShort_t row, UShort_t col, UShort_t rowSpan, UShort_t colSpan, UShort_t patt, UShort_t topo, UShort_t chipID, time_t time, uint64_t bc, float timeWrtBc)
123123
{
124124
mClusterInfo.data = ClusterInfo::pack(row, col, rowSpan, colSpan, patt, topo);
125125
mChipID = chipID;
126126
mTime = time;
127+
mBc = bc;
128+
mTimeWrtBc = timeWrtBc;
127129
}
128130

129131
// Unpack Getters
@@ -149,6 +151,9 @@ class Cluster
149151
uint32_t getChipID() const { return mChipID; }
150152
uint32_t getSensorID() const { return mChipID; }
151153
time_t getTime() const { return mTime; }
154+
uint64_t getBc() const { return mBc; }
155+
float gettimeWrtBc() const { return mTimeWrtBc; }
156+
152157
uint64_t getPackedData() const { return mClusterInfo.data; }
153158

154159
// Setters
@@ -174,6 +179,8 @@ class Cluster
174179
ClusterInfo mClusterInfo{}; ///< 64-bit packed structure containing geometry/topology
175180
UShort_t mChipID{0}; ///< Chip / Sensor ID
176181
float mTime{0.0f}; ///< Hit timing information
182+
uint64_t mBc{0}; ///< Number of bunch crossing
183+
float mTimeWrtBc{0.0f}; ///< Cluster time w.r.t. BC
177184

178185
void sanityCheck();
179186

‎Detectors/Upgrades/ALICE3/IOTOF/reconstruction/src/Clusterer.cxx‎

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
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

Comments
 (0)