1 /**************************************************************************
2 * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
4 * Author: The ALICE Off-line Project. *
5 * Contributors are mentioned in the code where appropriate. *
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 **************************************************************************/
18 ////////////////////////////////////////////////////////////////////////
20 // AliACORDEConstants class
22 // This class includes the constants needed by ACORDE detector in
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)
27 // Last update: Nov. 24th 08
28 ////////////////////////////////////////////////////////////////////////
30 #include "AliACORDEConstants.h"
32 AliACORDEConstants* AliACORDEConstants::fgInstance = 0;
34 const Float_t AliACORDEConstants::fgkModuleLength = 300.0;
35 const Float_t AliACORDEConstants::fgkModuleWidth = 24.0;
36 const Float_t AliACORDEConstants::fgkModuleHeight = 10.0;
37 const Float_t AliACORDEConstants::fgkPlasticLength = 190.0;
38 const Float_t AliACORDEConstants::fgkPlasticWidth = 19.5;
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;
44 const Float_t AliACORDEConstants::fgkHitEnergyThreshold = 1.52; // MeVs
45 const Float_t AliACORDEConstants::fgkMaxHitTimeDifference = 40.0; // nanoseconds
46 const Int_t AliACORDEConstants::fgkMultiMuonThreshold = 2;
47 const Float_t AliACORDEConstants::fgkMultiMuonWindow = 25;
48 const Float_t AliACORDEConstants::fgkInsideModulePositionX[60] ={
49 149.831, 743.687, 744.367, 744.4, 744.535, 745.991, 745.41,0,0, 151.197,
50 529.449, 529.76, 529.911, 529.911, 530.172,529.709, 529.692, 529.597, 528.859, 528.131,
51 304.946, 304.472, 304.092, 303.734, 303.165, 303.301, 303.195, 303.422, 303.927, 304.091,
52 -3.974, -3.806, -2.984, -2.855, -3.042, -3.124, -3.395, -2.774, -3.072, -2.897,
53 -319.384, -318.925, 0,-318.133, -317.404, -317.365, -316.973, -317.222,-317.564,-317.913,
54 149.892, -537.461, -537.75, -537.327,-536.877, -502.826, -506.978,-531.402,-530.587,149.541};
55 const Float_t AliACORDEConstants::fgkInsideModulePositionY[60] ={
56 860.235, 486.767, 486.763, 487.156, 487.018, 485.638, 486.394, 0,0,859.869,
57 700.202, 700.11, 700.345, 700.746, 701.481, 701.662, 701.925, 701.51, 701.64, 702.098,
58 859.937, 859.712, 859.738, 859.788, 859.88, 860.278, 860.155, 860.131, 860.14, 859.731,
59 860.096, 860.035, 860.416, 860.451, 860.655, 860.445, 860.601, 860.275, 860.623, 860.665,
60 916.198, 916.005, 0, 915.731, 915.768, 914.931, 914.708, 914.794, 915.021, 915.084,
61 860.287, 692.384, 692.392, 693.071, 692.86, 725.954, 722.077, 698.292, 698.883, 860.37};
62 const Float_t AliACORDEConstants::fgkInsideModulePositionZ[60] ={
63 88.372, 348.682, 246.52, 147.039, 48.754, -51.643, -120.342, 0,0, 15.526,
64 447.027, 348.189, 249.102, 147.577, 47.405, -50.559, -150.334, -251.987, -348.106, -449.947,
65 448.725, 348.555, 248.541, 148.55, 48.717, -51.631, -151.254, -251.632, -351.217,-451.428,
66 453.195, 349.899, 249.957, 150.162, 50.603, -49.562, -149.784, -250.068, -349.753, -450.307,
67 449.871, 351.462, 0, 144.424, 48.172, -52.382, -153.346, -252.389, -353.167, -454.27,
68 -13.83, 350.436, 248.14, 107.763, 46.085, -85.097, -184.909, -258.298, -349.324, -113.94};
69 const Float_t AliACORDEConstants::fgkCenterModulePositionX[60] = {
70 -1.733 , 637.6 , 638.1095, 637.888, 637.8125, 639.579 , 638.63 , 639.332, 639.28 , -0.869,
71 423.5795, 423.693, 423.795 , 423.452, 423.274, 422.9885, 422.8995, 423.166, 422.7265, 422.1595,
72 153.119 , 152.362, 152.065 , 151.976, 151.518, 155.316, 151.427, 151.642, 152.465 , 151.93,
73 -156.171, -152.082,-155.098, -155.141,-154.922, -155.124, -155.629, -154.709,-155.223, -154.841,
74 -423.037, -422.772, -426,-422.229,-421.756, -422.053, -422.1545, -422.0375,-422.135,-422.311,
75 1.637, -643.0205,-643.1815,-642.6285, -642.5675, -610.356, -614.177, -637.256, -636.576, -2.157};
76 const Float_t AliACORDEConstants::fgkCenterModulePositionY[60] = {
77 859.72, 592.766, 592.428, 592.81, 592.68, 591.3185, 592.017, 590.053, 590.077, 859.516,
78 806.5215, 806.3125, 806.312, 806.4895, 806.6705, 807.0455, 807.335, 807.187, 807.615, 808.141,
79 859.493, 859.044, 859.285, 859.422, 859.396, 859.597, 859.624, 859.677, 859.482, 859.417,
80 859.669, 859.494, 859.527, 859.774, 859.486, 859.499, 859.491, 859.505, 859.823, 859.747,
81 807.771, 807.671, 807.6, 807.5765, 807.9485, 807.2915, 807.82, 807.445, 807.366, 807.331,
82 859.525, 585.937, 585.616, 586.0805, 586.221, 618.107, 614.02, 591.9165, 592.588, 859.739};
83 const Float_t AliACORDEConstants::fgkCenterModulePositionZ[60] = {
84 87.187, 348.1785, 247.3485, 147.058, 48.413, -49.9585, -121.0015, -281.09, -349.005, 16.161,
85 447.538, 348.676, 250.728, 146.9505, 47.299, -50.535, -150.6745, -249.6215, -348.2345, -449.8365,
86 449.018, 349.157, 249.406, 149.052, 49.198, -50.944, -150.735, -250.661,-350.989, -450.826,
87 452.428, 349.194, 249.399, 149.286, 49.493, -51.392, -150.955, -251.476, -351.018, -451.487,
88 446.97, 350.215, 250.215, 146.4975,44.1585, -50.8225, -147.4875, -254.989, -352.524, -448.606,
89 -14.146, 349.752, 249.0625, 105.4995, 44.571, -81.677, -181.26, -258.498, -349.4315, -113.948};
90 const Float_t AliACORDEConstants::fgkOutsideModulePositionX[60] ={
91 -149.874, 531.513, 531.852, 531.376, 531.09, 533.167, 531.85, 531.587, 531.878, -148.895,
92 317.71, 317.626, 317.679, 316.993, 316.376, 316.268, 316.105, 316.735, 316.594, 316.188,
93 5.086, 4.271, 4.228, 3.875, 3.38, 3.425, 3.402, 3.534, 4.237, 4.199,
94 -303.888, -303.866, -303.157, -302.97, -302.994, -303.264, -303.36, -302.872, -303.247,-302.837,
95 -526.69, -526.619, -526.568, -526.325, -526.108, -526.741, -527.336, -526.853, -526.706, -526.709,
96 -150.248, -748.58, -748.613, -747.93, -748.258, 0, 0,-743.11, -742.565, -150.26};
97 const Float_t AliACORDEConstants::fgkOutsideModulePositionY[60] ={
98 860.564, 698.765, 698.093, 698.464, 698.342, 696.999, 697.64, 697.851, 697.969, 860.44,
99 912.841, 912.515, 912.279, 912.233, 911.86, 912.429, 912.745, 912.864, 913.59, 914.184,
100 860.42, 860.067, 860.278, 860.318, 860.285, 860.28, 860.466, 860.362, 860.222, 860.322,
101 860.563, 860.247, 859.991, 860.354, 860.06, 860.056, 859.686, 860.074, 860.463, 860.343,
102 699.344, 699.337, 698.834, 699.422, 700.129, 699.652, 700.932, 700.096, 699.711, 699.578,
103 860.159, 479.49, 478.84, 479.09, 479.582, 0,0,485.541, 486.293, 860.416};
104 const Float_t AliACORDEConstants::fgkOutsideModulePositionZ[60] ={
105 85.538, 347.675, 248.177, 147.077, 48.072, -48.274, -121.661, -281.827, -347.063, 16.81,
106 448.049, 349.163, 252.354, 146.324,47.193, -50.511, -151.015, -247.256, -348.363, -449.726,
107 449.235, 349.438, 249.614, 149.883, 49.413, -49.848, -149.932, -250.458, -350.314, -450.194,
108 451.868, 348.663, 248.448, 148.685, 48.844, -52.617, -152.185, -251.881, -352.541, -452.442,
109 444.069, 348.968, 247.813, 148.571, 40.145, -49.263, -141.629, -257.589, -351.881, -442.942,
110 -14.142, 349.068, 249.985, 103.236, 43.057, 0, 0, -258.698, -349.539, -114.16};
111 const Float_t AliACORDEConstants::fgkOldModulePositionX[60] = {
112 641, 641, 641, 641, 641, 641, 641, 641, 641, 641,
113 426, 426, 426, 426, 426, 426, 426, 426, 426, 426,
114 153, 153, 153, 153, 153, 153, 153, 153, 153, 153,
115 -153, -153, -153, -153, -153, -153, -153, -153, -153,
116 -153, -426, -426, -426, -426, -426, -426, -426, -426,
117 -426, -426, -644, -644, -644, -644, -644, -619, -623,
119 const Float_t AliACORDEConstants::fgkOldModulePositionY[60] = {
120 582, 574, 574, 574, 574, 574, 574, 574, 574, 582,
121 789, 789, 789, 789, 789, 789, 789, 789, 789, 789,
122 850, 850, 850, 850, 850, 850, 850, 850, 850, 850,
123 850, 850, 850, 850, 850, 850, 850, 850, 850, 850,
124 789, 789, 789, 789, 789, 789, 789, 789, 789, 789,
125 582, 574, 574, 574, 574, 601, 597, 574, 574, 582};
126 const Float_t AliACORDEConstants::fgkOldModulePositionZ[60] = {
127 450, 350, 250, 150, 50, -50, -120, -280, -350, -450,
128 450, 350, 250, 150, 50, -50, -150, -250, -350, -450,
129 450, 350, 250, 150, 50, -50, -150, -250, -350, -450,
130 450, 350, 250, 150, 50, -50, -150, -250, -350, -450,
131 450, 350, 250, 150, 50, -50, -150, -250, -350, -450,
132 450, 350, 250, 104, 50, -85, -184, -258, -350, -450};
135 const Float_t AliACORDEConstants::fgkSupportModulePositionX[60] = {
136 641, 641, 641, 641, 641, 641, 641, 641, 641, 641,
137 426, 426, 426, 426, 426, 426, 426, 426, 426, 426,
138 153, 153, 153, 153, 153, 153, 153, 153, 153, 153,
139 -153, -153, -153, -153, -153, -153, -153, -153, -153,
140 -153, -426, -426, -426, -426, -426, -426, -426, -426,
141 -426, -426, -644, -644, -644, -644, -644, -619, -623,
143 const Float_t AliACORDEConstants::fgkSupportModulePositionY[60] = {
144 582, 582, 582, 582, 582, 582, 582, 582, 582, 582,
145 797, 797, 797, 797, 797, 797, 797, 797, 797, 797,
146 850, 850, 850, 850, 850, 850, 850, 850, 850, 850,
147 850, 850, 850, 850, 850, 850, 850, 850, 850, 850,
148 797, 797, 797, 797, 797, 797, 797, 797, 797, 797,
149 582, 582, 582, 582, 582, 609, 605, 582, 582, 582};
150 const Float_t AliACORDEConstants::fgkSupportModulePositionZ[60] = {
151 450, 350, 250, 150, 50, -50, -120, -280, -350, -450,
152 450, 350, 250, 150, 50, -50, -150, -250, -350, -450,
153 450, 350, 250, 150, 50, -50, -150, -250, -350, -450,
154 450, 350, 250, 150, 50, -50, -150, -250, -350, -450,
155 450, 350, 250, 150, 50, -50, -150, -250, -350, -450,
156 450, 350, 250, 104, 50, -85, -176, -250, -350, -450};
159 const Float_t AliACORDEConstants::fgkOldExtraModulePositionZ[4] = {93.0, 18., -18, -93};
160 const Float_t AliACORDEConstants::fgkOldExtraModulePositionX = 0.0;
161 const Float_t AliACORDEConstants::fgkOldExtraModulePositionY = 850.0;
162 const Int_t AliACORDEConstants::fgkOldModuleElectronicChannel[60] = {
163 // Old configuration of ACORDE channels in patch panel cards used ONLY in cosmic runs from 2008
164 /* DCS 0_0 ITS-1*/ 10,
173 /* DCS 0_9 ITS-2*/ 42,
214 /* DCS 5_0 ITS-3*/ 1,
223 /* DCS 5_9 ITS-4*/ 41
228 ClassImp(AliACORDEConstants)
230 //_____________________________________________________________________________
231 AliACORDEConstants::AliACORDEConstants()
234 // Default constructor
238 //_____________________________________________________________________________
239 AliACORDEConstants* AliACORDEConstants::Instance()
242 // Instance implementacion
246 fgInstance = new AliACORDEConstants;
251 //_____________________________________________________________________________
252 AliACORDEConstants::~AliACORDEConstants()
255 // destructor for instance
260 //_____________________________________________________________________________
261 Float_t AliACORDEConstants::InsideModulePositionX(Int_t i) const
264 // Returns the InsideModulePositionX
266 return fgkInsideModulePositionX[i];
268 //_____________________________________________________________________________
269 Float_t AliACORDEConstants::InsideModulePositionY(Int_t i) const
272 // returns the InsideModulePositionY
274 return fgkInsideModulePositionY[i];
276 //_____________________________________________________________________________
277 Float_t AliACORDEConstants::InsideModulePositionZ(Int_t i) const
280 // returns the InsideModulePositionZ
282 return fgkInsideModulePositionZ[i];
284 //_____________________________________________________________________________
285 Float_t AliACORDEConstants::CenterModulePositionX(Int_t i) const
288 // returns the center module position X
290 return fgkCenterModulePositionX[i];
292 //_____________________________________________________________________________
293 Float_t AliACORDEConstants::CenterModulePositionY(Int_t i) const
296 // returns the center module position Y
298 return fgkCenterModulePositionY[i];
300 //_____________________________________________________________________________
301 Float_t AliACORDEConstants::CenterModulePositionZ(Int_t i) const
304 // returns the center module position Z
306 return fgkCenterModulePositionZ[i];
308 //_____________________________________________________________________________
309 Float_t AliACORDEConstants::OutsideModulePositionX(Int_t i) const
312 // returns the outside module position x
314 return fgkOutsideModulePositionX[i];
316 //_____________________________________________________________________________
317 Float_t AliACORDEConstants::OutsideModulePositionY(Int_t i) const
320 // returns the out side module position y
322 return fgkOutsideModulePositionY[i];
324 //_____________________________________________________________________________
325 Float_t AliACORDEConstants::OutsideModulePositionZ(Int_t i) const
328 // returns the out side module position z
330 return fgkOutsideModulePositionZ[i];
332 //_____________________________________________________________________________
333 Float_t AliACORDEConstants::OldModulePositionX(Int_t i) const
336 return fgkOldModulePositionX[i];
339 //_____________________________________________________________________________
340 Float_t AliACORDEConstants::OldModulePositionY(Int_t i) const
343 return fgkOldModulePositionY[i];
345 //_____________________________________________________________________________
346 Float_t AliACORDEConstants::OldModulePositionZ(Int_t i) const
349 return fgkOldModulePositionZ[i];
353 //_____________________________________________________________________________
354 Float_t AliACORDEConstants::SupportModulePositionX(Int_t i) const
357 return fgkSupportModulePositionX[i];
360 //_____________________________________________________________________________
361 Float_t AliACORDEConstants::SupportModulePositionY(Int_t i) const
364 return fgkSupportModulePositionY[i];
366 //_____________________________________________________________________________
367 Float_t AliACORDEConstants::SupportModulePositionZ(Int_t i) const
370 return fgkSupportModulePositionZ[i];
375 Float_t AliACORDEConstants::OldExtraModulePositionX() const
378 return fgkOldExtraModulePositionX;
381 //_____________________________________________________________________________
382 Float_t AliACORDEConstants::OldExtraModulePositionY() const
385 return fgkOldExtraModulePositionY;
387 //_____________________________________________________________________________
388 Float_t AliACORDEConstants::OldExtraModulePositionZ(Int_t i) const
391 return fgkOldExtraModulePositionZ[i];
393 //_____________________________________________________________________________
394 Int_t AliACORDEConstants::OldModuleElectronicChannel(Int_t i) const
396 // return de ID (electronic channel in ACORDE) of each module
397 // acording to the current match between DCS and Electronic nomenclature
398 return fgkOldModuleElectronicChannel[i];
400 //_____________________________________________________________________________
401 Float_t AliACORDEConstants::ModuleLength() const
404 return fgkModuleLength;
407 //_____________________________________________________________________________
408 Float_t AliACORDEConstants::ModuleWidth() const
411 return fgkModuleWidth;
414 //_____________________________________________________________________________
415 Float_t AliACORDEConstants::ModuleHeight() const
418 return fgkModuleHeight;
421 //_____________________________________________________________________________
422 Float_t AliACORDEConstants::PlasticLength() const
424 // Length of the scintillator active zone for a single counter
425 return fgkPlasticLength;
428 //_____________________________________________________________________________
429 Float_t AliACORDEConstants::PlasticWidth() const
431 // Width of the scintillator active zone for a single counter
432 return fgkPlasticWidth;
435 //_____________________________________________________________________________
436 Float_t AliACORDEConstants::PlasticHeight() const
438 // Height of the scintillator active zone for a single counter
439 return fgkPlasticHeight;
442 Float_t AliACORDEConstants::ProfileWidth() const
444 // Width of the profile of the Al box
445 return fgkProfileWidth;
448 Float_t AliACORDEConstants::ProfileThickness() const
450 // Thickness of the profile of the Al box
451 return fgkProfileThickness;
455 //_____________________________________________________________________________
456 Float_t AliACORDEConstants::Depth() const