1 #ifndef ALITRDGEOMETRY_H
2 #define ALITRDGEOMETRY_H
3 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
4 * See cxx source for full Copyright notice */
12 #include "AliRecPoint.h"
13 #include "AliGeometry.h"
15 #include "AliTRDconst.h"
17 class AliTRDgeometry : public AliGeometry {
22 virtual ~AliTRDgeometry();
24 virtual void CreateGeometry(Int_t *idtmed);
25 virtual Int_t IsVersion() const = 0;
27 virtual Bool_t Local2Global(Int_t d, Float_t *local, Float_t *global) const;
28 virtual Bool_t Local2Global(Int_t p, Int_t c, Int_t s, Float_t *local, Float_t *global) const;
29 virtual Bool_t Rotate(Int_t d, Float_t *pos, Float_t *rot);
30 virtual Bool_t RotateBack(Int_t d, Float_t *rot, Float_t *pos) const;
32 virtual void SetPHOShole() = 0;
33 virtual void SetRICHhole() = 0;
35 virtual void SetRowPadSize(Float_t size) { fRowPadSize = size; };
36 virtual void SetColPadSize(Float_t size) { fColPadSize = size; };
37 virtual void SetTimeBinSize(Float_t size) { fTimeBinSize = size; };
39 virtual Bool_t GetPHOShole() = 0;
40 virtual Bool_t GetRICHhole() = 0;
42 virtual Int_t GetDetector(Int_t p, Int_t c, Int_t s) const;
43 virtual Int_t GetPlane(Int_t d) const;
44 virtual Int_t GetChamber(Int_t d) const;
45 virtual Int_t GetSector(Int_t d) const;
47 virtual Int_t GetRowMax(Int_t p, Int_t c, Int_t s) { return fRowMax[p][c][s]; };
48 virtual Int_t GetColMax(Int_t p) { return fColMax[p]; };
49 virtual Int_t GetTimeMax() { return fTimeMax; };
51 virtual Float_t GetRow0(Int_t p, Int_t c, Int_t s) const { return fRow0[p][c][s]; };
52 virtual Float_t GetCol0(Int_t p) const { return fCol0[p]; };
53 virtual Float_t GetTime0(Int_t p) const { return fTime0[p]; };
55 virtual Float_t GetRowPadSize() const { return fRowPadSize; };
56 virtual Float_t GetColPadSize() const { return fColPadSize; };
57 virtual Float_t GetTimeBinSize() const { return fTimeBinSize; };
59 virtual void GetGlobal(const AliRecPoint *p, TVector3 &pos, TMatrix &mat) const;
60 virtual void GetGlobal(const AliRecPoint *p, TVector3 &pos) const;
64 Float_t fCwidth[kNplan]; // Width of the chambers
66 Int_t fRowMax[kNplan][kNcham][kNsect]; // Number of pad-rows
67 Int_t fColMax[kNplan]; // Number of pad-columns
68 Int_t fTimeMax; // Number of time buckets
70 Float_t fRow0[kNplan][kNcham][kNsect]; // Row-position of pad 0
71 Float_t fCol0[kNplan]; // Column-position of pad 0
72 Float_t fTime0[kNplan]; // Time-position of pad 0
74 Float_t fRowPadSize; // Pad size in z-direction
75 Float_t fColPadSize; // Pad size in rphi-direction
76 Float_t fTimeBinSize; // Size of the time buckets
78 ClassDef(AliTRDgeometry,1) // TRD geometry base class