/* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. * * See cxx source for full Copyright notice */ /* $Id$ */ // Revision of includes 07/05/2004 /// \ingroup geometry /// \class AliMUONGeometryModule /// \brief Geometry parameters for detector module /// /// Class for definition of the detector module parameters /// (the transformations of detection elements, mapping between /// sensitive volumes and detection elements). /// /// \author Ivana Hrivnacova, IPN Orsay #ifndef ALI_MUON_GEOMETRY_MODULE_H #define ALI_MUON_GEOMETRY_MODULE_H #include "AliMUONGeometryModuleTransformer.h" #include #include class AliMUONGeometryEnvelope; class AliMUONGeometryEnvelopeStore; class AliMUONGeometryDetElement; class AliMUONStringIntMap; class TGeoTranslation; class TGeoRotation; class TGeoCombiTrans; class TObjArray; class TArrayI; class AliMUONGeometryModule : public TObject { public: AliMUONGeometryModule(Int_t moduleId); AliMUONGeometryModule(); virtual ~AliMUONGeometryModule(); // set methods // void SetTransformation(const TGeoCombiTrans& transform); void SetVolumePath(const TString& volumePath); void SetIsVirtual(Bool_t isVirtual); void SetSensitiveVolume(Int_t volId); void SetSensitiveVolume(const TString& name); void SetAlign(Bool_t align); // get methods // Bool_t IsVirtual() const; Int_t GetModuleId() const; TString GetVolumePath() const; AliMUONGeometryDetElement* FindBySensitiveVolume( const TString& volumePath) const; Bool_t IsSensitiveVolume(Int_t volId) const; Bool_t IsSensitiveVolume(const TString& volName) const; AliMUONGeometryEnvelopeStore* GetEnvelopeStore() const; AliMUONStringIntMap* GetSVMap() const; AliMUONGeometryModuleTransformer* GetTransformer() const; protected: /// Not implemented AliMUONGeometryModule(const AliMUONGeometryModule& rhs); /// Not implemented AliMUONGeometryModule& operator = (const AliMUONGeometryModule& rhs); private: // methods Int_t GetSVIndex(Int_t svVolId) const; // data members Bool_t fIsVirtual; ///< \brief true if module is not represented /// by a real volume Int_t fNofSVs; ///< number of sensitive volumes TArrayI* fSVVolumeIds; ///< sensitive volumes IDs AliMUONGeometryEnvelopeStore* fEnvelopes; ///< envelopes AliMUONStringIntMap* fSVMap; ///< sensitive volumes map AliMUONGeometryModuleTransformer* fTransformer;///< geometry transformations ClassDef(AliMUONGeometryModule,4) // MUON geometry module class }; // inline functions /// Set virtuality (true if module is not represented by a real volume) inline void AliMUONGeometryModule::SetIsVirtual(Bool_t isVirtual) { fIsVirtual = isVirtual; } /// Return true if module is not represented by a real volume inline Bool_t AliMUONGeometryModule::IsVirtual() const { return fIsVirtual; } /// Return module ID inline Int_t AliMUONGeometryModule::GetModuleId() const { return fTransformer->GetModuleId(); } /// Return the full path of aligned module volume or envelope in geometry inline TString AliMUONGeometryModule::GetVolumePath() const { return fTransformer->GetVolumePath(); } /// Return envelopes associated with this module inline AliMUONGeometryEnvelopeStore* AliMUONGeometryModule::GetEnvelopeStore() const { return fEnvelopes; } /// Return sensitive volume map inline AliMUONStringIntMap* AliMUONGeometryModule::GetSVMap() const { return fSVMap; } /// Return transformer inline AliMUONGeometryModuleTransformer* AliMUONGeometryModule::GetTransformer() const { return fTransformer; } #endif //ALI_MUON_GEOMETRY_MODULE_H