Project
Loading...
Searching...
No Matches
Constants.h
Go to the documentation of this file.
1// Copyright 2019-2020 CERN and copyright holders of ALICE O2.
2// See https://alice-o2.web.cern.ch/copyright for details of the copyright holders.
3// All rights not expressly granted are reserved.
4//
5// This software is distributed under the terms of the GNU General Public
6// License v3 (GPL Version 3), copied verbatim in the file "COPYING".
7//
8// In applying this license CERN does not waive the privileges and immunities
9// granted to it by virtue of its status as an Intergovernmental Organization
10// or submit itself to any jurisdiction.
11
12#ifndef ALICEO2_ZDC_CONSTANTS_H
13#define ALICEO2_ZDC_CONSTANTS_H
14
18#include <cstdint>
19#include <cstdlib>
20#include <array>
21#include <string_view>
22#include <string>
23#include <type_traits>
24#include <limits>
25
26// Enable debug printout in reconstruction
27// #define O2_ZDC_DEBUG
28// TDC arrays in debug output
29// #define O2_ZDC_TDC_C_ARRAY
30
31namespace o2
32{
33namespace zdc
34{
35
37 ZNA = 1,
38 ZPA = 2,
39 ZEM = 3,
40 ZNC = 4,
41 ZPC = 5,
43 MaxDetID = 5 }; // IDs of subdetector
49 Sum }; // channel IDs for ZN and ZP
51 ZEMCh2 }; // channel IDs for ZEMs
52
53constexpr int NTimeBinsPerBC = 12; //< number of samples per BC
54constexpr int NBCReadOut = 4; // N BCs read out per trigger
56constexpr int16_t Int16MaxVal = 0x7fff;
57
58constexpr int NChannelsZN = 6; //< number of channels stored per ZN
59constexpr int NChannelsZP = 6; //< number of channels stored per ZP
60constexpr int NChannelsZEM = 2; //< number of channels stored per ZEM
61
62constexpr float ChannelTimeBinNS = 2.; //< bin length in NS
64
66constexpr uint8_t ALICETriggerMask = 0x1;
67
68constexpr int NModules = 8;
69constexpr int NChPerModule = 4;
70constexpr int NLinks = NModules * 2;
72constexpr int NWPerBc = 3;
74
75// Limits
76constexpr int ADCMin = -2048, ADCMax = 2047, ADCRange = 4096; // 12 bit ADC
77constexpr float FInfty = std::numeric_limits<float>::infinity();
78constexpr float DInfty = std::numeric_limits<double>::infinity();
79
80// Encoding of ZDC energy into an uint32_t value
81// Most significant 5 bits are for channel id, least significant 27 bits are for energy
82// with offset and unit as specified below
83constexpr float EnergyOffset = 10000; // Energy offset (GeV)
84constexpr float EnergyUnit = 0.01; // Energy unit (GeV)
85constexpr uint32_t EnergyMask = 0x07ffffff;
86constexpr uint32_t EnergyChMask = 0xf8000000;
87
88// Temporary reconstructed event
89constexpr int MaxTDCValues = 5; // max number of TDC values to store in reconstructed event
90constexpr int NTDCChannels = 10; // max number of TDC values to store in reconstructed event
91constexpr uint32_t ZDCRefInitVal = 0xffffffff;
92// Parameters of interpolating function
93constexpr int TSL = 6; // number of zeros on the right (and on the left) of central peak
94constexpr int TSN = 200; // Number of interpolated points between each pair = TSN-1
95constexpr int TSNH = TSN / 2; // Half of TSN
96constexpr int NTS = 2 * TSL * TSN + 1; // Tapered sinc function array size
97constexpr int NIS = NTimeBinsPerBC * TSN; // Number of interpolated samples
98// With a reference clock of 40 MHz exact this FTDCVal would have been
99// constexpr float FTDCVal = 1. / TSNS;
100// with constexpr int TSNS = 96;
101// However we need to modify to take into account actual LHC clock frequency
102// Multiplication factor in conversion from integer
104constexpr float FOffset = 8.; // Conversion from average pedestal to representation in OrbitData (16 bit)
105
116 TDCZPCS
117}; // TDC channels in reconstructed event, their number should be equal to NTDCChannels
118
119constexpr int NBucket = 10; // Number of buckets in a
120constexpr int NBKZero = 5; // Bucket with main-main collisions
121constexpr int NFParA = 3; // Number of parameters in fitting function - Amplitude
122constexpr int NFParT = 3; // Number of parameters in fitting function - Time
123constexpr int NBCAn = 3; // Number of analyzed bunches
124
125//< get detector TOF correction in ns
126constexpr float getTOFCorrection(int det)
127{
128 constexpr float TOFCorr[5] = {
134 return TOFCorr[det - DetIDOffs];
135}
136
137constexpr uint32_t MaskZNA = 0x0000001f;
138constexpr uint32_t MaskAllZNA = 0x0000003f;
139constexpr uint32_t MaskZPA = 0x000007c0;
140constexpr uint32_t MaskAllZPA = 0x00000fc0;
141constexpr uint32_t MaskZEM = 0x00003000;
142constexpr uint32_t MaskZNC = 0x000fc000;
143constexpr uint32_t MaskAllZNC = 0x0007f000;
144constexpr uint32_t MaskZPC = 0x01f00000;
145constexpr uint32_t MaskAllZPC = 0x03f00000;
146
147constexpr std::string_view ChannelNames[] = {
148 "ZNAC", // 0
149 "ZNA1", // 1
150 "ZNA2", // 2
151 "ZNA3", // 3
152 "ZNA4", // 4
153 "ZNAS", // 5
154 //
155 "ZPAC", // 6
156 "ZPA1", // 7
157 "ZPA2", // 8
158 "ZPA3", // 9
159 "ZPA4", // 10
160 "ZPAS", // 11
161 //
162 "ZEM1", // 12
163 "ZEM2", // 13
164 //
165 "ZNCC", // 14
166 "ZNC1", // 15
167 "ZNC2", // 16
168 "ZNC3", // 17
169 "ZNC4", // 18
170 "ZNCS", // 19
171 //
172 "ZPCC", // 20
173 "ZPC1", // 21
174 "ZPC2", // 22
175 "ZPC3", // 23
176 "ZPC4", // 24
177 "ZPCS" // 25
178};
179
180// From TDC ID to signal ID
182 IdZNAC, // TDCZNAC
183 IdZNASum, // TDCZNAS
184 IdZPAC, // TDCZPAC
185 IdZPASum, // TDCZPAS
186 IdZEM1, // TDCZEM1
187 IdZEM2, // TDCZEM2
188 IdZNCC, // TDCZNCC
189 IdZNCSum, // TDCZNCS
190 IdZPCC, // TDCZPCC
191 IdZPCSum // TDCZPCS
192};
193
194// From Signal ID to TDC ID
206
207constexpr int DbgZero = 0;
208constexpr int DbgMinimal = 1;
209constexpr int DbgMedium = 2;
210constexpr int DbgFull = 3;
211constexpr int DbgExtra = 4;
212
213// paths to CCDB objects
214// TODO: eventually these paths should be retrieved from NameConfigurator class
215// TODO: we would better use "constexpr string_view" here, but it makes sense only if
216// TODO: CcdbApi and BasicCCDBManager would also take string_view as an argument
217
218const std::string CCDBPathConfigSim = "ZDC/Config/Sim";
219const std::string CCDBPathConfigModule = "ZDC/Config/Module";
220const std::string CCDBPathRecoConfigZDC = "ZDC/Calib/RecoConfigZDC";
221const std::string CCDBPathTDCCalib = "ZDC/Calib/TDCCalib";
222const std::string CCDBPathTDCCalibConfig = "ZDC/Calib/TDCCalibConfig";
223const std::string CCDBPathTDCCorr = "ZDC/Calib/TDCCorr";
224const std::string CCDBPathEnergyCalib = "ZDC/Calib/EnergyCalib";
225const std::string CCDBPathTowerCalib = "ZDC/Calib/TowerCalib";
226const std::string CCDBPathInterCalibConfig = "ZDC/Calib/InterCalibConfig";
227const std::string CCDBPathWaveformCalib = "ZDC/Calib/WaveformCalib";
228const std::string CCDBPathWaveformCalibConfig = "ZDC/Calib/WaveformCalibConfig";
229const std::string CCDBPathBaselineCalib = "ZDC/Calib/BaselineCalib";
230const std::string CCDBPathBaselineCalibConfig = "ZDC/Calib/BaselineCalibConfig";
231const std::string CCDBPathNoiseCalib = "ZDC/Calib/NoiseCalib";
232
233enum Ped { PedND = 0,
234 PedEv = 1,
235 PedOr = 2,
236 PedQC = 3,
238
239// Max 256 error messages
240enum Msg { MsgGeneric = 0,
250 MsgTDCPileEvC = 10, // A correction is done
251 MsgTDCPileEvE = 11, // Correction has problems
258 MsgTDCSigE = 18, // Error correcting isolated signal
259 MsgEnd // End_of_messages
261
262constexpr std::string_view MsgText[] = {
263 "Generic E",
264 "TDC QC ped",
265 "TDC missing ped",
266 "ADC Orbit ped",
267 "ADC QC ped",
268 "ADC missing ped",
269 "Positive ped offset",
270 "Pile-up in ev ped",
271 "Pile-up in TM",
272 "ADC missing, TDC present",
273 "TDC pile-up Ev C", // In-event pile-up corrected
274 "TDC pile-up Ev E", // In-event pile-up correction error
275 "TDC pile-up M1 C", // Corrected for pile-up in bunch -1
276 "TDC pile-up M1 E",
277 "TDC pile-up M2 C",
278 "TDC pile-up M2 E",
279 "TDC pile-up M3 C",
280 "TDC pile-up M3 E",
281 "TDC signal E"
282 // End_of_messages
283};
284
285// List of channels that can be calibrated
286constexpr std::array<int, 10> ChEnergyCalib{IdZNAC, IdZNASum, IdZPAC, IdZPASum,
287 IdZEM1, IdZEM2,
289
290constexpr std::array<int, 17> ChTowerCalib{IdZNA1, IdZNA2, IdZNA3, IdZNA4,
294 IdZEM2};
295
301
302// Placeholders
303constexpr int DummyIntRange = -NTimeBinsPerBC - 1;
304
305constexpr std::string_view DummyName = "Dumm";
306constexpr std::string_view VoidName = " NA ";
307
308constexpr int toChannel(int det, int tower)
309{
310 constexpr int DetChMap[5][6] = {{IdZNAC, IdZNA1, IdZNA2, IdZNA3, IdZNA4, IdZNASum}, // ZNA
314 {IdZPCC, IdZPC1, IdZPC2, IdZPC3, IdZPC4, IdZPCSum}}; // ZPC
315 return DetChMap[det - 1][tower];
316}
317
318constexpr const char* channelName(int channel)
319{
320
321 // sanity check
322 static_assert(NChannels == sizeof(ChannelNames) / sizeof(std::string_view), "Channels definition is not complete");
323
324 if (channel >= 0 && channel < NChannels) {
325 return ChannelNames[channel].data();
326 } else if (channel == IdDummy) {
327 return DummyName.data();
328 }
329 return VoidName.data();
330}
331
332//< map channelID to detector/tower
333constexpr int toDet(int channel, int& tower)
334{
335 if (channel < toChannel(ZNC, 0)) {
336 tower = channel % NChannelsZN;
337 return DetIDOffs + channel / NChannelsZP;
338 } else {
339 channel -= toChannel(ZNC, 0);
340 tower = channel % NChannelsZN;
341 return ZNC + channel / NChannelsZP;
342 }
343}
344
345// Calibration workflows
346// Waveform calibration
347constexpr int WaveformCalib_NBB = 3; // Number of bunches acquired before colliding b.c.
348constexpr int WaveformCalib_NBA = 6; // Number of bunches acquired after colliding b.c.
351
352using zdcBaseline_t = int16_t;
353constexpr int BaselineMin = -32768, BaselineMax = 32767, BaselineRange = 65536; // 16 bit with sign
354
355} // namespace zdc
356} // namespace o2
357
358#endif
Header to collect LHC related constants.
Header to collect physics constants.
Some ZDC constants shared between O2 and O2Physics.
constexpr double LHCBunchSpacingNS
constexpr float LightSpeedCm2NS
struct o2::upgrades_utils::@463 zdc
structure to keep FT0 information
constexpr float FOffset
Definition Constants.h:104
constexpr int IdZNCSum
constexpr float EnergyUnit
Definition Constants.h:84
constexpr int IdZPC4
const std::string CCDBPathWaveformCalib
Definition Constants.h:227
constexpr int IdZPA2
constexpr int toDet(int channel, int &tower)
Definition Constants.h:333
constexpr int NModules
Definition Constants.h:68
constexpr float ChannelTimeBinNS
Definition Constants.h:62
@ MsgPilePed
Definition Constants.h:247
@ MsgTDCPileM3E
Definition Constants.h:257
@ MsgTDCPileM2C
Definition Constants.h:254
@ MsgTDCPileEvC
Definition Constants.h:250
@ MsgTDCSigE
Definition Constants.h:258
@ MsgADCPedMissing
Definition Constants.h:245
@ MsgPileTM
Definition Constants.h:248
@ MsgADCPedOr
Definition Constants.h:243
@ MsgTDCPileM1C
Definition Constants.h:252
@ MsgTDCPileM1E
Definition Constants.h:253
@ MsgOffPed
Definition Constants.h:246
@ MsgADCPedQC
Definition Constants.h:244
@ MsgGeneric
Definition Constants.h:240
@ MsgTDCPedQC
Definition Constants.h:241
@ MsgTDCPedMissing
Definition Constants.h:242
@ MsgTDCPileM2E
Definition Constants.h:255
@ MsgTDCPileM3C
Definition Constants.h:256
@ MsgADCMissingwTDC
Definition Constants.h:249
@ MsgTDCPileEvE
Definition Constants.h:251
constexpr int IdZNA3
constexpr int IdZNA1
constexpr int DummyIntRange
Definition Constants.h:303
ChannelTypeZNP
Definition Constants.h:44
const int TDCSignal[NTDCChannels]
Definition Constants.h:181
constexpr int NTimeBinsReadout
Definition Constants.h:55
constexpr int16_t Int16MaxVal
Definition Constants.h:56
constexpr int IdZPA1
constexpr int IdZPCSum
const std::string CCDBPathBaselineCalibConfig
Definition Constants.h:230
constexpr int IdZNC2
constexpr int toChannel(int det, int tower)
Definition Constants.h:308
constexpr int IdZEM1
constexpr uint32_t MaskZNA
Definition Constants.h:137
constexpr int NBucket
Definition Constants.h:119
const std::string CCDBPathTDCCorr
Definition Constants.h:223
constexpr float getTOFCorrection(int det)
Definition Constants.h:126
constexpr std::array< int, 17 > ChTowerCalib
Definition Constants.h:290
constexpr float FInfty
Definition Constants.h:77
const std::string CCDBPathBaselineCalib
Definition Constants.h:229
constexpr int NTimeBinsPerBC
Definition Constants.h:53
constexpr uint32_t ZDCRefInitVal
Definition Constants.h:91
constexpr int NChPerModule
Definition Constants.h:69
constexpr float EnergyOffset
Definition Constants.h:83
constexpr std::array< int, 10 > ChEnergyCalib
Definition Constants.h:286
constexpr int NTDCChannels
Definition Constants.h:90
constexpr int WaveformCalib_NBB
Definition Constants.h:347
constexpr std::string_view VoidName
Definition Constants.h:306
constexpr int IdZNCC
constexpr int IdZPAC
constexpr float SampleLenghtNS
Definition Constants.h:63
constexpr uint32_t EnergyMask
Definition Constants.h:85
const int SignalTDC[NChannels]
Definition Constants.h:195
constexpr uint32_t MaskAllZNA
Definition Constants.h:138
constexpr int NChannels
Definition Constants.h:65
constexpr int IdZPC2
int16_t zdcBaseline_t
Definition Constants.h:352
constexpr int WaveformCalib_NBT
Definition Constants.h:349
constexpr uint32_t MaskZNC
Definition Constants.h:142
constexpr int NBCAn
Definition Constants.h:123
constexpr int NBCReadOut
Definition Constants.h:54
constexpr float DInfty
Definition Constants.h:78
constexpr int IdZPA4
constexpr int DbgFull
Definition Constants.h:210
constexpr uint32_t MaskAllZPA
Definition Constants.h:140
constexpr std::string_view MsgText[]
Definition Constants.h:262
constexpr int NBKZero
Definition Constants.h:120
@ PedMissing
Definition Constants.h:237
constexpr uint32_t EnergyChMask
Definition Constants.h:86
constexpr const char * channelName(int channel)
Definition Constants.h:318
constexpr int BaselineMax
Definition Constants.h:353
constexpr int IdZNC1
constexpr int IdZNC3
constexpr int TSN
Definition Constants.h:94
constexpr int IdZPCC
constexpr int DbgExtra
Definition Constants.h:211
constexpr int NChannelsZN
Definition Constants.h:58
constexpr int ADCRange
Definition Constants.h:76
const std::string CCDBPathRecoConfigZDC
Definition Constants.h:220
const std::string CCDBPathEnergyCalib
Definition Constants.h:224
constexpr uint8_t ALICETriggerMask
Definition Constants.h:66
constexpr int NTS
Definition Constants.h:96
constexpr int NWPerBc
Definition Constants.h:72
const std::string CCDBPathTDCCalibConfig
Definition Constants.h:222
constexpr int NChannelsZP
Definition Constants.h:59
const std::string CCDBPathTDCCalib
Definition Constants.h:221
constexpr int IdZPC1
constexpr std::string_view DummyName
Definition Constants.h:305
const std::string CCDBPathWaveformCalibConfig
Definition Constants.h:228
const std::string CCDBPathConfigSim
Definition Constants.h:218
constexpr int MaxTriggerChannels
Definition Constants.h:73
constexpr int NFParT
Definition Constants.h:122
constexpr int IdZPA3
constexpr int DbgMinimal
Definition Constants.h:208
ChannelTypeZEM
Definition Constants.h:50
constexpr int IdZNC4
constexpr int NFParA
Definition Constants.h:121
constexpr int IdZEM2
constexpr uint32_t MaskZEM
Definition Constants.h:141
constexpr uint32_t MaskZPA
Definition Constants.h:139
constexpr int IdZNA2
constexpr int BaselineMin
Definition Constants.h:353
@ DetIDOffs
Definition Constants.h:36
@ MaxDetID
Definition Constants.h:43
@ MinDetID
Definition Constants.h:42
constexpr uint32_t MaskAllZPC
Definition Constants.h:145
constexpr int TSL
Definition Constants.h:93
constexpr int DbgZero
Definition Constants.h:207
constexpr int NIS
Definition Constants.h:97
constexpr int IdZNASum
constexpr int IdDummy
constexpr int WaveformCalib_NW
Definition Constants.h:350
const std::string CCDBPathTowerCalib
Definition Constants.h:225
const std::string CCDBPathConfigModule
Definition Constants.h:219
constexpr int BaselineRange
Definition Constants.h:353
constexpr uint32_t MaskAllZNC
Definition Constants.h:143
constexpr int ADCMin
Definition Constants.h:76
constexpr int IdZPC3
constexpr int MaxTDCValues
Definition Constants.h:89
constexpr int IdZNA4
constexpr int NChannelsZEM
Definition Constants.h:60
constexpr int IdZNAC
constexpr int NLinks
Definition Constants.h:70
const std::string CCDBPathInterCalibConfig
Definition Constants.h:226
constexpr std::string_view ChannelNames[]
Definition Constants.h:147
constexpr int DbgMedium
Definition Constants.h:209
constexpr int TSNH
Definition Constants.h:95
constexpr int WaveformCalib_NBA
Definition Constants.h:348
const std::string CCDBPathNoiseCalib
Definition Constants.h:231
constexpr int ADCMax
Definition Constants.h:76
constexpr uint32_t MaskZPC
Definition Constants.h:144
constexpr int IdZPASum
constexpr float FTDCVal
Definition Constants.h:103
constexpr int NDigiChannels
Definition Constants.h:71
constexpr std::array< int, NChannels > CaloCommonPM
Definition Constants.h:296
a couple of static helper functions to create timestamp values for CCDB queries or override obsolete ...