3 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
4 * See cxx source for full Copyright notice */
6 /* $Id: AliTPCROC.h,v */
8 //////////////////////////////////////////////////
10 // TPC geometry class for ROC //
12 //////////////////////////////////////////////////
16 //_____________________________________________________________________________
17 class AliTPCROC : public TObject {
19 static AliTPCROC* Instance();
21 AliTPCROC(const AliTPCROC &roc);
27 UInt_t GetNSectors() const { return fNSectorsAll;}
28 UInt_t GetNRows(UInt_t sector) const { return (sector<fNSectors[1]) ? fNRows[0]:fNRows[1];}
29 UInt_t GetNChannels(UInt_t sector) const { return (sector<fNSectors[1]) ? fNChannels[0]:fNChannels[1];}
30 UInt_t GetNPads(UInt_t sector,UInt_t row) const { return (sector<fNSectors[1]) ? fNPads[0][row]:fNPads[1][row];}
31 const UInt_t * GetRowIndexes(UInt_t sector) const {return (sector<fNSectors[1]) ? fRowPosIndex[0]:fRowPosIndex[1];}
33 //get sector parameters
35 Float_t GetInnerRadiusLow() const {return fInnerRadiusLow;}
36 Float_t GetInnerRadiusUp() const {return fInnerRadiusUp;}
37 Float_t GetOuterRadiusLow() const {return fOuterRadiusLow;}
38 Float_t GetOuterRadiusUp() const {return fOuterRadiusUp;}
39 Float_t GetInnerFrameSpace() const {return fInnerFrameSpace;}
40 Float_t GetOuterFrameSpace() const {return fOuterFrameSpace;}
41 Float_t GetInnerWireMount() const {return fInnerWireMount;}
42 Float_t GetOuterWireMount() const {return fOuterWireMount;}
43 Float_t GetInnerAngle() const {return fInnerAngle;}
44 Float_t GetOuterAngle() const {return fOuterAngle;}
45 UInt_t GetNInnerSector() const {return fNSectors[0];}
46 UInt_t GetNOuterSector() const {return fNSectors[1];}
47 UInt_t GetNSector() const {return fNSectorsAll;}
48 Float_t GetZLength() const {return fZLength;}
55 void SetGeometry(); // set geometry parameters
56 UInt_t fNSectorsAll; // number of sectors
57 UInt_t fNSectors[2]; // number of sectors - inner outer
58 UInt_t fNRows[2]; // number of row - inner outer
59 UInt_t fNChannels[2]; // total number of pads - inner sector - outer sector
60 UInt_t *fNPads[2]; // number of pads in row - inner - outer
61 UInt_t *fRowPosIndex[2]; // index array - inner - outer
64 //---------------------------------------------------------------------
65 // ALICE TPC sector geometry
66 //--------------------------------------------------------------------
67 Float_t fInnerRadiusLow; // lower radius of inner sector-IP
68 Float_t fInnerRadiusUp; // upper radius of inner sector-IP
69 Float_t fOuterRadiusUp; // upper radius of outer sector-IP
70 Float_t fOuterRadiusLow; // lower radius of outer sector-IP
71 Float_t fInnerFrameSpace; //space for inner frame in the phi direction
72 Float_t fOuterFrameSpace; //space for outer frame in the phi direction
73 Float_t fInnerWireMount; //space for wire mount, inner sector
74 Float_t fOuterWireMount; //space for wire mount, outer sector
75 Float_t fZLength; //length of the drift region of the TPC
76 Float_t fInnerAngle; //angular coverage
77 Float_t fOuterAngle; //angular coverage
79 //---------------------------------------------------------------------
80 // ALICE TPC wires geometry - for GEM we can consider that it is gating
81 //--------------------------------------------------------------------
82 UInt_t fNInnerWiresPerPad; //Number of wires per pad
83 Float_t fInnerWWPitch; //pitch between wires in inner sector - calculated
84 UInt_t fInnerDummyWire; //number of wires without pad readout
85 Float_t fInnerOffWire; //oofset of first wire to the begining of the sector
86 Float_t fRInnerFirstWire; //position of the first wire -calculated
87 Float_t fRInnerLastWire; //position of the last wire -calculated
88 Float_t fLastWireUp1; //position of the last wire in outer1 sector
89 UInt_t fNOuter1WiresPerPad; //Number of wires per pad
90 UInt_t fNOuter2WiresPerPad; // Number of wires per pad
91 Float_t fOuterWWPitch; //pitch between wires in outer sector -calculated
92 UInt_t fOuterDummyWire; //number of wires without pad readout
93 Float_t fOuterOffWire; //oofset of first wire to the begining of the sector
94 Float_t fROuterFirstWire; //position of the first wire -calulated
95 Float_t fROuterLastWire; //position of the last wire -calculated
96 //---------------------------------------------------------------------
97 // ALICE TPC pad parameters
98 //--------------------------------------------------------------------
99 Float_t fInnerPadPitchLength; //Inner pad pitch length
100 Float_t fInnerPadPitchWidth; //Inner pad pitch width
101 Float_t fInnerPadLength; //Inner pad length
102 Float_t fInnerPadWidth; //Inner pad width
103 Float_t fOuter1PadPitchLength; //Outer pad pitch length
104 Float_t fOuter2PadPitchLength; //Outer pad pitch length
105 Float_t fOuterPadPitchWidth; //Outer pad pitch width
106 Float_t fOuter1PadLength; //Outer pad length
107 Float_t fOuter2PadLength; //Outer pad length
108 Float_t fOuterPadWidth; //Outer pad width
110 UInt_t fNRowLow; //number of pad rows per low sector -set
111 UInt_t fNRowUp1; //number of short pad rows per sector up -set
112 UInt_t fNRowUp2; //number of long pad rows per sector up -set
113 UInt_t fNRowUp; //number of pad rows per sector up -calculated
114 UInt_t fNtRows; //total number of rows in TPC -calculated
115 Float_t fPadRowLow[600]; //Lower sector, pad row radii -calculated
116 Float_t fPadRowUp[600]; //Upper sector, pad row radii -calculated
117 UInt_t fNPadsLow[600]; //Lower sector, number of pads per row -calculated
118 UInt_t fNPadsUp[600]; //Upper sector, number of pads per row -calculated
119 Float_t fYInner[600]; //Inner sector, wire-length
120 Float_t fYOuter[600]; //Outer sector, wire-length
122 static AliTPCROC* fgInstance; // Instance of this class (singleton implementation)
123 ClassDef(AliTPCROC,1) // TPC ROC class