LCOV - code coverage report
Current view: top level - MUON/MUONsim - AliMUONSt1GeometryBuilderV2.h (source / functions) Hit Total Coverage
Test: coverage.info Lines: 10 10 100.0 %
Date: 2016-06-14 17:26:59 Functions: 11 14 78.6 %

          Line data    Source code
       1             : /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
       2             :  * See cxx source for full Copyright notice                               */
       3             : 
       4             : // $Id$
       5             : // Revision of includes 07/05/2004
       6             : //
       7             : /// \ingroup sim
       8             : /// \class AliMUONSt1GeometryBuilderV2
       9             : /// \brief MUON Station1 detailed geometry construction class
      10             : ///
      11             : /// \author David Guez, Ivana Hrivnacova, Marion MacCormick; IPN Orsay
      12             : 
      13             : #ifndef ALI_MUON_ST1_GEOMETRY_BUILDER_V2_H
      14             : #define ALI_MUON_ST1_GEOMETRY_BUILDER_V2_H
      15             : 
      16             : 
      17             : #include "AliMUONVGeometryBuilder.h"
      18             : 
      19             : #include <TExMap.h>
      20             : 
      21             : // typedef Float_t GReal_t; // for AliGeant3
      22             : typedef Double_t GReal_t;  // for VirtualMC
      23             : 
      24             : class AliMUON;
      25             : class AliMpSector;
      26             : 
      27             : class TTree;
      28             : class TVector2;
      29             : class TVector3;
      30             : 
      31             : class AliMUONSt1GeometryBuilderV2 : public AliMUONVGeometryBuilder 
      32             : {
      33             :   public:
      34             :     AliMUONSt1GeometryBuilderV2(AliMUON* muon);
      35             :     AliMUONSt1GeometryBuilderV2();
      36             :     virtual ~AliMUONSt1GeometryBuilderV2();
      37             : 
      38             :     virtual void CreateMaterials();
      39             :     virtual void CreateGeometry();
      40             :     virtual void SetVolumes();
      41             :     virtual void SetTransformations();
      42             :     virtual void SetSensitiveVolumes();
      43             :    
      44             :   protected:
      45             :  
      46             :   private:
      47             :     /// Not implemented
      48             :     AliMUONSt1GeometryBuilderV2(const AliMUONSt1GeometryBuilderV2& rMUON);
      49             :     /// Not implemented
      50             :     AliMUONSt1GeometryBuilderV2& operator = (const AliMUONSt1GeometryBuilderV2& rhs);    
      51             : 
      52             :     // Constants
      53             :     //
      54             :     static const GReal_t fgkHzPadPlane;    ///< Pad plane
      55             :     static const GReal_t fgkHzFoam;        ///< Foam of mechanicalplane
      56             :     static const GReal_t fgkHzFR4;         ///< FR4 of mechanical plane
      57             :     static const GReal_t fgkHzSnPb;        ///< Pad/Kapton connection (66 pt)
      58             :     static const GReal_t fgkHzKapton;      ///< Kapton
      59             :     static const GReal_t fgkHzBergPlastic; ///< Berg connector 
      60             :     static const GReal_t fgkHzBergCopper;  ///< Berg connector (80 pt)
      61             :     static const GReal_t fgkHzDaughter;    ///< Daughter board
      62             :     static const GReal_t fgkHzGas;         ///< ArCO2 Gas
      63             :         
      64             :     // Sensitive copper pads, foam layer, PCB and electronics model parameters
      65             :     static const GReal_t fgkHxHole;          ///< foam hole paremeter
      66             :     static const GReal_t fgkHyHole;          ///< foam hole paremeter
      67             :     static const GReal_t fgkHxBergPlastic;   ///< Berg connector parameter
      68             :     static const GReal_t fgkHyBergPlastic;   ///< Berg connector parameter
      69             :     static const GReal_t fgkHxBergCopper;    ///< Berg connector parameter
      70             :     static const GReal_t fgkHyBergCopper;    ///< Berg connector parameter
      71             :     static const GReal_t fgkHxKapton;        ///< Kapton parameter
      72             :     static const GReal_t fgkHyKapton;        ///< Kapton parameter
      73             :     static const GReal_t fgkHxDaughter;      ///< Electronics parameter
      74             :     static const GReal_t fgkHyDaughter;      ///< Electronics parameter
      75             :     static const GReal_t fgkOffsetX;         ///< Offset X
      76             :     static const GReal_t fgkOffsetY;         ///< Offset Y
      77             :     static const GReal_t fgkDeltaFilleEtamX; ///< Electronics parameter
      78             :     static const GReal_t fgkDeltaFilleEtamY; ///< Electronics parameter
      79             : 
      80             :     static const GReal_t fgkDeltaQuadLHC; ///< LHC Origin wrt Quadrant Origin
      81             :     static const GReal_t fgkFrameOffset;  ///< Frame offset
      82             : 
      83             :     // Pad planes offsets
      84             :     static const GReal_t fgkPadXOffsetBP; ///< Horizontal offset in bending plane  
      85             :     static const GReal_t fgkPadYOffsetBP; ///< Vertical offset in bending plane 
      86             : 
      87             :     // Quadrant Mother volume - TUBS1   
      88             :     static const GReal_t fgkMotherIR1;    ///< Middle Layer Rin
      89             :     static const GReal_t fgkMotherOR1;    ///< Middle Layer Rout
      90             :     static const GReal_t fgkMotherThick1; ///< Middle Layer Hz 
      91             :     static const GReal_t fgkMotherPhiL1;  ///< Middle Layer Sphi
      92             :     static const GReal_t fgkMotherPhiU1;  ///< Middle Layer Endphi
      93             : 
      94             :     // Quadrant Mother volume - TUBS2 (2 copies at different Z's)   
      95             :     static const GReal_t fgkMotherIR2;    ///< Near and Far Layer Rin
      96             :     static const GReal_t fgkMotherOR2;    ///< Near and Far Layer Rout
      97             :     static const GReal_t fgkMotherThick2; ///< Near and Far Layer Hz 
      98             :     static const GReal_t fgkMotherPhiL2;  ///< Near and Far Layer Sphi
      99             :     static const GReal_t fgkMotherPhiU2;  ///< Near and Far Layer Endphi  
     100             : 
     101             :     static const char* fgkHoleName;          ///< prefix for automatic volume naming
     102             :     static const char* fgkQuadrantEnvelopeName; ///< prefix for automatic volume naming
     103             :     static const char* fgkQuadrantMLayerName;///< prefix for automatic volume naming
     104             :     static const char* fgkQuadrantNLayerName;///< prefix for automatic volume naming
     105             :     static const char* fgkQuadrantFLayerName;///< prefix for automatic volume naming
     106             :     static const char* fgkQuadrantMFLayerName;    ///< prefix for automatic volume naming
     107             :     static const char* fgkDaughterName;      ///< prefix for automatic volume naming
     108             :     static const Int_t fgkFoamBoxNameOffset; ///< coefficient for automatic volume naming
     109             :     static const Int_t fgkFR4BoxNameOffset;  ///< coefficient for automatic volume naming
     110             :     static const Int_t fgkDaughterCopyNoOffset; ///< \brief copy number offset for daughter 
     111             :                                                 /// boards positions in non-bending plane
     112             : 
     113             :     // Methods
     114             :     //
     115             :     void CreateHole();
     116             :     void CreateDaughterBoard();
     117             :     void CreateInnerLayers();
     118             :     void CreateSpacer0();
     119             :     void CreateSpacer();
     120             :     void CreateQuadrant(Int_t chamber);
     121             :     void CreateFoamBox(Int_t segNumber, const TVector2& dimensions);
     122             :     void CreatePlaneSegment(Int_t segNumber, const TVector2& dimensions,
     123             :                      Int_t nofHoles);
     124             :     void CreateQuadrantLayersAsVolumes(Int_t chamber);
     125             :     void CreateQuadrantLayersAsAssemblies(Int_t chamber);
     126             :     void CreateFrame(Int_t chamber);
     127             : 
     128             :     void PlaceInnerLayers(Int_t chamber);
     129             :     void PlaceSpacer0(Int_t chamber);
     130             :     void PlaceSector(const AliMpSector* sector, TExMap specialMap,
     131             :                      const TVector3& where, Bool_t reflectZ, Int_t chamber);
     132             :                      
     133             :     TString QuadrantEnvelopeName(Int_t chamber, Int_t quadrant) const;
     134             :     TString QuadrantMLayerName(Int_t chamber) const;
     135             :     TString QuadrantNLayerName(Int_t chamber) const;
     136             :     TString QuadrantFLayerName(Int_t chamber) const;
     137             :     TString QuadrantMFLayerName(Int_t chamber) const;
     138             :     TString PlaneSegmentName(Int_t segNumber) const;
     139             :     TString FoamBoxName(Int_t segNumber) const;
     140             :     TString FR4BoxName(Int_t segNumber) const;
     141             :     TString GasVolumeName(const TString& name, Int_t chamber) const;
     142             : 
     143             :     GReal_t TotalHzPlane() const ; 
     144             :     GReal_t TotalHzDaughter() const ;
     145             :     GReal_t TotalHz() const ;
     146             :        
     147             :     // Data members
     148             :     //
     149             :     //Float_t  fRadlCopper;  //! copper computed radiation length
     150             :     //Float_t  fRadlFoam;    //! foam   computed radiation length
     151             :     //Float_t  fRadlFR4;     //! FR4    computed radiation length
     152             :     AliMUON*  fMUON; ///< the MUON detector class 
     153             :     
     154         126 :   ClassDef(AliMUONSt1GeometryBuilderV2,1)  // MUON Detector base class
     155             : };
     156             : 
     157             : // inline functions
     158             : 
     159             : /// Return total mechanical plane half Size
     160             : inline GReal_t AliMUONSt1GeometryBuilderV2::TotalHzPlane() const 
     161             : //{ return fgkHzPadPlane + fgkHzFoam + fgkHzFR4; }
     162        1380 : { return fgkHzFoam + fgkHzFR4; }
     163             : 
     164             : /// Return total daughter plane half Size
     165             : inline GReal_t AliMUONSt1GeometryBuilderV2::TotalHzDaughter() const 
     166        1810 : { return fgkHzBergPlastic + fgkHzDaughter; }
     167             : 
     168             : /// Return total plane half Size
     169             : inline GReal_t AliMUONSt1GeometryBuilderV2::TotalHz() const 
     170             : { return TotalHzPlane() + TotalHzDaughter(); }
     171             : 
     172             : /// Return middle quadrant layer name for chamber \a chamber
     173             : inline TString AliMUONSt1GeometryBuilderV2::QuadrantMLayerName(Int_t chamber) const
     174        2208 : { return Form("%s%d",fgkQuadrantMLayerName,chamber); }
     175             : 
     176             : /// Return middle quadrant frame layer name for chamber \a chamber
     177             : inline TString AliMUONSt1GeometryBuilderV2::QuadrantMFLayerName(Int_t chamber) const
     178          24 : { return Form("%s%d",fgkQuadrantMFLayerName,chamber); }
     179             : 
     180             : /// Return nearer quadrant layer name for chamber \a chamber
     181             : inline TString AliMUONSt1GeometryBuilderV2::QuadrantNLayerName(Int_t chamber) const
     182          24 : { return Form("%s%d",fgkQuadrantNLayerName,chamber); }
     183             : 
     184             : /// Return farther quadrant layer name for chamber \a chamber
     185             : inline TString AliMUONSt1GeometryBuilderV2::QuadrantFLayerName(Int_t chamber) const
     186          24 : { return Form("%s%d",fgkQuadrantFLayerName,chamber); }
     187             : 
     188             : /// Return plane segment name for segment \a segNumber
     189             : inline TString AliMUONSt1GeometryBuilderV2::PlaneSegmentName(Int_t segNumber) const
     190        1344 : { return Form("S%.3d", segNumber); }
     191             : 
     192             : /// Return foam box name for segment \a segNumber
     193             : inline TString AliMUONSt1GeometryBuilderV2::FoamBoxName(Int_t segNumber) const
     194        3860 : { return Form("S%.3d", segNumber + fgkFoamBoxNameOffset); }
     195             : 
     196             : /// Return FR4 box name for segment \a segNumber
     197             : inline TString AliMUONSt1GeometryBuilderV2::FR4BoxName(Int_t segNumber) const
     198         672 : { return Form("S%.3d", segNumber + fgkFR4BoxNameOffset); }
     199             : 
     200             : #endif //ALI_MUON_ST1_GEOMETRY_BUILDER_V2_H

Generated by: LCOV version 1.11