]>
Commit | Line | Data |
---|---|---|
0f4a7374 | 1 | #ifndef ALITOFGEOMETRY_H |
2 | #define ALITOFGEOMETRY_H | |
3 | /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. * | |
4 | * See cxx source for full Copyright notice */ | |
5 | ||
6 | /* $Id$ */ | |
7 | ||
8 | /////////////////////////////////////////////////////////////////////////////// | |
9 | // // | |
10 | // TOF geometry class // | |
11 | // // | |
12 | /////////////////////////////////////////////////////////////////////////////// | |
13 | ||
14 | ||
d076c8d5 | 15 | #include "TObject.h" |
0f4a7374 | 16 | |
d076c8d5 | 17 | class AliTOFGeometry: public TObject{ |
0f4a7374 | 18 | |
19 | public: | |
20 | AliTOFGeometry(); | |
21 | virtual ~AliTOFGeometry(); | |
22 | ||
74ea065c | 23 | static Int_t NStripA() { return kNStripA;}; |
24 | static Int_t NStripB() { return kNStripB;}; | |
d3c7bfac | 25 | virtual Int_t NStripC() { return kNStripC;}; |
26 | virtual Int_t NMaxNstrip() { return kMaxNstrip;}; | |
74ea065c | 27 | static Int_t NpadX() { return kNpadX;}; |
28 | static Int_t NpadZ() { return kNpadZ;}; | |
7e6dce66 | 29 | static Int_t NpadXStrip() { return kNpadX*kNpadZ;}; |
74ea065c | 30 | static Int_t NSectors() { return kNSectors;}; |
31 | static Int_t NPlates() { return kNPlates;}; | |
d3c7bfac | 32 | virtual Int_t NPadXSector() { return (kNStripA + 2*kNStripB + |
33 | 2*kNStripC)*kNpadX*kNpadZ;}; | |
34 | ||
35 | virtual Float_t RinTOF() { return fgkxTOF;}; | |
36 | virtual Float_t Rmin() { return fgkRmin;}; | |
37 | virtual Float_t Rmax() { return fgkRmax;}; | |
38 | ||
39 | static Float_t XPad() { return fgkXPad;}; | |
40 | static Float_t ZPad() { return fgkZPad;}; | |
41 | ||
0f4a7374 | 42 | static Int_t TimeDiff() { return fgkTimeDiff;}; |
74ea065c | 43 | static Int_t MaxTOFTree() { return kMaxTOFTree;}; |
0f4a7374 | 44 | |
43f77f2d | 45 | static Int_t NDDL() { return kNDDL;}; |
46 | static Int_t NTRM() { return kNTRM;} | |
47 | static Int_t NTdc() { return kNTdc;}; | |
48 | static Int_t NCh() { return kNCh;}; | |
49 | static Int_t NPadXTRM() { return kNCh*kNTdc;}; | |
50 | ||
d3c7bfac | 51 | virtual Float_t ZlenA() { return kZlenA;}; |
52 | virtual Float_t ZlenB() { return kZlenB;}; | |
53 | virtual Float_t ZlenC() { return kZlenC;}; | |
54 | virtual Float_t MaxhZtof() { return kMaxhZtof;}; | |
55 | virtual Float_t StripLength() { return kStripLength;}; | |
0f4a7374 | 56 | |
57 | static Float_t SigmaForTail1() { return fgkSigmaForTail1;}; | |
58 | static Float_t SigmaForTail2() { return fgkSigmaForTail2;}; | |
0f4a7374 | 59 | |
74ea065c | 60 | static Double_t GetAlpha() { return 2 * 3.14159265358979323846 / kNSectors; }; |
0f4a7374 | 61 | |
43f77f2d | 62 | static Float_t TdcBinWidth() {return fgkTdcBin;}; |
63 | ||
0f4a7374 | 64 | |
65 | virtual void Init(); | |
74ea065c | 66 | virtual void SetHoles(Bool_t holes) {fHoles = holes;}; |
67 | virtual Bool_t GetHoles() const {return fHoles;}; | |
d3c7bfac | 68 | |
69 | virtual Bool_t IsInsideThePad(Int_t */*det*/, Float_t */*pos*/) {return kFALSE;}; | |
70 | virtual Float_t DistanceToPad(Int_t */*det*/, Float_t */*pos*/, Float_t *dist3d=0) {return dist3d[0];}; | |
71 | virtual void GetPos(Int_t */*det*/,Float_t */*pos*/); | |
72 | virtual void GetDetID(Float_t */*pos*/,Int_t */*det*/); | |
73 | virtual Int_t GetPlate(Float_t */*pos*/) {return -1;}; | |
74 | virtual Int_t GetStrip(Float_t */*pos*/) {return -1;}; | |
75 | virtual Int_t GetSector(Float_t */*pos*/) {return -1;}; | |
76 | virtual Int_t GetPadX(Float_t */*pos*/) {return -1;}; | |
77 | virtual Int_t GetPadZ(Float_t */*pos*/) {return -1;}; | |
78 | virtual Float_t GetX(Int_t */*det*/) {return -500.;}; | |
79 | virtual Float_t GetY(Int_t */*det*/) {return -500.;}; | |
80 | virtual Float_t GetZ(Int_t */*det*/) {return -500.;}; | |
81 | ||
82 | Float_t GetAngles(Int_t iplate, Int_t istrip) const {return fAngles[iplate][istrip];}; | |
83 | Float_t GetHeights(Int_t iplate, Int_t istrip) const {return fHeights[iplate][istrip];}; | |
84 | Float_t GetDistances(Int_t iplate, Int_t istrip) const {return fDistances[iplate][istrip];}; | |
85 | ||
86 | //private: | |
87 | protected: | |
0f4a7374 | 88 | |
58eb5b61 | 89 | enum { |
74ea065c | 90 | kNStripA = 15, // number of strips in A type module |
91 | kNStripB = 19, // number of strips in B type module | |
74ea065c | 92 | kNpadX = 48, // Number of pads along X |
93 | kNpadZ = 2, // Number of pads along Z | |
94 | kNSectors = 18, // Number of Sectors | |
95 | kNPlates = 5, // Number of Plates | |
74ea065c | 96 | kMaxTOFTree = 5 // numer of geom. levels: |
58eb5b61 | 97 | }; |
98 | ||
43f77f2d | 99 | // DAQ characteristics |
100 | // cfr. TOF-TDR pag. 105 for Glossary | |
101 | // TARODA : TOF-ALICE Read Out and Data Acquisition system | |
102 | enum { | |
103 | kNDDL = 4, // Number of DDL (Detector Data Link) per sector | |
104 | kNTRM = 10, // Number of TRM ( Readout Module) per DDL | |
105 | kNTdc = 30, // Number of Tdc (Time to Digital Converter) per TRM | |
106 | kNCh = 8 // Number of channels per Tdc | |
107 | }; | |
108 | ||
7e6dce66 | 109 | static const Int_t fgkTimeDiff; // Min signal separation (ps) |
110 | ||
d3c7bfac | 111 | mutable Int_t kNStripC; // number of strips in C type module |
112 | mutable Int_t kMaxNstrip; // Max. number of strips | |
113 | ||
114 | mutable Float_t kZlenA; // length (cm) of the A module | |
115 | mutable Float_t kZlenB; // length (cm) of the B module | |
116 | mutable Float_t kZlenC; // length (cm) of the C module | |
117 | mutable Float_t kMaxhZtof; // Max half z-size of TOF (cm) | |
118 | mutable Float_t kStripLength; // Strip Length (rho X phi direction) (cm) | |
119 | ||
120 | mutable Float_t fgkRmin; // Inner radius of the TOF (cm) | |
121 | mutable Float_t fgkRmax; // Outer radius of the TOF (cm) | |
122 | mutable Float_t fgkxTOF; // Inner TOF Radius used in Reconstruction (cm) | |
123 | ||
124 | static const Float_t fgkXPad; // Pad size in the x direction (cm) | |
125 | static const Float_t fgkZPad; // Pad size in the z direction (cm) | |
58eb5b61 | 126 | |
127 | static const Float_t fgkSigmaForTail1;//Sig1 for simulation of TDC tails | |
128 | static const Float_t fgkSigmaForTail2;//Sig2 for simulation of TDC tails | |
d3c7bfac | 129 | |
130 | Bool_t fHoles; //logical for geometry version (w/wo holes) | |
131 | ||
132 | Float_t *fAngles[kNPlates]; //Strip Tilt Angles | |
133 | Float_t *fHeights[kNPlates];//Strip heights | |
134 | Float_t *fDistances[kNPlates];//Strip distances | |
135 | ||
0f4a7374 | 136 | Float_t fPhiSec; //sector Phi width (deg) |
137 | ||
43f77f2d | 138 | static const Float_t fgkTdcBin; // time-window for the TDC bins [ps] |
139 | ||
d3c7bfac | 140 | ClassDef(AliTOFGeometry,2) // TOF Geometry base class |
0f4a7374 | 141 | }; |
142 | ||
143 | #endif |