00001
00002 #ifndef GAUDIKERNEL_IMAGNETICFIELDSVC_H
00003 #define GAUDIKERNEL_IMAGNETICFIELDSVC_H
00004
00005
00006
00007 #include "GaudiKernel/IService.h"
00008 #include "GaudiKernel/StatusCode.h"
00009
00010
00011
00012 template <class TYPE> class SvcFactory;
00013 namespace HepGeom {
00014 template <class T> class Vector3D;
00015 template <class T> class Point3D;
00016 }
00017
00018
00019
00020 static const InterfaceID IID_IMagneticFieldSvc(80, 1 , 0);
00021
00022
00029 class IMagneticFieldSvc : virtual public IService {
00030
00031 public:
00033 static const InterfaceID& interfaceID() { return IID_IMagneticFieldSvc; }
00034
00035
00036
00037
00038
00039 virtual StatusCode fieldVector( const HepGeom::Point3D<double>& xyz, HepGeom::Vector3D<double>& fvec ) const = 0;
00040 virtual StatusCode uniFieldVector( const HepGeom::Point3D<double>& xyz, HepGeom::Vector3D<double>& fvec ) const = 0;
00041 virtual double getReferField() = 0;
00042 virtual bool ifRealField() const = 0;
00043
00044 };
00045
00046 #endif // GAUDIKERNEL_IMAGNETICFIELDSVC_H