- Volume name attribute replaced with volume path
authorivana <ivana@f7af4fe6-9843-0410-8265-dc069ae4e863>
Wed, 8 Feb 2006 15:08:31 +0000 (15:08 +0000)
committerivana <ivana@f7af4fe6-9843-0410-8265-dc069ae4e863>
Wed, 8 Feb 2006 15:08:31 +0000 (15:08 +0000)
- fLocalTransformation, fGlobalTransformation type changed to TGeoHMatrix
- Adapted getters/setters accordingly
- Reordered includes, forward declarations

MUON/AliMUONGeometryDetElement.cxx
MUON/AliMUONGeometryDetElement.h

index d964282..49c31b1 100644 (file)
 //
 // Author: Ivana Hrivnacova, IPN Orsay
 
-#include <TGeoMatrix.h>
-#include <Riostream.h>
+#include "AliMUONGeometryDetElement.h"
 
 #include "AliLog.h"
 
-#include "AliMUONGeometryDetElement.h"
+#include <TGeoMatrix.h>
+#include <Riostream.h>
+
+#include <sstream>
 
 ClassImp(AliMUONGeometryDetElement)
 
 //______________________________________________________________________________
 AliMUONGeometryDetElement::AliMUONGeometryDetElement(
                                         Int_t detElemId,
-                                        const TString& alignedVolume, 
-                                       const TGeoCombiTrans& relTransform)
+                                        const TString& volumePath)
  : TObject(),
-   fAlignedVolume(alignedVolume),
+   fVolumePath(volumePath),
    fLocalTransformation(0),
    fGlobalTransformation(0)
 { 
 /// Standard constructor
 
   SetUniqueID(detElemId);
-  fLocalTransformation = new TGeoCombiTrans(relTransform);
 }
 
 //______________________________________________________________________________
 AliMUONGeometryDetElement::AliMUONGeometryDetElement()
  : TObject(),
-   fAlignedVolume(),
+   fVolumePath(),
    fLocalTransformation(0),
    fGlobalTransformation(0)
 {
@@ -95,12 +95,17 @@ AliMUONGeometryDetElement::operator = (const AliMUONGeometryDetElement& rhs)
 
 //______________________________________________________________________________
 void  AliMUONGeometryDetElement::PrintTransform(
-                                            const TGeoCombiTrans* transform) const
+                                            const TGeoHMatrix* transform) const
 {
 /// Prints the detection element transformation
 
   cout << "DetElemId: " << GetUniqueID();
-  cout << "  name: " << fAlignedVolume << endl;
+  cout << "  name: " << fVolumePath << endl;
+
+  if ( !transform ) {
+    cout << "    Transformation not defined." << endl;
+    return;
+  }  
 
   const double* translation = transform->GetTranslation();
   cout << "   translation: "
@@ -233,8 +238,23 @@ void  AliMUONGeometryDetElement::Local2Global(
 }
 
 //______________________________________________________________________________
+void AliMUONGeometryDetElement::SetLocalTransformation(
+                                                const TGeoHMatrix& transform)
+{ 
+/// Sets global transformation;
+/// gives warning if the global transformation is already defined.
+  if (fLocalTransformation) {
+    delete fLocalTransformation;
+    AliWarning("Local transformation already defined was deleted.");
+  }  
+
+  fLocalTransformation = new TGeoHMatrix(transform);
+}  
+                                             
+//______________________________________________________________________________
 void AliMUONGeometryDetElement::SetGlobalTransformation(
-                                                const TGeoCombiTrans& transform)
+                                                const TGeoHMatrix& transform)
 { 
 /// Sets global transformation;
 /// gives warning if the global transformation is already defined.
@@ -244,7 +264,7 @@ void AliMUONGeometryDetElement::SetGlobalTransformation(
     AliWarning("Global transformation already defined was deleted.");
   }  
 
-  fGlobalTransformation = new TGeoCombiTrans(transform);
+  fGlobalTransformation = new TGeoHMatrix(transform);
 }  
                                              
 //______________________________________________________________________________
@@ -264,3 +284,31 @@ void AliMUONGeometryDetElement::PrintGlobalTransform() const
 
   PrintTransform(fGlobalTransformation);
 }  
+
+//______________________________________________________________________________
+TString AliMUONGeometryDetElement::GetVolumeName() const
+{ 
+/// Extract volume name from the path
+  
+  std::string volPath = fVolumePath.Data();
+  std::string::size_type first = volPath.rfind('/')+1;
+  std::string::size_type last = volPath.rfind('_');
+  
+  return volPath.substr(first, last-first );
+}
+
+//______________________________________________________________________________
+Int_t AliMUONGeometryDetElement::GetVolumeCopyNo() const
+{ 
+/// Extract volume copyNo from the path
+  
+  string volPath = fVolumePath.Data();
+  std::string::size_type first = volPath.rfind('_');
+  std::string copyNoStr = volPath.substr(first+1, volPath.length());
+  std::istringstream in(copyNoStr);
+  Int_t copyNo;
+  in >> copyNo;
+  
+  return copyNo;
+}
+
index 6c0ab42..9c72eac 100644 (file)
@@ -5,9 +5,7 @@
 
 /// \ingroup geometry
 /// \class AliMUONGeometryDetElement
-/// \brief Detection element
-///
-/// The class defines the detection element.
+/// \brief Class for storing detection element transformations 
 ///
 /// Author: Ivana Hrivnacova, IPN Orsay
 
 #define ALI_MUON_GEOMETRY_DET_ELEMENT_H
 
 #include <TObject.h>
+#include <TString.h>
 
-class TGeoCombiTrans;
+class TGeoHMatrix;
 
 class AliMUONGeometryDetElement : public TObject
 {
   public:
     AliMUONGeometryDetElement(Int_t detElemId,
-                              const TString& alignedVolume, 
-                             const TGeoCombiTrans& relTransform);
+                              const TString& volumePath);
     AliMUONGeometryDetElement();
     virtual ~AliMUONGeometryDetElement();
 
@@ -45,13 +43,17 @@ class AliMUONGeometryDetElement : public TObject
     void PrintGlobalTransform() const;
 
     // set methods
-    void SetGlobalTransformation(const TGeoCombiTrans& transform);
+    void SetLocalTransformation(const TGeoHMatrix& transform);
+    void SetGlobalTransformation(const TGeoHMatrix& transform);
+    void SetVolumePath(const TString& volumePath);
     
     // get methods
-    Int_t  GetId() const;
-    const TString&        GetAlignedVolume() const;
-    const TGeoCombiTrans* GetLocalTransformation() const;
-    const TGeoCombiTrans* GetGlobalTransformation() const;
+    Int_t    GetId() const;
+    TString  GetVolumePath() const;
+    TString  GetVolumeName() const;
+    Int_t    GetVolumeCopyNo() const;
+    const TGeoHMatrix*  GetLocalTransformation() const;
+    const TGeoHMatrix*  GetGlobalTransformation() const;
 
   protected:
     AliMUONGeometryDetElement(const AliMUONGeometryDetElement& rhs);
@@ -61,30 +63,33 @@ class AliMUONGeometryDetElement : public TObject
   
   private:
     // methods
-    void PrintTransform(const TGeoCombiTrans* transform) const;
+    void PrintTransform(const TGeoHMatrix* transform) const;
   
     // data members
-    TString          fAlignedVolume; // the name of aligned volume or envelope
-                                      // representing this detection element
-    TGeoCombiTrans*  fLocalTransformation;  // the transformation wrt module
-    TGeoCombiTrans*  fGlobalTransformation; // the transformation wrt world
+    TString       fVolumePath; // the full path of aligned volume or envelope
+                               // in geometry
+    TGeoHMatrix*  fLocalTransformation;  // the transformation wrt module
+    TGeoHMatrix*  fGlobalTransformation; // the transformation wrt world
 
-  ClassDef(AliMUONGeometryDetElement,1) // MUON transformations store
+  ClassDef(AliMUONGeometryDetElement,2) // MUON det element transformations
 };
 
 // inline functions
 
+inline void AliMUONGeometryDetElement::SetVolumePath(const TString& volumePath)
+{ fVolumePath = volumePath; }
+
 inline Int_t AliMUONGeometryDetElement::GetId() const
 { return GetUniqueID(); }
 
-inline const TString& AliMUONGeometryDetElement::GetAlignedVolume() const
-{ return fAlignedVolume; }
+inline TString AliMUONGeometryDetElement::GetVolumePath() const
+{ return fVolumePath; }
 
-inline const TGeoCombiTrans* 
+inline const TGeoHMatrix* 
 AliMUONGeometryDetElement::GetLocalTransformation() const
 { return fLocalTransformation; }
 
-inline const TGeoCombiTrans* 
+inline const TGeoHMatrix* 
 AliMUONGeometryDetElement::GetGlobalTransformation() const
 { return fGlobalTransformation; }