// //
///////////////////////////////////////////////////////////////////////////////
-#include "AliGeometry.h"
-
#include "TObjArray.h"
-class TGeoHMatrix;
+#include "AliGeometry.h"
-class AliRunLoader;
+class TGeoHMatrix;
class AliTRDpadPlane;
virtual void CreateGeometry(Int_t *idtmed);
virtual Int_t IsVersion() { return 1; }
virtual Bool_t Impact(const TParticle* ) const { return kTRUE; }
- virtual Bool_t IsHole(Int_t /*la*/, Int_t /*st*/, Int_t /*se*/) const { return kFALSE; }
-
+ virtual Bool_t IsHole(Int_t la, Int_t st, Int_t se) const;
+ virtual Bool_t IsOnBoundary(Int_t det, Float_t y, Float_t z, Float_t eps = .5) const;
virtual Bool_t RotateBack(Int_t det, Double_t *loc, Double_t *glb) const;
Bool_t ChamberInGeometry(Int_t det);
TGeoHMatrix *GetClusterMatrix(Int_t det) { return (TGeoHMatrix *)
fClusterMatrixArray->At(det); }
- void SetSMstatus(Int_t sm, Char_t status);
+ void SetSMstatus(Int_t sm, Char_t status) { fSMstatus[sm] = status; }
static Int_t GetDetectorSec(Int_t layer, Int_t stack);
static Int_t GetDetector(Int_t layer, Int_t stack, Int_t sector);
static Int_t GetLayer(Int_t det);
- virtual Int_t GetStack(Int_t det) const;
- virtual Int_t GetStack(Double_t z, Int_t layer);
- virtual Int_t GetSector(Int_t det) const;
+ static Int_t GetStack(Int_t det);
+ Int_t GetStack(Double_t z, Int_t layer);
+ static Int_t GetSector(Int_t det);
void CreatePadPlaneArray();
AliTRDpadPlane *CreatePadPlane(Int_t layer, Int_t stack);
static Float_t GetTime0(Int_t layer) { return fgkTime0[layer]; }
- Char_t GetSMstatus(Int_t sm) const;
+ static Double_t GetXtrdBeg() { return fgkXtrdBeg; }
+ static Double_t GetXtrdEnd() { return fgkXtrdEnd; }
+
+ Char_t GetSMstatus(Int_t sm) const { return fSMstatus[sm]; }
Float_t GetChamberWidth(Int_t layer) const { return fCwidth[layer] ; }
Float_t GetChamberLength(Int_t layer, Int_t stack) const { return fClength[layer][stack]; }
static Float_t CamHght() { return fgkCamH; }
static Float_t CroHght() { return fgkCroH; }
static Float_t CroWid() { return fgkCroW; }
+
+ static Float_t AnodePos() { return fgkAnodePos; }
+
static Float_t MyThick() { return fgkMyThick; }
static Float_t DrThick() { return fgkDrThick; }
static Float_t AmThick() { return fgkAmThick; }
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 fgkAnodePos; // Distance of anode wire plane relative to alignabl volume
+
static const Float_t fgkVspace; // Vertical spacing of the chambers
static const Float_t fgkHspace; // Horizontal spacing of the chambers
static const Float_t fgkVrocsm; // Radial distance of the first ROC to the outer SM plates
static const Double_t fgkTime0Base; // Base value for calculation of Time-position of pad 0
static const Float_t fgkTime0[kNlayer]; // Time-position of pad 0
-
+
+ static const Double_t fgkXtrdBeg; // X-coordinate in tracking system of begin of TRD mother volume
+ static const Double_t fgkXtrdEnd; // X-coordinate in tracking system of end of TRD mother volume
+
Float_t fChamberUAorig[3*kNdets][3]; // Volumes origin in
Float_t fChamberUDorig[3*kNdets][3]; // the chamber
Float_t fChamberUForig[3*kNdets][3]; // [3] = x, y, z
TObjArray *fClusterMatrixArray; //! Transformation matrices loc. cluster to tracking cs
TObjArray *fPadPlaneArray; //! Array of pad plane objects
- ClassDef(AliTRDgeometry,18) // TRD geometry class
+ Char_t fSMstatus[kNsector]; // Super module status byte
-};
+ ClassDef(AliTRDgeometry,22) // TRD geometry class
+};
#endif