#ifndef ALI_MUON_GEOMETRY_TRANSFORMER_H
#define ALI_MUON_GEOMETRY_TRANSFORMER_H
#include <TObject.h>
#include <TObjArray.h>
#include <TGeoMatrix.h>
class AliMUONGeometryModuleTransformer;
class AliMUONGeometryDetElement;
class TGeoManager;
class TClonesArray;
class AliMpExMap;
class AliMpArea;
using std::ifstream;
using std::ofstream;
class AliMUONGeometryTransformer : public TObject
{
public:
AliMUONGeometryTransformer();
AliMUONGeometryTransformer(TRootIOCtor* );
virtual ~AliMUONGeometryTransformer();
void AddModuleTransformer(AliMUONGeometryModuleTransformer* transformer);
void AddMisAlignModule(Int_t moduleId, const TGeoHMatrix& matrix, Bool_t bGlobal = kTRUE);
void AddMisAlignDetElement(Int_t detElemId, const TGeoHMatrix& matrix, Bool_t bGlobal = kTRUE);
void CreateModules();
void AddAlignableVolumes() const;
TClonesArray* CreateZeroAlignmentData() const;
void ClearMisAlignmentData();
Bool_t LoadTransformations();
Bool_t LoadGeometryData(const TString& fileName);
Bool_t LoadGeometryData();
Bool_t WriteTransformations(const TString& fileName) const;
Bool_t WriteMisAlignmentData(const TString& fileName) const;
void Global2Local(Int_t detElemId,
Float_t xg, Float_t yg, Float_t zg,
Float_t& xl, Float_t& yl, Float_t& zl) const;
void Global2Local(Int_t detElemId,
Double_t xg, Double_t yg, Double_t zg,
Double_t& xl, Double_t& yl, Double_t& zl) const;
void Local2Global(Int_t detElemId,
Float_t xl, Float_t yl, Float_t zl,
Float_t& xg, Float_t& yg, Float_t& zg) const;
void Local2Global(Int_t detElemId,
Double_t xl, Double_t yl, Double_t zl,
Double_t& xg, Double_t& yg, Double_t& zg) const;
void SetDetName(const TString& detName);
void SetOwner(Bool_t isOwner);
Int_t GetNofModuleTransformers() const;
const AliMUONGeometryModuleTransformer* GetModuleTransformer(
Int_t index, Bool_t warn = true) const;
const AliMUONGeometryModuleTransformer* GetModuleTransformerByDEId(
Int_t detElemId, Bool_t warn = true) const;
const AliMUONGeometryDetElement* GetDetElement(
Int_t detElemId, Bool_t warn = true) const;
const TClonesArray* GetMisAlignmentData() const;
Bool_t HasDE(Int_t detElemId) const;
AliMpArea* GetDEArea(Int_t detElemId) const;
protected:
AliMUONGeometryTransformer(const AliMUONGeometryTransformer& right);
AliMUONGeometryTransformer& operator = (const AliMUONGeometryTransformer& right);
private:
static const TString& GetDefaultDetectorName();
void CreateDEAreas() const;
Bool_t LoadMapping() const;
AliMUONGeometryModuleTransformer* GetModuleTransformerNonConst(
Int_t index, Bool_t warn = true) const;
TGeoHMatrix GetTransform(
Double_t x, Double_t y, Double_t z,
Double_t a1, Double_t a2, Double_t a3,
Double_t a4, Double_t a5, Double_t a6) const;
void FillModuleTransform(Int_t moduleId,
Double_t x, Double_t y, Double_t z,
Double_t a1, Double_t a2, Double_t a3,
Double_t a4, Double_t a5, Double_t a6);
void FillDetElemTransform(Int_t id,
Double_t x, Double_t y, Double_t z,
Double_t a1, Double_t a2, Double_t a3,
Double_t a4, Double_t a5, Double_t a6);
TString ReadModuleTransforms(ifstream& in);
TString ReadDetElemTransforms(ifstream& in);
Bool_t ReadTransformations(const TString& fileName);
void WriteTransform(ofstream& out, const TGeoMatrix* transform) const;
void WriteModuleTransforms(ofstream& out) const;
void WriteDetElemTransforms(ofstream& out) const;
TString GetModuleSymName(Int_t moduleId) const;
TString GetDESymName(Int_t detElemId) const;
TString fDetectorName;
TObjArray* fModuleTransformers;
TClonesArray* fMisAlignArray;
mutable AliMpExMap* fDEAreas;
ClassDef(AliMUONGeometryTransformer,4)
};
inline Int_t AliMUONGeometryTransformer::GetNofModuleTransformers() const
{ return fModuleTransformers->GetEntriesFast(); }
inline const TClonesArray* AliMUONGeometryTransformer::GetMisAlignmentData() const
{ return fMisAlignArray; }
inline void AliMUONGeometryTransformer::SetDetName(const TString& detName)
{ fDetectorName = detName; }
inline void AliMUONGeometryTransformer::SetOwner(Bool_t isOwner)
{ fModuleTransformers->SetOwner(isOwner); }
#endif //ALI_MUON_GEOMETRY_TRANSFORMER_H
AliMUONGeometryTransformer.h:1 AliMUONGeometryTransformer.h:2 AliMUONGeometryTransformer.h:3 AliMUONGeometryTransformer.h:4 AliMUONGeometryTransformer.h:5 AliMUONGeometryTransformer.h:6 AliMUONGeometryTransformer.h:7 AliMUONGeometryTransformer.h:8 AliMUONGeometryTransformer.h:9 AliMUONGeometryTransformer.h:10 AliMUONGeometryTransformer.h:11 AliMUONGeometryTransformer.h:12 AliMUONGeometryTransformer.h:13 AliMUONGeometryTransformer.h:14 AliMUONGeometryTransformer.h:15 AliMUONGeometryTransformer.h:16 AliMUONGeometryTransformer.h:17 AliMUONGeometryTransformer.h:18 AliMUONGeometryTransformer.h:19 AliMUONGeometryTransformer.h:20 AliMUONGeometryTransformer.h:21 AliMUONGeometryTransformer.h:22 AliMUONGeometryTransformer.h:23 AliMUONGeometryTransformer.h:24 AliMUONGeometryTransformer.h:25 AliMUONGeometryTransformer.h:26 AliMUONGeometryTransformer.h:27 AliMUONGeometryTransformer.h:28 AliMUONGeometryTransformer.h:29 AliMUONGeometryTransformer.h:30 AliMUONGeometryTransformer.h:31 AliMUONGeometryTransformer.h:32 AliMUONGeometryTransformer.h:33 AliMUONGeometryTransformer.h:34 AliMUONGeometryTransformer.h:35 AliMUONGeometryTransformer.h:36 AliMUONGeometryTransformer.h:37 AliMUONGeometryTransformer.h:38 AliMUONGeometryTransformer.h:39 AliMUONGeometryTransformer.h:40 AliMUONGeometryTransformer.h:41 AliMUONGeometryTransformer.h:42 AliMUONGeometryTransformer.h:43 AliMUONGeometryTransformer.h:44 AliMUONGeometryTransformer.h:45 AliMUONGeometryTransformer.h:46 AliMUONGeometryTransformer.h:47 AliMUONGeometryTransformer.h:48 AliMUONGeometryTransformer.h:49 AliMUONGeometryTransformer.h:50 AliMUONGeometryTransformer.h:51 AliMUONGeometryTransformer.h:52 AliMUONGeometryTransformer.h:53 AliMUONGeometryTransformer.h:54 AliMUONGeometryTransformer.h:55 AliMUONGeometryTransformer.h:56 AliMUONGeometryTransformer.h:57 AliMUONGeometryTransformer.h:58 AliMUONGeometryTransformer.h:59 AliMUONGeometryTransformer.h:60 AliMUONGeometryTransformer.h:61 AliMUONGeometryTransformer.h:62 AliMUONGeometryTransformer.h:63 AliMUONGeometryTransformer.h:64 AliMUONGeometryTransformer.h:65 AliMUONGeometryTransformer.h:66 AliMUONGeometryTransformer.h:67 AliMUONGeometryTransformer.h:68 AliMUONGeometryTransformer.h:69 AliMUONGeometryTransformer.h:70 AliMUONGeometryTransformer.h:71 AliMUONGeometryTransformer.h:72 AliMUONGeometryTransformer.h:73 AliMUONGeometryTransformer.h:74 AliMUONGeometryTransformer.h:75 AliMUONGeometryTransformer.h:76 AliMUONGeometryTransformer.h:77 AliMUONGeometryTransformer.h:78 AliMUONGeometryTransformer.h:79 AliMUONGeometryTransformer.h:80 AliMUONGeometryTransformer.h:81 AliMUONGeometryTransformer.h:82 AliMUONGeometryTransformer.h:83 AliMUONGeometryTransformer.h:84 AliMUONGeometryTransformer.h:85 AliMUONGeometryTransformer.h:86 AliMUONGeometryTransformer.h:87 AliMUONGeometryTransformer.h:88 AliMUONGeometryTransformer.h:89 AliMUONGeometryTransformer.h:90 AliMUONGeometryTransformer.h:91 AliMUONGeometryTransformer.h:92 AliMUONGeometryTransformer.h:93 AliMUONGeometryTransformer.h:94 AliMUONGeometryTransformer.h:95 AliMUONGeometryTransformer.h:96 AliMUONGeometryTransformer.h:97 AliMUONGeometryTransformer.h:98 AliMUONGeometryTransformer.h:99 AliMUONGeometryTransformer.h:100 AliMUONGeometryTransformer.h:101 AliMUONGeometryTransformer.h:102 AliMUONGeometryTransformer.h:103 AliMUONGeometryTransformer.h:104 AliMUONGeometryTransformer.h:105 AliMUONGeometryTransformer.h:106 AliMUONGeometryTransformer.h:107 AliMUONGeometryTransformer.h:108 AliMUONGeometryTransformer.h:109 AliMUONGeometryTransformer.h:110 AliMUONGeometryTransformer.h:111 AliMUONGeometryTransformer.h:112 AliMUONGeometryTransformer.h:113 AliMUONGeometryTransformer.h:114 AliMUONGeometryTransformer.h:115 AliMUONGeometryTransformer.h:116 AliMUONGeometryTransformer.h:117 AliMUONGeometryTransformer.h:118 AliMUONGeometryTransformer.h:119 AliMUONGeometryTransformer.h:120 AliMUONGeometryTransformer.h:121 AliMUONGeometryTransformer.h:122 AliMUONGeometryTransformer.h:123 AliMUONGeometryTransformer.h:124 AliMUONGeometryTransformer.h:125 AliMUONGeometryTransformer.h:126 AliMUONGeometryTransformer.h:127 AliMUONGeometryTransformer.h:128 AliMUONGeometryTransformer.h:129 AliMUONGeometryTransformer.h:130 AliMUONGeometryTransformer.h:131 AliMUONGeometryTransformer.h:132 AliMUONGeometryTransformer.h:133 AliMUONGeometryTransformer.h:134 AliMUONGeometryTransformer.h:135 AliMUONGeometryTransformer.h:136 AliMUONGeometryTransformer.h:137 AliMUONGeometryTransformer.h:138 AliMUONGeometryTransformer.h:139 AliMUONGeometryTransformer.h:140 AliMUONGeometryTransformer.h:141 AliMUONGeometryTransformer.h:142 AliMUONGeometryTransformer.h:143 AliMUONGeometryTransformer.h:144 AliMUONGeometryTransformer.h:145 AliMUONGeometryTransformer.h:146 AliMUONGeometryTransformer.h:147 AliMUONGeometryTransformer.h:148 AliMUONGeometryTransformer.h:149 AliMUONGeometryTransformer.h:150 AliMUONGeometryTransformer.h:151 AliMUONGeometryTransformer.h:152 AliMUONGeometryTransformer.h:153 AliMUONGeometryTransformer.h:154 AliMUONGeometryTransformer.h:155 AliMUONGeometryTransformer.h:156 AliMUONGeometryTransformer.h:157 AliMUONGeometryTransformer.h:158 AliMUONGeometryTransformer.h:159 AliMUONGeometryTransformer.h:160 AliMUONGeometryTransformer.h:161 AliMUONGeometryTransformer.h:162 AliMUONGeometryTransformer.h:163 AliMUONGeometryTransformer.h:164 AliMUONGeometryTransformer.h:165 AliMUONGeometryTransformer.h:166 AliMUONGeometryTransformer.h:167 AliMUONGeometryTransformer.h:168 AliMUONGeometryTransformer.h:169 AliMUONGeometryTransformer.h:170 AliMUONGeometryTransformer.h:171 AliMUONGeometryTransformer.h:172 AliMUONGeometryTransformer.h:173 AliMUONGeometryTransformer.h:174 AliMUONGeometryTransformer.h:175 AliMUONGeometryTransformer.h:176 AliMUONGeometryTransformer.h:177 AliMUONGeometryTransformer.h:178 AliMUONGeometryTransformer.h:179 AliMUONGeometryTransformer.h:180