00001 // $Id: DetElemFinder.h,v 1.2 2008/07/21 14:52:40 cattanem Exp $ 00002 #ifndef DETELEMFINDER_H 00003 #define DETELEMFINDER_H 1 00004 00005 // Include files 00006 #include "GaudiKernel/Service.h" 00007 #include "GaudiKernel/HashMap.h" 00008 #include "DetDesc/IDetElemFinder.h" 00009 00017 class DetElemFinder: public virtual Service, public virtual IDetElemFinder { 00018 public: 00019 00021 DetElemFinder( const std::string& name, ISvcLocator* svcloc ); 00022 00023 virtual ~DetElemFinder( ); 00024 00029 virtual StatusCode queryInterface(const InterfaceID& riid, void** ppvUnknown); 00030 00033 virtual const IDetectorElement * detectorElementForPath(const std::string &path) const; 00034 00036 virtual StatusCode initialize(); 00037 00039 virtual StatusCode finalize(); 00040 00041 protected: 00042 00043 private: 00044 00047 StatusCode insert(const IDetectorElement *de, const std::string &parent_path = ""); 00048 00051 StatusCode detector_element_path(const IDetectorElement *de, std::string &path, 00052 const std::string &parent_path = ""); 00053 00055 friend class SvcFactory<DetElemFinder>; 00056 00058 std::string m_detDataSvcName; 00059 00061 std::string m_rootElement; 00062 00064 bool m_dumpMap; 00065 00066 typedef GaudiUtils::HashMap<std::string, const IDetectorElement *> map_type; 00068 map_type m_map; 00069 00070 }; 00071 #endif // DETELEMFINDER_H