]> git.uio.no Git - u/mrichter/AliRoot.git/blame - TRD/AliTRDCommonParam.cxx
- Volume name attribute replaced with volume path
[u/mrichter/AliRoot.git] / TRD / AliTRDCommonParam.cxx
CommitLineData
3551db50 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// Class containing constant common parameters //
21// //
22// Request an instance with AliTRDCommonParam::Instance() //
23// Then request the needed values //
24// //
25///////////////////////////////////////////////////////////////////////////////
26
27#include "AliRun.h"
28
29#include "AliTRDCommonParam.h"
30#include "AliTRDpadPlane.h"
31
32
33ClassImp(AliTRDCommonParam)
34
35AliTRDCommonParam* AliTRDCommonParam::fgInstance = 0;
36Bool_t AliTRDCommonParam::fgTerminated = kFALSE;
37
38//_ singleton implementation __________________________________________________
39AliTRDCommonParam* AliTRDCommonParam::Instance()
40{
41 //
42 // Singleton implementation
43 // Returns an instance of this class, it is created if neccessary
44 //
45
46 if (fgTerminated != kFALSE)
47 return 0;
48
49 if (fgInstance == 0)
50 fgInstance = new AliTRDCommonParam();
51
52 return fgInstance;
53}
54
55void AliTRDCommonParam::Terminate()
56{
57 //
58 // Singleton implementation
59 // Deletes the instance of this class and sets the terminated flag, instances cannot be requested anymore
60 // This function can be called several times.
61 //
62
63 fgTerminated = kTRUE;
64
65 if (fgInstance != 0)
66 {
67 delete fgInstance;
68 fgInstance = 0;
69 }
70}
71
72//_____________________________________________________________________________
73AliTRDCommonParam::AliTRDCommonParam()
74{
75 //
76 // constructor
77 //
78
79 fField = 0.0;
3551db50 80
3551db50 81 fExBOn = kFALSE;
3551db50 82
83 fPadPlaneArray = 0;
84
85 Init();
26db308d 86}
3551db50 87
88//_____________________________________________________________________________
89void AliTRDCommonParam::Init()
90{
91 //
92 // constructor helper
93 //
94
95 // E x B effects
96 fExBOn = kTRUE;
97
3551db50 98 // The magnetic field strength in Tesla
99 Double_t x[3] = { 0.0, 0.0, 0.0 };
100 Double_t b[3];
101 gAlice->Field(x,b); // b[] is in kilo Gauss
102 fField = b[2] * 0.1; // Tesla
103
3551db50 104 // ----------------------------------------------------------------------------
105 // The pad planes
106 // ----------------------------------------------------------------------------
107
108 fPadPlaneArray = new TObjArray(kNplan * kNcham);
109
110 for (Int_t iplan = 0; iplan < kNplan; iplan++) {
111 for (Int_t icham = 0; icham < kNcham; icham++) {
112 Int_t ipp = iplan + icham * kNplan;
113 fPadPlaneArray->AddAt(new AliTRDpadPlane(iplan,icham),ipp);
114 }
115 }
116}
117
118//_____________________________________________________________________________
119AliTRDCommonParam::~AliTRDCommonParam()
120{
121 //
122 // destructor
123 //
124
3551db50 125 if (fPadPlaneArray) {
126 fPadPlaneArray->Delete();
127 delete fPadPlaneArray;
128 fPadPlaneArray = 0;
129 }
26db308d 130}
3551db50 131
132//_____________________________________________________________________________
133AliTRDCommonParam::AliTRDCommonParam(const AliTRDCommonParam &p):TObject(p)
134{
135 //
136 // copy constructor
137 //
138
139 ((AliTRDCommonParam &) p).Copy(*this);
140}
141
142
143//_____________________________________________________________________________
144AliTRDCommonParam &AliTRDCommonParam::operator=(const AliTRDCommonParam &p)
145{
146 //
147 // Assignment operator
148 //
149
150 if (this != &p) ((AliTRDCommonParam &) p).Copy(*this);
151 return *this;
152}
153
154//_____________________________________________________________________________
155void AliTRDCommonParam::Copy(TObject &p) const
156{
157 //
158 // Copy function
159 //
160
161 AliTRDCommonParam* target = dynamic_cast<AliTRDCommonParam*> (&p);
162 if (!target)
163 return;
164
165 target->fExBOn = fExBOn;
cc7cef99 166 target->fField = fField;
3551db50 167}
168
169//_____________________________________________________________________________
170AliTRDpadPlane *AliTRDCommonParam::GetPadPlane(Int_t p, Int_t c) const
171{
172 //
173 // Returns the pad plane for a given plane <p> and chamber <c> number
174 //
175
176 Int_t ipp = p + c * kNplan;
177 return ((AliTRDpadPlane *) fPadPlaneArray->At(ipp));
178
179}
180
181//_____________________________________________________________________________
182Int_t AliTRDCommonParam::GetRowMax(Int_t p, Int_t c, Int_t /*s*/) const
183{
184 //
185 // Returns the number of rows on the pad plane
186 //
187
188 return GetPadPlane(p,c)->GetNrows();
189
190}
191
192//_____________________________________________________________________________
193Int_t AliTRDCommonParam::GetColMax(Int_t p) const
194{
195 //
196 // Returns the number of rows on the pad plane
197 //
198
199 return GetPadPlane(p,0)->GetNcols();
200
201}
202
203//_____________________________________________________________________________
204Double_t AliTRDCommonParam::GetRow0(Int_t p, Int_t c, Int_t /*s*/) const
205{
206 //
207 // Returns the position of the border of the first pad in a row
208 //
209
210 return GetPadPlane(p,c)->GetRow0();
211
212}
213
214//_____________________________________________________________________________
215Double_t AliTRDCommonParam::GetCol0(Int_t p) const
216{
217 //
218 // Returns the position of the border of the first pad in a column
219 //
220
221 return GetPadPlane(p,0)->GetCol0();
222
223}