1 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
2 * See cxx source for full Copyright notice */
7 /// \class AliMUONGeometryBuilder
8 /// \brief Manager class for geometry construction via geometry builders.
10 /// \author Ivana Hrivnacova, IPN Orsay
12 #ifndef ALI_MUON_GEOMETRY_BUILDER_H
13 #define ALI_MUON_GEOMETRY_BUILDER_H
15 #include "AliMUONGeometry.h"
18 #include <TGeoMatrix.h>
23 class AliMUONVGeometryBuilder;
25 class AliMUONGeometryBuilder : public TObject
28 AliMUONGeometryBuilder(AliModule* detector);
29 AliMUONGeometryBuilder();
30 virtual ~AliMUONGeometryBuilder();
33 static TGeoHMatrix Multiply(const TGeoMatrix& m1, const TGeoMatrix& m2);
34 static TGeoHMatrix Multiply(const TGeoMatrix& m1, const TGeoMatrix& m2,
35 const TGeoMatrix& m3);
36 static TGeoHMatrix Multiply(const TGeoMatrix& m1, const TGeoMatrix& m2,
37 const TGeoMatrix& m3, const TGeoMatrix& m4);
41 void AddBuilder(AliMUONVGeometryBuilder* geomBuilder);
42 void CreateGeometry();
43 void CreateMaterials();
46 void InitGeometry(const TString& svmapFileName);
49 void WriteSVMaps(const TString& fileName, Bool_t rebuild = true);
51 // Geometry parametrisation
52 const AliMUONGeometry* GetGeometry() const;
53 const AliMUONGeometryTransformer* GetTransformer() const;
56 virtual Bool_t GetAlign() const;
57 virtual void SetAlign(Bool_t align = true);
58 virtual void SetAlign(const TString& fileName, Bool_t align = true);
62 AliMUONGeometryBuilder(const AliMUONGeometryBuilder& right);
64 AliMUONGeometryBuilder& operator = (const AliMUONGeometryBuilder& right);
68 void PlaceVolume(const TString& name, const TString& mName, Int_t copyNo,
69 const TGeoHMatrix& matrix, Int_t npar, Double_t* param,
70 const char* only, Bool_t makeAssembly = false) const;
71 void CreateGeometryWithTGeo();
72 void CreateGeometryWithoutTGeo();
73 void SetAlign(AliMUONVGeometryBuilder* builder);
75 // static data members
76 static const TString fgkDefaultVolPathsFileName; ///< default volume paths file name
77 static const TString fgkDefaultTransformFileName; ///< default transformations file name
78 static const TString fgkDefaultSVMapFileName; ///< default svmaps file name
79 static const TString fgkOutFileNameExtension; ///< default output file name extension
82 AliModule* fModule; ///< the AliRoot module
83 Bool_t fAlign; ///< \brief option to read transformations
85 TString fTransformFileName; ///< transformations file name
86 TString fSVMapFileName; ///< svmaps file name
87 TGeoCombiTrans fGlobalTransformation;///< \brief global transformation
88 /// applied to the whole geometry
89 TObjArray* fGeometryBuilders; ///< list of Geometry Builders
90 AliMUONGeometry* fGeometry; ///< geometry parametrisation
92 ClassDef(AliMUONGeometryBuilder,6) // Geometry builder
97 /// Initialize geometry
98 inline void AliMUONGeometryBuilder::InitGeometry()
99 { InitGeometry(fSVMapFileName); }
101 /// Write sensitive volume maps
102 inline void AliMUONGeometryBuilder::WriteSVMaps()
103 { WriteSVMaps(fSVMapFileName + fgkOutFileNameExtension); }
105 /// Return geometry parametrisation
107 const AliMUONGeometry* AliMUONGeometryBuilder::GetGeometry() const
108 { return fGeometry; }
110 /// Return geometry transformer
112 const AliMUONGeometryTransformer* AliMUONGeometryBuilder::GetTransformer() const
113 { return fGeometry->GetTransformer(); }
115 /// Return option for reading transformations from a file
116 inline Bool_t AliMUONGeometryBuilder::GetAlign() const
119 #endif //ALI_MUON_GEOMETRY_BUILDER_H