]> git.uio.no Git - u/mrichter/AliRoot.git/blame_incremental - MUON/AliMUONGeometryBuilder.h
Small bug fix (which should have no influence online)
[u/mrichter/AliRoot.git] / MUON / AliMUONGeometryBuilder.h
... / ...
CommitLineData
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
20class TObjArray;
21
22class AliModule;
23class AliMUONVGeometryBuilder;
24
25class 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
100inline void AliMUONGeometryBuilder::InitGeometry()
101{ InitGeometry(fSVMapFileName); }
102
103/// Write sensitive volume maps
104inline void AliMUONGeometryBuilder::WriteSVMaps()
105{ WriteSVMaps(fSVMapFileName + fgkOutFileNameExtension); }
106
107/// Return geometry parametrisation
108inline
109const AliMUONGeometry* AliMUONGeometryBuilder::GetGeometry() const
110{ return fGeometry; }
111
112/// Return geometry transformer
113inline
114const AliMUONGeometryTransformer* AliMUONGeometryBuilder::GetTransformer() const
115{ return fGeometry->GetTransformer(); }
116
117/// Return option for reading transformations from a file
118inline Bool_t AliMUONGeometryBuilder::GetAlign() const
119{ return fAlign; }
120
121#endif //ALI_MUON_GEOMETRY_BUILDER_H
122
123
124
125
126
127
128