]> git.uio.no Git - u/mrichter/AliRoot.git/blob - TPC/AliTPCROC.h
Fixes for some mem-leaks: most changes where pretty basic (i.e. adding deletes).
[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   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 { return (sector<fNSectors[1]) ? fNPads[0][row]:fNPads[1][row];}
33   const UInt_t * GetRowIndexes(UInt_t sector) const {return (sector<fNSectors[1]) ? fRowPosIndex[0]:fRowPosIndex[1];}  
34   //
35   //get sector parameters
36   //
37   Float_t  GetInnerRadiusLow() const {return fInnerRadiusLow;}
38   Float_t  GetInnerRadiusUp() const {return fInnerRadiusUp;} 
39   Float_t  GetOuterRadiusLow() const {return fOuterRadiusLow;} 
40   Float_t  GetOuterRadiusUp() const {return fOuterRadiusUp;} 
41   Float_t  GetInnerFrameSpace() const {return fInnerFrameSpace;}
42   Float_t  GetOuterFrameSpace() const {return fOuterFrameSpace;}
43   Float_t  GetInnerWireMount() const {return fInnerWireMount;}
44   Float_t  GetOuterWireMount() const {return fOuterWireMount;}
45   Float_t  GetInnerAngle() const {return fInnerAngle;}
46   Float_t  GetOuterAngle() const {return fOuterAngle;}
47   UInt_t    GetNInnerSector() const {return fNSectors[0];}
48   UInt_t    GetNOuterSector() const {return fNSectors[1];}
49   UInt_t    GetNSector() const {return fNSectorsAll;}
50   Float_t  GetZLength(Int_t sector) const {return (sector<35) ? fZLength-0.275 : fZLength-0.302;}
51   //
52   // get pad row parameters
53   //
54   Float_t GetPadRowRadiiLow(UInt_t irow) const {return ( irow<fNRowLow ) ? fPadRowLow[irow]: 0;} //get the pad row (irow) radii
55   Float_t GetPadRowRadiiUp(UInt_t irow) const {return ( irow<fNRowUp ) ? fPadRowUp[irow]: 0;}   //get the pad row (irow) radii   
56   Float_t GetPadRowRadii(UInt_t isec, UInt_t irow) const {
57     return ( (isec < fNSectors[0]) ?GetPadRowRadiiLow(irow):GetPadRowRadiiUp(irow));}
58   //
59   
60 protected:
61   //
62   //     number of pads
63   //
64   void   SetGeometry();    // set geometry parameters
65   UInt_t  fNSectorsAll;     // number of sectors
66   UInt_t  fNSectors[2];     // number of sectors - inner outer
67   UInt_t  fNRows[2];        // number of row     - inner outer
68   UInt_t  fNChannels[2];    // total number of pads   - inner sector - outer sector
69   UInt_t *fNPads[2];        // number of pads in row  - inner - outer      
70   UInt_t *fRowPosIndex[2];  // index array            - inner - outer
71   //
72   //
73   //---------------------------------------------------------------------
74   //   ALICE TPC sector geometry
75   //--------------------------------------------------------------------  
76   Float_t fInnerRadiusLow;    // lower radius of inner sector-IP
77   Float_t fInnerRadiusUp;     // upper radius of inner  sector-IP
78   Float_t fOuterRadiusUp;     // upper radius of outer  sector-IP
79   Float_t fOuterRadiusLow;    // lower radius of outer sector-IP
80   Float_t fInnerFrameSpace;   //space for inner frame in the phi direction 
81   Float_t fOuterFrameSpace;   //space for outer frame in the phi direction 
82   Float_t fInnerWireMount;    //space for wire mount, inner sector
83   Float_t fOuterWireMount;    //space for wire mount, outer sector
84   Float_t fZLength;           //length of the drift region of the TPC
85   Float_t fInnerAngle;        //angular coverage
86   Float_t fOuterAngle;        //angular coverage
87   //
88   //---------------------------------------------------------------------
89   //   ALICE TPC wires  geometry - for GEM we can consider that it is gating  
90   //--------------------------------------------------------------------
91   UInt_t   fNInnerWiresPerPad; //Number of wires per pad
92   Float_t fInnerWWPitch;      //pitch between wires  in inner sector     - calculated
93   UInt_t   fInnerDummyWire;    //number of wires without pad readout
94   Float_t fInnerOffWire;      //oofset of first wire to the begining of the sector
95   Float_t fRInnerFirstWire;   //position of the first wire                -calculated
96   Float_t fRInnerLastWire;    //position of the last wire                 -calculated
97   Float_t fLastWireUp1;     //position of the last wire in outer1 sector
98   UInt_t   fNOuter1WiresPerPad; //Number of wires per pad
99   UInt_t   fNOuter2WiresPerPad; // Number of wires per pad
100   Float_t fOuterWWPitch;      //pitch between wires in outer sector      -calculated
101   UInt_t   fOuterDummyWire;    //number of wires without pad readout
102   Float_t fOuterOffWire;      //oofset of first wire to the begining of the sector
103   Float_t fROuterFirstWire;   //position of the first wire                -calulated
104   Float_t fROuterLastWire;    //position of the last wire                 -calculated 
105   //---------------------------------------------------------------------
106   //   ALICE TPC pad parameters
107   //--------------------------------------------------------------------
108   Float_t   fInnerPadPitchLength;    //Inner pad pitch length
109   Float_t   fInnerPadPitchWidth;     //Inner pad pitch width
110   Float_t   fInnerPadLength;         //Inner pad  length
111   Float_t   fInnerPadWidth;          //Inner pad  width
112   Float_t   fOuter1PadPitchLength;    //Outer pad pitch length
113   Float_t   fOuter2PadPitchLength;    //Outer pad pitch length
114   Float_t   fOuterPadPitchWidth;     //Outer pad pitch width
115   Float_t   fOuter1PadLength;         //Outer pad  length
116   Float_t   fOuter2PadLength;         //Outer pad length
117   Float_t   fOuterPadWidth;          //Outer pad  width
118   // 
119   UInt_t     fNRowLow;           //number of pad rows per low sector        -set
120   UInt_t     fNRowUp1;            //number of short pad rows per sector up  -set
121   UInt_t     fNRowUp2;            //number of long pad rows per sector up   -set
122   UInt_t     fNRowUp;            //number of pad rows per sector up     -calculated
123   UInt_t     fNtRows;            //total number of rows in TPC          -calculated
124   Float_t   fPadRowLow[100]; //Lower sector, pad row radii          -calculated
125   Float_t   fPadRowUp[100];  //Upper sector, pad row radii          -calculated 
126   UInt_t     fNPadsLow[100];  //Lower sector, number of pads per row -calculated
127   UInt_t     fNPadsUp[100];   //Upper sector, number of pads per row -calculated
128   Float_t   fYInner[100];     //Inner sector, wire-length
129   Float_t   fYOuter[100];     //Outer sector, wire-length   
130  protected:
131   static AliTPCROC*   fgInstance; //! Instance of this class (singleton implementation)
132   ClassDef(AliTPCROC,0)    //  TPC ROC class
133 };
134
135 #endif