]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - MUON/AliMUONGeometryModuleTransformer.cxx
Adding more bins in QA (Alis)
[u/mrichter/AliRoot.git] / MUON / AliMUONGeometryModuleTransformer.cxx
index e06897d3ac535415c69bfc7905771f8326e8a84f..544255d72d615ec2f8d863b661fed59a702fc792 100644 (file)
  **************************************************************************/
 
 // $Id$
-//
+
+//-----------------------------------------------------------------------------
 // Class AliMUONGeometryModuleTransformer
 // -------------------------------------
 // Class for definition of the detector module transformations
-//
 // Author: Ivana Hrivnacova, IPN Orsay
+//-----------------------------------------------------------------------------
+
+#include "AliMUONGeometryModuleTransformer.h"
+#include "AliMUONGeometryDetElement.h" 
+
+#include "AliMpExMap.h"        
+
+#include "AliLog.h"    
 
 #include <TVirtualMC.h>
 #include <TGeoMatrix.h>
 #include <TArrayI.h>
 #include <Riostream.h>
 
-#include "AliLog.h"    
+using std::endl;
+/// \cond CLASSIMP
+ClassImp(AliMUONGeometryModuleTransformer)
+/// \endcond
 
-#include "AliMUONGeometryModuleTransformer.h"
-#include "AliMUONGeometryDetElement.h" 
-#include "AliMUONGeometryStore.h"      
+//
+// static methods
+//
 
-ClassImp(AliMUONGeometryModuleTransformer)
+//______________________________________________________________________________
+const TString& AliMUONGeometryModuleTransformer::GetModuleNamePrefix()
+{
+  /// Geometry module name prefix
+  static const TString kModuleNamePrefix = "GM";
+  return kModuleNamePrefix;
+}  
+
+//______________________________________________________________________________
+TString AliMUONGeometryModuleTransformer::GetModuleName(Int_t moduleId)
+{
+/// Return the module name for given moduleId
+
+  TString moduleName(GetModuleNamePrefix());
+  moduleName += moduleId;
+  return moduleName;
+}   
+
+//
+// ctor, dtor
+//
 
 //______________________________________________________________________________
 AliMUONGeometryModuleTransformer::AliMUONGeometryModuleTransformer(Int_t moduleId)
  : TObject(),
    fModuleId(moduleId),
+   fModuleName(GetModuleName(moduleId)),
+   fVolumePath(),
    fTransformation(0),
    fDetElements(0)
 {
 /// Standard constructor
 
   // Chamber transformation
-  fTransformation = new TGeoCombiTrans("");
+  fTransformation = new TGeoHMatrix("");
 
   // Det elements transformation stores
-  fDetElements = new AliMUONGeometryStore(true);
+  fDetElements = new AliMpExMap;
 }
 
 
 //______________________________________________________________________________
-AliMUONGeometryModuleTransformer::AliMUONGeometryModuleTransformer()
+AliMUONGeometryModuleTransformer::AliMUONGeometryModuleTransformer(TRootIOCtor* /*ioCtor*/)
  : TObject(),
    fModuleId(0),
+   fModuleName(),
+   fVolumePath(),
    fTransformation(0),
    fDetElements(0)
 {
-/// Default constructor
+/// Root IO constructor
 }
 
 
-//______________________________________________________________________________
-AliMUONGeometryModuleTransformer::AliMUONGeometryModuleTransformer(
-                                    const AliMUONGeometryModuleTransformer& rhs)
-  : TObject(rhs)
-{
-/// Protected copy constructor
-
-  AliFatal("Copy constructor is not implemented.");
-}
-
 //______________________________________________________________________________
 AliMUONGeometryModuleTransformer::~AliMUONGeometryModuleTransformer() 
 {
@@ -82,21 +107,6 @@ AliMUONGeometryModuleTransformer::~AliMUONGeometryModuleTransformer()
   delete fDetElements;
 }
 
-//______________________________________________________________________________
-AliMUONGeometryModuleTransformer& 
-AliMUONGeometryModuleTransformer::operator = (
-                                    const AliMUONGeometryModuleTransformer& rhs) 
-{
-/// Protected assignement operator
-
-  // check assignement to self
-  if (this == &rhs) return *this;
-
-  AliFatal("Assignment operator is not implemented.");
-    
-  return *this;  
-}
-
 //
 // public methods
 //
@@ -169,28 +179,57 @@ void  AliMUONGeometryModuleTransformer::Local2Global(Int_t detElemId,
 
 //______________________________________________________________________________
 void  AliMUONGeometryModuleTransformer::SetTransformation(
-                                           const TGeoCombiTrans& transform)
+                                           const TGeoHMatrix& transform)
 {
 /// Set the module position wrt world.
 
   *fTransformation = transform;
 }  
 
+//______________________________________________________________________________
+TString AliMUONGeometryModuleTransformer::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 );
+}
+
+//______________________________________________________________________________
+TString AliMUONGeometryModuleTransformer::GetMotherVolumeName() const
+{ 
+/// Extract mother volume name from the path
+  
+  std::string volPath = fVolumePath.Data();
+  std::string::size_type first = volPath.rfind('/');
+  if ( first != std::string::npos )
+    volPath = volPath.substr(0, first);
+
+  std::string::size_type next = volPath.rfind('/')+1;
+  std::string::size_type last = volPath.rfind('_');
+  
+  return volPath.substr(next, last-next );
+}
+
 //______________________________________________________________________________
 AliMUONGeometryDetElement*
-AliMUONGeometryModuleTransformer::GetDetElement(Int_t detElemId) const
+AliMUONGeometryModuleTransformer::GetDetElement(Int_t detElemId, Bool_t warn) const
 {
 /// Return the detection element specified by detElemId.
-/// Give error if detection element is not defined.
+/// Give error if detection element is not defined and warn is true.
 
    // Get detection element
    AliMUONGeometryDetElement* detElement
-     = (AliMUONGeometryDetElement*) fDetElements->Get(detElemId);
+     = (AliMUONGeometryDetElement*) fDetElements->GetValue(detElemId);
 
    if (!detElement) {
-     AliErrorStream() 
-       << "Detection element " << detElemId
-       << " not found in module " << fModuleId << endl;
+     if (warn)
+       AliErrorStream() 
+         << "Detection element " << detElemId
+         << " not found in module " << fModuleId << endl;
      return 0;
    }