Changed timebin 0 to be the one closest to the readout
[u/mrichter/AliRoot.git] / TRD / AliTRDgeometry.h
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                               */
5
6 /* $Id$ */
7
8 #include <TObject.h>
9 #include <TMath.h>
10
11 #include "AliRun.h"
12 #include "AliRecPoint.h"
13 #include "AliGeometry.h"
14
15 #include "AliTRDconst.h"
16
17 class AliTRDgeometry : public AliGeometry {
18
19  public:
20
21   AliTRDgeometry();
22   virtual ~AliTRDgeometry();
23
24   virtual void    CreateGeometry(Int_t *idtmed);
25   virtual Int_t   IsVersion() const = 0;
26   virtual void    Init();
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;
31
32   virtual void    SetPHOShole() = 0;
33   virtual void    SetRICHhole() = 0;
34
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; };
38
39   virtual Bool_t  GetPHOShole() = 0;
40   virtual Bool_t  GetRICHhole() = 0;
41
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;
46
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;         };
50  
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];      };
54
55   virtual Float_t GetRowPadSize()                      const { return fRowPadSize;  };
56   virtual Float_t GetColPadSize()                      const { return fColPadSize;  };
57   virtual Float_t GetTimeBinSize()                     const { return fTimeBinSize; };
58
59   virtual void    GetGlobal(const AliRecPoint *p, TVector3 &pos, TMatrix &mat) const; 
60   virtual void    GetGlobal(const AliRecPoint *p, TVector3 &pos) const;   
61
62  protected:
63
64   Float_t         fCwidth[kNplan];                 // Width of the chambers
65
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
69
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
73
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
77
78   ClassDef(AliTRDgeometry,1)                       // TRD geometry base class
79
80 };
81
82 #endif