X-Git-Url: http://git.uio.no/git/?a=blobdiff_plain;f=MUON%2FAliMUONSt1GeometryBuilderV2.h;h=72c161f4369b1d533db6c750bbf70df82d7d5f46;hb=a5f5f349272b37c6a65a4a3d4daa1fe22de8e39a;hp=a135b24fe1a8f4b182f52f6a5ba6b465883c7d44;hpb=30178c30974cdd6a3b59f09e4d479925642e175b;p=u%2Fmrichter%2FAliRoot.git diff --git a/MUON/AliMUONSt1GeometryBuilderV2.h b/MUON/AliMUONSt1GeometryBuilderV2.h index a135b24fe1a..72c161f4369 100644 --- a/MUON/AliMUONSt1GeometryBuilderV2.h +++ b/MUON/AliMUONSt1GeometryBuilderV2.h @@ -4,153 +4,197 @@ // $Id$ // Revision of includes 07/05/2004 // -// Class AliMUONSt1GeometryBuilderV2 -// --------------------------------- -// MUON Station1 detailed geometry construction class. -// -// Authors: David Guez, Ivana Hrivnacova, Marion MacCormick; IPN Orsay +/// \ingroup sim +/// \class AliMUONSt1GeometryBuilderV2 +/// \brief MUON Station1 detailed geometry construction class +/// +/// \author David Guez, Ivana Hrivnacova, Marion MacCormick; IPN Orsay #ifndef ALI_MUON_ST1_GEOMETRY_BUILDER_V2_H #define ALI_MUON_ST1_GEOMETRY_BUILDER_V2_H -#include "AliMUONSt1Types.h" + #include "AliMUONVGeometryBuilder.h" -//typedef Float_t GReal_t; // for AliGeant3 +#include + +// typedef Float_t GReal_t; // for AliGeant3 typedef Double_t GReal_t; // for VirtualMC +class AliMUON; +class AliMpSector; + class TTree; class TVector2; class TVector3; -class AliMpSector; -class AliMUON; - class AliMUONSt1GeometryBuilderV2 : public AliMUONVGeometryBuilder { public: AliMUONSt1GeometryBuilderV2(AliMUON* muon); - AliMUONSt1GeometryBuilderV2(const AliMUONSt1GeometryBuilderV2& rMUON); AliMUONSt1GeometryBuilderV2(); virtual ~AliMUONSt1GeometryBuilderV2(); virtual void CreateMaterials(); virtual void CreateGeometry(); + virtual void SetVolumes(); virtual void SetTransformations(); virtual void SetSensitiveVolumes(); protected: - AliMUONSt1GeometryBuilderV2& operator = (const AliMUONSt1GeometryBuilderV2& rhs); private: + /// Not implemented + AliMUONSt1GeometryBuilderV2(const AliMUONSt1GeometryBuilderV2& rMUON); + /// Not implemented + AliMUONSt1GeometryBuilderV2& operator = (const AliMUONSt1GeometryBuilderV2& rhs); + // Constants // - static const GReal_t fgkHzPadPlane; // Pad plane - static const GReal_t fgkHzFoam; // Foam of mechanicalplane - static const GReal_t fgkHzFR4; // FR4 of mechanical plane - static const GReal_t fgkHzSnPb; // Pad/Kapton connection (66 pt) - static const GReal_t fgkHzKapton; // Kapton - static const GReal_t fgkHzBergPlastic; // Berg connector - static const GReal_t fgkHzBergCopper; // Berg connector (80 pt) - static const GReal_t fgkHzDaughter; // Daughter board - static const GReal_t fgkHzGas; // ArCO2 Gas + static const GReal_t fgkHzPadPlane; ///< Pad plane + static const GReal_t fgkHzFoam; ///< Foam of mechanicalplane + static const GReal_t fgkHzFR4; ///< FR4 of mechanical plane + static const GReal_t fgkHzSnPb; ///< Pad/Kapton connection (66 pt) + static const GReal_t fgkHzKapton; ///< Kapton + static const GReal_t fgkHzBergPlastic; ///< Berg connector + static const GReal_t fgkHzBergCopper; ///< Berg connector (80 pt) + static const GReal_t fgkHzDaughter; ///< Daughter board + static const GReal_t fgkHzGas; ///< ArCO2 Gas // Sensitive copper pads, foam layer, PCB and electronics model parameters - static const GReal_t fgkHxHole; // foam hole paremeter - static const GReal_t fgkHyHole; // foam hole paremeter - static const GReal_t fgkHxBergPlastic; // Berg connector parameter - static const GReal_t fgkHyBergPlastic; // Berg connector parameter - static const GReal_t fgkHxBergCopper; // Berg connector parameter - static const GReal_t fgkHyBergCopper; // Berg connector parameter - static const GReal_t fgkHxKapton; // Kapton parameter - static const GReal_t fgkHyKapton; // Kapton parameter - static const GReal_t fgkHxDaughter; // Electronics parameter - static const GReal_t fgkHyDaughter; // Electronics parameter - static const GReal_t fgkOffsetX; // Offset X - static const GReal_t fgkOffsetY; // Offset Y - static const GReal_t fgkDeltaFilleEtamX; // Electronics parameter - static const GReal_t fgkDeltaFilleEtamY; // Electronics parameter - - static const GReal_t fgkDeltaQuadLHC; // LHC Origin wrt Quadrant Origin - static const GReal_t fgkFrameOffset; // Frame offset + static const GReal_t fgkHxHole; ///< foam hole paremeter + static const GReal_t fgkHyHole; ///< foam hole paremeter + static const GReal_t fgkHxBergPlastic; ///< Berg connector parameter + static const GReal_t fgkHyBergPlastic; ///< Berg connector parameter + static const GReal_t fgkHxBergCopper; ///< Berg connector parameter + static const GReal_t fgkHyBergCopper; ///< Berg connector parameter + static const GReal_t fgkHxKapton; ///< Kapton parameter + static const GReal_t fgkHyKapton; ///< Kapton parameter + static const GReal_t fgkHxDaughter; ///< Electronics parameter + static const GReal_t fgkHyDaughter; ///< Electronics parameter + static const GReal_t fgkOffsetX; ///< Offset X + static const GReal_t fgkOffsetY; ///< Offset Y + static const GReal_t fgkDeltaFilleEtamX; ///< Electronics parameter + static const GReal_t fgkDeltaFilleEtamY; ///< Electronics parameter + + static const GReal_t fgkDeltaQuadLHC; ///< LHC Origin wrt Quadrant Origin + static const GReal_t fgkFrameOffset; ///< Frame offset + + // Pad planes offsets + static const GReal_t fgkPadXOffsetBP; ///< Horizontal offset in bending plane + static const GReal_t fgkPadYOffsetBP; ///< Vertical offset in bending plane // Quadrant Mother volume - TUBS1 - static const GReal_t fgkMotherIR1; // Middle Layer Rin - static const GReal_t fgkMotherOR1; // Middle Layer Rout - static const GReal_t fgkMotherThick1; // Middle Layer Hz - static const GReal_t fgkMotherPhiL1; // Middle Layer Sphi - static const GReal_t fgkMotherPhiU1; // Middle Layer Endphi + static const GReal_t fgkMotherIR1; ///< Middle Layer Rin + static const GReal_t fgkMotherOR1; ///< Middle Layer Rout + static const GReal_t fgkMotherThick1; ///< Middle Layer Hz + static const GReal_t fgkMotherPhiL1; ///< Middle Layer Sphi + static const GReal_t fgkMotherPhiU1; ///< Middle Layer Endphi // Quadrant Mother volume - TUBS2 (2 copies at different Z's) - static const GReal_t fgkMotherIR2; // Near and Far Layer Rin - static const GReal_t fgkMotherOR2; // Near and Far Layer Rout - static const GReal_t fgkMotherThick2; // Near and Far Layer Hz - static const GReal_t fgkMotherPhiL2; // Near and Far Layer Sphi - static const GReal_t fgkMotherPhiU2; // Near and Far Layer Endphi - - static const char* fgkHoleName; // prefix for automatic volume naming - static const char* fgkQuadrantMLayerName;// prefix for automatic volume naming - static const char* fgkQuadrantNLayerName;// prefix for automatic volume naming - static const char* fgkQuadrantFLayerName;// prefix for automatic volume naming - static const char* fgkDaughterName; // prefix for automatic volume naming - static const char fgkFoamLayerSuffix; // suffix for automatic volume naming + static const GReal_t fgkMotherIR2; ///< Near and Far Layer Rin + static const GReal_t fgkMotherOR2; ///< Near and Far Layer Rout + static const GReal_t fgkMotherThick2; ///< Near and Far Layer Hz + static const GReal_t fgkMotherPhiL2; ///< Near and Far Layer Sphi + static const GReal_t fgkMotherPhiU2; ///< Near and Far Layer Endphi + + static const char* fgkHoleName; ///< prefix for automatic volume naming + static const char* fgkQuadrantEnvelopeName; ///< prefix for automatic volume naming + static const char* fgkQuadrantMLayerName;///< prefix for automatic volume naming + static const char* fgkQuadrantNLayerName;///< prefix for automatic volume naming + static const char* fgkQuadrantFLayerName;///< prefix for automatic volume naming + static const char* fgkQuadrantMFLayerName; ///< prefix for automatic volume naming + static const char* fgkDaughterName; ///< prefix for automatic volume naming + static const Int_t fgkFoamBoxNameOffset; ///< coefficient for automatic volume naming + static const Int_t fgkFR4BoxNameOffset; ///< coefficient for automatic volume naming + static const Int_t fgkDaughterCopyNoOffset; ///< \brief copy number offset for daughter + /// boards positions in non-bending plane // Methods // void CreateHole(); void CreateDaughterBoard(); void CreateInnerLayers(); + void CreateSpacer0(); + void CreateSpacer(); void CreateQuadrant(Int_t chamber); - void CreateFoamBox(const char* name,const TVector2& dimensions); - void CreatePlaneSegment(const char* name,const TVector2& dimensions, + void CreateFoamBox(Int_t segNumber, const TVector2& dimensions); + void CreatePlaneSegment(Int_t segNumber, const TVector2& dimensions, Int_t nofHoles); + void CreateQuadrantLayersAsVolumes(Int_t chamber); + void CreateQuadrantLayersAsAssemblies(Int_t chamber); void CreateFrame(Int_t chamber); void PlaceInnerLayers(Int_t chamber); - void PlaceSector(AliMpSector* sector, SpecialMap specialMap, + void PlaceSpacer0(Int_t chamber); + void PlaceSector(const AliMpSector* sector, TExMap specialMap, const TVector3& where, Bool_t reflectZ, Int_t chamber); + TString QuadrantEnvelopeName(Int_t chamber, Int_t quadrant) const; TString QuadrantMLayerName(Int_t chamber) const; TString QuadrantNLayerName(Int_t chamber) const; TString QuadrantFLayerName(Int_t chamber) const; + TString QuadrantMFLayerName(Int_t chamber) const; + TString PlaneSegmentName(Int_t segNumber) const; + TString FoamBoxName(Int_t segNumber) const; + TString FR4BoxName(Int_t segNumber) const; TString GasVolumeName(const TString& name, Int_t chamber) const; - void AddChamberGid(Int_t id,Int_t volName,Int_t idx); - //Bool_t IsInChamber(Int_t ich, Int_t volGid) const; - - GReal_t TotalHzPlane() const ; // Total mechanical plane half Size - GReal_t TotalHzDaughter() const ; // Total daughter plane half Size - GReal_t TotalHz() const ; // Total plane half Size + GReal_t TotalHzPlane() const ; + GReal_t TotalHzDaughter() const ; + GReal_t TotalHz() const ; // Data members // //Float_t fRadlCopper; //! copper computed radiation length //Float_t fRadlFoam; //! foam computed radiation length //Float_t fRadlFR4; //! FR4 computed radiation length - AliMUON* fMUON; // the MUON detector class + AliMUON* fMUON; ///< the MUON detector class ClassDef(AliMUONSt1GeometryBuilderV2,1) // MUON Detector base class }; // inline functions +/// Return total mechanical plane half Size inline GReal_t AliMUONSt1GeometryBuilderV2::TotalHzPlane() const //{ return fgkHzPadPlane + fgkHzFoam + fgkHzFR4; } { return fgkHzFoam + fgkHzFR4; } +/// Return total daughter plane half Size inline GReal_t AliMUONSt1GeometryBuilderV2::TotalHzDaughter() const { return fgkHzBergPlastic + fgkHzDaughter; } +/// Return total plane half Size inline GReal_t AliMUONSt1GeometryBuilderV2::TotalHz() const { return TotalHzPlane() + TotalHzDaughter(); } +/// Return middle quadrant layer name for chamber \a chamber inline TString AliMUONSt1GeometryBuilderV2::QuadrantMLayerName(Int_t chamber) const { return Form("%s%d",fgkQuadrantMLayerName,chamber); } +/// Return middle quadrant frame layer name for chamber \a chamber +inline TString AliMUONSt1GeometryBuilderV2::QuadrantMFLayerName(Int_t chamber) const +{ return Form("%s%d",fgkQuadrantMFLayerName,chamber); } + +/// Return nearer quadrant layer name for chamber \a chamber inline TString AliMUONSt1GeometryBuilderV2::QuadrantNLayerName(Int_t chamber) const { return Form("%s%d",fgkQuadrantNLayerName,chamber); } +/// Return farther quadrant layer name for chamber \a chamber inline TString AliMUONSt1GeometryBuilderV2::QuadrantFLayerName(Int_t chamber) const { return Form("%s%d",fgkQuadrantFLayerName,chamber); } +/// Return plane segment name for segment \a segNumber +inline TString AliMUONSt1GeometryBuilderV2::PlaneSegmentName(Int_t segNumber) const +{ return Form("S%.3d", segNumber); } + +/// Return foam box name for segment \a segNumber +inline TString AliMUONSt1GeometryBuilderV2::FoamBoxName(Int_t segNumber) const +{ return Form("S%.3d", segNumber + fgkFoamBoxNameOffset); } + +/// Return FR4 box name for segment \a segNumber +inline TString AliMUONSt1GeometryBuilderV2::FR4BoxName(Int_t segNumber) const +{ return Form("S%.3d", segNumber + fgkFR4BoxNameOffset); } + #endif //ALI_MUON_ST1_GEOMETRY_BUILDER_V2_H