00001 #ifndef CartesianLorentzForce_H 00002 #define CartesianLorentzForce_H 00003 00004 #include "TrackPropagation/RungeKutta/interface/RKDerivative.h" 00005 #include "TrackPropagation/RungeKutta/interface/RKLocalFieldProvider.h" 00006 00008 00009 class CartesianLorentzForce : public RKDerivative<double,6> { 00010 public: 00011 00012 typedef RKDerivative< double,6> Base; 00013 typedef Base::Scalar Scalar; 00014 typedef Base::Vector Vector; 00015 00016 CartesianLorentzForce( const RKLocalFieldProvider& field, double ch) : 00017 theField(field), theCharge(ch) {} 00018 00019 virtual Vector operator()( Scalar z, const Vector& state) const; 00020 00021 private: 00022 00023 const RKLocalFieldProvider& theField; 00024 double theCharge; 00025 00026 }; 00027 00028 #endif