X-Git-Url: http://git.uio.no/git/?a=blobdiff_plain;f=MUON%2FAliMUONGeometryBuilder.h;h=a55311ad8b45976232236422e9dba8643a996033;hb=debeb29aad2b9612a902ee16e9393916ebf6eb82;hp=41979cac7771268f9b07d1d2f07b771852f70695;hpb=76497dec261097968c3106fdbcc98d188bcaf56e;p=u%2Fmrichter%2FAliRoot.git diff --git a/MUON/AliMUONGeometryBuilder.h b/MUON/AliMUONGeometryBuilder.h index 41979cac777..a55311ad8b4 100644 --- a/MUON/AliMUONGeometryBuilder.h +++ b/MUON/AliMUONGeometryBuilder.h @@ -1,68 +1,119 @@ -#ifndef ALI_MUON_GEOMETRY_BUILDER_H -#define ALI_MUON_GEOMETRY_BUILDER_H /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. * * See cxx source for full Copyright notice */ // $Id$ -// -// Class AliMUONGeometryBuilder -// ---------------------------- -// MUON manager class for geometry construction, -// separated form AliMUONv1 -// -// Author: Ivana Hrivnacova, IPN Orsay + +/// \ingroup geometry +/// \class AliMUONGeometryBuilder +/// \brief Manager class for geometry construction via geometry builders. +/// +/// \author Ivana Hrivnacova, IPN Orsay + +#ifndef ALI_MUON_GEOMETRY_BUILDER_H +#define ALI_MUON_GEOMETRY_BUILDER_H + +#include "AliMUONGeometry.h" #include +#include -class TGeoCombiTrans; -class TGeoHMatrix; class TObjArray; -class AliMUON; +class AliModule; class AliMUONVGeometryBuilder; class AliMUONGeometryBuilder : public TObject { public: + AliMUONGeometryBuilder(AliModule* detector); AliMUONGeometryBuilder(); - AliMUONGeometryBuilder(AliMUON* muon); virtual ~AliMUONGeometryBuilder(); - + + // static methods + static TGeoHMatrix Multiply(const TGeoMatrix& m1, const TGeoMatrix& m2); + static TGeoHMatrix Multiply(const TGeoMatrix& m1, const TGeoMatrix& m2, + const TGeoMatrix& m3); + static TGeoHMatrix Multiply(const TGeoMatrix& m1, const TGeoMatrix& m2, + const TGeoMatrix& m3, const TGeoMatrix& m4); + + // methods + // + void AddBuilder(AliMUONVGeometryBuilder* geomBuilder); void CreateGeometry(); void CreateMaterials(); + void InitGeometry(); - void WriteTransformations(); - void WriteSVMaps(Bool_t rebuild = true); + void InitGeometry(const TString& svmapFileName); + void UpdateInternalGeometry(); + + void WriteSVMaps(); + void WriteSVMaps(const TString& fileName, + Bool_t rebuild = true, Bool_t writeEnvelopes = true); + + // Geometry parametrisation + const AliMUONGeometry* GetGeometry() const; + const AliMUONGeometryTransformer* GetTransformer() const; // Alignement virtual Bool_t GetAlign() const; - virtual void SetAlign(Bool_t align); + virtual void SetAlign(Bool_t align = true); + virtual void SetAlign(const TString& fileName, Bool_t align = true); - void AddBuilder(AliMUONVGeometryBuilder* geomBuilder); - protected: + /// Not implemented AliMUONGeometryBuilder(const AliMUONGeometryBuilder& right); + /// Not implemented AliMUONGeometryBuilder& operator = (const AliMUONGeometryBuilder& right); private: + // static methods + static const TString& GetDefaultTransformFileName(); + static const TString& GetDefaultSVMapFileName(); + static const TString& GetOutFileNameExtension(); + // method void PlaceVolume(const TString& name, const TString& mName, Int_t copyNo, const TGeoHMatrix& matrix, Int_t npar, Double_t* param, - const char* only) const; + const char* only, Bool_t makeAssembly = false) const; + void CreateGeometryWithTGeo(); + void CreateGeometryWithoutTGeo(); + void SetAlignToBuilder(AliMUONVGeometryBuilder* builder) const; // data members - AliMUON* fMUON; // MUON detector - Bool_t fAlign; // option to read transformations - // from a file - TGeoCombiTrans* fGlobalTransformation;// global transformation - // applied to the whole geometry - TObjArray* fGeometryBuilders; // list of Geometry Builders - - ClassDef(AliMUONGeometryBuilder,2) // MUON Detector class Version 1 + AliModule* fModule; ///< the AliRoot module + Bool_t fAlign; ///< \brief option to read transformations + /// from a file + TString fTransformFileName; ///< transformations file name + TString fSVMapFileName; ///< svmaps file name + TGeoCombiTrans fGlobalTransformation;///< \brief global transformation + /// applied to the whole geometry + TObjArray* fGeometryBuilders; ///< list of Geometry Builders + AliMUONGeometry* fGeometry; ///< geometry parametrisation + + ClassDef(AliMUONGeometryBuilder,6) // Geometry builder }; // inline functions +/// Initialize geometry +inline void AliMUONGeometryBuilder::InitGeometry() +{ InitGeometry(fSVMapFileName); } + +/// Write sensitive volume maps +inline void AliMUONGeometryBuilder::WriteSVMaps() +{ WriteSVMaps(fSVMapFileName + GetOutFileNameExtension()); } + +/// Return geometry parametrisation +inline +const AliMUONGeometry* AliMUONGeometryBuilder::GetGeometry() const +{ return fGeometry; } + +/// Return geometry transformer +inline +const AliMUONGeometryTransformer* AliMUONGeometryBuilder::GetTransformer() const +{ return fGeometry->GetTransformer(); } + +/// Return option for reading transformations from a file inline Bool_t AliMUONGeometryBuilder::GetAlign() const { return fAlign; }