]> git.uio.no Git - u/mrichter/AliRoot.git/blame - TPC/AliTPCParam.cxx
Mag. field activated.
[u/mrichter/AliRoot.git] / TPC / AliTPCParam.cxx
CommitLineData
4c039060 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$Log$
e0a1f962 18Revision 1.17 2002/10/23 07:17:33 alibrary
19Introducing Riostream.h
20
19364939 21Revision 1.16 2002/10/14 14:57:42 hristov
22Merging the VirtualMC branch to the main development branch (HEAD)
23
b9d0a01d 24Revision 1.13.4.1 2002/06/10 15:26:11 hristov
25Merged with v3-08-02
26
27Revision 1.15 2002/05/07 17:24:02 kowal2
28Updated wires positions
29
134da240 30Revision 1.14 2002/03/29 06:57:45 kowal2
31Restored backward compatibility to use the hits from Dec. 2000 production.
32
7a09f434 33Revision 1.13 2002/03/18 17:59:13 kowal2
34Chnges in the pad geometry - 3 pad lengths introduced.
35
f03e3423 36Revision 1.12 2002/02/05 09:12:26 hristov
37Small mods for gcc 3.02
38
bcc5d57d 39Revision 1.11 2000/11/02 07:33:48 kowal2
40Automatic streamer generation.
41
0bbae0f2 42Revision 1.10 2000/07/10 20:57:39 hristov
43Update of TPC code and macros by M.Kowalski
44
37831078 45Revision 1.9 2000/06/30 12:07:50 kowal2
46Updated from the TPC-PreRelease branch
47
73042f01 48Revision 1.8.4.4 2000/06/26 07:39:42 kowal2
49Changes to obey the coding rules
50
51Revision 1.8.4.3 2000/06/25 08:38:41 kowal2
52Splitted from AliTPCtracking
53
54Revision 1.8.4.2 2000/06/14 16:48:24 kowal2
55Parameter setting improved. Removed compiler warnings
56
57Revision 1.8.4.1 2000/06/09 07:12:21 kowal2
58
59Updated defaults
60
61Revision 1.8 2000/04/17 09:37:33 kowal2
62removed obsolete AliTPCDigitsDisplay.C
63
cc80f89e 64Revision 1.7.8.2 2000/04/10 08:44:51 kowal2
65
66New transformations added
67Different pad and pad-rows geometries for different sectors
68
69Revision 1.7.8.1 2000/04/10 07:56:53 kowal2
70Not used anymore - removed
71
72Revision 1.7 1999/10/08 13:10:35 fca
73Values in SetDefault are in radiants
74
4d89658a 75Revision 1.6 1999/10/08 06:27:59 fca
76Defaults updated
77
683f9fec 78Revision 1.5 1999/10/05 17:18:27 fca
79Correct GetWire check on even/odd fnWires
80
ae4cbe70 81Revision 1.4 1999/09/29 09:24:34 fca
82Introduction of the Copyright and cvs Log
83
4c039060 84*/
85
8c555625 86///////////////////////////////////////////////////////////////////////
87// Manager and of geomety classes for set: TPC //
88// //
1283eee5 89// !sectors are numbered from 0 //
90// !pad rows are numbered from 0 //
91//
92// 12.6. changed z relative
8c555625 93// Origin: Marian Ivanov, Uni. of Bratislava, ivanov@fmph.uniba.sk //
94// //
95///////////////////////////////////////////////////////////////////////
96
73042f01 97//
8c555625 98
19364939 99#include <Riostream.h>
8c555625 100#include <TMath.h>
1283eee5 101#include <TObject.h>
cc80f89e 102#include <TRandom.h>
1283eee5 103#include <AliTPCParam.h>
8c555625 104
105
cc80f89e 106
8c555625 107
73042f01 108ClassImp(AliTPCParam)
8c555625 109
110
111//___________________________________________
112AliTPCParam::AliTPCParam()
113{
cc80f89e 114 //
115 //constructor sets the default parameters
116 //
117
118 fResponseBin = 0;
119 fResponseWeight = 0;
120 fRotAngle = 0;
7a09f434 121 SetTitle("75x40_100x60_150x60");
8c555625 122 SetDefault();
123}
124
cc80f89e 125AliTPCParam::~AliTPCParam()
1283eee5 126{
127 //
cc80f89e 128 //destructor deletes some dynamicaly alocated variables
129 //
130
131 if (fResponseBin!=0) delete [] fResponseBin;
132 if (fResponseWeight!=0) delete [] fResponseWeight;
133 if (fRotAngle !=0) delete [] fRotAngle;
134
1283eee5 135}
136
137
cc80f89e 138
139
140Int_t AliTPCParam::Transform0to1(Float_t *xyz, Int_t * index) const
141{
142 //
143 // calculates sector number (index[1], undefined on input)
144 // xyz intact
145 //
146
147 Float_t angle,x1;
148 Int_t sector;
149 Float_t r = TMath::Sqrt(xyz[0]*xyz[0]+xyz[1]*xyz[1]);
150 if ((xyz[0]==0)&&(xyz[1]==0)) angle = 0.;
151 else
8c555625 152 {
cc80f89e 153 angle =TMath::ASin(xyz[1]/r);
154 if (xyz[0]<0) angle=TMath::Pi()-angle;
155 if ( (xyz[0]>0) && (xyz[1]<0) ) angle=2*TMath::Pi()+angle;
156 }
3c0f9266 157
e0a1f962 158 sector=Int_t(TMath::Nint((angle-fInnerAngleShift)/fInnerAngle));
cc80f89e 159
8c555625 160 Float_t cos,sin;
cc80f89e 161 AdjustCosSin(sector,cos,sin);
162 x1=xyz[0]*cos + xyz[1]*sin;
8c555625 163
cc80f89e 164 if (x1>fOuterRadiusLow)
165 {
e0a1f962 166 sector=Int_t(TMath::Nint((angle-fOuterAngleShift)/fOuterAngle))+fNInnerSector;
cc80f89e 167 if (xyz[2]<0) sector+=(fNOuterSector>>1);
168 }
8c555625 169 else
1283eee5 170 if (xyz[2]<0) sector+=(fNInnerSector>>1);
cc80f89e 171 index[1]=sector; // calculated sector number
172 index[0]=1; // indicates system after transformation
173 return sector;
174}
1283eee5 175
cc80f89e 176Bool_t AliTPCParam::Transform(Float_t *xyz, Int_t *index, Int_t* oindex)
177{
178 //transformation from input coodination system to output coordination system
179 switch (index[0]){
180 case 0:
181 break;
182 };
183
184 return kFALSE;
185
186}
187
188Int_t AliTPCParam::GetPadRow(Float_t *xyz, Int_t *index) const
189{
190 //
191 //calculates pad row of point xyz - transformation to system 8 (digit system)
192 //
193 Int_t system = index[0];
194 if (0==system) {
195 Transform0to1(xyz,index);
196 system=1;
197 }
198 if (1==system) {
199 Transform1to2(xyz,index);
200 system=2;
201 }
202
203 if (fGeometryType==0){ //straight row
204 if (2==system) {
205 Transform2to3(xyz,index);
206 system=3;
207 }
208 if (3==system) {
209 Transform3to4(xyz,index);
210 system=4;
8c555625 211 }
cc80f89e 212 if (4==system) {
213 Transform4to8(xyz,index);
214 system=8;
8c555625 215 }
cc80f89e 216 if (8==system) {
217 index[0]=8;
218 return index[2];
219 }
8c555625 220 }
cc80f89e 221
222 if (fGeometryType==1){ //cylindrical geometry
223 if (2==system) {
224 Transform2to5(xyz,index);
225 system=5;
226 }
227 if (5==system) {
228 Transform2to3(xyz,index);
229 system=6;
230 }
231 if (6==system) {
232 Transform3to4(xyz,index);
233 system=7;
234 }
235 if (8==system) {
236 index[0]=8;
237 return index[2];
238 }
239 }
240 index[0]=system;
241 return -1; //if no reasonable system
8c555625 242}
243
cc80f89e 244void AliTPCParam::SetSectorAngles(Float_t innerangle, Float_t innershift, Float_t outerangle,
245 Float_t outershift)
8c555625 246{
cc80f89e 247 //
248 // set opening angles
73042f01 249 const static Float_t kDegtoRad = 0.01745329251994;
cc80f89e 250 fInnerAngle = innerangle; //opening angle of Inner sector
251 fInnerAngleShift = innershift; //shift of first inner sector center to the 0
252 fOuterAngle = outerangle; //opening angle of outer sector
253 fOuterAngleShift = outershift; //shift of first sector center to the 0
254 fInnerAngle *=kDegtoRad;
255 fInnerAngleShift *=kDegtoRad;
256 fOuterAngle *=kDegtoRad;
257 fOuterAngleShift *=kDegtoRad;
8c555625 258}
cc80f89e 259
260Float_t AliTPCParam::GetInnerAngle() const
8c555625 261{
cc80f89e 262 //return angle
263 return fInnerAngle;
264
8c555625 265}
266
cc80f89e 267Float_t AliTPCParam::GetInnerAngleShift() const
268{
269 //return angle
270 return fInnerAngleShift;
8c555625 271}
cc80f89e 272Float_t AliTPCParam::GetOuterAngle() const
273{
274 //return angle
275 return fOuterAngle;
276}
277Float_t AliTPCParam::GetOuterAngleShift() const
278{
279 //return angle
280
281 return fOuterAngleShift;
282}
283
8c555625 284
285Int_t AliTPCParam::GetIndex(Int_t sector, Int_t row)
286{
287 //
288 //give index of the given sector and pad row
289 //no control if the sectors and rows are reasonable !!!
290 //
cc80f89e 291 if (sector<fNInnerSector) return sector*fNRowLow+row;
292 return (fNInnerSector*fNRowLow)+(sector-fNInnerSector)*fNRowUp+row;
8c555625 293}
294
cc80f89e 295Bool_t AliTPCParam::AdjustSectorRow(Int_t index, Int_t & sector, Int_t &row) const
8c555625 296{
297 //
298 //return sector and padrow for given index
cc80f89e 299 //if index is reasonable returns true else return false
8c555625 300 //
301 if ( (index<0) || (index>fNtRows)) return kFALSE;
cc80f89e 302 Int_t outindex = fNInnerSector*fNRowLow;
8c555625 303 if (index<outindex) {
cc80f89e 304 sector = index/fNRowLow;
305 row = index - sector*fNRowLow;
8c555625 306 return kTRUE;
307 }
308 index-= outindex;
cc80f89e 309 sector = index/fNRowUp;
310 row = index - sector*fNRowUp;
311 sector += fNInnerSector;
8c555625 312 return kTRUE;
313}
314
cc80f89e 315void AliTPCParam::SetDefault()
8c555625 316{
317 //
cc80f89e 318 //set default parameters
8c555625 319 //
37831078 320 //const static Int_t kMaxRows=600;
73042f01 321 //
322 //sector default parameters
323 //
7a09f434 324 const static Float_t kInnerRadiusLow = 82.97;
325 const static Float_t kInnerRadiusUp = 133.17;
326 const static Float_t kOuterRadiusLow = 133.58;
327 const static Float_t kOuterRadiusUp = 247.78;
73042f01 328 const static Float_t kInnerAngle = 20; // 20 degrees
329 const static Float_t kInnerAngleShift = 10;
330 const static Float_t kOuterAngle = 20; // 20 degrees
331 const static Float_t kOuterAngleShift = 10;
332 const static Float_t kInnerFrameSpace = 1.5;
333 const static Float_t kOuterFrameSpace = 1.5;
37831078 334 const static Float_t kInnerWireMount = 1.370825926;
335 const static Float_t kOuterWireMount = 1.370825926;
73042f01 336 const static Float_t kZLength =250.;
337 const static Int_t kGeometryType = 0; //straight rows
f03e3423 338 const static Int_t kNRowLow = 63;
339 const static Int_t kNRowUp1 = 64;
340 const static Int_t kNRowUp2 = 32;
341 const static Int_t kNRowUp = 96;
73042f01 342 //
343 //wires default parameters
344 //
345 const static Int_t kNInnerWiresPerPad = 3;
346 const static Int_t kInnerDummyWire = 2;
f03e3423 347 const static Float_t kInnerWWPitch = 0.25;
134da240 348 const static Float_t kRInnerFirstWire = 84.445;
349 const static Float_t kRInnerLastWire = 132.445;
73042f01 350 const static Float_t kInnerOffWire = 0.5;
f03e3423 351 const static Int_t kNOuter1WiresPerPad = 4;
352 const static Int_t kNOuter2WiresPerPad = 6;
353 const static Float_t kOuterWWPitch = 0.25;
134da240 354 const static Float_t kROuterFirstWire = 134.305;
355 const static Float_t kROuterLastWire = 247.055;
73042f01 356 const static Int_t kOuterDummyWire = 2;
357 const static Float_t kOuterOffWire = 0.5;
358 //
359 //pad default parameters
360 //
361 const static Float_t kInnerPadPitchLength = 0.75;
362 const static Float_t kInnerPadPitchWidth = 0.40;
363 const static Float_t kInnerPadLength = 0.75;
364 const static Float_t kInnerPadWidth = 0.40;
f03e3423 365 const static Float_t kOuter1PadPitchLength = 1.0;
73042f01 366 const static Float_t kOuterPadPitchWidth = 0.6;
f03e3423 367 const static Float_t kOuter1PadLength = 1.0;
73042f01 368 const static Float_t kOuterPadWidth = 0.6;
f03e3423 369 const static Float_t kOuter2PadPitchLength = 1.5;
370 const static Float_t kOuter2PadLength = 1.5;
371
73042f01 372 const static Bool_t kBMWPCReadout = kTRUE; //MWPC readout - another possibility GEM
373 const static Int_t kNCrossRows = 1; //number of rows to cross-talk
374
375 //
376 //gas default parameters
377 //
378 const static Float_t kDiffT = 2.2e-2;
379 const static Float_t kDiffL = 2.2e-2;
380 const static Float_t kGasGain = 2.e4;
381 const static Float_t kDriftV =2.83e6;
382 const static Float_t kOmegaTau = 0.145;
383 const static Float_t kAttCoef = 250.;
384 const static Float_t kOxyCont = 5.e-6;
385 //
386 //electronic default parameters
387 //
388 const static Float_t kPadCoupling=0.5;
389 const static Int_t kZeroSup=2;
390 const static Float_t kNoise = 1000;
391 const static Float_t kChipGain = 12;
392 const static Float_t kChipNorm = 0.4;
393 const static Float_t kTSample = 2.e-7;
394 const static Float_t kTFWHM = 1.9e-7; //fwhm of charge distribution
395 const static Int_t kMaxTBin =445;
396 const static Int_t kADCSat =1024;
397 const static Float_t kADCDynRange =2000.;
398 //
399 //
400 //
401 const static Float_t kBField =0.2;
402 const static Float_t kNPrimLoss =10.9;
403 const static Float_t kNTotalLoss =39.9;
404 //
405 //response constants
406 //
407 const static Int_t kNResponseMax=100;
408 const static Float_t kResponseThreshold=0.01;
8c555625 409 fbStatus = kFALSE;
8c555625 410 //
cc80f89e 411 //set sector parameters
412 //
413 SetInnerRadiusLow(kInnerRadiusLow);
414 SetOuterRadiusLow(kOuterRadiusLow);
415 SetInnerRadiusUp(kInnerRadiusUp);
416 SetOuterRadiusUp(kOuterRadiusUp);
417 SetInnerFrameSpace(kInnerFrameSpace);
418 SetOuterFrameSpace(kOuterFrameSpace);
419 SetInnerWireMount(kInnerWireMount);
420 SetOuterWireMount(kOuterWireMount);
421 SetSectorAngles(kInnerAngle,kInnerAngleShift,kOuterAngle,kOuterAngleShift);
422 SetZLength(kZLength);
423 SetGeometryType(kGeometryType);
f03e3423 424 SetRowNLow(kNRowLow);
425 SetRowNUp1 (kNRowUp1);
426 SetRowNUp2(kNRowUp2);
427 SetRowNUp(kNRowUp);
cc80f89e 428 //
429 //set wire parameters
430 //
431 SetInnerNWires(kNInnerWiresPerPad);
432 SetInnerDummyWire(kInnerDummyWire);
433 SetInnerOffWire(kInnerOffWire);
f03e3423 434 SetOuter1NWires(kNOuter1WiresPerPad);
435 SetOuter2NWire(kNOuter2WiresPerPad);
cc80f89e 436 SetOuterDummyWire(kOuterDummyWire);
437 SetOuterOffWire(kOuterOffWire);
f03e3423 438 SetInnerWWPitch(kInnerWWPitch);
439 SetRInnerFirstWire(kRInnerFirstWire);
440 SetRInnerLastWire(kRInnerLastWire);
441 SetOuterWWPitch(kOuterWWPitch);
442 SetROuterFirstWire(kROuterFirstWire);
443 SetROuterLastWire(kROuterLastWire);
cc80f89e 444 //
445 //set pad parameter
1283eee5 446 //
cc80f89e 447 SetInnerPadPitchLength(kInnerPadPitchLength);
448 SetInnerPadPitchWidth(kInnerPadPitchWidth);
449 SetInnerPadLength(kInnerPadLength);
450 SetInnerPadWidth(kInnerPadWidth);
f03e3423 451 SetOuter1PadPitchLength(kOuter1PadPitchLength);
452 SetOuter2PadPitchLength(kOuter2PadPitchLength);
cc80f89e 453 SetOuterPadPitchWidth(kOuterPadPitchWidth);
f03e3423 454 SetOuter1PadLength(kOuter1PadLength);
455 SetOuter2PadLength(kOuter2PadLength);
cc80f89e 456 SetOuterPadWidth(kOuterPadWidth);
457 SetMWPCReadout(kBMWPCReadout);
458 SetNCrossRows(kNCrossRows);
1283eee5 459 //
cc80f89e 460 //set gas paremeters
461 //
462 SetDiffT(kDiffT);
463 SetDiffL(kDiffL);
464 SetGasGain(kGasGain);
465 SetDriftV(kDriftV);
466 SetOmegaTau(kOmegaTau);
467 SetAttCoef(kAttCoef);
468 SetOxyCont(kOxyCont);
469 //
470 //set electronivc parameters
471 //
472 SetPadCoupling(kPadCoupling);
473 SetZeroSup(kZeroSup);
474 SetNoise(kNoise);
475 SetChipGain(kChipGain);
476 SetChipNorm(kChipNorm);
477 SetTSample(kTSample);
478 SetTFWHM(kTFWHM);
479 SetMaxTBin(kMaxTBin);
480 SetADCSat(kADCSat);
481 SetADCDynRange(kADCDynRange);
482 //set magnetic field
483 SetBField(kBField);
484 SetNPrimLoss(kNPrimLoss);
485 SetNTotalLoss(kNTotalLoss);
486 //
487 //set response parameters
488 //
489 SetNResponseMax(kNResponseMax);
bcc5d57d 490 SetResponseThreshold(static_cast<int>(kResponseThreshold));
8c555625 491}
cc80f89e 492
8c555625 493
494Bool_t AliTPCParam::Update()
495{
1283eee5 496 //
497 // update some calculated parameter which must be updated after changing "base"
498 // parameters
499 // for example we can change size of pads and according this recalculate number
500 // of pad rows, number of of pads in given row ....
501 //
73042f01 502 const Float_t kQel = 1.602e-19; // elementary charge
8c555625 503 fbStatus = kFALSE;
1283eee5 504
505 Int_t i,j; //loop variables because HP
506 //-----------------Sector section------------------------------------------
507 //calclulate number of sectors
cc80f89e 508 fNInnerSector = Int_t(4*TMath::Pi()/fInnerAngle+0.2);
509 // number of inner sectors - factor 0.2 to don't be influnced by inprecision
1283eee5 510 if (fNInnerSector%2) return kFALSE;
511 fNOuterSector = Int_t(4*TMath::Pi()/fOuterAngle+0.2);
512 if (fNOuterSector%2) return kFALSE;
513 fNSector = fNInnerSector+fNOuterSector;
cc80f89e 514
515 if (fRotAngle!=0) delete [] fRotAngle;
516 fRotAngle = new Float_t[4*fNSector];
1283eee5 517 //calculate sin and cosine of rotations angle
518 //sectors angles numbering from 0
cc80f89e 519
520 j=fNInnerSector*2;
1283eee5 521 Float_t angle = fInnerAngleShift;
cc80f89e 522 for (i=0; j<fNInnerSector*4; i+=4, j+=4 , angle +=fInnerAngle){
1283eee5 523 fRotAngle[i]=TMath::Cos(angle);
524 fRotAngle[i+1]=TMath::Sin(angle);
525 fRotAngle[j] = fRotAngle[i];
526 fRotAngle[j+1] = fRotAngle[i+1];
cc80f89e 527 fRotAngle[i+2] =angle;
528 fRotAngle[j+2] =angle;
1283eee5 529 }
530 angle = fOuterAngleShift;
cc80f89e 531 j=(fNInnerSector+fNOuterSector/2)*4;
532 for (i=fNInnerSector*4; j<fNSector*4; i+=4,j+=4, angle +=fOuterAngle){
1283eee5 533 fRotAngle[i]=TMath::Cos(angle);
534 fRotAngle[i+1]=TMath::Sin(angle);
535 fRotAngle[j] = fRotAngle[i];
536 fRotAngle[j+1] = fRotAngle[i+1];
cc80f89e 537 fRotAngle[i+2] =angle;
538 fRotAngle[j+2] =angle;
1283eee5 539 }
cc80f89e 540 fZWidth = fTSample*fDriftV;
73042f01 541 fTotalNormFac = fPadCoupling*fChipNorm*kQel*1.e15*fChipGain*fADCSat/fADCDynRange;
542 fNoiseNormFac = kQel*1.e15*fChipGain*fADCSat/fADCDynRange;
cc80f89e 543 //wire section
f03e3423 544 /* Int_t nwire;
cc80f89e 545 Float_t wspace; //available space for wire
546 Float_t dummyspace; //dummyspace for wire
f03e3423 547
cc80f89e 548 wspace =fInnerRadiusUp-fInnerRadiusLow-2*fInnerOffWire;
549 nwire = Int_t(wspace/fInnerWWPitch);
550 wspace = Float_t(nwire)*fInnerWWPitch;
f03e3423 551 dummyspace =(fInnerRadiusUp-fInnerRadiusLow-wspace)/2.;
cc80f89e 552 wspace =fOuterRadiusUp-fOuterRadiusLow-2*fOuterOffWire;
553 nwire = Int_t(wspace/fOuterWWPitch);
554 wspace = Float_t(nwire)*fOuterWWPitch;
555 dummyspace =(fOuterRadiusUp-fOuterRadiusLow-wspace)/2.;
556 fROuterFirstWire = fOuterRadiusLow+dummyspace;
557 fROuterLastWire = fROuterFirstWire+fOuterWWPitch*(Float_t)(nwire);
f03e3423 558 */
1283eee5 559
8c555625 560 //
cc80f89e 561 //response data
562 //
563 if (fResponseBin==0) delete [] fResponseBin;
564 if (fResponseWeight==0) delete [] fResponseBin;
565 fResponseBin = new Int_t[3*fNResponseMax];
566 fResponseWeight = new Float_t[fNResponseMax];
567
8c555625 568 fbStatus = kTRUE;
569 return kTRUE;
570}
571
572
573
574Bool_t AliTPCParam::GetStatus()
575{
576 //get information about object consistency
577 return fbStatus;
578}
579
580Int_t AliTPCParam::GetNRowLow() const
581{
582 //get the number of pad rows in low sector
cc80f89e 583 return fNRowLow;
8c555625 584}
585Int_t AliTPCParam::GetNRowUp() const
586{
587 //get the number of pad rows in up sector
cc80f89e 588 return fNRowUp;
8c555625 589}
f03e3423 590Int_t AliTPCParam::GetNRowUp1() const
591{
592 //get the number of pad rows in up1 sector
593 return fNRowUp1;
594}
595Int_t AliTPCParam::GetNRowUp2() const
596{
597 //get the number of pad rows in up2 sector
598 return fNRowUp2;
599}
8c555625 600Float_t AliTPCParam::GetPadRowRadiiLow(Int_t irow) const
601{
602 //get the pad row (irow) radii
cc80f89e 603 if ( !(irow<0) && (irow<fNRowLow) )
8c555625 604 return fPadRowLow[irow];
605 else
606 return 0;
607}
608
609Float_t AliTPCParam::GetPadRowRadiiUp(Int_t irow) const
610{
611 //get the pad row (irow) radii
cc80f89e 612 if ( !(irow<0) && (irow<fNRowUp) )
8c555625 613 return fPadRowUp[irow];
614 else
615 return 0;
616}
617
618Int_t AliTPCParam::GetNPadsLow(Int_t irow) const
619{
620 //get the number of pads in row irow
cc80f89e 621 if ( !(irow<0) && (irow<fNRowLow) )
622 return fNPadsLow[irow];
8c555625 623 else
624 return 0;
625}
626
627
628Int_t AliTPCParam::GetNPadsUp(Int_t irow) const
629{
630 //get the number of pads in row irow
cc80f89e 631 if ( !(irow<0) && (irow<fNRowUp) )
632 return fNPadsUp[irow];
8c555625 633 else
634 return 0;
635}
f03e3423 636Float_t AliTPCParam::GetYInner(Int_t irow) const
637{
638 return fYInner[irow];
639}
640
641
642Float_t AliTPCParam::GetYOuter(Int_t irow) const
643{
644 return fYOuter[irow];
645}
646
647
648
649
650
651
652
8c555625 653