00001 // $Id: BIntegrator.h,v 1.3 2007/02/26 14:50:47 cattanem Exp $ 00002 #ifndef MAGNET_BINTEGRATOR_H 00003 #define MAGNET_BINTEGRATOR_H 1 00004 00005 // Include files 00006 // ------------- 00007 // from Gaudi 00008 #include "GaudiAlg/GaudiTool.h" 00009 00010 // from LHCbKernel 00011 #include "Kernel/IBIntegrator.h" // Interface 00012 00013 // Math Definitions 00014 #include "GaudiKernel/Point3DTypes.h" 00015 #include "GaudiKernel/Vector3DTypes.h" 00016 00017 // Forward declarations 00018 class IMagneticFieldSvc; 00019 00025 class BIntegrator : public GaudiTool, 00026 virtual public IBIntegrator { 00027 public: 00029 BIntegrator( const std::string& type, 00030 const std::string& name, 00031 const IInterface* parent ); 00032 00033 virtual ~BIntegrator( ); 00034 00035 StatusCode initialize(); 00036 00038 StatusCode calculateBdlAndCenter( const Gaudi::XYZPoint& beginPoint, 00039 const Gaudi::XYZPoint& endPoint, 00040 const double tX, 00041 const double tY, 00042 double& zCenter, 00043 Gaudi::XYZVector& Bdl ) const; 00044 00045 protected: 00046 00047 private: 00048 StatusCode calculateBdlCenter(); 00049 00050 IMagneticFieldSvc* m_pIMF; // Pointer to the magnetic field service 00051 00052 int m_nSteps; 00053 Gaudi::XYZPoint m_centerZ; 00054 double m_firstZ; 00055 double m_lastZ; 00056 00057 }; 00058 #endif // MAGNET_BINTEGRATOR_H