![]() |
![]() |
00001 #ifndef RK4PreciseSolver_H 00002 #define RK4PreciseSolver_H 00003 00004 #include "TrackPropagation/RungeKutta/interface/RKSolver.h" 00005 #include "Utilities/UI/interface/SimpleConfigurable.h" 00006 00007 template <typename T, int N> 00008 class RK4PreciseSolver : public RKSolver<T,N> { 00009 public: 00010 00011 typedef RKSolver<T,N> Base; 00012 typedef typename Base::Scalar Scalar; 00013 typedef typename Base::Vector Vector; 00014 00015 virtual Vector operator()( Scalar startPar, const Vector& startState, 00016 Scalar step, const RKDerivative<T,N>& deriv, 00017 const RKDistance<T,N>& dist, 00018 Scalar eps); 00019 00020 std::pair< Vector, T> 00021 stepWithAccuracy( Scalar startPar, const Vector& startState, 00022 const RKDerivative<T,N>& deriv, 00023 const RKDistance<T,N>& dist, Scalar step); 00024 00025 protected: 00026 00027 bool verbose() const { 00028 static bool verb = SimpleConfigurable<bool>(false,"RKSolver:verbose").value(); 00029 return verb; 00030 } 00031 00032 }; 00033 00034 #include "TrackPropagation/RungeKutta/src/RK4PreciseSolver.icc" 00035 00036 #endif