12#ifndef ALICEO2_TOF_GEO_H
13#define ALICEO2_TOF_GEO_H
73 static Int_t
getIndex(
const Int_t* detId);
81 static double getAngles(Int_t iplate, Int_t istrip) {
return ANGLES[iplate][istrip]; }
84 static double getGeoHeights(Int_t isector, Int_t iplate, Int_t istrip) {
return mGeoHeights[isector][iplate][istrip]; }
85 static double getGeoX(Int_t isector, Int_t iplate, Int_t istrip) {
return mGeoX[isector][iplate][istrip]; }
86 static double getGeoDistances(Int_t isector, Int_t iplate, Int_t istrip) {
return mGeoDistances[isector][iplate][istrip]; }
103 static constexpr Double_t
BC_TIME = o2::constants::lhc::LHCBunchSpacingNS;
107 static constexpr int BC_IN_ORBIT = o2::constants::lhc::LHCMaxBunches;
131 static constexpr double ZLENB = 146.5;
132 static constexpr double ZLENC = 170.45;
134 static constexpr double XTOF = 372.00;
135 static constexpr double RMIN = 371;
136 static constexpr double RMAX = 400.05;
141 static constexpr double XPAD = 2.5;
143 static constexpr double ZPAD = 3.5;
152 static constexpr double TDCBIN = o2::constants::lhc::LHCBunchSpacingNS * 1E3 / 1024;
183 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
184 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
185 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
186 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2};
189 327680, 327681, 327682, 327683, 327684, 327685, 327686, 327687, 327688, 327689, 327690, 327691, 327692, 327693, 327694, 327695, 327696, 327697,
190 327698, 327699, 327700, 327701, 327702, 327703, 327704, 327705, 327706, 327707, 327708, 327709, 327710, 327711, 327712, 327713, 327714, 327715,
191 327716, 327717, 327718, 327719, 327720, 327721, 327722, 327723, 327724, 327725, 327726, 327727, 327728, 327729, 327730, 327731, 327732, 327733,
192 327734, 327735, 327736, 327737, 327738, 327739, 327740, 327741, 327742, 327743, 327744, 327745, 327746, 327747, 327748, 327749, 327750, 327751};
194 static constexpr Int_t
FLP[2] = {178, 179};
195 static constexpr Int_t
CRUFROMFLP[2][2] = {{227, 228}, {225, 226}};
197 static constexpr Int_t
CRUID[4] = {225, 226, 227, 228};
200 11, 10, 0, 1, 9, 8, 2, 3, 7, 6, 4, 5, 5, 4, 6, 7, 3, 2,
201 3, 9, 11, 10, 0, 1, 9, 8, 2, 3, 7, 6, 4, 5, 5, 4, 6, 7,
202 11, 10, 0, 1, 9, 8, 2, 3, 7, 6, 4, 5, 5, 4, 6, 7, 3, 2,
203 8, 9, 11, 10, 0, 1, 9, 8, 2, 3, 7, 6, 4, 5, 5, 4, 6, 7};
206 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0,
207 0, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1,
208 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0,
209 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1};
212 {43.99, 43.20, 42.40, 41.59, 40.77, 39.94, 39.11, 38.25, 37.40, 36.53,
213 35.65, 34.76, 33.87, 32.96, 32.05, 31.13, 30.19, 29.24, 12.33, 0.00},
214 {27.26, 26.28, 25.30, 24.31, 23.31, 22.31, 21.30, 20.29, 19.26, 18.24,
215 17.20, 16.16, 15.11, 14.05, 13.00, 11.93, 10.87, 9.80, 8.74, 0.00},
216 {0.00, 6.30, 5.31, 4.25, 3.19, 2.12, 1.06, 0.00, -1.06, -2.12,
217 -3.19, -4.25, -5.31, -6.30, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00},
218 {-8.74, -9.80, -10.87, -11.93, -13.00, -14.05, -15.11, -16.16, -17.20, -18.24,
219 -19.26, -20.29, -21.30, -22.31, -23.31, -24.31, -25.30, -26.28, -27.26, 0.00},
220 {-12.33, -29.24, -30.19, -31.13, -32.05, -32.96, -33.87, -34.76, -35.65, -36.53,
221 -37.40, -38.25, -39.11, -39.94, -40.77, -41.59, -42.40, -43.20, -43.99, 0.00}};
224 {-8.405, -7.725, -8.405, -7.765, -8.285, -7.745, -7.865, -7.905, -7.895, -7.885,
225 -7.705, -7.395, -7.525, -7.645, -7.835, -7.965, -8.365, -9.385, -3.255, 0.000},
226 {-7.905, -8.235, -8.605, -9.045, -10.205, -3.975, -5.915, -7.765, -10.205, -3.635,
227 -5.885, -8.005, -10.505, -4.395, -7.325, -10.235, -4.655, -7.495, -10.515, 0.000},
228 {-2.705, -10.645, -5.165, -10.095, -4.995, -10.085, -4.835, -10.385, -4.835, -10.085,
229 -4.995, -10.095, -5.165, -10.645, -2.705, 0.000, 0.000, 0.000, 0.000, 0.000},
230 {-10.515, -7.495, -4.655, -10.235, -7.325, -4.395, -10.505, -8.005, -5.885, -3.635,
231 -10.205, -7.765, -5.915, -3.975, -10.205, -9.045, -8.605, -8.235, -7.905, 0.000},
232 {-3.255, -9.385, -8.365, -7.965, -7.835, -7.645, -7.525, -7.395, -7.705, -7.885,
233 -7.895, -7.905, -7.865, -7.745, -8.285, -7.765, -8.405, -7.725, -8.405, 0.000}};
236 {364.14, 354.88, 344.49, 335.31, 325.44, 316.51, 307.11, 297.91, 288.84, 279.89,
237 271.20, 262.62, 253.84, 245.20, 236.56, 228.06, 219.46, 210.63, 206.09, 0.00},
238 {194.57, 186.38, 178.25, 170.13, 161.78, 156.62, 148.10, 139.72, 131.23, 125.87,
239 117.61, 109.44, 101.29, 95.46, 87.36, 79.37, 73.17, 65.33, 57.71, 0.00},
240 {49.28, 41.35, 35.37, 27.91, 21.20, 13.94, 7.06, 0.00, -7.06, -13.94,
241 -21.20, -27.91, -35.37, -41.35, -49.28, 0.00, 0.00, 0.00, 0.00, 0.00},
242 {-57.71, -65.33, -73.17, -79.37, -87.36, -95.46, -101.29, -109.44, -117.61, -125.87,
243 -131.23, -139.72, -148.10, -156.62, -161.78, -170.13, -178.25, -186.38, -194.57, 0.00},
244 {-206.09, -210.63, -219.46, -228.06, -236.56, -245.20, -253.84, -262.62, -271.20, -279.89,
245 -288.84, -297.91, -307.11, -316.51, -325.44, -335.31, -344.49, -354.88, -364.14, 0.00}};
250 {kTRUE, kFALSE, kFALSE, kFALSE, kFALSE, kFALSE, kFALSE, kFALSE, kTRUE,
251 kTRUE, kTRUE, kFALSE, kFALSE, kFALSE, kFALSE, kFALSE, kTRUE, kFALSE};
306 static constexpr double CBLW = 13.5;
307 static constexpr double CBLH1 = 2.0;
309 static constexpr double CBLH2 = 12.3;
320 static constexpr double BAR[3] = {8.575, 0.6, 0.25};
327 static constexpr double HHONY = 1.0;
328 static constexpr double HPCBY = 0.08;
329 static constexpr double HRGLY = 0.055;
331 static constexpr double HGLASSY = 0.160 * 0.5;
333 static constexpr double WHONZ = 8.1;
341 static Float_t getCableLength(Int_t icrate, Int_t islot, Int_t ichain, Int_t itdc) {
return CABLELENGTH[icrate][islot - 3][ichain][itdc / 3]; }
352 static Int_t
getECHFromIndexes(
int crate,
int trm,
int chain,
int tdc,
int chan) {
return (crate << 12) + ((trm - 3) << 8) + (
chain << 7) + (tdc << 3) + chan; }
372 static void fromGlobalToSector(
Float_t*
pos, Int_t isector);
373 static Int_t fromPlateToStrip(
Float_t*
pos, Int_t iplate, Int_t isector);
375 static Bool_t mToBeInit;
376 static Bool_t mToBeInitIndexing;
385 static std::array<std::vector<float>, 5> mDistances[
NSECTORS];
388 static constexpr double CABLEPROPAGATIONDELAY = 0.0513;
390 static const Int_t CHAN_TO_ELCHAN[
NCHANNELS];
Header to collect LHC related constants.
TOF geo parameters (only statics)
static std::string getVolumePath(const Int_t *ind)
static constexpr double SIGMAFORTAIL12
static double getDistances(Int_t iplate, Int_t istrip)
static Float_t getCableLength(Int_t icrate, Int_t islot, Int_t ichain, Int_t itdc)
static void getStripAndModule(Int_t iStripPerSM, Int_t &iplate, Int_t &istrip)
static constexpr double NPADS_INV_INT
static constexpr double AL3PARAMETERS[3]
static Float_t getCableTimeShift(Int_t icrate, Int_t islot, Int_t ichain, Int_t itdc)
static Int_t getTDCChFromECH(int ech)
static constexpr double TDCBIN
TDC bin width [ps].
static constexpr Int_t NSECTORS
static constexpr double AL2PARAMETERS[3]
static double getHeights(Int_t iplate, Int_t istrip)
static double getGeoDistances(Int_t isector, Int_t iplate, Int_t istrip)
static constexpr double HSENSMY
static constexpr Double_t BC_TIME_INPS
static constexpr double LENGTHEXINMODBORDER
static constexpr Double_t BC_TIME_INPS_INV
static constexpr double XHALFSTRIP
static constexpr double SLEWTOTMAX
static constexpr double ZPAD
static constexpr Int_t CRUFROMLINK[kNCrate]
static constexpr Int_t NPADZ
static constexpr double PHISEC
static constexpr double AL1PARAMETERS[3]
static constexpr double MAXHZTOF
static constexpr Double_t READOUTWINDOW
static Int_t getIndexFromEquipment(Int_t icrate, Int_t islot, Int_t ichain, Int_t itdc)
static void rotateToSector(Float_t *xyz, Int_t isector)
static constexpr double BARS[3]
static constexpr double WPCBZ2
static constexpr double WPCBZ1
static constexpr Int_t CRULINK[kNCrate]
static Int_t getTDCFromECH(int ech)
static constexpr double WHONZ
static constexpr Int_t RATIO_TOT_TDC_BIN
static constexpr double STRIPLENGTH
static constexpr double LENGTHINCEMODBORDERU
static constexpr Int_t MATCHINGWINDOW_IN_BC
static constexpr double DEADTIMETDC
Single channel TDC dead time (ps)
static Int_t getStripNumberPerSM(Int_t iplate, Int_t istrip)
static constexpr double BUNCHCROSSINGBIN
static constexpr Int_t NSTRIPXSECTOR
static constexpr double CBLH2
static constexpr double ZLENB
static void translate(Float_t *xyz, Float_t translationVector[3])
static constexpr Int_t NPADS
static constexpr int N_ELECTRONIC_CHANNELS
static constexpr double TOTBIN
static constexpr double TOTBIN_NS
static constexpr double BC_IN_WINDOW_INV
static void getPosInPadCoord(int ch, float *pos)
static constexpr double RMAX2
static constexpr Int_t NSTRIPB
static constexpr Int_t NSTRIPC
static Int_t getTRMFromECH(int ech)
static constexpr double BAR1[3]
static Int_t getCRUid(int link)
static constexpr double DEADTIME
static constexpr double RMIN2
static constexpr Double_t READOUTWINDOW_INV
static constexpr Int_t RAW_PAGE_MAX_SIZE
static constexpr double DISTANCES[NPLATES][NMAXNSTRIP]
static constexpr Int_t LATENCY_ADJUSTEMENT_IN_BC
static Int_t getCRU(int link)
static void getPosInStripCoord(int ch, float *pos)
static constexpr Int_t NSTRIPA
static constexpr double BAR[3]
static constexpr double XTOF
static Int_t getCRUid(int iflp, int icru)
static constexpr double INTERCENTRMODBORDER1
static Int_t getCrateFromECH(int ech)
static constexpr double BARS2[3]
static constexpr Int_t LATENCYWINDOW_TOF
static constexpr double FEAWIDTH2
static Int_t getFLP(int iflp)
static constexpr double ROOF2PARAMETERS[3]
static constexpr double MODULECOVERTHICKNESS
static void getPos(Int_t *det, Float_t *pos)
static constexpr double BARS1[3]
static constexpr Int_t LATENCYWINDOW_IN_BC
static constexpr double HFILIY
static constexpr Double_t BC_TIME
static constexpr double MODULEWALLTHICKNESS
static constexpr Double_t BC_TIME_INV
static constexpr double INTERCENTRMODBORDER2
static void antiRotateToSector(Float_t *xyz, Int_t isector)
static constexpr Int_t NPADSXSECTOR
static constexpr double LENGTHINCEMODBORDERD
static constexpr double HGLASSY
static Int_t getCHFromECH(int echan)
static Int_t getCableTimeShiftBin(Int_t icrate, Int_t islot, Int_t ichain, Int_t itdc)
static constexpr double HPCBY
static constexpr double EXTERINTERMODBORDER2
static void rotate(Float_t *xyz, Double_t rotationAngles[6])
static constexpr Int_t READOUTWINDOW_IN_BC
static constexpr double XPAD
static double getGeoHeights(Int_t isector, Int_t iplate, Int_t istrip)
static constexpr double ANGLES[NPLATES][NMAXNSTRIP]
static Int_t getChainFromECH(int ech)
static constexpr double HRGLY
static constexpr double CBLH1
static constexpr Double_t WINDOWOVERLAP
static constexpr double PHISECINV
static constexpr double NSTRIPXSECTOR_INV_INT
static constexpr Int_t CRUENDPOINT[kNCrate]
static void getVolumeIndices(Int_t index, Int_t *detId)
static constexpr Int_t LATENCY_ADJ_LHC_IN_BC
static constexpr double ROOF1PARAMETERS[3]
static constexpr double HEIGHTS[NPLATES][NMAXNSTRIP]
static constexpr Int_t FLPFROMCRU[4]
static constexpr int NCHANNELS
static constexpr double RMIN
static double getGeoX(Int_t isector, Int_t iplate, Int_t istrip)
static constexpr double WCPCBZ
static Int_t getIndex(const Int_t *detId)
static constexpr double FEAPARAMETERS[3]
static constexpr double SAWTHICKNESS
static Int_t getFEEid(int link)
static constexpr Int_t NPLATES
static constexpr double FEAWIDTH1
static constexpr double BAR2[3]
static void getDetID(Float_t *pos, Int_t *det)
static constexpr double RMAX
static constexpr int BC_IN_WINDOW
static void antiRotate(Float_t *xyz, Double_t rotationAngles[6])
static Int_t getFLPid(int link)
static constexpr double HCPCBY
static void getPadDxDyDz(const Float_t *pos, Int_t *det, Float_t *DeltaPos, int sector=-1)
static void getPosInSectorCoord(int ch, float *pos)
static constexpr int BC_IN_ORBIT
static constexpr Int_t OVERLAP_IN_BC
static constexpr Int_t NMAXNSTRIP
static constexpr double SIGMAFORTAIL1
static constexpr Int_t CRUFROMFLP[2][2]
static constexpr double SLEWTOTMIN
static Int_t getCRUendpoint(int link)
static constexpr double NTDCBIN_PER_PS
number of TDC bins in 1 ns
static Int_t getCONETlink(int link)
static constexpr Int_t NPADX
static Float_t getPropagationDelay()
static constexpr double NTOTBIN_PER_NS
static Int_t getECHFromCH(int chan)
static constexpr double WRGLZ
static constexpr Int_t FEEID[kNCrate]
static constexpr double HHONY
static constexpr double ZLENC
static constexpr Int_t CRUID[4]
static constexpr double EXTERINTERMODBORDER1
static Int_t getECHFromIndexes(int crate, int trm, int chain, int tdc, int chan)
static void antiRotateToStrip(Float_t *xyz, Int_t iplate, Int_t istrip, Int_t isector)
static constexpr Int_t FLP[2]
static Int_t getCRUlink(int link)
static constexpr double WGLFZ
static constexpr double BETWEENLANDMASK
static constexpr int NWINDOW_IN_ORBIT
static void InitIndices()
static constexpr double CBLW
static void alignedToNominalSector(Float_t *xyz, Int_t isector)
static void rotateToStrip(Float_t *xyz, Int_t iplate, Int_t istrip, Int_t isector)
static constexpr Bool_t FEAWITHMASKS[NSECTORS]
static constexpr Double_t MATCHINGWINDOW
static constexpr double NPADX_INV_INT
static constexpr double ZLENA
static double getAngles(Int_t iplate, Int_t istrip)
static constexpr Double_t LATENCYWINDOW
static constexpr Int_t NSTRIPS
GLdouble GLdouble GLdouble z
a couple of static helper functions to create timestamp values for CCDB queries or override obsolete ...