Fix over the QA Histogram in AliACORDEQADataMaker::MakeRaws
[u/mrichter/AliRoot.git] / ACORDE / AliACORDEConstants.cxx
1  /**************************************************************************
2  * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
3  *                                                                        *
4  * Author: The ALICE Off-line Project.                                    *
5  * Contributors are mentioned in the code where appropriate.              *
6  *                                                                        *
7  * Permission to use, copy, modify and distribute this software and its   *
8  * documentation strictly for non-commercial purposes is hereby granted   *
9  * without fee, provided that the above copyright notice appears in all   *
10  * copies and that both the copyright notice and this permission notice   *
11  * appear in the supporting documentation. The authors make no claims     *
12  * about the suitability of this software for any purpose. It is          *
13  * provided "as is" without express or implied warranty.                  *
14  **************************************************************************/
15
16 /* $Id$ */
17
18 ////////////////////////////////////////////////////////////////////////
19 //
20 // AliACORDEConstants class
21 //
22 // This class serves to group constants needed by ACORDE detector in 1
23 // easily accessible place. All constants are public const static data 
24 // members. The class is never instatiated.
25 // Authors: Arturo Fernandez, Enrique Gamez, Mario Rodriguez Cahuantzi, Eleazar Cuautle(ICN-UNAM) 
26 //         FCFM-UAP, Mexico.
27 // Last update: Nov. 24th 08
28 ////////////////////////////////////////////////////////////////////////
29
30 #include "AliACORDEConstants.h"
31
32 AliACORDEConstants* AliACORDEConstants::fgInstance = 0;
33
34 const Float_t AliACORDEConstants::fgkModuleLength          = 300.0;
35 const Float_t AliACORDEConstants::fgkModuleWidth           = 26.0;
36 const Float_t AliACORDEConstants::fgkModuleHeight          =  10.0;
37 const Float_t AliACORDEConstants::fgkPlasticLength = 190.0;
38 const Float_t AliACORDEConstants::fgkPlasticWidth  =  20.0;
39 const Float_t AliACORDEConstants::fgkPlasticHeight =   1.0;
40 const Float_t AliACORDEConstants::fgkProfileWidth =    3.8;
41 const Float_t AliACORDEConstants::fgkProfileThickness = 0.3;
42 const Float_t AliACORDEConstants::fgkDepth               =4420; 
43
44 const Float_t AliACORDEConstants::fgkHitEnergyThreshold = 1.52; // MeV
45 const Float_t AliACORDEConstants::fgkMaxHitTimeDifference = 40.0; // ns
46 const Int_t AliACORDEConstants::fgkMultiMuonThreshold = 2;
47 const Float_t AliACORDEConstants::fgkMultiMuonWindow = 25;
48 const Float_t AliACORDEConstants::fgkModulePositionX[60] = {
49   641, 641, 641, 641, 641, 641, 641, 641, 641, 641,
50   426, 426, 426, 426, 426, 426, 426, 426, 426, 426,
51   153, 153, 153, 153, 153, 153, 153, 153, 153, 153,
52   -153, -153, -153, -153, -153, -153, -153, -153, -153,
53   -153, -426, -426, -426, -426, -426, -426, -426, -426,
54   -426, -426, -644, -644, -644, -644, -644, -619, -623,
55   -641, -641, -641};
56 const Float_t AliACORDEConstants::fgkModulePositionY[60] = {
57   582, 574, 574, 574, 574, 574, 574, 574, 574, 582,
58   789, 789, 789, 789, 789, 789, 789, 789, 789, 789,
59   850, 850, 850, 850, 850, 850, 850, 850, 850, 850,
60   850, 850, 850, 850, 850, 850, 850, 850, 850, 850,
61   789, 789, 789, 789, 789, 789, 789, 789, 789, 789,
62   582, 574, 574, 574, 574, 601, 597, 574, 574, 582};
63 const Float_t AliACORDEConstants::fgkModulePositionZ[60] = {
64   450, 350, 250, 150, 50, -50, -120, -280, -350, -450,
65   450, 350, 250, 150, 50, -50, -150, -250, -350, -450,
66   450, 350, 250, 150, 50, -50, -150, -250, -350, -450,
67   450, 350, 250, 150, 50, -50, -150, -250, -350, -450,
68   450, 350, 250, 150, 50, -50, -150, -250, -350, -450,
69   450, 350, 250, 104, 50, -85, -184, -258, -350, -450};
70
71
72 const Float_t AliACORDEConstants::fgkSupportModulePositionX[60] = {
73   641, 641, 641, 641, 641, 641, 641, 641, 641, 641,
74   426, 426, 426, 426, 426, 426, 426, 426, 426, 426,
75   153, 153, 153, 153, 153, 153, 153, 153, 153, 153,
76   -153, -153, -153, -153, -153, -153, -153, -153, -153,
77   -153, -426, -426, -426, -426, -426, -426, -426, -426,
78   -426, -426, -644, -644, -644, -644, -644, -619, -623,
79   -641, -641, -641};
80 const Float_t AliACORDEConstants::fgkSupportModulePositionY[60] = {
81   582, 582, 582, 582, 582, 582, 582, 582, 582, 582,
82   797, 797, 797, 797, 797, 797, 797, 797, 797, 797,
83   850, 850, 850, 850, 850, 850, 850, 850, 850, 850,
84   850, 850, 850, 850, 850, 850, 850, 850, 850, 850,
85   797, 797, 797, 797, 797, 797, 797, 797, 797, 797,
86   582, 582, 582, 582, 582, 609, 605, 582, 582, 582};
87 const Float_t AliACORDEConstants::fgkSupportModulePositionZ[60] = {
88   450, 350, 250, 150, 50, -50, -120, -280, -350, -450,
89   450, 350, 250, 150, 50, -50, -150, -250, -350, -450,
90   450, 350, 250, 150, 50, -50, -150, -250, -350, -450,
91   450, 350, 250, 150, 50, -50, -150, -250, -350, -450,
92   450, 350, 250, 150, 50, -50, -150, -250, -350, -450,
93   450, 350, 250, 104, 50, -85, -176, -250, -350, -450};
94   
95
96 const Float_t AliACORDEConstants::fgkExtraModulePositionZ[4] = {93.0, 18., -18, -93};
97 const Float_t AliACORDEConstants::fgkExtraModulePositionX = 0.0;
98 const Float_t AliACORDEConstants::fgkExtraModulePositionY = 850.0;
99 const Int_t AliACORDEConstants::fgkModuleElectronicChannel[60] = {
100 /* DCS 0_0 ITS-1*/ 10,
101 /* DCS 0_1 */ 4,
102 /* DCS 0_2 */ 8,
103 /* DCS 0_3 */ 7,
104 /* DCS 0_4 */ 6,
105 /* DCS 0_5 */ 5,
106 /* DCS 0_6 */ 9,
107 /* DCS 0_7 */ 3,
108 /* DCS 0_8 */ 2,
109 /* DCS 0_9 ITS-2*/ 42,
110 /* DCS 1_0 */ 20,
111 /* DCS 1_1 */ 19,
112 /* DCS 1_2 */ 18,
113 /* DCS 1_3 */ 17,
114 /* DCS 1_4 */ 16,
115 /* DCS 1_5 */ 15,
116 /* DCS 1_6 */ 14,
117 /* DCS 1_7 */ 13,
118 /* DCS 1_8 */ 12,
119 /* DCS 1_9 */ 11,
120 /* DCS 2_0 */ 60,
121 /* DCS 2_1 */ 59,
122 /* DCS 2_2 */ 58,
123 /* DCS 2_3 */ 57,
124 /* DCS 2_4 */ 56,
125 /* DCS 2_5 */ 55,
126 /* DCS 2_6 */ 54,
127 /* DCS 2_7 */ 53,
128 /* DCS 2_8 */ 52,
129 /* DCS 2_9 */ 51,
130 /* DCS 3_0 */ 40,
131 /* DCS 3_1 */ 39,
132 /* DCS 3_2 */ 38,
133 /* DCS 3_3 */ 37,
134 /* DCS 3_4 */ 36,
135 /* DCS 3_5 */ 35,
136 /* DCS 3_6 */ 34,
137 /* DCS 3_7 */ 33,
138 /* DCS 3_8 */ 32,
139 /* DCS 3_9 */ 31,
140 /* DCS 4_0 */ 30,
141 /* DCS 4_1 */ 29,
142 /* DCS 4_2 */ 28,
143 /* DCS 4_3 */ 27,
144 /* DCS 4_4 */ 26,
145 /* DCS 4_5 */ 25,
146 /* DCS 4_6 */ 24,
147 /* DCS 4_7 */ 23,
148 /* DCS 4_8 */ 22,
149 /* DCS 4_9 */ 21,
150 /* DCS 5_0 ITS-3*/ 1,
151 /* DCS 5_1 */ 49,
152 /* DCS 5_2 */ 48,
153 /* DCS 5_3 */ 47,
154 /* DCS 5_4 */ 46,
155 /* DCS 5_5 */ 45,
156 /* DCS 5_6 */ 44,
157 /* DCS 5_7 */ 43,
158 /* DCS 5_8 */ 50,
159 /* DCS 5_9 ITS-4*/ 41
160 };
161
162
163
164 ClassImp(AliACORDEConstants)
165
166 //_____________________________________________________________________________
167 AliACORDEConstants::AliACORDEConstants()
168   : TObject()
169 {
170   // Default constructor
171 }
172
173
174 //_____________________________________________________________________________
175 AliACORDEConstants* AliACORDEConstants::Instance()
176 {
177   if ( !fgInstance ) {
178     fgInstance = new AliACORDEConstants;
179   }
180   return fgInstance;
181 }
182
183 //_____________________________________________________________________________
184 AliACORDEConstants::~AliACORDEConstants()
185 {
186   fgInstance = 0;
187 }
188
189 //_____________________________________________________________________________
190 Float_t AliACORDEConstants::ModulePositionX(Int_t i) const
191 {
192   // Module lenght
193   return fgkModulePositionX[i];
194 }
195
196 //_____________________________________________________________________________
197 Float_t AliACORDEConstants::ModulePositionY(Int_t i) const
198 {
199   // Module lenght
200   return fgkModulePositionY[i];
201 }
202 //_____________________________________________________________________________
203 Float_t AliACORDEConstants::ModulePositionZ(Int_t i) const
204 {
205   // Module lenght
206   return fgkModulePositionZ[i];
207 }
208
209
210 //_____________________________________________________________________________
211 Float_t AliACORDEConstants::SupportModulePositionX(Int_t i) const
212 {
213   // Module lenght
214   return fgkSupportModulePositionX[i];
215 }
216
217 //_____________________________________________________________________________
218 Float_t AliACORDEConstants::SupportModulePositionY(Int_t i) const
219 {
220   // Module lenght
221   return fgkSupportModulePositionY[i];
222 }
223 //_____________________________________________________________________________
224 Float_t AliACORDEConstants::SupportModulePositionZ(Int_t i) const
225 {
226   // Module lenght
227   return fgkSupportModulePositionZ[i];
228 }
229
230
231
232 Float_t AliACORDEConstants::ExtraModulePositionX() const
233 {
234   // Module lenght
235   return fgkExtraModulePositionX;
236 }
237
238 //_____________________________________________________________________________
239 Float_t AliACORDEConstants::ExtraModulePositionY() const
240 {
241   // Module lenght
242   return fgkExtraModulePositionY;
243 }
244 //_____________________________________________________________________________
245 Float_t AliACORDEConstants::ExtraModulePositionZ(Int_t i) const
246 {
247   // Module lenght
248   return fgkExtraModulePositionZ[i];
249 }
250 //_____________________________________________________________________________
251 Int_t AliACORDEConstants::ModuleElectronicChannel(Int_t i) const
252 {
253         // return de ID (electronic channel in ACORDE) of each module
254         // acording to the current match between DCS and Electronic nomenclature
255         return fgkModuleElectronicChannel[i];
256 }
257 //_____________________________________________________________________________
258 Float_t AliACORDEConstants::ModuleLength() const
259 {
260   // Module lenght
261   return fgkModuleLength;
262 }
263
264 //_____________________________________________________________________________
265 Float_t AliACORDEConstants::ModuleWidth() const
266 {
267   // Module width
268   return fgkModuleWidth;
269 }
270
271 //_____________________________________________________________________________
272 Float_t AliACORDEConstants::ModuleHeight() const
273 {
274   // Module height
275   return fgkModuleHeight;
276 }
277
278 //_____________________________________________________________________________
279 Float_t AliACORDEConstants::PlasticLength() const
280 {
281   // Length of the scintillator active zone for a single counter
282   return fgkPlasticLength;
283 }
284
285 //_____________________________________________________________________________
286 Float_t AliACORDEConstants::PlasticWidth() const
287 {
288   // Width of the scintillator active zone for a single counter
289   return fgkPlasticWidth;
290 }
291
292 //_____________________________________________________________________________
293 Float_t AliACORDEConstants::PlasticHeight() const
294 {
295   // Height of the scintillator active zone for a single counter
296   return fgkPlasticHeight;
297 }
298
299 Float_t AliACORDEConstants::ProfileWidth() const
300 {
301   // Width of the profile of the Al box
302   return fgkProfileWidth;
303 }
304
305 Float_t AliACORDEConstants::ProfileThickness() const
306 {
307   // Thickness of the profile of the Al box
308   return fgkProfileThickness;
309 }
310
311
312 //_____________________________________________________________________________
313 Float_t AliACORDEConstants::Depth() const
314 {
315   // Alice IP depth
316   return fgkDepth;
317 }