]> git.uio.no Git - u/mrichter/AliRoot.git/blame - MUON/AliMUONGeometryBuilder.h
- Remove pre-compilation option
[u/mrichter/AliRoot.git] / MUON / AliMUONGeometryBuilder.h
CommitLineData
d4bb94a1 1/* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
2 * See cxx source for full Copyright notice */
3
4// $Id$
692de412 5
6/// \ingroup geometry
7/// \class AliMUONGeometryBuilder
8/// \brief Manager class for geometry construction via geometry builders.
9///
a9aad96e 10/// \author Ivana Hrivnacova, IPN Orsay
d4bb94a1 11
e118b27e 12#ifndef ALI_MUON_GEOMETRY_BUILDER_H
13#define ALI_MUON_GEOMETRY_BUILDER_H
14
beec1d7e 15#include "AliMUONGeometry.h"
16
d4bb94a1 17#include <TObject.h>
e118b27e 18#include <TGeoMatrix.h>
d4bb94a1 19
d4bb94a1 20class TObjArray;
21
e118b27e 22class AliModule;
d4bb94a1 23class AliMUONVGeometryBuilder;
24
25class AliMUONGeometryBuilder : public TObject
26{
27 public:
e118b27e 28 AliMUONGeometryBuilder(AliModule* detector);
d4bb94a1 29 AliMUONGeometryBuilder();
d4bb94a1 30 virtual ~AliMUONGeometryBuilder();
067866a3 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);
d4bb94a1 38
e118b27e 39 // methods
eea63c73 40 //
e118b27e 41 void AddBuilder(AliMUONVGeometryBuilder* geomBuilder);
d4bb94a1 42 void CreateGeometry();
43 void CreateMaterials();
eea63c73 44
45 void InitGeometry();
46 void InitGeometry(const TString& svmapFileName);
47
eea63c73 48 void WriteSVMaps();
49 void WriteSVMaps(const TString& fileName, Bool_t rebuild = true);
9a6c488e 50
51 // Geometry parametrisation
52 const AliMUONGeometry* GetGeometry() const;
53 const AliMUONGeometryTransformer* GetTransformer() const;
76497dec 54
55 // Alignement
56 virtual Bool_t GetAlign() const;
eea63c73 57 virtual void SetAlign(Bool_t align = true);
58 virtual void SetAlign(const TString& fileName, Bool_t align = true);
d4bb94a1 59
d4bb94a1 60 protected:
71a2d3aa 61 /// Not implemented
d4bb94a1 62 AliMUONGeometryBuilder(const AliMUONGeometryBuilder& right);
71a2d3aa 63 /// Not implemented
d4bb94a1 64 AliMUONGeometryBuilder& operator = (const AliMUONGeometryBuilder& right);
65
66 private:
67 // method
68 void PlaceVolume(const TString& name, const TString& mName, Int_t copyNo,
69 const TGeoHMatrix& matrix, Int_t npar, Double_t* param,
beec1d7e 70 const char* only, Bool_t makeAssembly = false) const;
71 void CreateGeometryWithTGeo();
72 void CreateGeometryWithoutTGeo();
8618c022 73 void SetAlign(AliMUONVGeometryBuilder* builder);
d4bb94a1 74
eea63c73 75 // static data members
829425a5 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
eea63c73 80
d4bb94a1 81 // data members
829425a5 82 AliModule* fModule; ///< the AliRoot module
83 Bool_t fAlign; ///< \brief option to read transformations
84 /// from a file
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
d4bb94a1 91
beec1d7e 92 ClassDef(AliMUONGeometryBuilder,6) // Geometry builder
d4bb94a1 93};
94
76497dec 95// inline functions
96
a9aad96e 97/// Initialize geometry
eea63c73 98inline void AliMUONGeometryBuilder::InitGeometry()
99{ InitGeometry(fSVMapFileName); }
100
a9aad96e 101/// Write sensitive volume maps
eea63c73 102inline void AliMUONGeometryBuilder::WriteSVMaps()
103{ WriteSVMaps(fSVMapFileName + fgkOutFileNameExtension); }
104
a9aad96e 105/// Return geometry parametrisation
9a6c488e 106inline
107const AliMUONGeometry* AliMUONGeometryBuilder::GetGeometry() const
108{ return fGeometry; }
109
a9aad96e 110/// Return geometry transformer
9a6c488e 111inline
112const AliMUONGeometryTransformer* AliMUONGeometryBuilder::GetTransformer() const
113{ return fGeometry->GetTransformer(); }
114
a9aad96e 115/// Return option for reading transformations from a file
76497dec 116inline Bool_t AliMUONGeometryBuilder::GetAlign() const
117{ return fAlign; }
118
d4bb94a1 119#endif //ALI_MUON_GEOMETRY_BUILDER_H
120
121
122
123
124
125
126