]> git.uio.no Git - u/mrichter/AliRoot.git/blob - TPC/Base/AliTPCROC.h
o add Reset function to CalPad and CalROC o Add functionality to AliTPCdataQA - Reset...
[u/mrichter/AliRoot.git] / TPC / Base / AliTPCROC.h
1 #ifndef ALITPCROC_H
2 #define ALITPCROC_H
3 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
4  * See cxx source for full Copyright notice                               */
5
6 /* $Id: AliTPCROC.h,v */
7
8 //////////////////////////////////////////////////
9 //                                              //
10 //  TPC geometry class for   ROC                //
11 //                                              //
12 //////////////////////////////////////////////////
13
14 #include <TObject.h>
15
16 //_____________________________________________________________________________
17 class AliTPCROC : public TObject {
18  public:
19   static AliTPCROC* Instance();
20   AliTPCROC();
21   AliTPCROC(const AliTPCROC &roc);
22   AliTPCROC &operator = (const AliTPCROC & roc); //assignment operator
23   void Init(); 
24   virtual           ~AliTPCROC();
25   void GetPositionLocal(UInt_t sector, UInt_t row, UInt_t pad, Float_t *pos);
26   void GetPositionGlobal(UInt_t sector, UInt_t row, UInt_t pad, Float_t *pos);
27   //
28   //    numbering
29   UInt_t GetNSectors() const          { return fNSectorsAll;}
30   UInt_t GetNRows(UInt_t sector) const { return (sector<fNSectors[1]) ? fNRows[0]:fNRows[1];}
31   UInt_t GetNChannels(UInt_t sector) const { return (sector<fNSectors[1]) ? fNChannels[0]:fNChannels[1];}
32   UInt_t GetNPads(UInt_t sector,UInt_t row) const { 
33     UInt_t irow=(row<GetNRows(sector))?row:(GetNRows(sector)-1);
34     return (sector<fNSectors[1]) ? fNPads[0][irow]:fNPads[1][irow];}
35   const UInt_t * GetRowIndexes(UInt_t sector) const {return (sector<fNSectors[1]) ? fRowPosIndex[0]:fRowPosIndex[1];}  
36   //
37   //get sector parameters
38   //
39   Float_t  GetInnerRadiusLow() const {return fInnerRadiusLow;}
40   Float_t  GetInnerRadiusUp() const {return fInnerRadiusUp;} 
41   Float_t  GetOuterRadiusLow() const {return fOuterRadiusLow;} 
42   Float_t  GetOuterRadiusUp() const {return fOuterRadiusUp;} 
43   Float_t  GetInnerFrameSpace() const {return fInnerFrameSpace;}
44   Float_t  GetOuterFrameSpace() const {return fOuterFrameSpace;}
45   Float_t  GetInnerWireMount() const {return fInnerWireMount;}
46   Float_t  GetOuterWireMount() const {return fOuterWireMount;}
47   Float_t  GetInnerAngle() const {return fInnerAngle;}
48   Float_t  GetOuterAngle() const {return fOuterAngle;}
49   UInt_t    GetNInnerSector() const {return fNSectors[0];}
50   UInt_t    GetNOuterSector() const {return fNSectors[1];}
51   UInt_t    GetNSector() const {return fNSectorsAll;}
52   Float_t  GetZLength(Int_t sector) const {return (sector<35) ? fZLength-0.275 : fZLength-0.302;}
53   //
54   // get pad row parameters
55   //
56   Float_t GetPadRowRadiiLow(UInt_t irow) const {return ( irow<fNRowLow ) ? fPadRowLow[irow]: 0;} //get the pad row (irow) radii
57   Float_t GetPadRowRadiiUp(UInt_t irow) const {return ( irow<fNRowUp ) ? fPadRowUp[irow]: 0;}   //get the pad row (irow) radii   
58   Float_t GetPadRowRadii(UInt_t isec, UInt_t irow) const {
59     return ( (isec < fNSectors[0]) ?GetPadRowRadiiLow(irow):GetPadRowRadiiUp(irow));}
60   //
61   
62 protected:
63   //
64   //     number of pads
65   //
66   void   SetGeometry();    // set geometry parameters
67   UInt_t  fNSectorsAll;     // number of sectors
68   UInt_t  fNSectors[2];     // number of sectors - inner outer
69   UInt_t  fNRows[2];        // number of row     - inner outer
70   UInt_t  fNChannels[2];    // total number of pads   - inner sector - outer sector
71   UInt_t *fNPads[2];        // number of pads in row  - inner - outer      
72   UInt_t *fRowPosIndex[2];  // index array            - inner - outer
73   //
74   //
75   //---------------------------------------------------------------------
76   //   ALICE TPC sector geometry
77   //--------------------------------------------------------------------  
78   Float_t fInnerRadiusLow;    // lower radius of inner sector-IP
79   Float_t fInnerRadiusUp;     // upper radius of inner  sector-IP
80   Float_t fOuterRadiusUp;     // upper radius of outer  sector-IP
81   Float_t fOuterRadiusLow;    // lower radius of outer sector-IP
82   Float_t fInnerFrameSpace;   //space for inner frame in the phi direction 
83   Float_t fOuterFrameSpace;   //space for outer frame in the phi direction 
84   Float_t fInnerWireMount;    //space for wire mount, inner sector
85   Float_t fOuterWireMount;    //space for wire mount, outer sector
86   Float_t fZLength;           //length of the drift region of the TPC
87   Float_t fInnerAngle;        //angular coverage
88   Float_t fOuterAngle;        //angular coverage
89   //
90   //---------------------------------------------------------------------
91   //   ALICE TPC wires  geometry - for GEM we can consider that it is gating  
92   //--------------------------------------------------------------------
93   UInt_t   fNInnerWiresPerPad; //Number of wires per pad
94   Float_t fInnerWWPitch;      //pitch between wires  in inner sector     - calculated
95   UInt_t   fInnerDummyWire;    //number of wires without pad readout
96   Float_t fInnerOffWire;      //oofset of first wire to the begining of the sector
97   Float_t fRInnerFirstWire;   //position of the first wire                -calculated
98   Float_t fRInnerLastWire;    //position of the last wire                 -calculated
99   Float_t fLastWireUp1;     //position of the last wire in outer1 sector
100   UInt_t   fNOuter1WiresPerPad; //Number of wires per pad
101   UInt_t   fNOuter2WiresPerPad; // Number of wires per pad
102   Float_t fOuterWWPitch;      //pitch between wires in outer sector      -calculated
103   UInt_t   fOuterDummyWire;    //number of wires without pad readout
104   Float_t fOuterOffWire;      //oofset of first wire to the begining of the sector
105   Float_t fROuterFirstWire;   //position of the first wire                -calulated
106   Float_t fROuterLastWire;    //position of the last wire                 -calculated 
107   //---------------------------------------------------------------------
108   //   ALICE TPC pad parameters
109   //--------------------------------------------------------------------
110   Float_t   fInnerPadPitchLength;    //Inner pad pitch length
111   Float_t   fInnerPadPitchWidth;     //Inner pad pitch width
112   Float_t   fInnerPadLength;         //Inner pad  length
113   Float_t   fInnerPadWidth;          //Inner pad  width
114   Float_t   fOuter1PadPitchLength;    //Outer pad pitch length
115   Float_t   fOuter2PadPitchLength;    //Outer pad pitch length
116   Float_t   fOuterPadPitchWidth;     //Outer pad pitch width
117   Float_t   fOuter1PadLength;         //Outer pad  length
118   Float_t   fOuter2PadLength;         //Outer pad length
119   Float_t   fOuterPadWidth;          //Outer pad  width
120   // 
121   UInt_t     fNRowLow;           //number of pad rows per low sector        -set
122   UInt_t     fNRowUp1;            //number of short pad rows per sector up  -set
123   UInt_t     fNRowUp2;            //number of long pad rows per sector up   -set
124   UInt_t     fNRowUp;            //number of pad rows per sector up     -calculated
125   UInt_t     fNtRows;            //total number of rows in TPC          -calculated
126   Float_t   fPadRowLow[100]; //Lower sector, pad row radii          -calculated
127   Float_t   fPadRowUp[100];  //Upper sector, pad row radii          -calculated 
128   UInt_t     fNPadsLow[100];  //Lower sector, number of pads per row -calculated
129   UInt_t     fNPadsUp[100];   //Upper sector, number of pads per row -calculated
130   Float_t   fYInner[100];     //Inner sector, wire-length
131   Float_t   fYOuter[100];     //Outer sector, wire-length   
132  protected:
133   static AliTPCROC*   fgInstance; //! Instance of this class (singleton implementation)
134   ClassDef(AliTPCROC,0)    //  TPC ROC class
135 };
136
137 #endif