X-Git-Url: http://git.uio.no/git/?a=blobdiff_plain;f=TRD%2FAliTRDgeometry.h;h=78ac9ed3bfd9d78effff646a33f5d0bd8e878548;hb=e6577ac72e801cd7c07a57acf69987374d87b50d;hp=2366c0ff9db43eb82b02561c92c38171e4269714;hpb=db30bf0f719c09a87c2065bd67ea312e82b24f4e;p=u%2Fmrichter%2FAliRoot.git diff --git a/TRD/AliTRDgeometry.h b/TRD/AliTRDgeometry.h index 2366c0ff9db..78ac9ed3bfd 100644 --- a/TRD/AliTRDgeometry.h +++ b/TRD/AliTRDgeometry.h @@ -5,8 +5,16 @@ /* $Id$ */ +/////////////////////////////////////////////////////////////////////////////// +// // +// TRD geometry class // +// // +/////////////////////////////////////////////////////////////////////////////// + #include "AliGeometry.h" +class AliTRDparameter; + class AliTRDgeometry : public AliGeometry { public: @@ -19,8 +27,13 @@ class AliTRDgeometry : public AliGeometry { virtual void CreateGeometry(Int_t *idtmed); virtual Int_t IsVersion() const = 0; virtual void Init(); - virtual Bool_t Local2Global(Int_t d, Float_t *local, Float_t *global) const; - virtual Bool_t Local2Global(Int_t p, Int_t c, Int_t s, Float_t *local, Float_t *global) const; + virtual Bool_t Impact(const TParticle* ) const { return kTRUE; }; + virtual Bool_t Local2Global(Int_t d, Float_t *local, Float_t *global, AliTRDparameter *par) const; + virtual Bool_t Local2Global(Int_t p, Int_t c, Int_t s, Float_t *local, Float_t *global, AliTRDparameter *par) const; + + virtual Bool_t Global2Local(Int_t mode, Float_t *local, Float_t *global, Int_t* index, AliTRDparameter *par) const; + virtual Bool_t Global2Detector(Float_t global[3], Int_t index[3], AliTRDparameter *par); + virtual Bool_t Rotate(Int_t d, Float_t *pos, Float_t *rot) const; virtual Bool_t RotateBack(Int_t d, Float_t *rot, Float_t *pos) const; @@ -35,62 +48,44 @@ class AliTRDgeometry : public AliGeometry { static Float_t Zmax2() { return fgkZmax2; }; static Float_t Cwidcha() { return (fgkSwidth2 - fgkSwidth1) - / fgkSheight * (fgkCheight + fgkCspace); }; - static Float_t Cheight() { return fgkCheight; }; - static Float_t Cspace() { return fgkCspace; }; - static Float_t Ccframe() { return fgkCcframe; }; + / fgkSheight * (fgkCH + fgkVspace); }; + static Float_t Cheight() { return fgkCH; }; + static Float_t Cspace() { return fgkVspace; }; + static Float_t CraHght() { return fgkCraH; }; + static Float_t CdrHght() { return fgkCdrH; }; + static Float_t CamHght() { return fgkCamH; }; + static Float_t CroHght() { return fgkCroH; }; static Float_t MyThick() { return fgkMyThick; }; static Float_t DrThick() { return fgkDrThick; }; static Float_t AmThick() { return fgkAmThick; }; static Float_t DrZpos() { return fgkDrZpos; }; + static Float_t RpadW() { return fgkRpadW; }; + static Float_t CpadW() { return fgkCpadW; }; virtual void SetPHOShole() = 0; virtual void SetRICHhole() = 0; - virtual void SetNRowPad(const Int_t p, const Int_t c, const Int_t npad) {}; - virtual void SetNColPad(const Int_t npad); - virtual void SetNTimeBin(const Int_t nbin); - virtual void SetExpandTimeBin(const Int_t nbefore, const Int_t nafter) - { fTimeBefore = nbefore; - fTimeAfter = nafter; }; + virtual void SetOldGeometry(); virtual Bool_t GetPHOShole() const = 0; virtual Bool_t GetRICHhole() const = 0; - - virtual Int_t GetDetector(const Int_t p, const Int_t c, const Int_t s) const; - virtual Int_t GetPlane(const Int_t d) const; - virtual Int_t GetChamber(const Int_t d) const; - virtual Int_t GetSector(const Int_t d) const; - - Float_t GetChamberWidth(const Int_t p) const { return fCwidth[p]; }; - - Int_t GetRowMax(const Int_t p, const Int_t c, const Int_t s) - const { return fRowMax[p][c][s]; }; - Int_t GetColMax(const Int_t p) const { return fColMax[p]; }; - Int_t GetTimeMax() const { return fTimeMax; }; - Int_t GetTimeBefore() const { return fTimeBefore; }; - Int_t GetTimeAfter() const { return fTimeAfter; }; - Int_t GetTimeTotal() const { return fTimeMax - + fTimeBefore - + fTimeAfter; }; - - Float_t GetRow0(const Int_t p, const Int_t c, const Int_t s) - const { return fRow0[p][c][s]; }; - Float_t GetCol0(const Int_t p) const { return fCol0[p]; }; - Float_t GetTime0(const Int_t p) const { return fTime0[p]; }; - - Float_t GetRowPadSize(const Int_t p, const Int_t c, const Int_t s) - const { return fRowPadSize[p][c][s]; }; - Float_t GetColPadSize(const Int_t p) const { return fColPadSize[p]; }; - Float_t GetTimeBinSize() const { return fTimeBinSize; }; - - virtual void GetGlobal(const AliRecPoint *p, TVector3 &pos, TMatrix &mat) const; - virtual void GetGlobal(const AliRecPoint *p, TVector3 &pos) const; - + virtual Bool_t IsHole(Int_t /*iplan*/, Int_t /*icham*/, Int_t /*isect*/) const {return kFALSE;} + virtual Int_t GetDetectorSec(Int_t p, Int_t c) const; + virtual Int_t GetDetector(Int_t p, Int_t c, Int_t s) const; + virtual Int_t GetPlane(Int_t d) const; + virtual Int_t GetChamber(Int_t d) const; + virtual Int_t GetSector(Int_t d) const; + + Float_t GetChamberWidth(Int_t p) const { return fCwidth[p]; }; + Float_t GetChamberLength(Int_t p, Int_t c) const { return fClength[p][c]; }; + + virtual void GetGlobal(const AliRecPoint* , TVector3& , TMatrix& ) const { }; + virtual void GetGlobal(const AliRecPoint* , TVector3& ) const { }; + static Double_t GetAlpha() { return 2 * 3.14159265358979323846 / fgkNsect; }; protected: - + static const Int_t fgkNsect; // Number of sectors in the full detector (18) static const Int_t fgkNplan; // Number of planes of the TRD (6) static const Int_t fgkNcham; // Number of chambers in z-direction (5) @@ -109,12 +104,28 @@ class AliTRDgeometry : public AliGeometry { static const Float_t fgkSlenTR2; // Length of the TRD-volume in spaceframe (BTR2) static const Float_t fgkSlenTR3; // Length of the TRD-volume in spaceframe (BTR3) - static const Float_t fgkCheight; // Height of the chambers - static const Float_t fgkCspace; // Vertical spacing of the chambers - static const Float_t fgkCaframe; // Height of the aluminum frame - static const Float_t fgkCcframe; // Height of the carbon frame - static const Float_t fgkCathick; // Thickness of the aluminum frame - static const Float_t fgkCcthick; // Thickness of the carbon frame + static const Float_t fgkSMpltT; // Thickness of the super module side plates + static const Float_t fgkSMgapT; // Thickness of the gap between side plates and space frame + + static const Float_t fgkCraH; // Height of the radiator part of the chambers + static const Float_t fgkCdrH; // Height of the drift region of the chambers + static const Float_t fgkCamH; // Height of the amplification region of the chambers + static const Float_t fgkCroH; // Height of the readout of the chambers + static const Float_t fgkCH; // Total height of the chambers + + static const Float_t fgkVspace; // Vertical spacing of the chambers + static const Float_t fgkHspace; // Horizontal spacing of the chambers + + static const Float_t fgkCalT; // Thickness of the lower aluminum frame + static const Float_t fgkCclsT; // Thickness of the lower G10 frame sides + static const Float_t fgkCclfT; // Thickness of the lower G10 frame front + static const Float_t fgkCcuT; // Thickness of the upper G10 frame + static const Float_t fgkCauT; // Thickness of the upper aluminum frame + + static const Float_t fgkCroW; // Additional width of the readout chamber frames + + static const Float_t fgkCpadW; // Difference of outer chamber width and pad plane width + static const Float_t fgkRpadW; // Difference of outer chamber width and pad plane width static const Float_t fgkRaThick; // Thickness of the radiator static const Float_t fgkMyThick; // Thickness of the mylar-layer @@ -137,21 +148,10 @@ class AliTRDgeometry : public AliGeometry { static const Float_t fgkCoZpos; // Position of the PE of the cooling device static const Float_t fgkWaZpos; // Position of the colling water - Int_t fRowMax[kNplan][kNcham][kNsect]; // Number of pad-rows - Int_t fColMax[kNplan]; // Number of pad-columns - Int_t fTimeMax; // Number of timebins in the drift region - Int_t fTimeBefore; // Number of timebins before the drift region - Int_t fTimeAfter; // Number of timebins after the drift region - - Float_t fCwidth[kNplan]; // Width of the chambers - - Float_t fRow0[kNplan][kNcham][kNsect]; // Row-position of pad 0 - Float_t fCol0[kNplan]; // Column-position of pad 0 - Float_t fTime0[kNplan]; // Time-position of pad 0 - - Float_t fRowPadSize[kNplan][kNcham][kNsect]; // Pad size in z-direction - Float_t fColPadSize[kNplan]; // Pad size in rphi-direction - Float_t fTimeBinSize; // Size of the time buckets + Float_t fCwidth[kNplan]; // Outer widths of the chambers + Float_t fClength[kNplan][kNcham]; // Outer lengths of the chambers + Float_t fClengthPH[kNplan][kNcham]; // For sectors with holes for the PHOS + Float_t fClengthRH[kNplan][kNcham]; // For sectors with holes for the RICH Float_t fRotA11[kNsect]; // Matrix elements for the rotation Float_t fRotA12[kNsect]; // Matrix elements for the rotation @@ -163,7 +163,7 @@ class AliTRDgeometry : public AliGeometry { Float_t fRotB21[kNsect]; // Matrix elements for the backward rotation Float_t fRotB22[kNsect]; // Matrix elements for the backward rotation - ClassDef(AliTRDgeometry,3) // TRD geometry base class + ClassDef(AliTRDgeometry,6) // TRD geometry base class };