Move the tail cancellation from the digitizer to the clusterizer (Christian)
[u/mrichter/AliRoot.git] / TRD / AliTRDpadPlane.h
1 #ifndef ALITRDPADPLANE_H
2 #define ALITRDPADPLANE_H
3 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
4  * See cxx source for full Copyright notice                               */
5
6 /* $Id: AliTRDpadPlane.h,v */
7
8 //////////////////////////////////////////////////
9 //                                              //
10 //  TRD pad plane class                         //
11 //                                              //
12 //  Contains the information on pad postions,   //
13 //  pad dimensions, tilting angle, etc.         //
14 //  It also provides methods to identify the    //
15 //  current pad number from global coordinates. //
16 //                                              //
17 //////////////////////////////////////////////////
18
19 #include <TObject.h>
20
21 class AliTRDgeometry;
22
23 //_____________________________________________________________________________
24 class AliTRDpadPlane : public TObject {
25
26  public:
27
28   AliTRDpadPlane();
29   AliTRDpadPlane(Int_t p, Int_t c);
30   AliTRDpadPlane(const AliTRDpadPlane &p);
31   virtual           ~AliTRDpadPlane();
32   AliTRDpadPlane    &operator=(const AliTRDpadPlane &p);
33   virtual void       Copy(TObject &p) const;
34
35   Int_t    GetPadRowNumber(Double_t z) const;
36   Int_t    GetPadColNumber(Double_t rphi, Double_t rowOffset) const;
37   Double_t GetTiltOffset(Double_t rowOffset) const 
38                                              { return fTiltingTan * (rowOffset - 0.5*fLengthIPad); };
39   Double_t GetPadRowOffset(Int_t row, Double_t z) const
40                                              { if ((row < 0) || (row >= fNrows))
41                                                  return -1.0;
42                                                else 
43                                                  return fPadRow[row] - z;    };
44
45   Double_t GetPadColOffset(Int_t col, Double_t rphi) const
46                                              { if ((col < 0) || (col >= fNcols))
47                                                  return -1.0;
48                                                else
49                                                  return fPadCol[col] - rphi; };
50
51   Double_t GetTiltingAngle() const           { return fTiltingAngle; };
52
53   Int_t    GetNrows() const                  { return fNrows;        };
54   Int_t    GetNcols() const                  { return fNcols;        };
55
56   Double_t GetRow0() const                   { return fPadRow[0];    };
57   Double_t GetCol0() const                   { return fPadCol[0];    };
58
59   Double_t GetRowEnd() const                 { return fPadRow[fNrows-1] - fLengthOPad; };
60   Double_t GetColEnd() const                 { return fPadCol[fNcols-1] - fWidthOPad;  };
61
62   Double_t GetRowPos(Int_t row) const        { return fPadRow[row];  };
63   Double_t GetColPos(Int_t col) const        { return fPadCol[col];  };
64   
65   Double_t GetRowSize(Int_t row) const       { if ((row == 0) || (row == fNrows-1))
66                                                  return fLengthOPad;
67                                                else
68                                                  return fLengthIPad; };
69   Double_t GetColSize(Int_t col) const       { if ((col == 0) || (col == fNcols-1))
70                                                  return fWidthOPad;
71                                                else
72                                                   return fWidthIPad; };
73   Double_t GetLengthRim() const              { return fLengthRim;    };
74
75  protected:
76
77   AliTRDgeometry *fGeo;       //! TRD geometry       
78
79   Int_t     fPla;             //  Plane number
80   Int_t     fCha;             //  Chamber number
81
82   Double_t  fLength;          //  Length of pad plane in z-direction (row)
83   Double_t  fWidth;           //  Width of pad plane in rphi-direction (col)
84
85   Double_t  fLengthRim;       //  Length of the rim in z-direction (row)
86   Double_t  fWidthRim;        //  Width of the rim in rphi-direction (col)
87
88   Double_t  fLengthOPad;      //  Length of an outer pad in z-direction (row)
89   Double_t  fWidthOPad;       //  Width of an outer pad in rphi-direction (col)
90
91   Double_t  fLengthIPad;      //  Length of an inner pad in z-direction (row)
92   Double_t  fWidthIPad;       //  Width of an inner pad in rphi-direction (col)
93
94   Double_t  fRowSpacing;      //  Spacing between the pad rows
95   Double_t  fColSpacing;      //  Spacing between the pad columns
96
97   Int_t     fNrows;           //  Number of rows
98   Int_t     fNcols;           //  Number of columns
99
100   Double_t  fTiltingAngle;    //  Pad tilting angle  
101   Double_t  fTiltingTan;      //  Tangens of pad tilting angle
102
103   Double_t *fPadRow;          //! Pad border positions in row direction
104   Double_t *fPadCol;          //! Pad border positions in column direction
105
106   ClassDef(AliTRDpadPlane,2)  //  TRD ROC pad plane
107
108 };
109
110 #endif