#ifndef ALI_MUONV_GEOMETRY_BUILDER_H
#define ALI_MUONV_GEOMETRY_BUILDER_H
#include <fstream>
#include <TObject.h>
#include <TObjArray.h>
#include <TGeoMatrix.h>
class TGeoTranslation;
class TGeoRotation;
class TGeoCombiTrans;
class AliMUONGeometryModule;
class AliMUONGeometryEnvelopeStore;
class AliMUONStringIntMap;
class AliMUONVGeometryBuilder : public TObject
{
public:
AliMUONVGeometryBuilder(Int_t firstModuleId, Int_t nofModules);
AliMUONVGeometryBuilder();
virtual ~AliMUONVGeometryBuilder();
void SetReferenceFrame(const TGeoCombiTrans& referenceFrame);
void RebuildSVMaps(Bool_t withEnvelopes = true) const;
void UpdateDetElements(Bool_t create) const;
virtual void CreateMaterials() {}
virtual void CreateGeometry() = 0;
virtual void SetVolumes() = 0;
virtual void SetTransformations() = 0;
virtual void SetSensitiveVolumes() = 0;
virtual bool ApplyGlobalTransformation() { return true; }
Int_t NofGeometries() const;
AliMUONGeometryModule* Geometry(Int_t i) const;
protected:
AliMUONGeometryModule* GetGeometry(Int_t moduleId) const;
AliMUONGeometryEnvelopeStore* GetEnvelopes(Int_t moduleId) const;
AliMUONStringIntMap* GetSVMap(Int_t moduleId) const;
Int_t GetModuleId(const TString& envName) const;
void SetTranslation(Int_t moduleId,
const TGeoTranslation& translation);
void SetTransformation(Int_t moduleId,
const TGeoTranslation& translation,
const TGeoRotation& rotation);
void SetVolume(Int_t moduleId, const TString& volumeName,
Bool_t isVirtual = false);
void SetMotherVolume(Int_t moduleId, const TString& volumeName);
private:
AliMUONVGeometryBuilder(const AliMUONVGeometryBuilder& rhs);
AliMUONVGeometryBuilder& operator = (const AliMUONVGeometryBuilder& rhs);
TGeoHMatrix ConvertTransform(const TGeoHMatrix& transform) const;
TGeoHMatrix ConvertDETransform(const TGeoHMatrix& transform) const;
TString ComposePath(const TString& volName, Int_t copyNo) const;
void MapSV(const TString& path0,
const TString& volName, Int_t detElemId) const;
TObjArray* fGeometryModules;
TGeoCombiTrans fReferenceFrame;
ClassDef(AliMUONVGeometryBuilder,4)
};
inline Int_t AliMUONVGeometryBuilder::NofGeometries() const
{ return fGeometryModules->GetEntriesFast(); }
inline AliMUONGeometryModule* AliMUONVGeometryBuilder::Geometry(Int_t i) const
{ return (AliMUONGeometryModule*)fGeometryModules->At(i); }
#endif //ALI_MUONV_GEOMETRY_BUILDER_H
AliMUONVGeometryBuilder.h:1 AliMUONVGeometryBuilder.h:2 AliMUONVGeometryBuilder.h:3 AliMUONVGeometryBuilder.h:4 AliMUONVGeometryBuilder.h:5 AliMUONVGeometryBuilder.h:6 AliMUONVGeometryBuilder.h:7 AliMUONVGeometryBuilder.h:8 AliMUONVGeometryBuilder.h:9 AliMUONVGeometryBuilder.h:10 AliMUONVGeometryBuilder.h:11 AliMUONVGeometryBuilder.h:12 AliMUONVGeometryBuilder.h:13 AliMUONVGeometryBuilder.h:14 AliMUONVGeometryBuilder.h:15 AliMUONVGeometryBuilder.h:16 AliMUONVGeometryBuilder.h:17 AliMUONVGeometryBuilder.h:18 AliMUONVGeometryBuilder.h:19 AliMUONVGeometryBuilder.h:20 AliMUONVGeometryBuilder.h:21 AliMUONVGeometryBuilder.h:22 AliMUONVGeometryBuilder.h:23 AliMUONVGeometryBuilder.h:24 AliMUONVGeometryBuilder.h:25 AliMUONVGeometryBuilder.h:26 AliMUONVGeometryBuilder.h:27 AliMUONVGeometryBuilder.h:28 AliMUONVGeometryBuilder.h:29 AliMUONVGeometryBuilder.h:30 AliMUONVGeometryBuilder.h:31 AliMUONVGeometryBuilder.h:32 AliMUONVGeometryBuilder.h:33 AliMUONVGeometryBuilder.h:34 AliMUONVGeometryBuilder.h:35 AliMUONVGeometryBuilder.h:36 AliMUONVGeometryBuilder.h:37 AliMUONVGeometryBuilder.h:38 AliMUONVGeometryBuilder.h:39 AliMUONVGeometryBuilder.h:40 AliMUONVGeometryBuilder.h:41 AliMUONVGeometryBuilder.h:42 AliMUONVGeometryBuilder.h:43 AliMUONVGeometryBuilder.h:44 AliMUONVGeometryBuilder.h:45 AliMUONVGeometryBuilder.h:46 AliMUONVGeometryBuilder.h:47 AliMUONVGeometryBuilder.h:48 AliMUONVGeometryBuilder.h:49 AliMUONVGeometryBuilder.h:50 AliMUONVGeometryBuilder.h:51 AliMUONVGeometryBuilder.h:52 AliMUONVGeometryBuilder.h:53 AliMUONVGeometryBuilder.h:54 AliMUONVGeometryBuilder.h:55 AliMUONVGeometryBuilder.h:56 AliMUONVGeometryBuilder.h:57 AliMUONVGeometryBuilder.h:58 AliMUONVGeometryBuilder.h:59 AliMUONVGeometryBuilder.h:60 AliMUONVGeometryBuilder.h:61 AliMUONVGeometryBuilder.h:62 AliMUONVGeometryBuilder.h:63 AliMUONVGeometryBuilder.h:64 AliMUONVGeometryBuilder.h:65 AliMUONVGeometryBuilder.h:66 AliMUONVGeometryBuilder.h:67 AliMUONVGeometryBuilder.h:68 AliMUONVGeometryBuilder.h:69 AliMUONVGeometryBuilder.h:70 AliMUONVGeometryBuilder.h:71 AliMUONVGeometryBuilder.h:72 AliMUONVGeometryBuilder.h:73 AliMUONVGeometryBuilder.h:74 AliMUONVGeometryBuilder.h:75 AliMUONVGeometryBuilder.h:76 AliMUONVGeometryBuilder.h:77 AliMUONVGeometryBuilder.h:78 AliMUONVGeometryBuilder.h:79 AliMUONVGeometryBuilder.h:80 AliMUONVGeometryBuilder.h:81 AliMUONVGeometryBuilder.h:82 AliMUONVGeometryBuilder.h:83 AliMUONVGeometryBuilder.h:84 AliMUONVGeometryBuilder.h:85 AliMUONVGeometryBuilder.h:86 AliMUONVGeometryBuilder.h:87 AliMUONVGeometryBuilder.h:88 AliMUONVGeometryBuilder.h:89 AliMUONVGeometryBuilder.h:90 AliMUONVGeometryBuilder.h:91 AliMUONVGeometryBuilder.h:92 AliMUONVGeometryBuilder.h:93 AliMUONVGeometryBuilder.h:94 AliMUONVGeometryBuilder.h:95 AliMUONVGeometryBuilder.h:96 AliMUONVGeometryBuilder.h:97 AliMUONVGeometryBuilder.h:98 AliMUONVGeometryBuilder.h:99 AliMUONVGeometryBuilder.h:100 AliMUONVGeometryBuilder.h:101 AliMUONVGeometryBuilder.h:102 AliMUONVGeometryBuilder.h:103 AliMUONVGeometryBuilder.h:104 AliMUONVGeometryBuilder.h:105 AliMUONVGeometryBuilder.h:106 AliMUONVGeometryBuilder.h:107 AliMUONVGeometryBuilder.h:108 AliMUONVGeometryBuilder.h:109 AliMUONVGeometryBuilder.h:110 AliMUONVGeometryBuilder.h:111 AliMUONVGeometryBuilder.h:112 AliMUONVGeometryBuilder.h:113 AliMUONVGeometryBuilder.h:114 AliMUONVGeometryBuilder.h:115 AliMUONVGeometryBuilder.h:116 AliMUONVGeometryBuilder.h:117 AliMUONVGeometryBuilder.h:118 AliMUONVGeometryBuilder.h:119 AliMUONVGeometryBuilder.h:120 AliMUONVGeometryBuilder.h:121 AliMUONVGeometryBuilder.h:122 AliMUONVGeometryBuilder.h:123 AliMUONVGeometryBuilder.h:124 AliMUONVGeometryBuilder.h:125 AliMUONVGeometryBuilder.h:126 AliMUONVGeometryBuilder.h:127 AliMUONVGeometryBuilder.h:128 AliMUONVGeometryBuilder.h:129 AliMUONVGeometryBuilder.h:130 AliMUONVGeometryBuilder.h:131 AliMUONVGeometryBuilder.h:132 AliMUONVGeometryBuilder.h:133 AliMUONVGeometryBuilder.h:134 AliMUONVGeometryBuilder.h:135 AliMUONVGeometryBuilder.h:136 AliMUONVGeometryBuilder.h:137 AliMUONVGeometryBuilder.h:138 AliMUONVGeometryBuilder.h:139 AliMUONVGeometryBuilder.h:140 AliMUONVGeometryBuilder.h:141 AliMUONVGeometryBuilder.h:142