]>
Commit | Line | Data |
---|---|---|
1 | /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. * | |
2 | * See cxx source for full Copyright notice */ | |
3 | ||
4 | // $Id$ | |
5 | ||
6 | /// \ingroup geometry | |
7 | /// \class AliMUONGeometryBuilder | |
8 | /// \brief Manager class for geometry construction via geometry builders. | |
9 | /// | |
10 | /// \author Ivana Hrivnacova, IPN Orsay | |
11 | ||
12 | #ifndef ALI_MUON_GEOMETRY_BUILDER_H | |
13 | #define ALI_MUON_GEOMETRY_BUILDER_H | |
14 | ||
15 | #include "AliMUONGeometry.h" | |
16 | ||
17 | #include <TObject.h> | |
18 | #include <TGeoMatrix.h> | |
19 | ||
20 | class TObjArray; | |
21 | ||
22 | class AliModule; | |
23 | class AliMUONVGeometryBuilder; | |
24 | ||
25 | class AliMUONGeometryBuilder : public TObject | |
26 | { | |
27 | public: | |
28 | AliMUONGeometryBuilder(AliModule* detector); | |
29 | AliMUONGeometryBuilder(); | |
30 | virtual ~AliMUONGeometryBuilder(); | |
31 | ||
32 | // static methods | |
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); | |
38 | ||
39 | // methods | |
40 | // | |
41 | void AddBuilder(AliMUONVGeometryBuilder* geomBuilder); | |
42 | void CreateGeometry(); | |
43 | void CreateMaterials(); | |
44 | ||
45 | void InitGeometry(); | |
46 | void InitGeometry(const TString& svmapFileName); | |
47 | void UpdateInternalGeometry(); | |
48 | ||
49 | void WriteSVMaps(); | |
50 | void WriteSVMaps(const TString& fileName, | |
51 | Bool_t rebuild = true, Bool_t writeEnvelopes = true); | |
52 | ||
53 | // Geometry parametrisation | |
54 | const AliMUONGeometry* GetGeometry() const; | |
55 | const AliMUONGeometryTransformer* GetTransformer() const; | |
56 | ||
57 | // Alignement | |
58 | virtual Bool_t GetAlign() const; | |
59 | virtual void SetAlign(Bool_t align = true); | |
60 | virtual void SetAlign(const TString& fileName, Bool_t align = true); | |
61 | ||
62 | protected: | |
63 | /// Not implemented | |
64 | AliMUONGeometryBuilder(const AliMUONGeometryBuilder& right); | |
65 | /// Not implemented | |
66 | AliMUONGeometryBuilder& operator = (const AliMUONGeometryBuilder& right); | |
67 | ||
68 | private: | |
69 | // method | |
70 | void PlaceVolume(const TString& name, const TString& mName, Int_t copyNo, | |
71 | const TGeoHMatrix& matrix, Int_t npar, Double_t* param, | |
72 | const char* only, Bool_t makeAssembly = false) const; | |
73 | void CreateGeometryWithTGeo(); | |
74 | void CreateGeometryWithoutTGeo(); | |
75 | void SetAlign(AliMUONVGeometryBuilder* builder); | |
76 | ||
77 | // static data members | |
78 | static const TString fgkDefaultVolPathsFileName; ///< default volume paths file name | |
79 | static const TString fgkDefaultTransformFileName; ///< default transformations file name | |
80 | static const TString fgkDefaultSVMapFileName; ///< default svmaps file name | |
81 | static const TString fgkOutFileNameExtension; ///< default output file name extension | |
82 | ||
83 | // data members | |
84 | AliModule* fModule; ///< the AliRoot module | |
85 | Bool_t fAlign; ///< \brief option to read transformations | |
86 | /// from a file | |
87 | TString fTransformFileName; ///< transformations file name | |
88 | TString fSVMapFileName; ///< svmaps file name | |
89 | TGeoCombiTrans fGlobalTransformation;///< \brief global transformation | |
90 | /// applied to the whole geometry | |
91 | TObjArray* fGeometryBuilders; ///< list of Geometry Builders | |
92 | AliMUONGeometry* fGeometry; ///< geometry parametrisation | |
93 | ||
94 | ClassDef(AliMUONGeometryBuilder,6) // Geometry builder | |
95 | }; | |
96 | ||
97 | // inline functions | |
98 | ||
99 | /// Initialize geometry | |
100 | inline void AliMUONGeometryBuilder::InitGeometry() | |
101 | { InitGeometry(fSVMapFileName); } | |
102 | ||
103 | /// Write sensitive volume maps | |
104 | inline void AliMUONGeometryBuilder::WriteSVMaps() | |
105 | { WriteSVMaps(fSVMapFileName + fgkOutFileNameExtension); } | |
106 | ||
107 | /// Return geometry parametrisation | |
108 | inline | |
109 | const AliMUONGeometry* AliMUONGeometryBuilder::GetGeometry() const | |
110 | { return fGeometry; } | |
111 | ||
112 | /// Return geometry transformer | |
113 | inline | |
114 | const AliMUONGeometryTransformer* AliMUONGeometryBuilder::GetTransformer() const | |
115 | { return fGeometry->GetTransformer(); } | |
116 | ||
117 | /// Return option for reading transformations from a file | |
118 | inline Bool_t AliMUONGeometryBuilder::GetAlign() const | |
119 | { return fAlign; } | |
120 | ||
121 | #endif //ALI_MUON_GEOMETRY_BUILDER_H | |
122 | ||
123 | ||
124 | ||
125 | ||
126 | ||
127 | ||
128 |