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);
40 void AddBuilder(AliMUONVGeometryBuilder* geomBuilder);
41 void CreateGeometry();
42 void CreateMaterials();
43 void InitGeometry(const TString& svmapFileName = "svmap.dat");
44 void ReadTransformations(const TString& fileName = "transform.dat");
45 void WriteTransformations(const TString& fileName = "transform.dat.out");
46 void WriteSVMaps(Bool_t rebuild = true,
47 const TString& fileName = "svmap.dat.out");
49 // Geometry parametrisation
50 const AliMUONGeometry* GetGeometry() const;
51 const AliMUONGeometryTransformer* GetTransformer() const;
54 virtual Bool_t GetAlign() const;
55 virtual void SetAlign(Bool_t align);
58 AliMUONGeometryBuilder(const AliMUONGeometryBuilder& right);
59 AliMUONGeometryBuilder& operator = (const AliMUONGeometryBuilder& right);
63 void PlaceVolume(const TString& name, const TString& mName, Int_t copyNo,
64 const TGeoHMatrix& matrix, Int_t npar, Double_t* param,
65 const char* only) const;
66 void FillGlobalTransformations(AliMUONVGeometryBuilder* builder);
67 void SetAlign(AliMUONVGeometryBuilder* builder);
70 AliModule* fModule; // the AliRoot module
71 Bool_t fAlign; // option to read transformations
73 TGeoCombiTrans fGlobalTransformation;// global transformation
74 // applied to the whole geometry
75 TObjArray* fGeometryBuilders; // list of Geometry Builders
76 AliMUONGeometry* fGeometry; // geometry parametrisation
78 ClassDef(AliMUONGeometryBuilder,4) // Geometry builder
84 const AliMUONGeometry* AliMUONGeometryBuilder::GetGeometry() const
88 const AliMUONGeometryTransformer* AliMUONGeometryBuilder::GetTransformer() const
89 { return fGeometry->GetTransformer(); }
91 inline Bool_t AliMUONGeometryBuilder::GetAlign() const
94 #endif //ALI_MUON_GEOMETRY_BUILDER_H