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 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)
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 -151.171, -152.082,-155.098, -155.141,-159.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 fgInstance = new AliACORDEConstants;
247 //_____________________________________________________________________________
248 AliACORDEConstants::~AliACORDEConstants()
253 //_____________________________________________________________________________
254 Float_t AliACORDEConstants::InsideModulePositionX(Int_t i) const
256 return fgkInsideModulePositionX[i];
258 //_____________________________________________________________________________
259 Float_t AliACORDEConstants::InsideModulePositionY(Int_t i) const
261 return fgkInsideModulePositionY[i];
263 //_____________________________________________________________________________
264 Float_t AliACORDEConstants::InsideModulePositionZ(Int_t i) const
266 return fgkInsideModulePositionZ[i];
268 //_____________________________________________________________________________
269 Float_t AliACORDEConstants::CenterModulePositionX(Int_t i) const
271 return fgkCenterModulePositionX[i];
273 //_____________________________________________________________________________
274 Float_t AliACORDEConstants::CenterModulePositionY(Int_t i) const
276 return fgkCenterModulePositionY[i];
278 //_____________________________________________________________________________
279 Float_t AliACORDEConstants::CenterModulePositionZ(Int_t i) const
281 return fgkCenterModulePositionZ[i];
283 //_____________________________________________________________________________
284 Float_t AliACORDEConstants::OutsideModulePositionX(Int_t i) const
286 return fgkOutsideModulePositionX[i];
288 //_____________________________________________________________________________
289 Float_t AliACORDEConstants::OutsideModulePositionY(Int_t i) const
291 return fgkOutsideModulePositionY[i];
293 //_____________________________________________________________________________
294 Float_t AliACORDEConstants::OutsideModulePositionZ(Int_t i) const
296 return fgkOutsideModulePositionZ[i];
298 //_____________________________________________________________________________
299 Float_t AliACORDEConstants::OldModulePositionX(Int_t i) const
302 return fgkOldModulePositionX[i];
305 //_____________________________________________________________________________
306 Float_t AliACORDEConstants::OldModulePositionY(Int_t i) const
309 return fgkOldModulePositionY[i];
311 //_____________________________________________________________________________
312 Float_t AliACORDEConstants::OldModulePositionZ(Int_t i) const
315 return fgkOldModulePositionZ[i];
319 //_____________________________________________________________________________
320 Float_t AliACORDEConstants::SupportModulePositionX(Int_t i) const
323 return fgkSupportModulePositionX[i];
326 //_____________________________________________________________________________
327 Float_t AliACORDEConstants::SupportModulePositionY(Int_t i) const
330 return fgkSupportModulePositionY[i];
332 //_____________________________________________________________________________
333 Float_t AliACORDEConstants::SupportModulePositionZ(Int_t i) const
336 return fgkSupportModulePositionZ[i];
341 Float_t AliACORDEConstants::OldExtraModulePositionX() const
344 return fgkOldExtraModulePositionX;
347 //_____________________________________________________________________________
348 Float_t AliACORDEConstants::OldExtraModulePositionY() const
351 return fgkOldExtraModulePositionY;
353 //_____________________________________________________________________________
354 Float_t AliACORDEConstants::OldExtraModulePositionZ(Int_t i) const
357 return fgkOldExtraModulePositionZ[i];
359 //_____________________________________________________________________________
360 Int_t AliACORDEConstants::OldModuleElectronicChannel(Int_t i) const
362 // return de ID (electronic channel in ACORDE) of each module
363 // acording to the current match between DCS and Electronic nomenclature
364 return fgkOldModuleElectronicChannel[i];
366 //_____________________________________________________________________________
367 Float_t AliACORDEConstants::ModuleLength() const
370 return fgkModuleLength;
373 //_____________________________________________________________________________
374 Float_t AliACORDEConstants::ModuleWidth() const
377 return fgkModuleWidth;
380 //_____________________________________________________________________________
381 Float_t AliACORDEConstants::ModuleHeight() const
384 return fgkModuleHeight;
387 //_____________________________________________________________________________
388 Float_t AliACORDEConstants::PlasticLength() const
390 // Length of the scintillator active zone for a single counter
391 return fgkPlasticLength;
394 //_____________________________________________________________________________
395 Float_t AliACORDEConstants::PlasticWidth() const
397 // Width of the scintillator active zone for a single counter
398 return fgkPlasticWidth;
401 //_____________________________________________________________________________
402 Float_t AliACORDEConstants::PlasticHeight() const
404 // Height of the scintillator active zone for a single counter
405 return fgkPlasticHeight;
408 Float_t AliACORDEConstants::ProfileWidth() const
410 // Width of the profile of the Al box
411 return fgkProfileWidth;
414 Float_t AliACORDEConstants::ProfileThickness() const
416 // Thickness of the profile of the Al box
417 return fgkProfileThickness;
421 //_____________________________________________________________________________
422 Float_t AliACORDEConstants::Depth() const