Merge branch 'master' of https://git.cern.ch/reps/AliRoot
[u/mrichter/AliRoot.git] / MUON / AliMUONGeometryModuleTransformer.h
index f4544a1..2df899c 100644 (file)
@@ -6,36 +6,40 @@
 
 /// \ingroup geometry
 /// \class AliMUONGeometryModuleTransformer
-/// \brief Geometry transformationer for detector module
+/// \brief Geometry transformer for a detector module
 ///
-/// Class for definition of the detector module parameters
-/// (the transformations of detection elements, mapping between
-///  sensitive volumes and detection elements).
+/// Class for definition of the transformation for a detector module
+/// and its detection elements
 ///
-/// Author: Ivana Hrivnacova, IPN Orsay
+/// \author Ivana Hrivnacova, IPN Orsay
 
-#ifndef ALI_MUON_GEOMETRY_MODULE_TRANSFORMS_H
-#define ALI_MUON_GEOMETRY_MODULE_TRANSFORMS_H
+#ifndef ALI_MUON_GEOMETRY_MODULE_TRANSFORMER_H
+#define ALI_MUON_GEOMETRY_MODULE_TRANSFORMER_H
 
 #include <TObject.h>
 #include <TString.h>
 
+class AliMUONGeometryDetElement;
+
+class AliMpExMap;
+
 class TGeoTranslation;
 class TGeoRotation;
-class TGeoCombiTrans;
+class TGeoHMatrix;
 class TObjArray;
 class TArrayI;
 
-class AliMUONGeometryDetElement;
-class AliMUONGeometryStore;
-
 class AliMUONGeometryModuleTransformer : public TObject
 {
   public:
     AliMUONGeometryModuleTransformer(Int_t moduleId);
-    AliMUONGeometryModuleTransformer();
+    AliMUONGeometryModuleTransformer(TRootIOCtor* /*ioCtor*/);
     virtual ~AliMUONGeometryModuleTransformer();
 
+    // static methods
+    static const TString& GetModuleNamePrefix();
+    static       TString  GetModuleName(Int_t moduleId);
+
     // methods
     void Global2Local(Int_t detElemId,
                  Float_t xg, Float_t yg, Float_t zg, 
@@ -52,40 +56,73 @@ class AliMUONGeometryModuleTransformer : public TObject
                  Double_t& xg, Double_t& yg, Double_t& zg) const;
 
     // set methods
-    void  SetTransformation(const TGeoCombiTrans& transform);
+    void  SetTransformation(const TGeoHMatrix& transform);
+    void  SetVolumePath(const TString& volumePath);
  
     // get methods
-    Int_t                  GetModuleId() const;
-    const TGeoCombiTrans*  GetTransformation() const;    
+    Int_t    GetModuleId() const;
+    TString  GetModuleName() const;
+    TString  GetVolumePath() const;
+    TString  GetVolumeName() const;
+    TString  GetMotherVolumeName() const;
 
-    AliMUONGeometryStore*       GetDetElementStore() const;
-    AliMUONGeometryDetElement*  GetDetElement(
-                                   Int_t detElemId, Bool_t warn = true) const;    
+    const TGeoHMatrix*  GetTransformation() const;    
+    AliMpExMap*         GetDetElementStore() const; 
+    AliMUONGeometryDetElement*  
+                        GetDetElement(Int_t detElemId, Bool_t warn = true) const;    
 
   protected:
+    /// Not implemented
+    AliMUONGeometryModuleTransformer();
+    /// Not implemented
     AliMUONGeometryModuleTransformer(const AliMUONGeometryModuleTransformer& rhs);
-    // operators  
-    AliMUONGeometryModuleTransformer& operator = (const AliMUONGeometryModuleTransformer& rhs);
+    /// Not implemented
+    AliMUONGeometryModuleTransformer& 
+      operator = (const AliMUONGeometryModuleTransformer& rhs);
 
   private:
     // data members
-    Int_t                 fModuleId;      // the module Id
-    TGeoCombiTrans*       fTransformation;// the module transformation wrt to top
-                                          // volume
-    AliMUONGeometryStore* fDetElements;   // detection elements
+    Int_t                 fModuleId;   ///< the module Id
+    TString               fModuleName; ///< the module name
+    TString               fVolumePath; ///< \brief the full path of aligned module volume
+                                       /// or envelope in geometry
+    TGeoHMatrix*          fTransformation;///< \brief the module transformation wrt to top
+                                          /// volume (world)
+    AliMpExMap*           fDetElements;   ///< detection elements
  
-  ClassDef(AliMUONGeometryModuleTransformer,2) // MUON geometry module class
+  ClassDef(AliMUONGeometryModuleTransformer,3) // MUON geometry module class
 };
 
 // inline functions
 
-inline Int_t  AliMUONGeometryModuleTransformer::GetModuleId() const
+/// Set the full path of aligned module volume or envelope in geometry
+inline void 
+AliMUONGeometryModuleTransformer::SetVolumePath(const TString& volumePath)
+{ fVolumePath = volumePath; }
+
+/// Return module ID
+inline Int_t  
+AliMUONGeometryModuleTransformer::GetModuleId() const
 { return fModuleId; }
 
-inline const TGeoCombiTrans* AliMUONGeometryModuleTransformer::GetTransformation() const 
+/// Return module name
+inline TString
+AliMUONGeometryModuleTransformer::GetModuleName() const
+{ return fModuleName; }
+
+/// Return the full path of aligned module volume or envelope in geometry
+inline TString 
+AliMUONGeometryModuleTransformer::GetVolumePath() const
+{ return fVolumePath; }
+
+/// Return the module transformation wrt to the top volume (world)
+inline const TGeoHMatrix* 
+AliMUONGeometryModuleTransformer::GetTransformation() const 
 { return fTransformation; }
 
-inline  AliMUONGeometryStore* AliMUONGeometryModuleTransformer::GetDetElementStore() const
+/// Return detection elements associated with this module
+inline  AliMpExMap* 
+AliMUONGeometryModuleTransformer::GetDetElementStore() const
 { return fDetElements; }
 
-#endif //ALI_MUON_GEOMETRY_MODULE_PARAM_H
+#endif //ALI_MUON_GEOMETRY_MODULE_TRANSFORMER_H