X-Git-Url: http://git.uio.no/git/?a=blobdiff_plain;f=MUON%2FAliMUONGeometryModuleTransformer.cxx;h=95aec65d2997f5aba2901472b6ffcff612fc1d9c;hb=8acbd13c01b4be4700e0f8a3ff97a1e1ff6e710c;hp=8a0c6ddc7fa615c6056dfa0cb963483dc5899ee5;hpb=b75f649bfd9ad2bceee3c2a0f5439105289f90e2;p=u%2Fmrichter%2FAliRoot.git diff --git a/MUON/AliMUONGeometryModuleTransformer.cxx b/MUON/AliMUONGeometryModuleTransformer.cxx index 8a0c6ddc7fa..95aec65d299 100644 --- a/MUON/AliMUONGeometryModuleTransformer.cxx +++ b/MUON/AliMUONGeometryModuleTransformer.cxx @@ -14,12 +14,20 @@ **************************************************************************/ // $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 #include @@ -27,52 +35,54 @@ #include #include -#include "AliLog.h" +/// \cond CLASSIMP +ClassImp(AliMUONGeometryModuleTransformer) +/// \endcond -#include "AliMUONGeometryModuleTransformer.h" -#include "AliMUONGeometryDetElement.h" -#include "AliMUONGeometryStore.h" +const TString AliMUONGeometryModuleTransformer::fgkModuleNamePrefix = "GM"; -ClassImp(AliMUONGeometryModuleTransformer) +//______________________________________________________________________________ +TString AliMUONGeometryModuleTransformer::GetModuleName(Int_t moduleId) +{ +/// Return the module name for given moduleId + + TString moduleName(fgkModuleNamePrefix); + moduleName += moduleId; + return moduleName; +} //______________________________________________________________________________ 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 +92,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,23 +164,50 @@ 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('/'); + 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, 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, warn); + = (AliMUONGeometryDetElement*) fDetElements->GetValue(detElemId); if (!detElement) { if (warn)