]> git.uio.no Git - u/mrichter/AliRoot.git/blame - TRD/AliTRDgeometry.h
Update of the macros
[u/mrichter/AliRoot.git] / TRD / AliTRDgeometry.h
CommitLineData
dd9a6ee3 1#ifndef ALITRDGEOMETRY_H
2#define ALITRDGEOMETRY_H
f7336fa3 3/* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
4 * See cxx source for full Copyright notice */
5
a2b90f83 6/* $Id: AliTRDgeometry.h,v 1.8 2001/02/14 18:22:26 cbl
7 public:
8
9 enum { kNplan = 6, kNcham = 5, kNsect = 18, kNdet = 540 };
10ume Exp $ */
f7336fa3 11
94de3818 12#include "AliGeometry.h"
f7336fa3 13
f7336fa3 14class AliTRDgeometry : public AliGeometry {
15
16 public:
17
dd56b762 18 enum { kNplan = 6, kNcham = 5, kNsect = 18, kNdet = 540 };
19
f7336fa3 20 AliTRDgeometry();
8230f242 21 virtual ~AliTRDgeometry();
f7336fa3 22
793ff80c 23 virtual void CreateGeometry(Int_t *idtmed);
24 virtual Int_t IsVersion() const = 0;
25 virtual void Init();
26 virtual Bool_t Local2Global(Int_t d, Float_t *local, Float_t *global) const;
27 virtual Bool_t Local2Global(Int_t p, Int_t c, Int_t s, Float_t *local, Float_t *global) const;
28 virtual Bool_t Rotate(Int_t d, Float_t *pos, Float_t *rot) const;
29 virtual Bool_t RotateBack(Int_t d, Float_t *rot, Float_t *pos) const;
30
31 static Int_t Nsect() { return fgkNsect; };
32 static Int_t Nplan() { return fgkNplan; };
33 static Int_t Ncham() { return fgkNcham; };
34 static Int_t Ndet() { return fgkNdet; };
35
36 static Float_t Rmin() { return fgkRmin; };
37 static Float_t Rmax() { return fgkRmax; };
38 static Float_t Zmax1() { return fgkZmax1; };
39 static Float_t Zmax2() { return fgkZmax2; };
40
41 static Float_t Cwidcha() { return (fgkSwidth2 - fgkSwidth1)
42 / fgkSheight * (fgkCheight + fgkCspace); };
43 static Float_t Cheight() { return fgkCheight; };
44 static Float_t Cspace() { return fgkCspace; };
a2b90f83 45 static Float_t Ccframe() { return fgkCcframe; };
46 static Float_t SeThick() { return fgkSeThick; };
793ff80c 47 static Float_t MyThick() { return fgkMyThick; };
48 static Float_t DrThick() { return fgkDrThick; };
a2b90f83 49 static Float_t AmThick() { return fgkAmThick; };
793ff80c 50 static Float_t RaThick() { return fgkRaThick; };
a2b90f83 51 static Float_t DrZpos() { return fgkDrZpos; };
793ff80c 52
53 virtual void SetPHOShole() = 0;
54 virtual void SetRICHhole() = 0;
55
a2b90f83 56 virtual void SetNRowPad(const Int_t p, const Int_t c, const Int_t npad) {};
57 virtual void SetNColPad(const Int_t npad);
58 virtual void SetNTimeBin(const Int_t nbin);
59 virtual void SetExpandTimeBin(const Int_t nbefore, const Int_t nafter)
60 { fTimeBefore = nbefore;
61 fTimeAfter = nafter; };
793ff80c 62
63 virtual Bool_t GetPHOShole() const = 0;
64 virtual Bool_t GetRICHhole() const = 0;
65
a2b90f83 66 virtual Int_t GetDetector(const Int_t p, const Int_t c, const Int_t s) const;
67 virtual Int_t GetPlane(const Int_t d) const;
68 virtual Int_t GetChamber(const Int_t d) const;
69 virtual Int_t GetSector(const Int_t d) const;
793ff80c 70
a2b90f83 71 Float_t GetChamberWidth(const Int_t p) const { return fCwidth[p]; };
793ff80c 72
a2b90f83 73 Int_t GetRowMax(const Int_t p, const Int_t c, const Int_t s)
74 const { return fRowMax[p][c][s]; };
75 Int_t GetColMax(const Int_t p) const { return fColMax[p]; };
76 Int_t GetTimeMax() const { return fTimeMax; };
77 Int_t GetTimeBefore() const { return fTimeBefore; };
78 Int_t GetTimeAfter() const { return fTimeAfter; };
79 Int_t GetTimeTotal() const { return fTimeMax
80 + fTimeBefore
81 + fTimeAfter; };
82
83 Float_t GetRow0(const Int_t p, const Int_t c, const Int_t s)
84 const { return fRow0[p][c][s]; };
85 Float_t GetCol0(const Int_t p) const { return fCol0[p]; };
86 Float_t GetTime0(const Int_t p) const { return fTime0[p]; };
87
88 Float_t GetRowPadSize(const Int_t p, const Int_t c, const Int_t s)
89 const { return fRowPadSize[p][c][s]; };
90 Float_t GetColPadSize(const Int_t p) const { return fColPadSize[p]; };
91 Float_t GetTimeBinSize() const { return fTimeBinSize; };
f7336fa3 92
793ff80c 93 virtual void GetGlobal(const AliRecPoint *p, TVector3 &pos, TMatrix &mat) const;
94 virtual void GetGlobal(const AliRecPoint *p, TVector3 &pos) const;
f7336fa3 95
a2b90f83 96 static Double_t GetAlpha() { return 2 * 3.14159265358979323846 / fgkNsect; };
f7336fa3 97
793ff80c 98 protected:
f7336fa3 99
793ff80c 100 static const Int_t fgkNsect; // Number of sectors in the full detector (18)
101 static const Int_t fgkNplan; // Number of planes of the TRD (6)
102 static const Int_t fgkNcham; // Number of chambers in z-direction (5)
103 static const Int_t fgkNdet; // Total number of detectors (18 * 6 * 5 = 540)
104
105 static const Float_t fgkRmin; // Minimal radius of the TRD
106 static const Float_t fgkRmax; // Maximal radius of the TRD
107
108 static const Float_t fgkZmax1; // Half-length of the TRD at outer radius
109 static const Float_t fgkZmax2; // Half-length of the TRD at inner radius
110
111 static const Float_t fgkSheight; // Height of the TRD-volume in spaceframe (BTR1-3)
112 static const Float_t fgkSwidth1; // Lower width of the TRD-volume in spaceframe (BTR1-3)
113 static const Float_t fgkSwidth2; // Upper width of the TRD-volume in spaceframe (BTR1-3)
114 static const Float_t fgkSlenTR1; // Length of the TRD-volume in spaceframe (BTR1)
115 static const Float_t fgkSlenTR2; // Length of the TRD-volume in spaceframe (BTR2)
116 static const Float_t fgkSlenTR3; // Length of the TRD-volume in spaceframe (BTR3)
117
118 static const Float_t fgkCheight; // Height of the chambers
119 static const Float_t fgkCspace; // Vertical spacing of the chambers
120 static const Float_t fgkCaframe; // Height of the aluminum frame
121 static const Float_t fgkCcframe; // Height of the carbon frame
122 static const Float_t fgkCathick; // Thickness of the aluminum frame
123 static const Float_t fgkCcthick; // Thickness of the carbon frame
124
125 static const Float_t fgkSeThick; // Thickness of the radiator seal
126 static const Float_t fgkRaThick; // Thickness of the radiator
127 static const Float_t fgkPeThick; // Thickness of the PE-layer in the radiator
128 static const Float_t fgkMyThick; // Thickness of the mylar-layer
129 static const Float_t fgkXeThick; // Thickness of the gas volume
130 static const Float_t fgkDrThick; // Thickness of the drift region
131 static const Float_t fgkAmThick; // Thickness of the amplification region
132 static const Float_t fgkCuThick; // Thickness of the pad plane
133 static const Float_t fgkSuThick; // Thickness of the HEXCEL+G10 support structure
134 static const Float_t fgkFeThick; // Thickness of the FEE + signal lines
135 static const Float_t fgkCoThick; // Thickness of the PE of the cooling device
136 static const Float_t fgkWaThick; // Thickness of the cooling water
137
138 static const Float_t fgkSeZpos; // Position of the radiator seal
139 static const Float_t fgkRaZpos; // Position of the radiator
140 static const Float_t fgkPeZpos; // Position of the PE-layer in the radiator
141 static const Float_t fgkMyZpos; // Position of the mylar-layer
142 static const Float_t fgkDrZpos; // Position of the drift region
143 static const Float_t fgkAmZpos; // Position of the amplification region
144 static const Float_t fgkCuZpos; // Position of the pad plane
145 static const Float_t fgkSuZpos; // Position of the HEXCEL+G10 support structure
146 static const Float_t fgkFeZpos; // Position of the FEE + signal lines
147 static const Float_t fgkCoZpos; // Position of the PE of the cooling device
148 static const Float_t fgkWaZpos; // Position of the colling water
149
150 Int_t fRowMax[kNplan][kNcham][kNsect]; // Number of pad-rows
151 Int_t fColMax[kNplan]; // Number of pad-columns
a2b90f83 152 Int_t fTimeMax; // Number of timebins in the drift region
153 Int_t fTimeBefore; // Number of timebins before the drift region
154 Int_t fTimeAfter; // Number of timebins after the drift region
793ff80c 155
156 Float_t fCwidth[kNplan]; // Width of the chambers
157
158 Float_t fRow0[kNplan][kNcham][kNsect]; // Row-position of pad 0
159 Float_t fCol0[kNplan]; // Column-position of pad 0
160 Float_t fTime0[kNplan]; // Time-position of pad 0
161
71d9fa7b 162 Float_t fRowPadSize[kNplan][kNcham][kNsect]; // Pad size in z-direction
163 Float_t fColPadSize[kNplan]; // Pad size in rphi-direction
793ff80c 164 Float_t fTimeBinSize; // Size of the time buckets
165
166 Float_t fRotA11[kNsect]; // Matrix elements for the rotation
167 Float_t fRotA12[kNsect]; // Matrix elements for the rotation
168 Float_t fRotA21[kNsect]; // Matrix elements for the rotation
169 Float_t fRotA22[kNsect]; // Matrix elements for the rotation
170
171 Float_t fRotB11[kNsect]; // Matrix elements for the backward rotation
172 Float_t fRotB12[kNsect]; // Matrix elements for the backward rotation
173 Float_t fRotB21[kNsect]; // Matrix elements for the backward rotation
174 Float_t fRotB22[kNsect]; // Matrix elements for the backward rotation
175
71d9fa7b 176 ClassDef(AliTRDgeometry,3) // TRD geometry base class
f7336fa3 177
178};
179
180#endif