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