X-Git-Url: http://git.uio.no/git/?a=blobdiff_plain;f=MUON%2FAliMUONGeometryTransformer.h;h=0626839e51d967355584c96278c2d4fe64f98078;hb=13e2e77720f9e636bbf995995deaf517707c41e8;hp=5eb8e2e8f177a26546d7fa097c49e921b6fce7a2;hpb=a9aad96e253c5dad5b74464038546a9bf4234ecc;p=u%2Fmrichter%2FAliRoot.git diff --git a/MUON/AliMUONGeometryTransformer.h b/MUON/AliMUONGeometryTransformer.h index 5eb8e2e8f17..0626839e51d 100644 --- a/MUON/AliMUONGeometryTransformer.h +++ b/MUON/AliMUONGeometryTransformer.h @@ -9,10 +9,12 @@ /// /// Geometry transformations can be filled in these ways: /// - by geometry builder when geometry is built via builders -/// - from Root geometry file (*.root) or Root geometry manager -/// - from ASCII file (*.dat) -/// If geometry is loaded from a file, the list of aligned volume paths -/// has to be read first from volpaths.dat file. +/// (this way is used when running simulation and building geometry +/// via VirtualMC) +/// - from Root geometry file (*.root) or ASCII file (*.dat) using +/// the method LoadGeometryData(const TString& fileName) +/// - from geometry loaded in AliGeomManager using +/// the method LoadGeometryData() without arguments /// /// \author Ivana Hrivnacova, IPN Orsay @@ -28,33 +30,32 @@ class AliMUONGeometryDetElement; class TGeoManager; class TClonesArray; +class AliMpExMap; +class AliMpArea; class AliMUONGeometryTransformer : public TObject { public: - AliMUONGeometryTransformer(Bool_t isOwner); AliMUONGeometryTransformer(); + AliMUONGeometryTransformer(TRootIOCtor* /*ioCtor*/); virtual ~AliMUONGeometryTransformer(); // methods void AddModuleTransformer(AliMUONGeometryModuleTransformer* transformer); void AddMisAlignModule(Int_t moduleId, const TGeoHMatrix& matrix); void AddMisAlignDetElement(Int_t detElemId, const TGeoHMatrix& matrix); - - TClonesArray* CreateZeroAlignmentData() const; + void CreateModules(); + + void AddAlignableVolumes() const; + TClonesArray* CreateZeroAlignmentData() const; + void ClearMisAlignmentData(); // IO // - Bool_t ReadGeometryData(const TString& volPathFileName, - const TString& transformFileName); - Bool_t ReadGeometryData(const TString& volPathFileName, - TGeoManager* geoManager); - - Bool_t WriteGeometryData(const TString& volPathFileName, - const TString& transformFileName, - const TString& misalignFileName = "") const; - - Bool_t WriteVolumePaths(const TString& fileName) const; + Bool_t LoadTransformations(); + Bool_t LoadGeometryData(const TString& fileName); + Bool_t LoadGeometryData(); + Bool_t WriteTransformations(const TString& fileName) const; Bool_t WriteMisAlignmentData(const TString& fileName) const; @@ -73,6 +74,10 @@ class AliMUONGeometryTransformer : public TObject void Local2Global(Int_t detElemId, Double_t xl, Double_t yl, Double_t zl, Double_t& xg, Double_t& yg, Double_t& zg) const; + + // Set methods + void SetDetName(const TString& detName); + void SetOwner(Bool_t isOwner); // Get methods // @@ -86,16 +91,24 @@ class AliMUONGeometryTransformer : public TObject const AliMUONGeometryDetElement* GetDetElement( Int_t detElemId, Bool_t warn = true) const; - const TClonesArray* GetMisAlignmentData() const; - + const TClonesArray* GetMisAlignmentData() const; + Bool_t HasDE(Int_t detElemId) const; + AliMpArea* GetDEArea(Int_t detElemId) const; + protected: + /// Not implemented AliMUONGeometryTransformer(const AliMUONGeometryTransformer& right); + /// Not implemented AliMUONGeometryTransformer& operator = (const AliMUONGeometryTransformer& right); private: // methods + + void CreateDEAreas() const; + + Bool_t LoadMapping() const; AliMUONGeometryModuleTransformer* GetModuleTransformerNonConst( Int_t index, Bool_t warn = true) const; @@ -104,9 +117,6 @@ class AliMUONGeometryTransformer : public TObject Double_t a1, Double_t a2, Double_t a3, Double_t a4, Double_t a5, Double_t a6) const; - void FillModuleVolPath(Int_t moduleId, const TString& volPath); - void FillDetElemVolPath(Int_t detElemId, const TString& volPath); - void FillModuleTransform(Int_t moduleId, Double_t x, Double_t y, Double_t z, Double_t a1, Double_t a2, Double_t a3, @@ -116,26 +126,28 @@ class AliMUONGeometryTransformer : public TObject Double_t a1, Double_t a2, Double_t a3, Double_t a4, Double_t a5, Double_t a6); - Bool_t ReadVolPaths(ifstream& in); TString ReadModuleTransforms(ifstream& in); TString ReadDetElemTransforms(ifstream& in); - Bool_t LoadTransforms(TGeoManager* tgeoManager); - - Bool_t ReadVolPaths(const TString& fileName); Bool_t ReadTransformations(const TString& fileName); - Bool_t ReadTransformations2(const TString& fileName); void WriteTransform(ofstream& out, const TGeoMatrix* transform) const; - void WriteModuleVolPaths(ofstream& out) const; - void WriteDetElemVolPaths(ofstream& out) const; void WriteModuleTransforms(ofstream& out) const; void WriteDetElemTransforms(ofstream& out) const; + + TString GetModuleSymName(Int_t moduleId) const; + TString GetDESymName(Int_t detElemId) const; + + // static data members + static const TString fgkDefaultDetectorName; ///< Default detector name + // data members + TString fDetectorName; ///< Detector name TObjArray* fModuleTransformers; ///< array of module transformers TClonesArray* fMisAlignArray; ///< array of misalignment data - - ClassDef(AliMUONGeometryTransformer,2) // Geometry parametrisation + mutable AliMpExMap* fDEAreas; ///< areas of detection elements in global coordinates + + ClassDef(AliMUONGeometryTransformer,4) // Geometry parametrisation }; // inline methods @@ -147,6 +159,14 @@ inline Int_t AliMUONGeometryTransformer::GetNofModuleTransformers() const /// Return the array of misalignment data inline const TClonesArray* AliMUONGeometryTransformer::GetMisAlignmentData() const { return fMisAlignArray; } + +/// Set detector name +inline void AliMUONGeometryTransformer::SetDetName(const TString& detName) +{ fDetectorName = detName; } + +/// Set ownership of array module transformers +inline void AliMUONGeometryTransformer::SetOwner(Bool_t isOwner) +{ fModuleTransformers->SetOwner(isOwner); } #endif //ALI_MUON_GEOMETRY_TRANSFORMER_H