File indexing completed on 2024-04-06 12:31:43
0001 #ifndef RK4PreciseSolver_H
0002 #define RK4PreciseSolver_H
0003
0004 #include "FWCore/Utilities/interface/Visibility.h"
0005 #include "RKSolver.h"
0006 #include "Utilities/UI/interface/SimpleConfigurable.h"
0007
0008 template <typename T, int N>
0009 class dso_internal RK4PreciseSolver : public RKSolver<T,N> {
0010 public:
0011
0012 typedef RKSolver<T,N> Base;
0013 typedef typename Base::Scalar Scalar;
0014 typedef typename Base::Vector Vector;
0015
0016 virtual Vector operator()( Scalar startPar, const Vector& startState,
0017 Scalar step, const RKDerivative<T,N>& deriv,
0018 const RKDistance<T,N>& dist,
0019 float eps);
0020
0021 std::pair< Vector, T>
0022 stepWithAccuracy( Scalar startPar, const Vector& startState,
0023 const RKDerivative<T,N>& deriv,
0024 const RKDistance<T,N>& dist, float step);
0025
0026 protected:
0027
0028 bool verbose() const {
0029 static bool verb = SimpleConfigurable<bool>(false,"RKSolver:verbose").value();
0030 return verb;
0031 }
0032
0033 };
0034
0035 #include "TrackPropagation/RungeKutta/src/RK4PreciseSolver.icc"
0036
0037 #endif