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 /// \brief Geometry parameters for detector module
11 /// Class for definition of the detector module parameters
12 /// (the transformations of detection elements, mapping between
13 /// sensitive volumes and detection elements).
15 /// \author Ivana Hrivnacova, IPN Orsay
17 #ifndef ALI_MUON_GEOMETRY_MODULE_H
18 #define ALI_MUON_GEOMETRY_MODULE_H
20 #include "AliMUONGeometryModuleTransformer.h"
25 class AliMUONGeometryEnvelope;
26 class AliMUONGeometryEnvelopeStore;
27 class AliMUONGeometryDetElement;
28 class AliMUONGeometryStore;
29 class AliMUONStringIntMap;
31 class TGeoTranslation;
37 class AliMUONGeometryModule : public TObject
40 AliMUONGeometryModule(Int_t moduleId);
41 AliMUONGeometryModule();
42 virtual ~AliMUONGeometryModule();
46 void SetTransformation(const TGeoCombiTrans& transform);
47 void SetVolumePath(const TString& volumePath);
48 void SetIsVirtual(Bool_t isVirtual);
50 void SetSensitiveVolume(Int_t volId);
51 void SetSensitiveVolume(const TString& name);
52 void SetAlign(Bool_t align);
56 Bool_t IsVirtual() const;
57 Int_t GetModuleId() const;
58 TString GetVolumePath() const;
60 AliMUONGeometryDetElement* FindBySensitiveVolume(
61 const TString& volumePath) const;
62 Bool_t IsSensitiveVolume(Int_t volId) const;
63 Bool_t IsSensitiveVolume(const TString& volName) const;
65 AliMUONGeometryEnvelopeStore* GetEnvelopeStore() const;
66 AliMUONStringIntMap* GetSVMap() const;
67 AliMUONGeometryModuleTransformer* GetTransformer() const;
70 AliMUONGeometryModule(const AliMUONGeometryModule& rhs);
71 AliMUONGeometryModule& operator = (const AliMUONGeometryModule& rhs);
75 Int_t GetSVIndex(Int_t svVolId) const;
78 Bool_t fIsVirtual; ///< \brief true if module is not represented
80 Int_t fNofSVs; ///< number of sensitive volumes
81 TArrayI* fSVVolumeIds; ///< sensitive volumes IDs
83 AliMUONGeometryEnvelopeStore* fEnvelopes; ///< envelopes
84 AliMUONStringIntMap* fSVMap; ///< sensitive volumes map
85 AliMUONGeometryModuleTransformer* fTransformer;///< geometry transformations
87 ClassDef(AliMUONGeometryModule,4) // MUON geometry module class
92 /// Set virtuality (true if module is not represented by a real volume)
93 inline void AliMUONGeometryModule::SetIsVirtual(Bool_t isVirtual)
94 { fIsVirtual = isVirtual; }
96 /// Return true if module is not represented by a real volume
97 inline Bool_t AliMUONGeometryModule::IsVirtual() const
98 { return fIsVirtual; }
101 inline Int_t AliMUONGeometryModule::GetModuleId() const
102 { return fTransformer->GetModuleId(); }
104 /// Return the full path of aligned module volume or envelope in geometry
105 inline TString AliMUONGeometryModule::GetVolumePath() const
106 { return fTransformer->GetVolumePath(); }
108 /// Return envelopes associated with this module
110 AliMUONGeometryEnvelopeStore* AliMUONGeometryModule::GetEnvelopeStore() const
111 { return fEnvelopes; }
113 /// Return sensitive volume map
115 AliMUONStringIntMap* AliMUONGeometryModule::GetSVMap() const
118 /// Return transformer
120 AliMUONGeometryModuleTransformer* AliMUONGeometryModule::GetTransformer() const
121 { return fTransformer; }
123 #endif //ALI_MUON_GEOMETRY_MODULE_H