00001 #ifndef CylindricalLorentzForce_H 00002 #define CylindricalLorentzForce_H 00003 00004 #include "TrackPropagation/RungeKutta/interface/RKDerivative.h" 00005 00006 class RKLocalFieldProvider; 00007 00008 template <typename T, int N> 00009 class CylindricalLorentzForce : public RKDerivative<T,N> { 00010 public: 00011 00012 typedef RKDerivative<T,N> Base; 00013 typedef typename Base::Scalar Scalar; 00014 typedef typename Base::Vector Vector; 00015 00016 CylindricalLorentzForce( const RKLocalFieldProvider& field) : theField(field) {} 00017 00018 virtual Vector operator()( Scalar r, const Vector& state) const; 00019 00020 private: 00021 00022 const RKLocalFieldProvider& theField; 00023 00024 }; 00025 00026 #include "TrackPropagation/RungeKutta/src/CylindricalLorentzForce.icc" 00027 00028 #endif