coverity
[u/mrichter/AliRoot.git] / EMCAL / AliEMCALGeoParams.h
CommitLineData
bd3cd9c2 1#ifndef ALIEMCALGEOPARAMS_H
2#define ALIEMCALGEOPARAMS_H
3/* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
4 * See cxx source for full Copyright notice */
5
6/* $Id: AliEMCALGeoParams.h $ */
7
8//////////////////////////////////////////////////////////
e8c0d6bb 9// class for holding various parameters;
bd3cd9c2 10//////////////////////////////////////////////////////////
11
12class AliEMCALGeoParams
13{
14public:
15
16 // general geometry info
17 static const int fgkEMCALModules = 12; // number of modules for EMCAL
18 static const int fgkEMCALRows = 24; // number of rows per module for EMCAL
19 static const int fgkEMCALCols = 48; // number of columns per module for EMCAL
20
21 static const int fgkEMCALLEDRefs = 24; // number of LEDs (reference/monitors) per module for EMCAL; one per StripModule
6e9e8153 22 static const int fgkEMCALTempSensors = 8; // number Temperature sensors per module for EMCAL
23
24 Int_t GetStripModule(Int_t iSM, Int_t iCol) const
25 // Strip 0 is the one closest to the FEE crates; different for A (iColumn/2) and C sides
26 { return ( (iSM%2==0) ? iCol/2 : AliEMCALGeoParams::fgkEMCALLEDRefs - 1 - iCol/2 ); }
bd3cd9c2 27
28 // also a few readout related variables:
30aa89b0 29 static const int fgkLastAltroDDL = 43; // 0..23 (i.e. 24) for EMCAL; 24..43 (i.e. 20) allocated for DCAL
bd3cd9c2 30 static const int fgkSampleMax = 1023; // highest possible sample value (10-bit = 0x3ff)
6e9e8153 31 static const int fgkOverflowCut = 950; // saturation starts around here; also exist as private constant in AliEMCALRawUtils, should probably be replaced
bd3cd9c2 32 static const int fgkSampleMin = 0; // lowest possible sample value
85149d34 33
34 // TRU numbers
35 static const int fgkEMCALTRUsPerSM = 3; // number of TRU's in a SuperModule
36 static const int fgkEMCAL2x2PerTRU = 96; // number of 2x2's in a TRU
ecbba853 37 static const int fgkEMCALTRURows = 4;
38 static const int fgkEMCALTRUCols = 24;
3d66fb5e 39
afae9650 40 //STU numbers
41 static const int fgkEMCALSTUCols = 48; // STU columns
42 static const int fgkEMCALSTURows = 64; // STU rows
bd3cd9c2 43
44 // RAW/AliCaloAltroMapping provides the correspondence information between
45 // an electronics HWAddress (Branch<<1 | FEC<<7 | ALTRO<<4 | Channel)
46 // for the RCUs and which tower (Column and Row) that corresponds to.
47 // For the cases when one doesn't have a Raw stream to decode the HW address
48 // into the other FEE indices, we provide the needed simple methods here
49 // with arguments (within an RCU)
50 Int_t GetHWAddress(Int_t iBranch, Int_t iFEC, Int_t iALTRO, Int_t iChannel) const
51 { return ( (iBranch<<11) | (iFEC<<7) | (iALTRO<<4) | iChannel ); }; //
52 // and for converting back to the individual indices
53 Int_t GetBranch(Int_t iHW) const { return ( (iHW>>11) & 0x1 ); }; //
54 Int_t GetFEC(Int_t iHW) const { return ( (iHW>>7) & 0xf ); }; //
55 Int_t GetAltro(Int_t iHW) const { return ( (iHW>>4) & 0x7 ); }; //
56 Int_t GetChannel(Int_t iHW) const { return ( iHW & 0xf ); }; //
57
58 // We can also encode a very similar CSP address
59 Int_t GetCSPAddress(Int_t iBranch, Int_t iFEC, Int_t iCSP) const
60 { return ( (iBranch<<11) | (iFEC<<7) | iCSP ); }; //
61 // and for converting back to the individual indices
62 // Branch and FEC methods would just be the same as above
63 Int_t GetCSPFromAddress(Int_t i) const { return ( i & 0x1f ); }; //
64
65 /* // Below is some placeholder info that can later be added
e8c0d6bb 66 // in AliEMCALGeometry, together with the Get methods just above
bd3cd9c2 67
68 // But which CSP (0..31) corresponds to which ALTRO and Channel is not
69 // given anywhere (CSPs are used for APD biases etc).
70 // So, we add a conversion method for that here also.
71 // The order that the CSPs appear in the data is a bit funky so I include
72 // a mapping array instead of some complicated function
73 static const int fgkNCSP = 32;
74 static const int fgkCspOrder[32] =
75 { // just from ALTRO mapping of chips/channels to CSP
76 11, 27, 10, 26, 24, 8, 25, 9, // ALTRO 0
77 3, 19, 2, 18, 16, 0, 17, 1, // ALTRO 2
78 4, 20, 5, 21, 23, 7, 22, 6, // ALTRO 3
79 12, 28, 13, 29, 31, 15, 30, 14 // ALTRO 4
80 };
81 // This method is not used for reconstruction or so, but just for cross-
82 // checks with the DCS for the APD biases.
83 int GetCSP(int iALTRO, int iChannel) const
84 {
85 int id = iChannel/2; // 2 channels per tower (low and high gain)
86 int ichip = iALTRO;
87 if (ichip>=2) { ichip--; } // there is no ALTRO 1; (0,2,3,4 -> 0,1,2,3)
88 id += ichip*8; // 8 CSPs per ALTRO
89 //return fgkCspOrder[id];
90 return id;
91 }
92
93 */
94
95};
96
97#endif