/search.css" rel="stylesheet" type="text/css"/> /search.js">
00001 00011 #ifndef COORDSYSSVC_H 00012 #define COORDSYSSVC_H 00013 00014 #include "GaudiKernel/Service.h" 00015 #include "DetHelpers/ICoordSysSvc.h" 00016 00017 class IDataProviderSvc; 00018 class IGeometryInfo; 00019 00020 #include <string> 00021 00022 class CoordSysSvc : public Service, 00023 virtual public ICoordSysSvc 00024 { 00025 public: 00026 // Service interface 00027 CoordSysSvc(const std::string& name, ISvcLocator *svc); 00028 ~CoordSysSvc(); 00029 virtual StatusCode initialize(); 00030 virtual StatusCode finalize(); 00031 virtual StatusCode queryInterface(const InterfaceID& riid, 00032 void** ppvInterface); 00033 00035 00041 IDetectorElement* belongsToDE(const Gaudi::XYZPoint& globalPoint, 00042 IDetectorElement* start=0, int depth=-1); 00043 00050 IDetectorElement* coordSysDE(const Gaudi::XYZPoint& globalPoint, 00051 int height=0); 00052 00053 IDetectorElement* coordSysDE(const Gaudi::XYZPoint& globalPoint, 00054 IDetectorElement* start, int height=0); 00055 00056 IDetectorElement* nextHigherCoordSysDE(IDetectorElement* csde); 00057 00058 private: 00059 00063 std::string m_CoordSysUserParameter; 00064 00068 std::string m_TopDetectorElementName; 00069 00070 IDataProviderSvc* m_detSvc; 00071 00072 // Top GI 00073 IGeometryInfo* m_topGI; 00074 00075 // Cache last optimization attempt 00076 IDetectorElement* m_lastBelongsTo; 00077 IDetectorElement* m_lastCoordSys; 00078 00079 }; 00080 00081 00082 #endif // COORDSYSSVC_H