Introduction of a new TOF constant (i.e. TDC bin width)
[u/mrichter/AliRoot.git] / TOF / AliTOFGeometry.h
CommitLineData
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 17class 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;};
25 static Int_t NStripC() { return kNStripC;};
26 static Int_t NpadX() { return kNpadX;};
27 static Int_t NpadZ() { return kNpadZ;};
7e6dce66 28 static Int_t NpadXStrip() { return kNpadX*kNpadZ;};
74ea065c 29 static Int_t NSectors() { return kNSectors;};
30 static Int_t NPlates() { return kNPlates;};
31 static Int_t NPadXSector() { return (kNStripA + 2*kNStripB +
32 2*kNStripC)*kNpadX*kNpadZ;};
0f4a7374 33 static Int_t TimeDiff() { return fgkTimeDiff;};
74ea065c 34 static Int_t MaxTOFTree() { return kMaxTOFTree;};
0f4a7374 35
36
43f77f2d 37 static Int_t NDDL() { return kNDDL;};
38 static Int_t NTRM() { return kNTRM;}
39 static Int_t NTdc() { return kNTdc;};
40 static Int_t NCh() { return kNCh;};
41 static Int_t NPadXTRM() { return kNCh*kNTdc;};
42
43
7e6dce66 44 static Float_t RinTOF() { return fgkxTOF;};
45 static Float_t Rmin() { return fgkRmin;};
46 static Float_t Rmax() { return fgkRmax;};
47 static Float_t ZlenA() { return fgkZlenA;};
48 static Float_t ZlenB() { return fgkZlenB;};
49 static Float_t ZlenC() { return fgkZlenC;};
50 static Float_t XPad() { return fgkXPad;};
51 static Float_t ZPad() { return fgkZPad;};
52 static Float_t MaxhZtof() { return fgkMaxhZtof;};
53 static Float_t StripLength() { return fgkStripLength;};
54 static Float_t DeadBndX() { return fgkDeadBndX;};
55 static Float_t DeadBndZ() { return fgkDeadBndZ;};
56 static Float_t OverSpc() { return fgkOverSpc;};
0f4a7374 57
58 static Float_t SigmaForTail1() { return fgkSigmaForTail1;};
59 static Float_t SigmaForTail2() { return fgkSigmaForTail2;};
60 static Float_t SpeedOfLight() { return fgkSpeedOfLight;};
61 static Float_t PionMass() { return fgkPionMass;};
62 static Float_t KaonMass() { return fgkKaonMass;};
63 static Float_t ProtonMass() { return fgkProtonMass;};
64 static Float_t ElectronMass() { return fgkElectronMass;};
65 static Float_t MuonMass() { return fgkMuonMass;};
66
74ea065c 67 static Double_t GetAlpha() { return 2 * 3.14159265358979323846 / kNSectors; };
0f4a7374 68
43f77f2d 69 static Float_t TdcBinWidth() {return fgkTdcBin;};
70
0f4a7374 71
72 virtual void Init();
74ea065c 73 virtual void SetHoles(Bool_t holes) {fHoles = holes;};
74 virtual Bool_t GetHoles() const {return fHoles;};
75 virtual Bool_t IsInsideThePad(Int_t *det, Float_t *pos);
76 virtual Float_t DistanceToPad(Int_t *det, Float_t *pos);
0f4a7374 77 virtual void GetPos(Int_t *det,Float_t *pos);
78 virtual void GetDetID(Float_t *pos,Int_t *det);
79 virtual Int_t GetPlate(Float_t *pos);
80 virtual Int_t GetStrip(Float_t *pos);
81 virtual Int_t GetSector(Float_t *pos);
82 virtual Int_t GetPadX(Float_t *pos);
83 virtual Int_t GetPadZ(Float_t *pos);
84 virtual Float_t GetX(Int_t *det);
85 virtual Float_t GetY(Int_t *det);
86 virtual Float_t GetZ(Int_t *det);
87 virtual Float_t GetMinPlateTheta(Int_t iPlate);
88 virtual Float_t GetMaxPlateTheta(Int_t iPlate);
89 virtual Float_t GetMinStripTheta(Int_t iPlate, Int_t iStrip);
90 virtual Float_t GetMaxStripTheta(Int_t iPlate, Int_t iStrip);
91 virtual Float_t GetStripTheta(Int_t iPlate, Int_t iStrip);
92 virtual Float_t GetAngles(Int_t iplate, Int_t istrip) const {return fAngles[iplate][istrip];};
93 virtual Float_t GetHeights(Int_t iplate, Int_t istrip) const {return fHeights[iplate][istrip];};
94
95 private:
96
58eb5b61 97 enum {
74ea065c 98 kNStripA = 15, // number of strips in A type module
99 kNStripB = 19, // number of strips in B type module
100 kNStripC = 20, // number of strips in C type module
101 kNpadX = 48, // Number of pads along X
102 kNpadZ = 2, // Number of pads along Z
103 kNSectors = 18, // Number of Sectors
104 kNPlates = 5, // Number of Plates
105 kMaxNstrip = 20, // Max. number of strips
106 kMaxTOFTree = 5 // numer of geom. levels:
58eb5b61 107 };
108
43f77f2d 109 // DAQ characteristics
110 // cfr. TOF-TDR pag. 105 for Glossary
111 // TARODA : TOF-ALICE Read Out and Data Acquisition system
112 enum {
113 kNDDL = 4, // Number of DDL (Detector Data Link) per sector
114 kNTRM = 10, // Number of TRM ( Readout Module) per DDL
115 kNTdc = 30, // Number of Tdc (Time to Digital Converter) per TRM
116 kNCh = 8 // Number of channels per Tdc
117 };
118
7e6dce66 119 static const Int_t fgkTimeDiff; // Min signal separation (ps)
120
121 static const Float_t fgkRmin; // Inner radius of the TOF (cm)
122 static const Float_t fgkRmax; // Outer radius of the TOF (cm)
123 static const Float_t fgkZlenA; // length (cm) of the A module
124 static const Float_t fgkZlenB; // length (cm) of the B module
125 static const Float_t fgkZlenC; // length (cm) of the C module
126 static const Float_t fgkXPad; // Pad size in the x direction (cm)
127 static const Float_t fgkZPad; // Pad size in the z direction (cm)
128 static const Float_t fgkMaxhZtof; // Max half z-size of TOF (cm)
129 static const Float_t fgkStripLength; // Strip Length (rho X phi direction) (cm)
130 static const Float_t fgkDeadBndX; // Dead Boundaries of a Strip along Z direction (width)
131 static const Float_t fgkDeadBndZ; // Dead Boundaries of a Strip along X direction (length)
132 static const Float_t fgkOverSpc; // Space available for sensitive layers in radial direction (cm)
58eb5b61 133
74ea065c 134 static const Float_t fgkxTOF;// Inner TOF Radius used in Reconstruction (cm)
58eb5b61 135
136 static const Float_t fgkSigmaForTail1;//Sig1 for simulation of TDC tails
137 static const Float_t fgkSigmaForTail2;//Sig2 for simulation of TDC tails
138 static const Float_t fgkSpeedOfLight;// c (10^9 m/s)
139 static const Float_t fgkPionMass;// pion mass (Gev/c^2)
140 static const Float_t fgkKaonMass;// kaon mass (Gev/c^2)
141 static const Float_t fgkProtonMass;// proton mass (Gev/c^2)
142 static const Float_t fgkElectronMass;// electron mass (Gev/c^2)
143 static const Float_t fgkMuonMass;// muon mass (Gev/c^2)
144
145
146 static const Float_t fgkDprecMin;//num.prec.tolerance on Thmin
147 static const Float_t fgkDprecMax;//num.prec.tolerance on Thma
148 static const Float_t fgkDprecCen;//num.prec.tolerance on <Theta>
74ea065c 149 Bool_t fHoles; //logical for geometry version (w/wo holes)
150 Float_t fAngles[kNPlates][kMaxNstrip]; //Strip Tilt Angles
151 Float_t fHeights[kNPlates][kMaxNstrip];//Strip heights
0f4a7374 152 Float_t fPhiSec; //sector Phi width (deg)
153
43f77f2d 154 static const Float_t fgkTdcBin; // time-window for the TDC bins [ps]
155
74ea065c 156 ClassDef(AliTOFGeometry,1) // TOF Geometry base class
0f4a7374 157};
158
159#endif