/* $Id$ */
-//////////////////////////////////////////////////
-// //
-// 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. //
-// //
-//////////////////////////////////////////////////
+////////////////////////////////////////////////////////////////////////////
+// //
+// 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 AliTRDpadPlane : public TObject {
public:
AliTRDpadPlane();
- AliTRDpadPlane(Int_t plane, Int_t chamber);
- 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 SetPlane(Int_t p) { fPla = p; };
- void SetChamber(Int_t c) { fCha = c; };
+ 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; };
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 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;
Double_t GetPadRowOffset(Int_t row, Double_t z) const
{ if ((row < 0) || (row >= fNrows))
return -1.0;
- else
+ else
return fPadRow[row] + fPadRowSMOffset - z; };
Double_t GetPadRowOffsetROC(Int_t row, Double_t z) const
{ if ((row < 0) || (row >= fNrows))
{ 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] + fPadRowSMOffset; };
- Double_t GetRow0ROC() const { return fPadRow[0]; };
- Double_t GetCol0() const { return fPadCol[0]; };
+ Double_t GetRow0ROC() const { return fPadRow[0]; };
+ Double_t GetCol0() const { return fPadCol[0]; };
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 GetColEnd() const { return fPadCol[fNcols-1] + fWidthOPad; };
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 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))
return fLengthOPad;
Double_t GetColSize(Int_t col) const { if ((col == 0) || (col == fNcols-1))
return fWidthOPad;
else
- return fWidthIPad; };
+ return fWidthIPad; };
+
+ Double_t GetLengthRim() const { return fLengthRim; };
+ Double_t GetWidthRim() const { return fWidthRim; };
- Double_t GetLengthRim() const { return fLengthRim; };
- Double_t GetWidthRim() const { return fWidthRim; };
+ Double_t GetRowSpacing() const { return fRowSpacing; };
+ Double_t GetColSpacing() const { return fColSpacing; };
- Double_t GetRowSpacing() const { return fRowSpacing; };
- Double_t GetColSpacing() const { return fColSpacing; };
+ Double_t GetLengthOPad() const { return fLengthOPad; };
+ Double_t GetLengthIPad() const { return fLengthIPad; };
- Double_t GetLengthOPad() const { return fLengthOPad; };
- Double_t GetLengthIPad() const { return fLengthIPad; };
+ Double_t GetWidthOPad() const { return fWidthOPad; };
+ Double_t GetWidthIPad() const { return fWidthIPad; };
- Double_t GetWidthOPad() const { return fWidthOPad; };
- Double_t GetWidthIPad() const { return fWidthIPad; };
+ Double_t GetAnodeWireOffset() const { return fAnodeWireOffset; };
protected:
- Int_t fPla; // Plane number
- Int_t fCha; // Chamber number
+ 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)
Double_t fPadRowSMOffset; // To be added to translate local ROC system to local SM system
- ClassDef(AliTRDpadPlane,4) // TRD ROC pad plane
+ Double_t fAnodeWireOffset; // Distance of first anode wire from pad edge
+
+ private:
+ AliTRDpadPlane(const AliTRDpadPlane &p);
+ AliTRDpadPlane &operator=(const AliTRDpadPlane &p);
+
+ ClassDef(AliTRDpadPlane,6) // TRD ROC pad plane
};