]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - MUON/AliMUONVGeometryBuilder.h
Adding MUONChamberMaterialBudget.C:
[u/mrichter/AliRoot.git] / MUON / AliMUONVGeometryBuilder.h
index 6435bfb9506c682cb6b89c2d64a21aa304f896da..c2a21a6c4ce0bceed6fc94dcb1a0fd53f60a53b6 100644 (file)
@@ -8,10 +8,10 @@
 /// \class AliMUONVGeometryBuilder
 /// \brief Abstract base class for geometry construction per module(s)
 ///
-/// Author: Ivana Hrivnacova, IPN Orsay
+/// \author Ivana Hrivnacova, IPN Orsay
 
-#ifndef ALI_MUON_V_GEOMETRY_BUILDER_H
-#define ALI_MUON_V_GEOMETRY_BUILDER_H
+#ifndef ALI_MUONV_GEOMETRY_BUILDER_H
+#define ALI_MUONV_GEOMETRY_BUILDER_H
 
 #include <fstream>
 
@@ -25,59 +25,59 @@ class TGeoCombiTrans;
 
 class AliMUONGeometryModule;
 class AliMUONGeometryEnvelopeStore;
-class AliMUONGeometryStore;
-class AliMUONGeometrySVMap;
+class AliMUONStringIntMap;
 
 class AliMUONVGeometryBuilder : public TObject
 {
   public:
-    AliMUONVGeometryBuilder(Int_t geometryModuleId1,
-                            Int_t geometryModuleId2 = -1,
-                            Int_t geometryModuleId3 = -1,
-                            Int_t geometryModuleId4 = -1,
-                            Int_t geometryModuleId5 = -1,
-                            Int_t geometryModuleId6 = -1);
+    AliMUONVGeometryBuilder(Int_t firstModuleId, Int_t nofModules);
     AliMUONVGeometryBuilder();
     virtual ~AliMUONVGeometryBuilder();
   
     // methods
     void  SetReferenceFrame(const TGeoCombiTrans& referenceFrame);
-    void  RebuildSVMaps() const;
-    void  FillTransformations() const;
+    void  RebuildSVMaps(Bool_t withEnvelopes = true) const;
+    void  UpdateDetElements(Bool_t create) const;
 
+                  /// Function to be overriden in a concrete chamber/station
+                 /// geometry builder class.
+                 /// Only materials that are not defined in the common
+                 /// functions should be defined here.
     virtual void CreateMaterials() {}  // make = 0; ?
-                  // Function to be overriden in a concrete chamber/station
-                 // geometry builder class.
-                 // Only materials that are not defined in the common
-                 // functions should be defined here.
 
+                  /// Function to be overriden in a concrete chamber/station
+                 /// geometry builder class. \n
+                 /// The geometry built there should not be placed
+                 /// in ALIC; but all volumes going to ALIC
+                 /// have to be added as envelopes to the chamber
+                 /// geometries
+                 /// (They will be then placed automatically 
+                 /// usind the provided transformation.
     virtual void CreateGeometry() = 0;
-                  // Function to be overriden in a concrete chamber/station
-                 // geometry builder class.
-                 // The geometry built there should not be placed
-                 // in ALIC; but all volumes going to ALIC
-                 // have to be added as envelopes to the chamber
-                 // geometries
-                 // (They will be then placed automatically 
-                 // usind the provided transformation.
 
+                  /// Function to be overriden in a concrete chamber/station
+                 /// geometry class. \n
+                 /// The volume name for each geometry module, its virtuality
+                  /// and eventually the mother volume name should be defined
+    virtual void SetVolumes() = 0;
+
+                  /// Function to be overriden in a concrete chamber/station
+                 /// geometry class. \n
+                 /// The transformation of each chamber(s) wrt ALICE
+                 /// should be defined and set to its geometry class. 
     virtual void SetTransformations() = 0;
-                  // Function to be overriden in a concrete chamber/station
-                 // geometry class.
-                 // The transformation of each chamber(s) wrt ALICE
-                 // should be defined and set to its geometry class. 
 
+                  /// Function to be overriden in a concrete chamber/station
+                 /// geometry class. \n
+                 /// The sensitive volumes Ids for each chamber
+                 /// should be defined and set to its geometry class. 
     virtual void SetSensitiveVolumes() = 0;
-                  // Function to be overriden in a concrete chamber/station
-                 // geometry class.
-                 // The sensitive volumes Ids for each chamber
-                 // should be defined and set to its geometry class. 
 
+                  /// Function to be overriden (and return false) 
+                 /// in the concrete geometry builder classes 
+                 /// which are already defined in the new ALICE
+                 /// coordinate frame
     virtual bool ApplyGlobalTransformation() { return true; }
-                  // Function to be overriden (and return false) 
-                 // in the concrete geometry builder classes 
-                 // which are already defined in the new ALICE
-                 // coordinate frame
 
     // access to module geometries
     Int_t  NofGeometries() const;
@@ -87,15 +87,11 @@ class AliMUONVGeometryBuilder : public TObject
                  // via moduleId
 
   protected:
-    AliMUONVGeometryBuilder(const AliMUONVGeometryBuilder& rhs);
-
-    // operators  
-    AliMUONVGeometryBuilder& operator = (const AliMUONVGeometryBuilder& rhs);
-
     // methods
     AliMUONGeometryModule*         GetGeometry(Int_t moduleId) const;
     AliMUONGeometryEnvelopeStore*  GetEnvelopes(Int_t moduleId) const;
-    AliMUONGeometrySVMap*          GetSVMap(Int_t moduleId) const;
+    AliMUONStringIntMap*           GetSVMap(Int_t moduleId) const;
+    Int_t                          GetModuleId(const TString& envName) const;
     
     // set module transformation
     void SetTranslation(Int_t moduleId, 
@@ -103,9 +99,20 @@ class AliMUONVGeometryBuilder : public TObject
     void SetTransformation(Int_t moduleId, 
                         const TGeoTranslation& translation,
                        const TGeoRotation& rotation);
+                       
+    // set volumes 
+    void SetVolume(Int_t moduleId, const TString& volumeName, 
+                   Bool_t isVirtual = false);                  
+    void SetMotherVolume(Int_t moduleId, const TString& volumeName);                   
     
   private:
     //methods
+    
+    /// Not implemented
+    AliMUONVGeometryBuilder(const AliMUONVGeometryBuilder& rhs);
+    /// Not implemented
+    AliMUONVGeometryBuilder& operator = (const AliMUONVGeometryBuilder& rhs);
+
     TGeoHMatrix ConvertTransform(const TGeoHMatrix& transform) const;
     TGeoHMatrix ConvertDETransform(const TGeoHMatrix& transform) const;
     TString     ComposePath(const TString& volName, Int_t copyNo) const; 
@@ -113,21 +120,23 @@ class AliMUONVGeometryBuilder : public TObject
                       const TString& volName, Int_t detElemId) const;
 
     // data members
-    TObjArray*  fGeometryModules;   // the modules geometries that will be built
-                                    // by this builder                             
-    TGeoCombiTrans fReferenceFrame; // the transformation from the builder 
-                                    // reference frame to that of the transform 
-                                   // data files
+    TObjArray*  fGeometryModules;   ///< \brief the modules geometries that will be built
+                                    /// by this builder                                    
+    TGeoCombiTrans fReferenceFrame; ///< \brief the transformation from the builder 
+                                    /// reference frame to that of the transform 
+                                   /// data files
                                        
   ClassDef(AliMUONVGeometryBuilder,4) // MUON chamber geometry base class
 };
 
 // inline functions
 
+/// Return the number of geometry modules
 inline Int_t  AliMUONVGeometryBuilder::NofGeometries() const
 { return fGeometryModules->GetEntriesFast(); }
 
+/// Return the \a i th geometry module
 inline AliMUONGeometryModule* AliMUONVGeometryBuilder::Geometry(Int_t i) const
 { return (AliMUONGeometryModule*)fGeometryModules->At(i); }
 
-#endif //ALI_MUON_V_GEOMETRY_BUILDER_H
+#endif //ALI_MUONV_GEOMETRY_BUILDER_H