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 */
6 /* $Id: AliTRDpadPlane.h,v */
8 //////////////////////////////////////////////////
10 // TRD pad plane class //
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. //
17 //////////////////////////////////////////////////
23 //_____________________________________________________________________________
24 class AliTRDpadPlane : public TObject {
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;
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))
43 return fPadRow[row] - z; };
45 Double_t GetPadColOffset(Int_t col, Double_t rphi) const
46 { if ((col < 0) || (col >= fNcols))
49 return fPadCol[col] - rphi; };
51 Double_t GetTiltingAngle() const { return fTiltingAngle; };
53 Int_t GetNrows() const { return fNrows; };
54 Int_t GetNcols() const { return fNcols; };
56 Double_t GetRow0() const { return fPadRow[0]; };
57 Double_t GetCol0() const { return fPadCol[0]; };
59 Double_t GetRowEnd() const { return fPadRow[fNrows-1] - fLengthOPad; };
60 Double_t GetColEnd() const { return fPadCol[fNcols-1] - fWidthOPad; };
62 Double_t GetRowPos(Int_t row) const { return fPadRow[row]; };
63 Double_t GetColPos(Int_t col) const { return fPadCol[col]; };
65 Double_t GetRowSize(Int_t row) const { if ((row == 0) || (row == fNrows-1))
68 return fLengthIPad; };
69 Double_t GetColSize(Int_t col) const { if ((col == 0) || (col == fNcols-1))
73 Double_t GetLengthRim() const { return fLengthRim; };
77 AliTRDgeometry *fGeo; //! TRD geometry
79 Int_t fPla; // Plane number
80 Int_t fCha; // Chamber number
82 Double_t fLength; // Length of pad plane in z-direction (row)
83 Double_t fWidth; // Width of pad plane in rphi-direction (col)
85 Double_t fLengthRim; // Length of the rim in z-direction (row)
86 Double_t fWidthRim; // Width of the rim in rphi-direction (col)
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)
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)
94 Double_t fRowSpacing; // Spacing between the pad rows
95 Double_t fColSpacing; // Spacing between the pad columns
97 Int_t fNrows; // Number of rows
98 Int_t fNcols; // Number of columns
100 Double_t fTiltingAngle; // Pad tilting angle
101 Double_t fTiltingTan; // Tangens of pad tilting angle
103 Double_t *fPadRow; //! Pad border positions in row direction
104 Double_t *fPadCol; //! Pad border positions in column direction
106 ClassDef(AliTRDpadPlane,2) // TRD ROC pad plane