This update contains the Full ACORDE Geometry and raw Data
[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 Rodríguez Cahuantzi, Eleazar Cuautle(ICN-UNAM) 
26 //         FCFM-UAP, Mexico.
27 //
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, 582, 582, 582, 582, 582, 582, 582, 582, 582,
58   797, 797, 797, 797, 797, 797, 797, 797, 797, 797,
59   850, 850, 850, 850, 850, 850, 850, 850, 850, 850,
60   850, 850, 850, 850, 850, 850, 850, 850, 850, 850,
61   797, 797, 797, 797, 797, 797, 797, 797, 797, 797,
62   582, 582, 582, 582, 582, 609, 605, 582, 582, 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, -76, -176, -250, -350, -450};
70
71 const Float_t AliACORDEConstants::fgkExtraModulePositionZ[4] = {93.0, 18., -18, -93};
72 const Float_t AliACORDEConstants::fgkExtraModulePositionX = 0.0;
73 const Float_t AliACORDEConstants::fgkExtraModulePositionY = 850.0;
74
75 ClassImp(AliACORDEConstants)
76
77 //_____________________________________________________________________________
78 AliACORDEConstants::AliACORDEConstants()
79   : TObject()
80 {
81   // Default constructor
82 }
83
84
85 //_____________________________________________________________________________
86 AliACORDEConstants* AliACORDEConstants::Instance()
87 {
88   if ( !fgInstance ) {
89     fgInstance = new AliACORDEConstants;
90   }
91   return fgInstance;
92 }
93
94 //_____________________________________________________________________________
95 AliACORDEConstants::~AliACORDEConstants()
96 {
97   fgInstance = 0;
98 }
99
100 //_____________________________________________________________________________
101 Float_t AliACORDEConstants::ModulePositionX(Int_t i) const
102 {
103   // Module lenght
104   return fgkModulePositionX[i];
105 }
106
107 //_____________________________________________________________________________
108 Float_t AliACORDEConstants::ModulePositionY(Int_t i) const
109 {
110   // Module lenght
111   return fgkModulePositionY[i];
112 }
113 //_____________________________________________________________________________
114 Float_t AliACORDEConstants::ModulePositionZ(Int_t i) const
115 {
116   // Module lenght
117   return fgkModulePositionZ[i];
118 }
119
120 Float_t AliACORDEConstants::ExtraModulePositionX() const
121 {
122   // Module lenght
123   return fgkExtraModulePositionX;
124 }
125
126 //_____________________________________________________________________________
127 Float_t AliACORDEConstants::ExtraModulePositionY() const
128 {
129   // Module lenght
130   return fgkExtraModulePositionY;
131 }
132 //_____________________________________________________________________________
133 Float_t AliACORDEConstants::ExtraModulePositionZ(Int_t i) const
134 {
135   // Module lenght
136   return fgkExtraModulePositionZ[i];
137 }
138
139 //_____________________________________________________________________________
140 Float_t AliACORDEConstants::ModuleLength() const
141 {
142   // Module lenght
143   return fgkModuleLength;
144 }
145
146 //_____________________________________________________________________________
147 Float_t AliACORDEConstants::ModuleWidth() const
148 {
149   // Module width
150   return fgkModuleWidth;
151 }
152
153 //_____________________________________________________________________________
154 Float_t AliACORDEConstants::ModuleHeight() const
155 {
156   // Module height
157   return fgkModuleHeight;
158 }
159
160 //_____________________________________________________________________________
161 Float_t AliACORDEConstants::PlasticLength() const
162 {
163   // Length of the scintillator active zone for a single counter
164   return fgkPlasticLength;
165 }
166
167 //_____________________________________________________________________________
168 Float_t AliACORDEConstants::PlasticWidth() const
169 {
170   // Width of the scintillator active zone for a single counter
171   return fgkPlasticWidth;
172 }
173
174 //_____________________________________________________________________________
175 Float_t AliACORDEConstants::PlasticHeight() const
176 {
177   // Height of the scintillator active zone for a single counter
178   return fgkPlasticHeight;
179 }
180
181 Float_t AliACORDEConstants::ProfileWidth() const
182 {
183   // Width of the profile of the Al box
184   return fgkProfileWidth;
185 }
186
187 Float_t AliACORDEConstants::ProfileThickness() const
188 {
189   // Thickness of the profile of the Al box
190   return fgkProfileThickness;
191 }
192
193
194 //_____________________________________________________________________________
195 Float_t AliACORDEConstants::Depth() const
196 {
197   // Alice IP depth
198   return fgkDepth;
199 }