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
16 #include <TGeoMatrix.h>
18 #include "AliMUONGeometry.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);
48 void ReadTransformations();
49 void ReadTransformations(const TString& fileName);
51 void WriteTransformations();
52 void WriteTransformations(const TString& fileName);
55 void WriteSVMaps(const TString& fileName, Bool_t rebuild = true);
57 // Geometry parametrisation
58 const AliMUONGeometry* GetGeometry() const;
59 const AliMUONGeometryTransformer* GetTransformer() const;
62 virtual Bool_t GetAlign() const;
63 virtual void SetAlign(Bool_t align = true);
64 virtual void SetAlign(const TString& fileName, Bool_t align = true);
67 AliMUONGeometryBuilder(const AliMUONGeometryBuilder& right);
68 AliMUONGeometryBuilder& operator = (const AliMUONGeometryBuilder& right);
72 void PlaceVolume(const TString& name, const TString& mName, Int_t copyNo,
73 const TGeoHMatrix& matrix, Int_t npar, Double_t* param,
74 const char* only) const;
75 void SetAlign(AliMUONVGeometryBuilder* builder);
77 // static data members
78 static const TString fgkDefaultTransformFileName; // default transformations file name
79 static const TString fgkDefaultSVMapFileName; // default svmaps file name
80 static const TString fgkOutFileNameExtension; // default output file name extension
83 AliModule* fModule; // the AliRoot module
84 Bool_t fAlign; // option to read transformations
86 TString fTransformFileName; // transformations file name
87 TString fSVMapFileName; // svmaps file name
88 TGeoCombiTrans fGlobalTransformation;// global transformation
89 // applied to the whole geometry
90 TObjArray* fGeometryBuilders; // list of Geometry Builders
91 AliMUONGeometry* fGeometry; // geometry parametrisation
93 ClassDef(AliMUONGeometryBuilder,4) // Geometry builder
98 inline void AliMUONGeometryBuilder::InitGeometry()
99 { InitGeometry(fSVMapFileName); }
101 inline void AliMUONGeometryBuilder::ReadTransformations()
102 { ReadTransformations(fTransformFileName); }
104 inline void AliMUONGeometryBuilder::WriteTransformations()
105 { WriteTransformations(fTransformFileName + fgkOutFileNameExtension); }
107 inline void AliMUONGeometryBuilder::WriteSVMaps()
108 { WriteSVMaps(fSVMapFileName + fgkOutFileNameExtension); }
111 const AliMUONGeometry* AliMUONGeometryBuilder::GetGeometry() const
112 { return fGeometry; }
115 const AliMUONGeometryTransformer* AliMUONGeometryBuilder::GetTransformer() const
116 { return fGeometry->GetTransformer(); }
118 inline Bool_t AliMUONGeometryBuilder::GetAlign() const
121 #endif //ALI_MUON_GEOMETRY_BUILDER_H