Go to the documentation of this file.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