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