]> git.uio.no Git - u/mrichter/AliRoot.git/blob - TPC/AliTPCROC.h
Implementation of the latest upgrades in AliCDBManager (A.Colla)
[u/mrichter/AliRoot.git] / TPC / 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   void Init(); 
23   virtual           ~AliTPCROC();
24
25   //
26   //    numbering
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];}  
32   //
33   //get sector parameters
34   //
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;}
49   //
50
51  protected:
52   //
53   //     number of pads
54   //
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
62   //
63   //
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
78   //
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
109   // 
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   
121  protected:
122   static AliTPCROC*   fgInstance; // Instance of this class (singleton implementation)
123   ClassDef(AliTPCROC,1)    //  TPC ROC class
124 };
125
126 #endif