X-Git-Url: http://git.uio.no/git/?p=u%2Fmrichter%2FAliRoot.git;a=blobdiff_plain;f=MUON%2FAliMUONGeometryBuilder.h;h=a6b8a8c8f3280b01d07fd73dc62914bc273cb0db;hp=c27774fb896a9a78edb6751565a4e84699125925;hb=af885e0fc45eeab1177d3d34f858ccd8836787fb;hpb=e118b27eada9373935aaa96fdc51b0ac2bf6185f diff --git a/MUON/AliMUONGeometryBuilder.h b/MUON/AliMUONGeometryBuilder.h index c27774fb896..a6b8a8c8f32 100644 --- a/MUON/AliMUONGeometryBuilder.h +++ b/MUON/AliMUONGeometryBuilder.h @@ -2,16 +2,18 @@ * See cxx source for full Copyright notice */ // $Id$ -// -// Class AliMUONGeometryBuilder -// ---------------------------- -// Manager class for geometry construction via geometry builders. -// -// 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 @@ -26,44 +28,92 @@ class AliMUONGeometryBuilder : public TObject AliMUONGeometryBuilder(AliModule* detector); AliMUONGeometryBuilder(); 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 SetGlobalTransformation(const TGeoCombiTrans& transform); + void InitGeometry(const TString& svmapFileName); + + 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); protected: + /// Not implemented AliMUONGeometryBuilder(const AliMUONGeometryBuilder& right); + /// Not implemented AliMUONGeometryBuilder& operator = (const AliMUONGeometryBuilder& right); private: // 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; - void FillGlobalTransformations(AliMUONVGeometryBuilder* builder); + const char* only, Bool_t makeAssembly = false) const; + void CreateGeometryWithTGeo(); + void CreateGeometryWithoutTGeo(); + void SetAlign(AliMUONVGeometryBuilder* builder); + + // static data members + static const TString fgkDefaultVolPathsFileName; ///< default volume paths file name + static const TString fgkDefaultTransformFileName; ///< default transformations file name + static const TString fgkDefaultSVMapFileName; ///< default svmaps file name + static const TString fgkOutFileNameExtension; ///< default output file name extension // data members - AliModule* fModule; // the AliRoot module - 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,4) // Geometry builder + 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 + fgkOutFileNameExtension); } + +/// 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; }