public:
- enum { kNplan = 6
- , kNcham = 5
- , kNsect = 18
- , kNdet = 540
- , kNdets = 30 };
+ enum { kNplan = 6
+ , kNcham = 5
+ , kNsect = 18
+ , kNdet = 540
+ , kNdets = 30 };
AliTRDgeometry();
AliTRDgeometry(const AliTRDgeometry &g);
virtual Bool_t Impact(const TParticle* ) const { return kTRUE; }
virtual Bool_t IsHole(Int_t /*p*/, Int_t /*c*/, Int_t /*s*/) const { return kFALSE; }
- virtual Bool_t Rotate(Int_t d, Double_t *pos, Double_t *rot) const;
- virtual Bool_t RotateBack(Int_t d, Double_t *rot, Double_t *pos) const;
+ virtual Bool_t RotateBack(Int_t det, Double_t *loc, Double_t *glb) const;
void GroupChamber(Int_t iplan, Int_t icham, Int_t *idtmed);
void CreateFrame(Int_t *idtmed);
virtual Int_t GetChamber(Int_t d) const;
virtual Int_t GetSector(Int_t d) const;
+ // Translation from MCM to Pad and vice versa
+ virtual Int_t GetPadRowFromMCM(Int_t irob, Int_t imcm) const;
+ virtual Int_t GetPadColFromADC(Int_t irob, Int_t imcm, Int_t iadc) const;
+ virtual Int_t GetMCMfromPad(Int_t irow, Int_t icol) const;
+ virtual Int_t GetROBfromPad(Int_t irow, Int_t icol) const;
+ virtual Int_t GetRobSide(Int_t irob) const;
+ virtual Int_t GetColSide(Int_t icol) const;
+
static Float_t GetTime0(Int_t p) { return fgkTime0[p]; }
Char_t GetSMstatus(Int_t sm) const { return fSMstatus[sm]; }
/ fgkSheight
* (fgkCH + fgkVspace); }
+ static Int_t MCMmax() { return fgkMCMmax; }
+ static Int_t MCMrow() { return fgkMCMrow; }
+ static Int_t ROBmaxC0() { return fgkROBmaxC0; }
+ static Int_t ROBmaxC1() { return fgkROBmaxC1; }
+ static Int_t ADCmax() { return fgkADCmax; }
+ static Int_t TBmax() { return fgkTBmax; }
+ static Int_t Padmax() { return fgkPadmax; }
+ static Int_t Colmax() { return fgkColmax; }
+ static Int_t RowmaxC0() { return fgkRowmaxC0; }
+ static Int_t RowmaxC1() { return fgkRowmaxC1; }
+
TGeoHMatrix *GetGeoMatrix(Int_t det) { return (TGeoHMatrix *)
fMatrixGeo->At(det); }
TGeoHMatrix *GetMatrix(Int_t det) { return (TGeoHMatrix *)
static const Float_t fgkRcZpos; // Position of the PCB copper layers
static const Float_t fgkRoZpos; // Position of all other ROB componentes (caps, etc.)
+ static const Int_t fgkMCMmax; // Maximum number of MCMs per ROB
+ static const Int_t fgkMCMrow; // Maximum number of MCMs per ROB Row
+ static const Int_t fgkROBmaxC0; // Maximum number of ROBs per C0 chamber
+ static const Int_t fgkROBmaxC1; // Maximum number of ROBs per C1 chamber
+ static const Int_t fgkADCmax; // Maximum number of ADC channels per MCM
+ static const Int_t fgkTBmax; // Maximum number of Time bins
+ static const Int_t fgkPadmax; // Maximum number of pads per MCM
+ static const Int_t fgkColmax; // Maximum number of pads per padplane row
+ static const Int_t fgkRowmaxC0; // Maximum number of Rows per C0 chamber
+ static const Int_t fgkRowmaxC1; // Maximum number of Rows per C1 chamber
+
Char_t fSMstatus[kNsect]; // Super module status byte
Float_t fCwidth[kNplan]; // Outer widths of the chambers
Float_t fClength[kNplan][kNcham]; // Outer lengths of the chambers
- Float_t fRotA11[kNsect]; // Matrix elements for the rotation
- Float_t fRotA12[kNsect]; // Matrix elements for the rotation
- Float_t fRotA21[kNsect]; // Matrix elements for the rotation
- Float_t fRotA22[kNsect]; // Matrix elements for the rotation
-
Float_t fRotB11[kNsect]; // Matrix elements for the backward rotation
Float_t fRotB12[kNsect]; // Matrix elements for the backward rotation
Float_t fRotB21[kNsect]; // Matrix elements for the backward rotation
Float_t fChamberUFboxd[3*kNdets][3]; // [3] = x, y, z
Float_t fChamberUUboxd[3*kNdets][3]; //
- TObjArray * fMatrixArray; //! Transformation Global to Local
- TObjArray * fMatrixCorrectionArray; //! Transformation Cluster to Tracking systerm
- TObjArray * fMatrixGeo; //! Geo matrices
+ TObjArray *fMatrixArray; //! Transformation Global to Local
+ TObjArray *fMatrixCorrectionArray; //! Transformation Cluster to Tracking systerm
+ TObjArray *fMatrixGeo; //! Geo matrices
- ClassDef(AliTRDgeometry,11) // TRD geometry class
+ ClassDef(AliTRDgeometry,13) // TRD geometry class
};