Add new TRD classes
[u/mrichter/AliRoot.git] / TRD / AliTRDgeometry.h
1 #ifndef TRDgeometry_h
2 #define TRDgeometry_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
14 #include "AliTRDconst.h"
15
16 class AliTRDgeometry : public AliGeometry {
17
18  public:
19
20   AliTRDgeometry();
21   ~AliTRDgeometry();
22
23   virtual void    CreateGeometry(Int_t *);
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);
27   virtual Bool_t  Local2Global(Int_t p, Int_t c, Int_t s, Float_t *local, Float_t *global);
28   virtual Bool_t  Rotate(Int_t d, Float_t *pos, Float_t *rot);
29   virtual Bool_t  RotateBack(Int_t d, Float_t *rot, Float_t *pos);
30
31   virtual void    SetRowPadSize(Float_t size)          { fRowPadSize  = size; };
32   virtual void    SetColPadSize(Float_t size)          { fColPadSize  = size; };
33   virtual void    SetTimeBinSize(Float_t size)         { fTimeBinSize = size; };
34
35   virtual Int_t   GetDetector(Int_t p, Int_t c, Int_t s);
36   virtual Int_t   GetPlane(Int_t d);
37   virtual Int_t   GetChamber(Int_t d);
38   virtual Int_t   GetSector(Int_t d);
39
40   virtual Int_t   GetRowMax(Int_t p, Int_t c, Int_t s) { return fRowMax[p][c][s]; };
41   virtual Int_t   GetColMax(Int_t p)                   { return fColMax[p];       };
42   virtual Int_t   GetTimeMax()                         { return fTimeMax;         };
43  
44   virtual Float_t GetRow0(Int_t p, Int_t c, Int_t s)   { return fRow0[p][c][s]; };
45   virtual Float_t GetCol0(Int_t p)                     { return fCol0[p];       };
46   virtual Float_t GetTime0(Int_t p)                    { return fTime0[p];      };
47
48   virtual Float_t GetRowPadSize()                      { return fRowPadSize;  };
49   virtual Float_t GetColPadSize()                      { return fColPadSize;  };
50   virtual Float_t GetTimeBinSize()                     { return fTimeBinSize; };
51
52   virtual void    GetGlobal(const AliRecPoint * p, TVector3 & pos, TMatrix & mat); 
53   virtual void    GetGlobal(const AliRecPoint * p, TVector3 & pos);   
54
55  protected:
56
57   Float_t         fCwidth[kNplan];                 // Width of the chambers
58
59   Int_t           fRowMax[kNplan][kNcham][kNsect]; // Number of pad-rows
60   Int_t           fColMax[kNplan];                 // Number of pad-columns
61   Int_t           fTimeMax;                        // Number of time buckets
62
63   Float_t         fRow0[kNplan][kNcham][kNsect];   // Row-position of pad 0
64   Float_t         fCol0[kNplan];                   // Column-position of pad 0
65   Float_t         fTime0[kNplan];                  // Time-position of pad 0
66
67   Float_t         fRowPadSize;                     // Pad size in z-direction
68   Float_t         fColPadSize;                     // Pad size in rphi-direction
69   Float_t         fTimeBinSize;                    // Size of the time buckets
70
71   ClassDef(AliTRDgeometry,1)                       // TRD geometry base class
72
73 };
74
75 #endif