]> git.uio.no Git - u/mrichter/AliRoot.git/blame - TPC/AliTPCROC.cxx
AliFatal in case of missing calibration entries (Marian)
[u/mrichter/AliRoot.git] / TPC / AliTPCROC.cxx
CommitLineData
7a0ff78e 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
17///////////////////////////////////////////////////////////////////////////////
18// //
19// Geometry class for a single ROC //
20// //
21// //
22///////////////////////////////////////////////////////////////////////////////
23#include "AliTPCROC.h"
24#include "TMath.h"
25
26ClassImp(AliTPCROC)
27
28
29AliTPCROC* AliTPCROC::fgInstance = 0;
30
31
32
33
34//_ singleton implementation __________________________________________________
35AliTPCROC* AliTPCROC::Instance()
36{
37 //
38 // Singleton implementation
39 // Returns an instance of this class, it is created if neccessary
40 //
41 if (fgInstance == 0){
42 fgInstance = new AliTPCROC();
43 fgInstance->Init();
44 }
45 return fgInstance;
46}
47
48
49
50
51void AliTPCROC::Init(){
52 //
53 // initialize static variables
54 //
55 if (AliTPCROC::fNSectorsAll>0) return;
56 fNSectorsAll =72;
57 fNSectors[0] =36;
58 fNSectors[1] =36;
59 //
60 fNRows[0]= 63;
61 fNRows[1]= 96;
62 //
63 // number of pads in padrow
c5bbaa2c 64 fNPads[0] = new UInt_t[fNRows[0]];
65 fNPads[1] = new UInt_t[fNRows[1]];
7a0ff78e 66 //
67 // padrow index in array
68 //
c5bbaa2c 69 fRowPosIndex[0] = new UInt_t[fNRows[0]];
70 fRowPosIndex[1] = new UInt_t[fNRows[1]];
7a0ff78e 71 //
72 // inner sectors
73 //
c5bbaa2c 74 UInt_t index =0;
75 for (UInt_t irow=0; irow<fNRows[0];irow++){
76 UInt_t npads = (irow==0) ? 68 : 2 *Int_t(Double_t(irow)/3. +33.67);
7a0ff78e 77 fNPads[0][irow] = npads;
78 fRowPosIndex[0][irow] = index;
79 index+=npads;
80 }
81 fNChannels[0] = index;
82 //
83 index =0;
84 Double_t k1 = 10.*TMath::Tan(10*TMath::DegToRad())/6.;
85 Double_t k2 = 15.*TMath::Tan(10*TMath::DegToRad())/6.;
c5bbaa2c 86 for (UInt_t irow=0; irow<fNRows[1];irow++){
87 UInt_t npads = (irow<64) ?
7a0ff78e 88 2*Int_t(k1*Double_t(irow)+37.75):
89 2*Int_t(k2*Double_t(irow-64)+56.66);
90 fNPads[1][irow] = npads;
91 fRowPosIndex[1][irow] = index;
92 index+=npads;
93 }
94 fNChannels[1] = index;
95 SetGeometry();
96}
97
98
99
100
101void AliTPCROC::SetGeometry()
102{
103 //
104 //set ROC geometry parameters
105 //
106 const Float_t kInnerRadiusLow = 83.65;
107 const Float_t kInnerRadiusUp = 133.3;
108 const Float_t kOuterRadiusLow = 133.5;
109 const Float_t kOuterRadiusUp = 247.7;
110 const Float_t kInnerFrameSpace = 1.5;
111 const Float_t kOuterFrameSpace = 1.5;
112 const Float_t kInnerWireMount = 1.2;
113 const Float_t kOuterWireMount = 1.4;
114 const Float_t kZLength =250.;
c5bbaa2c 115 const UInt_t kNRowLow = 63;
116 const UInt_t kNRowUp1 = 64;
117 const UInt_t kNRowUp2 = 32;
118 const UInt_t kNRowUp = 96;
7a0ff78e 119 const Float_t kInnerAngle = 20; // 20 degrees
120 const Float_t kOuterAngle = 20; // 20 degrees
121 //
122 // pad parameters
123 //
124 const Float_t kInnerPadPitchLength = 0.75;
125 const Float_t kInnerPadPitchWidth = 0.40;
126 const Float_t kInnerPadLength = 0.75;
127 const Float_t kInnerPadWidth = 0.40;
128 const Float_t kOuter1PadPitchLength = 1.0;
129 const Float_t kOuterPadPitchWidth = 0.6;
130 const Float_t kOuter1PadLength = 1.0;
131 const Float_t kOuterPadWidth = 0.6;
132 const Float_t kOuter2PadPitchLength = 1.5;
133 const Float_t kOuter2PadLength = 1.5;
134
135 //
136 //wires default parameters
137 //
c5bbaa2c 138// const UInt_t kNInnerWiresPerPad = 3;
139// const UInt_t kInnerDummyWire = 2;
7a0ff78e 140// const Float_t kInnerWWPitch = 0.25;
141// const Float_t kRInnerFirstWire = 84.475;
142// const Float_t kRInnerLastWire = 132.475;
143// const Float_t kInnerOffWire = 0.5;
c5bbaa2c 144// const UInt_t kNOuter1WiresPerPad = 4;
145// const UInt_t kNOuter2WiresPerPad = 6;
7a0ff78e 146// const Float_t kOuterWWPitch = 0.25;
147// const Float_t kROuterFirstWire = 134.225;
148// const Float_t kROuterLastWire = 246.975;
c5bbaa2c 149// const UInt_t kOuterDummyWire = 2;
7a0ff78e 150// const Float_t kOuterOffWire = 0.5;
151 //
152 //set sector parameters
153 //
154 fInnerRadiusLow = kInnerRadiusLow;
155 fOuterRadiusLow = kOuterRadiusLow;
156 fInnerRadiusUp = kInnerRadiusUp;
157 fOuterRadiusUp = kOuterRadiusUp;
158 fInnerFrameSpace = kInnerFrameSpace;
159 fOuterFrameSpace = kOuterFrameSpace;
160 fInnerWireMount = kInnerWireMount;
161 fOuterWireMount = kOuterWireMount;
162 fZLength = kZLength;
163 fInnerAngle = TMath::DegToRad()*kInnerAngle;
164 fOuterAngle = TMath::DegToRad()*kOuterAngle;
165
166 fNRowLow = kNRowLow;
167 fNRowUp1 = kNRowUp1;
168 fNRowUp2 = kNRowUp2;
169 fNRowUp = kNRowUp;
170 //
171 //set pad parameter
172 //
173 fInnerPadPitchLength = kInnerPadPitchLength;
174 fInnerPadPitchWidth = kInnerPadPitchWidth;
175 fInnerPadLength = kInnerPadLength;
176 fInnerPadWidth = kInnerPadWidth;
177 fOuter1PadPitchLength = kOuter1PadPitchLength;
178 fOuter2PadPitchLength = kOuter2PadPitchLength;
179 fOuterPadPitchWidth = kOuterPadPitchWidth;
180 fOuter1PadLength = kOuter1PadLength;
181 fOuter2PadLength = kOuter2PadLength;
182 fOuterPadWidth = kOuterPadWidth;
183
184 //
185 //set wire parameters
186 //
187 // SetInnerNWires(kNInnerWiresPerPad);
188 // SetInnerDummyWire(kInnerDummyWire);
189 // SetInnerOffWire(kInnerOffWire);
190 // SetOuter1NWires(kNOuter1WiresPerPad);
191 // SetOuter2NWire(kNOuter2WiresPerPad);
192 // SetOuterDummyWire(kOuterDummyWire);
193 // SetOuterOffWire(kOuterOffWire);
194 // SetInnerWWPitch(kInnerWWPitch);
195 // SetRInnerFirstWire(kRInnerFirstWire);
196 // SetRInnerLastWire(kRInnerLastWire);
197 // SetOuterWWPitch(kOuterWWPitch);
198 // SetROuterFirstWire(kROuterFirstWire);
199 // SetROuterLastWire(kROuterLastWire);
200}
201
202
203
204
205//_____________________________________________________________________________
179c6296 206AliTPCROC::AliTPCROC()
207 :TObject(),
208 fNSectorsAll(0),
209 fInnerRadiusLow(0.),
210 fInnerRadiusUp(0.),
211 fOuterRadiusUp(0.),
212 fOuterRadiusLow(0.),
213 fInnerFrameSpace(0.),
214 fOuterFrameSpace(0.),
215 fInnerWireMount(0.),
216 fOuterWireMount(0.),
217 fZLength(0.),
218 fInnerAngle(0.),
219 fOuterAngle(0.),
220 fNInnerWiresPerPad(0),
221 fInnerWWPitch(0.),
222 fInnerDummyWire(0),
223 fInnerOffWire(0.),
224 fRInnerFirstWire(0.),
225 fRInnerLastWire(0.),
226 fLastWireUp1(0.),
227 fNOuter1WiresPerPad(0),
228 fNOuter2WiresPerPad(0),
229 fOuterWWPitch(0.),
230 fOuterDummyWire(0),
231 fOuterOffWire(0),
232 fROuterFirstWire(0.),
233 fROuterLastWire(0),
234 fInnerPadPitchLength(0.),
235 fInnerPadPitchWidth(0.),
236 fInnerPadLength(0.),
237 fInnerPadWidth(0.),
238 fOuter1PadPitchLength(0.),
239 fOuter2PadPitchLength(0),
240 fOuterPadPitchWidth(0),
241 fOuter1PadLength(0.),
242 fOuter2PadLength(0),
243 fOuterPadWidth(0),
244 fNRowLow(0),
245 fNRowUp1(0),
246 fNRowUp2(0),
247 fNRowUp(0),
248 fNtRows(0)
7a0ff78e 249{
250 //
251 // Default constructor
c5bbaa2c 252 for (UInt_t i=0;i<2;i++){
7a0ff78e 253 fNSectors[i] = 0;
254 fNRows[i] = 0;
255 fNChannels[i] = 0;
256 fNPads[i] = 0;
257 fRowPosIndex[i]= 0;
258 }
259}
260
261
262//_____________________________________________________________________________
179c6296 263AliTPCROC::AliTPCROC(const AliTPCROC &roc)
264 :TObject(roc),
265 fNSectorsAll(0),
266 fInnerRadiusLow(0.),
267 fInnerRadiusUp(0.),
268 fOuterRadiusUp(0.),
269 fOuterRadiusLow(0.),
270 fInnerFrameSpace(0.),
271 fOuterFrameSpace(0.),
272 fInnerWireMount(0.),
273 fOuterWireMount(0.),
274 fZLength(0.),
275 fInnerAngle(0.),
276 fOuterAngle(0.),
277 fNInnerWiresPerPad(0),
278 fInnerWWPitch(0.),
279 fInnerDummyWire(0),
280 fInnerOffWire(0.),
281 fRInnerFirstWire(0.),
282 fRInnerLastWire(0.),
283 fLastWireUp1(0.),
284 fNOuter1WiresPerPad(0),
285 fNOuter2WiresPerPad(0),
286 fOuterWWPitch(0.),
287 fOuterDummyWire(0),
288 fOuterOffWire(0),
289 fROuterFirstWire(0.),
290 fROuterLastWire(0),
291 fInnerPadPitchLength(0.),
292 fInnerPadPitchWidth(0.),
293 fInnerPadLength(0.),
294 fInnerPadWidth(0.),
295 fOuter1PadPitchLength(0.),
296 fOuter2PadPitchLength(0),
297 fOuterPadPitchWidth(0),
298 fOuter1PadLength(0.),
299 fOuter2PadLength(0),
300 fOuterPadWidth(0),
301 fNRowLow(0),
302 fNRowUp1(0),
303 fNRowUp2(0),
304 fNRowUp(0),
305 fNtRows(0)
306
7a0ff78e 307{
308 //
309 // AliTPCROC copy constructor
310 //
311 fNSectorsAll = roc.fNSectorsAll;
312 fNSectors[0] = roc.fNSectors[0];
313 fNSectors[1] = roc.fNSectors[1];
314 fNRows[0] = roc.fNRows[0];
315 fNRows[1] = roc.fNRows[1];
316 fNChannels[0]= roc.fNChannels[0];
317 fNChannels[1]= roc.fNChannels[1];
318 //
319 // number of pads in padrow
c5bbaa2c 320 fNPads[0] = new UInt_t[fNRows[0]];
321 fNPads[1] = new UInt_t[fNRows[1]];
7a0ff78e 322 //
323 // padrow index in array
324 //
c5bbaa2c 325 fRowPosIndex[0] = new UInt_t[fNRows[0]];
326 fRowPosIndex[1] = new UInt_t[fNRows[1]];
7a0ff78e 327 //
c5bbaa2c 328 for (UInt_t irow =0; irow<fNRows[0];irow++){
7a0ff78e 329 fNPads[0][irow] = roc.fNPads[0][irow];
330 fRowPosIndex[0][irow] = roc.fRowPosIndex[0][irow];
331 }
c5bbaa2c 332 for (UInt_t irow =0; irow<fNRows[1];irow++){
7a0ff78e 333 fNPads[1][irow] = roc.fNPads[1][irow];
334 fRowPosIndex[1][irow] = roc.fRowPosIndex[1][irow];
335 }
336}
179c6296 337//____________________________________________________________________________
338AliTPCROC & AliTPCROC::operator =(const AliTPCROC & roc)
339{
340 //
341 // assignment operator - dummy
342 //
343 fZLength = roc.fZLength;
344 return (*this);
345}
7a0ff78e 346//_____________________________________________________________________________
347AliTPCROC::~AliTPCROC()
348{
349 //
350 // AliTPCROC destructor
351 //
352 delete [] fNPads[0];
353 delete [] fNPads[1];
354 delete [] fRowPosIndex[0];
355 delete [] fRowPosIndex[1];
a411fffe 356 fgInstance = 0x0;
7a0ff78e 357
358}
359