35#ifndef G4INTERPOLATION_DRIVER_HH
36#define G4INTERPOLATION_DRIVER_HH
45template <
class T, G4
bool StepperCachesDchord = true>
52 G4int numberOfComponents = 6,
53 G4int statisticsVerbosity = 0);
169#include "G4InterpolationDriver.icc"
G4bool DoesReIntegrate() const override
G4double CalcChordStep(G4double stepTrialOld, G4double dChordStep, G4double fDeltaChord)
StepperIterator fLastStepper
G4double fChordStepEstimate
G4int GetVerboseLevel() const override
~G4InterpolationDriver() override
G4InterpolationDriver(G4double hminimum, T *stepper, G4int numberOfComponents=6, G4int statisticsVerbosity=0)
virtual G4double OneGoodStep(StepperIterator it, field_utils::State &y, field_utils::State &dydx, G4double &hstep, G4double eps, G4double curveLength, G4FieldTrack *track=nullptr)
void AccumulateStatistics(G4int noTrials)
G4int fTotalStepsForTrack
G4double AdvanceChordLimited(G4FieldTrack &track, G4double hstep, G4double eps, G4double chordDistance) override
G4InterpolationDriver(const G4InterpolationDriver &)=delete
void StreamInfo(std::ostream &os) const override
G4bool AccurateAdvance(G4FieldTrack &track, G4double hstep, G4double eps, G4double hinitial=0) override
const G4InterpolationDriver & operator=(const G4InterpolationDriver &)=delete
void InterpolateImpl(G4double curveLength, ConstStepperIterator it, field_utils::State &y) const
typename std::vector< InterpStepper >::iterator StepperIterator
void OnStartTracking() override
const G4double fFractionNextEstimate
typename std::vector< InterpStepper >::const_iterator ConstStepperIterator
void Interpolate(G4double curveLength, field_utils::State &y) const
G4double FindNextChord(const field_utils::State &yBegin, G4double curveLengthBegin, field_utils::State &yEnd, G4double curveLengthEnd, G4double dChord, G4double maxChordDistance)
std::vector< InterpStepper > fSteppers
void SetVerboseLevel(G4int level) override
const G4double fSmallestCurveFraction
G4double DistChord(const field_utils::State &yBegin, G4double curveLengthBegin, const field_utils::State &yEnd, G4double curveLengthEnd) const
void OnComputeStep(const G4FieldTrack *=nullptr) override
G4double[G4FieldTrack::ncompSVEC] State
std::unique_ptr< T > stepper