00001 #ifndef RK4PreciseStep_H 00002 #define RK4PreciseStep_H 00003 00004 #include "TrackPropagation/RungeKutta/interface/CartesianState.h" 00005 #include <utility> 00006 00007 class RKCartesianDerivative; 00008 00009 class RK4PreciseStep { 00010 public: 00011 00012 CartesianState 00013 operator()( const CartesianState& start, const RKCartesianDerivative& deriv, 00014 double step, double eps) const; 00015 00016 double distance( const CartesianState& a, const CartesianState& b) const; 00017 00018 std::pair<CartesianState, double> 00019 stepWithAccuracy( const CartesianState& start, const RKCartesianDerivative& deriv, double step) const; 00020 00021 private: 00022 00023 bool verbose() const; 00024 00025 }; 00026 00027 #endif