35#ifndef G4INTERPOLATION_DRIVER_HH
36#define G4INTERPOLATION_DRIVER_HH
53 G4int numberOfComponents = 6,
54 G4int statisticsVerbosity = 0);
83 virtual void StreamInfo( std::ostream& os )
const override;
89 std::unique_ptr<T> stepper;
95 using StepperIterator =
typename std::vector<InterpStepper>::iterator;
96 using ConstStepperIterator =
typename std::vector<InterpStepper>::const_iterator;
98 G4double OneGoodStep(StepperIterator it,
111 void InterpolateImpl(
G4double curveLength,
112 ConstStepperIterator it,
131 void PrintState()
const;
133 void CheckState()
const;
135 void AccumulateStatistics(
G4int noTrials);
139 std::vector<InterpStepper> fSteppers;
140 StepperIterator fLastStepper;
141 G4bool fKeepLastStepper =
false;
149 const G4double fFractionNextEstimate = 0.98;
150 const G4double fSmallestCurveFraction = 0.01;
157 const G4int fMaxTrials = 100;
158 G4int fTotalStepsForTrack = 0;
161 G4int fTotalNoTrials = 0;
163 G4int fmaxTrials = 0;
168#include "G4InterpolationDriver.icc"
G4InterpolationDriver(const G4InterpolationDriver &)=delete
virtual ~G4InterpolationDriver() override
const G4InterpolationDriver & operator=(const G4InterpolationDriver &)=delete
virtual void OnComputeStep() override
virtual void StreamInfo(std::ostream &os) const override
virtual void OnStartTracking() override
virtual G4bool DoesReIntegrate() const override
virtual G4int GetVerboseLevel() const override
virtual G4bool AccurateAdvance(G4FieldTrack &track, G4double hstep, G4double eps, G4double hinitial=0) override
virtual G4double AdvanceChordLimited(G4FieldTrack &track, G4double hstep, G4double eps, G4double chordDistance) override
G4InterpolationDriver(G4double hminimum, T *stepper, G4int numberOfComponents=6, G4int statisticsVerbosity=0)
virtual void SetVerboseLevel(G4int level) override
G4double[G4FieldTrack::ncompSVEC] State