16#ifndef ALICEO2_DATAFORMATSTPC_CLUSTERHARDWARE_H
17#define ALICEO2_DATAFORMATSTPC_CLUSTERHARDWARE_H
48 unsigned int qTotInt =
word4 & 0x7FFFF;
49 return (qTotInt / 16.f);
56 int qmaxint = (
word2 & 0x7FF00000) >> 20;
57 return (qmaxint / 2.0 + 0.5);
66 int padPreInt =
word0 & 0xFFFFF;
67 if (padPreInt & 0x80000) {
68 padPreInt |= 0xFFF00000;
70 return (padPreInt / 16.f);
87 int padPeak = (
word0 & 0xFF00000) >> 20;
93 int timePreInt =
word1 & 0xFFFFF;
94 if (timePreInt & 0x80000) {
95 timePreInt |= 0xFFF00000;
97 return (timePreInt / 16.f);
102 return (
word1 & 0x1FF00000) >> 20;
113 int sigmaPad2PreInt =
word2 & 0xFFFFF;
114 float sigmaPad2Pre = sigmaPad2PreInt / 16.f;
120 int sigmaTime2PreInt =
word3 & 0xFFFFF;
121 float sigmaTime2Pre = sigmaTime2PreInt / 16.f;
127 int max = qMax * 2.f;
128 int tot = qTot * 16.f;
130 int padPeak = pad + 0.5;
132 int timePeak =
time + 0.5;
140 sigmaPad2 = (sigmaPad2 + pad / qTot * pad / qTot) * qTot;
141 sigmaTime2 = (sigmaTime2 +
time / qTot *
time / qTot) * qTot;
142 int sp = sigmaPad2 * 16.f;
143 int st = sigmaTime2 * 16.f;
144 word0 = (p & 0xFFFFF) | ((padPeak & 0xFF) << 20);
145 word1 = (t & 0xFFFFF) | ((timePeak & 0x1FF) << 20);
146 word2 = (sp & 0xFFFFF) | ((
max & 0x7FF) << 20);
147 word3 = (
st & 0xFFFFF) | ((
row & 0x1F) << 20);
148 word4 = (tot & 0x7FFFF) | ((
flags & 0xFF) << 19);
151 void setCluster(
int padPeak,
int timePeak,
int pPre,
int tPre,
int sigmaPad2Pre,
int sigmaTime2Pre,
int qMax,
int qTot,
int row,
int flags)
153 word0 = (pPre & 0xFFFFF) | ((padPeak & 0xFF) << 20);
154 word1 = (tPre & 0xFFFFF) | ((timePeak & 0x1FF) << 20);
155 word2 = (sigmaPad2Pre & 0xFFFFF) | ((qMax & 0x7FF) << 20);
156 word3 = (sigmaTime2Pre & 0xFFFFF) | ((
row & 0x1F) << 20);
157 word4 = (qTot & 0x7FFFF) | ((
flags & 0xFF) << 19);
a couple of static helper functions to create timestamp values for CCDB queries or override obsolete ...
ClusterHardware clusters[0]
uint16_t numberOfClusters
float getSigmaPad2() const
void setCluster(float pad, float time, float sigmaPad2, float sigmaTime2, float qMax, float qTot, int row, int flags)
float getQTotFloat() const
float getTimeLocalPre() const
float getSigmaTime2() const
float getTimeLocal() const
void setCluster(int padPeak, int timePeak, int pPre, int tPre, int sigmaPad2Pre, int sigmaTime2Pre, int qMax, int qTot, int row, int flags)