Updates to AddTask macro from Chris
[u/mrichter/AliRoot.git] / MUON / AliMUONTriggerGeometryBuilder.h
index f0f924e..70590f2 100644 (file)
@@ -4,11 +4,11 @@
 // $Id$
 // Revision of includes 07/05/2004
 //
-/// \ingroup base
+/// \ingroup sim
 /// \class AliMUONTriggerGeometryBuilder
 /// \brief MUON Trigger stations geometry construction class
 ///
-/// Author: Philippe Crochette, LPC Clermont-Ferrand
+/// \author Philippe Crochet (LPCCFd)
 
 #ifndef ALI_MUON_TRIGGER_GEOMETRY_BUILDER_H
 #define ALI_MUON_TRIGGER_GEOMETRY_BUILDER_H
@@ -26,17 +26,103 @@ class AliMUONTriggerGeometryBuilder : public AliMUONVGeometryBuilder
   
     // methods
     virtual void CreateGeometry();
+    virtual void SetVolumes();
     virtual void SetTransformations();
     virtual void SetSensitiveVolumes();
     
+    /// Do not apply global transformation (geometry is defined in the new ALICE reference frame)
+    virtual bool ApplyGlobalTransformation() { return false; }
+    
   protected:  
+    
+  private:
+    /// Not implemented
     AliMUONTriggerGeometryBuilder(const AliMUONTriggerGeometryBuilder& rhs);
-
-    // operators  
+    /// Not implemented
     AliMUONTriggerGeometryBuilder& operator = (const AliMUONTriggerGeometryBuilder& rhs);
+
+    // methods
+    void BuildChamberPrototype(Int_t icount) const;  
+    void BuildRPCSupportsVertical(Int_t& iVolNum, Int_t icount) const;    
+    void BuildRPCSupportsHorizontal(Int_t icount) const;    
+    void BuildAngularSupportForChambers(Int_t icount) const;  
+    void BuildGasPipes(Int_t icount) const;         
+    void BuildChamberTypeA(Int_t& iVolNum, Int_t icount);  
+    void BuildChamberTypeB(Int_t& iVolNum, Int_t icount);  
+    void BuildChamberTypeD(Int_t& iVolNum, Int_t icount);  
+    void BuildChamberTypeE(Int_t& iVolNum, Int_t icount);  
+    void BuildChamberTypeF(Int_t& iVolNum, Int_t icount);  
+
+    // constants
     
-  private:
-     AliMUON*  fMUON; // the MUON detector class 
+    static const Float_t fgkDXZERO; ///<  vertical gap between right and left chambers (kDXZERO*2=4cm)
+
+    // main distances for chamber definition in first plane/first station
+    static const Float_t fgkXMIN; ///< xmin distance in first plane/first station    
+    static const Float_t fgkXMED; ///< xmed distance in first plane/first station                                 
+    static const Float_t fgkXMAX; ///< xmax distance in first plane/first station  
+
+    // 090704 kXMAX changed from 272 to 255.
+    // (see fig.2-4 & 2-5 of Local Trigger Board PRR)
+    // segmentation updated accordingly
+    static const Float_t fgkYMIN; ///< add                             
+    static const Float_t fgkYMAX; ///< add                            
+
+    // inner/outer radius of flange between beam shield. and chambers (1/station)
+    //    static const Float_t fgkRMIN[2]={50.,50.};
+    //    static const Float_t fgkRMAX[2]={64.,68.};
+    // z position of the middle of the gas gap in mother vol 
+    static const Float_t fgkZm; ///< inner radius of flange between beam shield. and chambers (1/station)
+    static const Float_t fgkZp; ///< outer radius of flange between beam shield. and chambers (1/station)
+    
+    static const Float_t fgkYVSup[4]; ///< y positions of vertical supports
+
+    static const Float_t fgkSizeVSupExt[3]; ///< ext dimensions of vertical supports 
+    static const Float_t fgkSizeVSupInt[3]; ///< int dimensions of vertical supports  
+
+    static const Float_t fgkSizeSupport1V[3]; ///< transverse dimensions of 1V angular supports 
+    static const Float_t fgkSizeSupport1H[3]; ///< transverse dimensions of 1H angular supports 
+       // z should be 1.4 in the installed set-up 
+    static const Float_t fgkSizeSupport2V[3]; ///< transverse dimensions of 2V angular supports  
+    static const Float_t fgkSizeSupport2H[3]; ///< transverse dimensions of 2H angular supports  
+    static const Float_t fgkSizeSupportXV[3]; ///< transverse dimensions of XV angular supports 
+    static const Float_t fgkSizeSupportXH[3]; ///< transverse dimensions of XH angular supports 
+
+    static const Float_t fgkSizeSupportCable[3]; /// transverse dimensions of horizontal cable supports
+    static const Float_t fgkSizeGasPipe[3]; ///< dimensions of gas pipes (inner and outer radius)
+
+    static const Float_t fgkOffsetGasPipe;  ///< Position of gas pipe with respect to angular support
+    static const Float_t fgkAvoidExtrusion; ///<  Small cut on some volumes to avoid extrusion from SC1x
+    
+    // 
+    TString GetVolumeName(const TString& volume, Int_t icount) const; 
+    TString GetVolEnvName(Int_t icount, Int_t ienv) const; 
+    TString GetVolAluAngSuppName(
+                     const TString& type1234X, 
+                     const TString& typeHV,
+                     Int_t icount) const;                      
+    TString GetVolEnvSuppAngName(
+                     const TString& type1234X, 
+                     const TString& typeHV, 
+                     const TString& typeABDEF,
+                     Int_t icount, Int_t ivol) const;                      
+    TString GetVolEnvInoxGasPipeName(
+                     const TString& type12, 
+                     const TString& typeABCDEF,
+                     Int_t icount, Int_t ivol) const;                      
+                           
+    
+    // data members 
+    AliMUON*  fMUON;   ///< the MUON detector class 
+    Int_t*    fIdtmed; //!< tracking media   
+    Int_t     fIdAir;  //!< medium 1
+    Int_t     fIdAlu1; //!< medium 4
+    Int_t     fIdInox; //!< medium 29 Stainless Steel (18%Cr,9%Ni,Fe)
+    Float_t   fYEnvPsave; //!< add
+    Float_t   fYEnvMsave; //!< add
+    Float_t   fDYsave;    //!< add
+    Float_t   fDXsave;    //!< add
+    TGeoRotation fRsupportpipe; ///< pipe support rotation 
         
   ClassDef(AliMUONTriggerGeometryBuilder,1) // MUON Trigger stations geometry construction class
 };