]> git.uio.no Git - u/mrichter/AliRoot.git/blame_incremental - MUON/AliMUONGeometryBuilder.h
New RAW I/O. I rolled my own, because I wasn't happy with the old
[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
48 void WriteSVMaps();
49 void WriteSVMaps(const TString& fileName, Bool_t rebuild = true);
50
51 // Geometry parametrisation
52 const AliMUONGeometry* GetGeometry() const;
53 const AliMUONGeometryTransformer* GetTransformer() const;
54
55 // Alignement
56 virtual Bool_t GetAlign() const;
57 virtual void SetAlign(Bool_t align = true);
58 virtual void SetAlign(const TString& fileName, Bool_t align = true);
59
60 protected:
61 AliMUONGeometryBuilder(const AliMUONGeometryBuilder& right);
62 AliMUONGeometryBuilder& operator = (const AliMUONGeometryBuilder& right);
63
64 private:
65 // method
66 void PlaceVolume(const TString& name, const TString& mName, Int_t copyNo,
67 const TGeoHMatrix& matrix, Int_t npar, Double_t* param,
68 const char* only, Bool_t makeAssembly = false) const;
69 void CreateGeometryWithTGeo();
70 void CreateGeometryWithoutTGeo();
71 void SetAlign(AliMUONVGeometryBuilder* builder);
72
73 // static data members
74 static const TString fgkDefaultVolPathsFileName; // default volume paths file name
75 static const TString fgkDefaultTransformFileName; // default transformations file name
76 static const TString fgkDefaultSVMapFileName; // default svmaps file name
77 static const TString fgkOutFileNameExtension; // default output file name extension
78
79 // data members
80 AliModule* fModule; // the AliRoot module
81 Bool_t fAlign; // option to read transformations
82 // from a file
83 TString fTransformFileName; // transformations file name
84 TString fSVMapFileName; // svmaps file name
85 TGeoCombiTrans fGlobalTransformation;// global transformation
86 // applied to the whole geometry
87 TObjArray* fGeometryBuilders; // list of Geometry Builders
88 AliMUONGeometry* fGeometry; // geometry parametrisation
89
90 ClassDef(AliMUONGeometryBuilder,6) // Geometry builder
91};
92
93// inline functions
94
95inline void AliMUONGeometryBuilder::InitGeometry()
96{ InitGeometry(fSVMapFileName); }
97
98inline void AliMUONGeometryBuilder::WriteSVMaps()
99{ WriteSVMaps(fSVMapFileName + fgkOutFileNameExtension); }
100
101inline
102const AliMUONGeometry* AliMUONGeometryBuilder::GetGeometry() const
103{ return fGeometry; }
104
105inline
106const AliMUONGeometryTransformer* AliMUONGeometryBuilder::GetTransformer() const
107{ return fGeometry->GetTransformer(); }
108
109inline Bool_t AliMUONGeometryBuilder::GetAlign() const
110{ return fAlign; }
111
112#endif //ALI_MUON_GEOMETRY_BUILDER_H
113
114
115
116
117
118
119