1 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
2 * See cxx source for full Copyright notice */
5 // Revision of includes 07/05/2004
8 // Class AliMUONGeometryModule
9 // -----------------------------
10 // Class for definition of the detector module parameters
11 // (the transformations of detection elements, mapping between
12 // sensitive volumes and detection elements).
14 // Author: Ivana Hrivnacova, IPN Orsay
16 #ifndef ALI_MUON_MODULE_GEOMETRY_H
17 #define ALI_MUON_MODULE_GEOMETRY_H
22 class TGeoTranslation;
28 class AliMUONGeometryEnvelope;
29 class AliMUONGeometryEnvelopeStore;
30 class AliMUONGeometryDetElement;
31 class AliMUONGeometryStore;
32 class AliMUONGeometrySVMap;
33 class AliMUONVGeometryDEIndexing;
35 class AliMUONGeometryModule : public TObject
38 AliMUONGeometryModule(Int_t moduleId);
39 AliMUONGeometryModule();
40 virtual ~AliMUONGeometryModule();
43 void Global2Local(Int_t detElemId,
44 Float_t xg, Float_t yg, Float_t zg,
45 Float_t& xl, Float_t& yl, Float_t& zl) const;
46 void Global2Local(Int_t detElemId,
47 Double_t xg, Double_t yg, Double_t zg,
48 Double_t& xl, Double_t& yl, Double_t& zl) const;
50 void Local2Global(Int_t detElemId,
51 Float_t xl, Float_t yl, Float_t zl,
52 Float_t& xg, Float_t& yg, Float_t& zg) const;
53 void Local2Global(Int_t detElemId,
54 Double_t xl, Double_t yl, Double_t zl,
55 Double_t& xg, Double_t& yg, Double_t& zg) const;
58 void SetMotherVolume(const TString& motherVolumeName);
59 void SetTranslation(const TGeoTranslation& translation);
60 void SetRotation(const TGeoRotation& rotation);
62 void SetSensitiveVolume(Int_t volId);
63 void SetSensitiveVolume(const TString& name);
64 void SetAlign(Bool_t align);
67 Int_t GetModuleId() const;
68 TString GetMotherVolume() const;
69 const TGeoCombiTrans* GetTransformation() const;
70 AliMUONGeometryDetElement* FindBySensitiveVolume(
71 const TString& volumePath) const;
72 AliMUONVGeometryDEIndexing* GetDEIndexing() const;
73 AliMUONGeometryEnvelopeStore* GetEnvelopeStore() const;
74 AliMUONGeometryStore* GetDetElementStore() const;
75 AliMUONGeometryDetElement* GetDetElement(Int_t detElemId) const;
76 AliMUONGeometrySVMap* GetSVMap() const;
77 Bool_t IsSensitiveVolume(Int_t volId) const;
78 Bool_t IsSensitiveVolume(const TString& volName) const;
81 AliMUONGeometryModule(const AliMUONGeometryModule& rhs);
83 AliMUONGeometryModule& operator = (const AliMUONGeometryModule& rhs);
87 Int_t GetSVIndex(Int_t svVolId) const;
90 Int_t fModuleId; // the module Id
91 TString fMotherVolume; // mother volume name
92 Int_t fNofSVs; // number of sensitive volumes
93 TArrayI* fSVVolumeIds; // densitive volumes IDs
94 TGeoCombiTrans* fTransformation;// the module transformation wrt to mother
96 AliMUONGeometryEnvelopeStore* fEnvelopes; // envelopes
97 AliMUONVGeometryDEIndexing* fDEIndexing; // DE indexing
98 AliMUONGeometryStore* fDetElements;// detection elements
99 AliMUONGeometrySVMap* fSVMap; // sensitive volumes map
101 ClassDef(AliMUONGeometryModule,2) // MUON geometry module class
107 AliMUONGeometryModule::SetMotherVolume(const TString& motherVolumeName)
108 { fMotherVolume = motherVolumeName; }
110 inline Int_t AliMUONGeometryModule::GetModuleId() const
111 { return fModuleId; }
113 inline TString AliMUONGeometryModule::GetMotherVolume() const
114 { return fMotherVolume; }
116 inline const TGeoCombiTrans* AliMUONGeometryModule::GetTransformation() const
117 { return fTransformation; }
119 inline AliMUONGeometryEnvelopeStore*
120 AliMUONGeometryModule::GetEnvelopeStore() const
121 { return fEnvelopes; }
123 inline AliMUONVGeometryDEIndexing*
124 AliMUONGeometryModule::GetDEIndexing() const
125 { return fDEIndexing; }
127 inline AliMUONGeometryStore* AliMUONGeometryModule::GetDetElementStore() const
128 { return fDetElements; }
130 inline AliMUONGeometrySVMap* AliMUONGeometryModule::GetSVMap() const
133 #endif //ALI_MUON_MODULE_GEOMETRY_H