Update of Constants for the Acorde's Geometry
[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 ClassImp(AliACORDEConstants)
163
164 //_____________________________________________________________________________
165 AliACORDEConstants::AliACORDEConstants()
166   : TObject()
167 {
168   // Default constructor
169 }
170
171
172 //_____________________________________________________________________________
173 AliACORDEConstants* AliACORDEConstants::Instance()
174 {
175   if ( !fgInstance ) {
176     fgInstance = new AliACORDEConstants;
177   }
178   return fgInstance;
179 }
180
181 //_____________________________________________________________________________
182 AliACORDEConstants::~AliACORDEConstants()
183 {
184   fgInstance = 0;
185 }
186
187 //_____________________________________________________________________________
188 Float_t AliACORDEConstants::ModulePositionX(Int_t i) const
189 {
190   // Module lenght
191   return fgkModulePositionX[i];
192 }
193
194 //_____________________________________________________________________________
195 Float_t AliACORDEConstants::ModulePositionY(Int_t i) const
196 {
197   // Module lenght
198   return fgkModulePositionY[i];
199 }
200 //_____________________________________________________________________________
201 Float_t AliACORDEConstants::ModulePositionZ(Int_t i) const
202 {
203   // Module lenght
204   return fgkModulePositionZ[i];
205 }
206
207
208 //_____________________________________________________________________________
209 Float_t AliACORDEConstants::SupportModulePositionX(Int_t i) const
210 {
211   // Module lenght
212   return fgkSupportModulePositionX[i];
213 }
214
215 //_____________________________________________________________________________
216 Float_t AliACORDEConstants::SupportModulePositionY(Int_t i) const
217 {
218   // Module lenght
219   return fgkSupportModulePositionY[i];
220 }
221 //_____________________________________________________________________________
222 Float_t AliACORDEConstants::SupportModulePositionZ(Int_t i) const
223 {
224   // Module lenght
225   return fgkSupportModulePositionZ[i];
226 }
227
228
229
230 Float_t AliACORDEConstants::ExtraModulePositionX() const
231 {
232   // Module lenght
233   return fgkExtraModulePositionX;
234 }
235
236 //_____________________________________________________________________________
237 Float_t AliACORDEConstants::ExtraModulePositionY() const
238 {
239   // Module lenght
240   return fgkExtraModulePositionY;
241 }
242 //_____________________________________________________________________________
243 Float_t AliACORDEConstants::ExtraModulePositionZ(Int_t i) const
244 {
245   // Module lenght
246   return fgkExtraModulePositionZ[i];
247 }
248 //_____________________________________________________________________________
249 Int_t AliACORDEConstants::ModuleElectronicChannel(Int_t i) const
250 {
251         // return de ID (electronic channel in ACORDE) of each module
252         // acording to the current match between DCS and Electronic nomenclature
253         return fgkModuleElectronicChannel[i];
254 }
255 //_____________________________________________________________________________
256 Float_t AliACORDEConstants::ModuleLength() const
257 {
258   // Module lenght
259   return fgkModuleLength;
260 }
261
262 //_____________________________________________________________________________
263 Float_t AliACORDEConstants::ModuleWidth() const
264 {
265   // Module width
266   return fgkModuleWidth;
267 }
268
269 //_____________________________________________________________________________
270 Float_t AliACORDEConstants::ModuleHeight() const
271 {
272   // Module height
273   return fgkModuleHeight;
274 }
275
276 //_____________________________________________________________________________
277 Float_t AliACORDEConstants::PlasticLength() const
278 {
279   // Length of the scintillator active zone for a single counter
280   return fgkPlasticLength;
281 }
282
283 //_____________________________________________________________________________
284 Float_t AliACORDEConstants::PlasticWidth() const
285 {
286   // Width of the scintillator active zone for a single counter
287   return fgkPlasticWidth;
288 }
289
290 //_____________________________________________________________________________
291 Float_t AliACORDEConstants::PlasticHeight() const
292 {
293   // Height of the scintillator active zone for a single counter
294   return fgkPlasticHeight;
295 }
296
297 Float_t AliACORDEConstants::ProfileWidth() const
298 {
299   // Width of the profile of the Al box
300   return fgkProfileWidth;
301 }
302
303 Float_t AliACORDEConstants::ProfileThickness() const
304 {
305   // Thickness of the profile of the Al box
306   return fgkProfileThickness;
307 }
308
309
310 //_____________________________________________________________________________
311 Float_t AliACORDEConstants::Depth() const
312 {
313   // Alice IP depth
314   return fgkDepth;
315 }