CMS 3D CMS Logo

/data/refman/pasoursint/CMSSW_4_1_8_patch9/src/TrackPropagation/RungeKutta/interface/RK4PreciseSolver.h

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