#ifndef ALI_MUON_GEOMETRY_BUILDER_H
#define ALI_MUON_GEOMETRY_BUILDER_H
#include "AliMUONGeometry.h"
#include <TObject.h>
#include <TGeoMatrix.h>
class TObjArray;
class AliModule;
class AliMUONVGeometryBuilder;
class AliMUONGeometryBuilder : public TObject
{
public:
AliMUONGeometryBuilder(AliModule* detector);
AliMUONGeometryBuilder();
virtual ~AliMUONGeometryBuilder();
static TGeoHMatrix Multiply(const TGeoMatrix& m1, const TGeoMatrix& m2);
static TGeoHMatrix Multiply(const TGeoMatrix& m1, const TGeoMatrix& m2,
const TGeoMatrix& m3);
static TGeoHMatrix Multiply(const TGeoMatrix& m1, const TGeoMatrix& m2,
const TGeoMatrix& m3, const TGeoMatrix& m4);
void AddBuilder(AliMUONVGeometryBuilder* geomBuilder);
void CreateGeometry();
void CreateMaterials();
void InitGeometry();
void InitGeometry(const TString& svmapFileName);
void UpdateInternalGeometry();
void WriteSVMaps();
void WriteSVMaps(const TString& fileName,
Bool_t rebuild = true, Bool_t writeEnvelopes = true);
const AliMUONGeometry* GetGeometry() const;
const AliMUONGeometryTransformer* GetTransformer() const;
virtual Bool_t GetAlign() const;
virtual void SetAlign(Bool_t align = true);
virtual void SetAlign(const TString& fileName, Bool_t align = true);
protected:
AliMUONGeometryBuilder(const AliMUONGeometryBuilder& right);
AliMUONGeometryBuilder& operator = (const AliMUONGeometryBuilder& right);
private:
static const TString& GetDefaultTransformFileName();
static const TString& GetDefaultSVMapFileName();
static const TString& GetOutFileNameExtension();
void PlaceVolume(const TString& name, const TString& mName, Int_t copyNo,
const TGeoHMatrix& matrix, Int_t npar, Double_t* param,
const char* only, Bool_t makeAssembly = false) const;
void CreateGeometryWithTGeo();
void CreateGeometryWithoutTGeo();
void SetAlignToBuilder(AliMUONVGeometryBuilder* builder) const;
AliModule* fModule;
Bool_t fAlign;
TString fTransformFileName;
TString fSVMapFileName;
TGeoCombiTrans fGlobalTransformation;
TObjArray* fGeometryBuilders;
AliMUONGeometry* fGeometry;
ClassDef(AliMUONGeometryBuilder,6)
};
inline void AliMUONGeometryBuilder::InitGeometry()
{ InitGeometry(fSVMapFileName); }
inline void AliMUONGeometryBuilder::WriteSVMaps()
{ WriteSVMaps(fSVMapFileName + GetOutFileNameExtension()); }
inline
const AliMUONGeometry* AliMUONGeometryBuilder::GetGeometry() const
{ return fGeometry; }
inline
const AliMUONGeometryTransformer* AliMUONGeometryBuilder::GetTransformer() const
{ return fGeometry->GetTransformer(); }
inline Bool_t AliMUONGeometryBuilder::GetAlign() const
{ return fAlign; }
#endif //ALI_MUON_GEOMETRY_BUILDER_H
AliMUONGeometryBuilder.h:1 AliMUONGeometryBuilder.h:2 AliMUONGeometryBuilder.h:3 AliMUONGeometryBuilder.h:4 AliMUONGeometryBuilder.h:5 AliMUONGeometryBuilder.h:6 AliMUONGeometryBuilder.h:7 AliMUONGeometryBuilder.h:8 AliMUONGeometryBuilder.h:9 AliMUONGeometryBuilder.h:10 AliMUONGeometryBuilder.h:11 AliMUONGeometryBuilder.h:12 AliMUONGeometryBuilder.h:13 AliMUONGeometryBuilder.h:14 AliMUONGeometryBuilder.h:15 AliMUONGeometryBuilder.h:16 AliMUONGeometryBuilder.h:17 AliMUONGeometryBuilder.h:18 AliMUONGeometryBuilder.h:19 AliMUONGeometryBuilder.h:20 AliMUONGeometryBuilder.h:21 AliMUONGeometryBuilder.h:22 AliMUONGeometryBuilder.h:23 AliMUONGeometryBuilder.h:24 AliMUONGeometryBuilder.h:25 AliMUONGeometryBuilder.h:26 AliMUONGeometryBuilder.h:27 AliMUONGeometryBuilder.h:28 AliMUONGeometryBuilder.h:29 AliMUONGeometryBuilder.h:30 AliMUONGeometryBuilder.h:31 AliMUONGeometryBuilder.h:32 AliMUONGeometryBuilder.h:33 AliMUONGeometryBuilder.h:34 AliMUONGeometryBuilder.h:35 AliMUONGeometryBuilder.h:36 AliMUONGeometryBuilder.h:37 AliMUONGeometryBuilder.h:38 AliMUONGeometryBuilder.h:39 AliMUONGeometryBuilder.h:40 AliMUONGeometryBuilder.h:41 AliMUONGeometryBuilder.h:42 AliMUONGeometryBuilder.h:43 AliMUONGeometryBuilder.h:44 AliMUONGeometryBuilder.h:45 AliMUONGeometryBuilder.h:46 AliMUONGeometryBuilder.h:47 AliMUONGeometryBuilder.h:48 AliMUONGeometryBuilder.h:49 AliMUONGeometryBuilder.h:50 AliMUONGeometryBuilder.h:51 AliMUONGeometryBuilder.h:52 AliMUONGeometryBuilder.h:53 AliMUONGeometryBuilder.h:54 AliMUONGeometryBuilder.h:55 AliMUONGeometryBuilder.h:56 AliMUONGeometryBuilder.h:57 AliMUONGeometryBuilder.h:58 AliMUONGeometryBuilder.h:59 AliMUONGeometryBuilder.h:60 AliMUONGeometryBuilder.h:61 AliMUONGeometryBuilder.h:62 AliMUONGeometryBuilder.h:63 AliMUONGeometryBuilder.h:64 AliMUONGeometryBuilder.h:65 AliMUONGeometryBuilder.h:66 AliMUONGeometryBuilder.h:67 AliMUONGeometryBuilder.h:68 AliMUONGeometryBuilder.h:69 AliMUONGeometryBuilder.h:70 AliMUONGeometryBuilder.h:71 AliMUONGeometryBuilder.h:72 AliMUONGeometryBuilder.h:73 AliMUONGeometryBuilder.h:74 AliMUONGeometryBuilder.h:75 AliMUONGeometryBuilder.h:76 AliMUONGeometryBuilder.h:77 AliMUONGeometryBuilder.h:78 AliMUONGeometryBuilder.h:79 AliMUONGeometryBuilder.h:80 AliMUONGeometryBuilder.h:81 AliMUONGeometryBuilder.h:82 AliMUONGeometryBuilder.h:83 AliMUONGeometryBuilder.h:84 AliMUONGeometryBuilder.h:85 AliMUONGeometryBuilder.h:86 AliMUONGeometryBuilder.h:87 AliMUONGeometryBuilder.h:88 AliMUONGeometryBuilder.h:89 AliMUONGeometryBuilder.h:90 AliMUONGeometryBuilder.h:91 AliMUONGeometryBuilder.h:92 AliMUONGeometryBuilder.h:93 AliMUONGeometryBuilder.h:94 AliMUONGeometryBuilder.h:95 AliMUONGeometryBuilder.h:96 AliMUONGeometryBuilder.h:97 AliMUONGeometryBuilder.h:98 AliMUONGeometryBuilder.h:99 AliMUONGeometryBuilder.h:100 AliMUONGeometryBuilder.h:101 AliMUONGeometryBuilder.h:102 AliMUONGeometryBuilder.h:103 AliMUONGeometryBuilder.h:104 AliMUONGeometryBuilder.h:105 AliMUONGeometryBuilder.h:106 AliMUONGeometryBuilder.h:107 AliMUONGeometryBuilder.h:108 AliMUONGeometryBuilder.h:109 AliMUONGeometryBuilder.h:110 AliMUONGeometryBuilder.h:111 AliMUONGeometryBuilder.h:112 AliMUONGeometryBuilder.h:113 AliMUONGeometryBuilder.h:114 AliMUONGeometryBuilder.h:115 AliMUONGeometryBuilder.h:116 AliMUONGeometryBuilder.h:117 AliMUONGeometryBuilder.h:118 AliMUONGeometryBuilder.h:119 AliMUONGeometryBuilder.h:120 AliMUONGeometryBuilder.h:121 AliMUONGeometryBuilder.h:122 AliMUONGeometryBuilder.h:123 AliMUONGeometryBuilder.h:124 AliMUONGeometryBuilder.h:125 AliMUONGeometryBuilder.h:126 AliMUONGeometryBuilder.h:127