15 minutes interval for calculation of drift correction
[u/mrichter/AliRoot.git] / TPC / AliTPCROC.h
CommitLineData
7a0ff78e 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//_____________________________________________________________________________
17class AliTPCROC : public TObject {
18 public:
19 static AliTPCROC* Instance();
20 AliTPCROC();
21 AliTPCROC(const AliTPCROC &roc);
179c6296 22 AliTPCROC &operator = (const AliTPCROC & roc); //assignment operator
7a0ff78e 23 void Init();
24 virtual ~AliTPCROC();
38bc857e 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);
7a0ff78e 27 //
28 // numbering
c5bbaa2c 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];}
7a0ff78e 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;}
c5bbaa2c 47 UInt_t GetNInnerSector() const {return fNSectors[0];}
48 UInt_t GetNOuterSector() const {return fNSectors[1];}
49 UInt_t GetNSector() const {return fNSectorsAll;}
a1ec4d07 50 Float_t GetZLength(Int_t sector) const {return (sector<35) ? fZLength-0.275 : fZLength-0.302;}
7a0ff78e 51 //
38bc857e 52 // get pad row parameters
53 //
28be5586 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 {
38bc857e 57 return ( (isec < fNSectors[0]) ?GetPadRowRadiiLow(irow):GetPadRowRadiiUp(irow));}
58 //
59
60protected:
7a0ff78e 61 //
62 // number of pads
63 //
64 void SetGeometry(); // set geometry parameters
c5bbaa2c 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
7a0ff78e 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 //--------------------------------------------------------------------
c5bbaa2c 91 UInt_t fNInnerWiresPerPad; //Number of wires per pad
7a0ff78e 92 Float_t fInnerWWPitch; //pitch between wires in inner sector - calculated
c5bbaa2c 93 UInt_t fInnerDummyWire; //number of wires without pad readout
7a0ff78e 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
c5bbaa2c 98 UInt_t fNOuter1WiresPerPad; //Number of wires per pad
99 UInt_t fNOuter2WiresPerPad; // Number of wires per pad
7a0ff78e 100 Float_t fOuterWWPitch; //pitch between wires in outer sector -calculated
c5bbaa2c 101 UInt_t fOuterDummyWire; //number of wires without pad readout
7a0ff78e 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 //
c5bbaa2c 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
38bc857e 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
7a0ff78e 130 protected:
a411fffe 131 static AliTPCROC* fgInstance; //! Instance of this class (singleton implementation)
132 ClassDef(AliTPCROC,0) // TPC ROC class
7a0ff78e 133};
134
135#endif