ALIROOT-5488 Remove build/include from the include directories
[u/mrichter/AliRoot.git] / TRD / AliTRDpadPlane.h
index 9dbccf3..f13aaf0 100644 (file)
@@ -3,41 +3,70 @@
 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
  * See cxx source for full Copyright notice                               */
 
-/* $Id: AliTRDpadPlane.h,v */
-
-//////////////////////////////////////////////////
-//                                              //
-//  TRD pad plane class                         //
-//                                              //
-//  Contains the information on pad postions,   //
-//  pad dimensions, tilting angle, etc.         //
-//  It also provides methods to identify the    //
-//  current pad number from global coordinates. //
-//                                              //
-//////////////////////////////////////////////////
+/* $Id$ */
+
+////////////////////////////////////////////////////////////////////////////
+//                                                                        //
+//  TRD pad plane class                                                   //
+//                                                                        //
+//  Contains the information on ideal pad positions, pad dimensions,      //
+//  tilting angle, etc.                                                   //
+//  It also provides methods to identify the current pad number from      //
+//  local tracking coordinates.                                           //
+//                                                                        //
+////////////////////////////////////////////////////////////////////////////
 
 #include <TObject.h>
 
-class AliTRDgeometry;
-
 //_____________________________________________________________________________
 class AliTRDpadPlane : public TObject {
 
  public:
 
   AliTRDpadPlane();
-  AliTRDpadPlane(Int_t p, Int_t c);
-  AliTRDpadPlane(const AliTRDpadPlane &p);
+  AliTRDpadPlane(Int_t layer, Int_t stack);
   virtual           ~AliTRDpadPlane();
-  AliTRDpadPlane    &operator=(const AliTRDpadPlane &p);
   virtual void       Copy(TObject &p) const;
 
+  void     SetLayer(Int_t l)                   { fLayer          = l; };
+  void     SetStack(Int_t s)                   { fStack          = s; };
+  void     SetRowSpacing(Double_t s)           { fRowSpacing     = s; };
+  void     SetColSpacing(Double_t s)           { fColSpacing     = s; };
+  void     SetLengthRim(Double_t l)            { fLengthRim      = l; };
+  void     SetWidthRim(Double_t w)             { fWidthRim       = w; };
+  void     SetNcols(Int_t n)                   { fNcols          = n;
+                                                 if (fPadCol) delete[] fPadCol;
+                                                 fPadCol         = new Double_t[fNcols]; };
+  void     SetNrows(Int_t n)                   { fNrows          = n;
+                                                 if (fPadRow) delete[] fPadRow;
+                                                 fPadRow         = new Double_t[fNrows]; };
+  void     SetPadCol(Int_t ic, Double_t c)     { if (ic < fNcols) fPadCol[ic] = c;       };
+  void     SetPadRow(Int_t ir, Double_t r)     { if (ir < fNrows) fPadRow[ir] = r;       };
+  void     SetLength(Double_t l)               { fLength          = l; };
+  void     SetWidth(Double_t w)                { fWidth           = w; };
+  void     SetLengthOPad(Double_t l)           { fLengthOPad      = l; };
+  void     SetWidthOPad(Double_t w)            { fWidthOPad       = w; };
+  void     SetLengthIPad(Double_t l)           { fLengthIPad      = l; };
+  void     SetWidthIPad(Double_t w)            { fWidthIPad       = w; };
+  void     SetPadRowSMOffset(Double_t o)       { fPadRowSMOffset  = o; };
+  void     SetAnodeWireOffset(Float_t o)       { fAnodeWireOffset = o; };
+  void     SetTiltingAngle(Double_t t);
+
   Int_t    GetPadRowNumber(Double_t z) const;
-  Int_t    GetPadColNumber(Double_t rphi, Double_t rowOffset) const;
+  Int_t    GetPadRowNumberROC(Double_t z) const;
+  Int_t    GetPadColNumber(Double_t rphi) const;
+
+  Double_t GetTiltOffset(Double_t rowOffset) const 
+                                             { return fTiltingTan * (rowOffset - 0.5*fLengthIPad); };
 
   Double_t GetPadRowOffset(Int_t row, Double_t z) const
                                              { if ((row < 0) || (row >= fNrows))
                                                  return -1.0;
+                                                else 
+                                                 return fPadRow[row] + fPadRowSMOffset - z;        };
+  Double_t GetPadRowOffsetROC(Int_t row, Double_t z) const
+                                             { if ((row < 0) || (row >= fNrows))
+                                                 return -1.0;
                                                else 
                                                  return fPadRow[row] - z;    };
 
@@ -45,37 +74,52 @@ class AliTRDpadPlane : public TObject {
                                              { if ((col < 0) || (col >= fNcols))
                                                  return -1.0;
                                                else
-                                                 return fPadCol[col] - rphi; };
+                                                 return rphi - fPadCol[col]; };
 
-  Double_t GetTiltingAngle() const           { return fTiltingAngle; };
+  Double_t GetTiltingAngle() const           { return fTiltingAngle;    };
 
-  Int_t    GetNrows() const                  { return fNrows;        };
-  Int_t    GetNcols() const                  { return fNcols;        };
+  Int_t    GetNrows() const                  { return fNrows;           };
+  Int_t    GetNcols() const                  { return fNcols;           };
 
-  Double_t GetRow0() const                   { return fPadRow[0];    };
-  Double_t GetCol0() const                   { return fPadCol[0];    };
+  Double_t GetRow0() const                   { return fPadRow[0] + fPadRowSMOffset;    };
+  Double_t GetRow0ROC() const                { return fPadRow[0];       };
+  Double_t GetCol0() const                   { return fPadCol[0];       };
 
-  Double_t GetRowEnd() const                 { return fPadRow[fNrows-1]  - fLengthOPad; };
-  Double_t GetColEnd() const                 { return fPadCol[fNcols-11] - fWidthOPad;  };
+  Double_t GetRowEnd() const                 { return fPadRow[fNrows-1] - fLengthOPad + fPadRowSMOffset; };
+  Double_t GetRowEndROC() const              { return fPadRow[fNrows-1] - fLengthOPad; };
+  Double_t GetColEnd() const                 { return fPadCol[fNcols-1] + fWidthOPad;  };
 
-  Double_t GetRowPos(Int_t row) const  { return fPadRow[row];  };
-  Double_t GetColPos(Int_t col) const  { return fPadCol[col];  };
+  Double_t GetRowPos(Int_t row) const        { return fPadRow[row] + fPadRowSMOffset;  };
+  Double_t GetRowPosROC(Int_t row) const     { return fPadRow[row];     };
+  Double_t GetColPos(Int_t col) const        { return fPadCol[col];     };
   
-  Double_t GetRowSize(Int_t row) const { if ((row == 0) || (row == fNrows-1))
+  Double_t GetRowSize(Int_t row) const       { if ((row == 0) || (row == fNrows-1))
                                                  return fLengthOPad;
                                                else
                                                  return fLengthIPad; };
-  Double_t GetColSize(Int_t col) const { if ((col == 0) || (col == fNcols-1))
+  Double_t GetColSize(Int_t col) const       { if ((col == 0) || (col == fNcols-1))
                                                  return fWidthOPad;
                                                else
-                                                 return fWidthIPad;  };
+                                                 return fWidthIPad;     };
 
- protected:
+  Double_t GetLengthRim() const              { return fLengthRim;       };
+  Double_t GetWidthRim() const               { return fWidthRim;        };
+
+  Double_t GetRowSpacing() const             { return fRowSpacing;      };
+  Double_t GetColSpacing() const             { return fColSpacing;      };
 
-  AliTRDgeometry *fGeo;       //! TRD geometry       
+  Double_t GetLengthOPad() const             { return fLengthOPad;      };
+  Double_t GetLengthIPad() const             { return fLengthIPad;      };
 
-  Int_t     fPla;             //  Plane number
-  Int_t     fCha;             //  Chamber number
+  Double_t GetWidthOPad() const              { return fWidthOPad;       };
+  Double_t GetWidthIPad() const              { return fWidthIPad;       };
+
+  Double_t GetAnodeWireOffset() const        { return fAnodeWireOffset; };
+
+ protected:
+
+  Int_t     fLayer;           //  Layer number
+  Int_t     fStack;           //  Stack number
 
   Double_t  fLength;          //  Length of pad plane in z-direction (row)
   Double_t  fWidth;           //  Width of pad plane in rphi-direction (col)
@@ -98,10 +142,18 @@ class AliTRDpadPlane : public TObject {
   Double_t  fTiltingAngle;    //  Pad tilting angle  
   Double_t  fTiltingTan;      //  Tangens of pad tilting angle
 
-  Double_t *fPadRow;          //! Pad border positions in row direction
-  Double_t *fPadCol;          //! Pad border positions in column direction
+  Double_t *fPadRow;          //  Pad border positions in row direction
+  Double_t *fPadCol;          //  Pad border positions in column direction
+
+  Double_t  fPadRowSMOffset;  //  To be added to translate local ROC system to local SM system
+
+  Double_t  fAnodeWireOffset; //  Distance of first anode wire from pad edge
+
+ private:
+  AliTRDpadPlane(const AliTRDpadPlane &p);
+  AliTRDpadPlane    &operator=(const AliTRDpadPlane &p);
 
-  ClassDef(AliTRDpadPlane,2)  //  TRD ROC pad plane
+  ClassDef(AliTRDpadPlane,6)  //  TRD ROC pad plane
 
 };