33#ifndef G4QSS_STEPPER_HH
34#define G4QSS_STEPPER_HH
60 G4int num_integration_vars = 6,
205 static constexpr int DERIVATIVE_0{0};
206 static constexpr int DERIVATIVE_1{1};
207 static constexpr int DERIVATIVE_2{2};
208 static constexpr int DERIVATIVE_3{3};
210 static constexpr int VX{3};
211 static constexpr int VY{4};
212 static constexpr int VZ{5};
214 static constexpr int POSITION_IDX{0};
215 static constexpr int VELOCITY_IDX{3};
217 static constexpr G4double INFTY{1e+20};
220 G4bool fField_changed{
true};
221 G4bool fTrack_changed{
true};
223 const G4int qss_order{2};
226 Substep current_substep;
227 const G4FieldTrack* fCurrent_track{
nullptr};
233 G4double fRestMass{CLHEP::electron_mass_c2};
256#include "G4QSStepper.icc"
G4StepperType
G4StepperType defines the available integrator of particle's equation of motion in Geant4.
G4double QSStateVector[6]
G4EquationOfMotion is the abstract base class for the right hand size of the equation of motion of a ...
G4FieldTrack defines a data structure bringing together a magnetic track's state (position,...
G4MagIntegratorStepper(G4EquationOfMotion *Equation, G4int numIntegrationVariables, G4int numStateVariables=12, G4bool isFSAL=false)
void Stepper(const G4double yInput[], const G4double dydx[], G4double hstep, G4double yOutput[], G4double yError[], G4double[])
G4QSStepper(G4EquationOfMotion *equation, G4int num_integration_vars=6, G4int qssOrder=-1)
void update_x(G4int index, G4double t)
void initialize(const G4double y[])
void update_x_velocity_derivates_using_q(G4int index)
G4int IntegratorOrder() const override
void SetPrecision(G4double dq_rel, G4double dq_min)
void velocity_to_momentum(G4double *y)
void compare_time_and_update(G4int &index, G4int i)
G4int get_next_sync_index()
void Interpolate(G4double tau, G4double yOut[])
void setRestMass(G4double restMass)
void extrapolate_all_states_to_t(Substep *substep, G4double t, G4double *yOut)
void update_x_position_derivates_using_q(G4int index)
G4EquationOfMotion * GetSpecificEquation()
constexpr G4double Cubic_Function(const QSStateVector *states, G4int index, G4double delta_t)
const field_utils::State & GetYOut() const
G4double extrapolate_polynomial(QSStateVector *states, G4int index, G4double delta_t, G4int order)
void update_q(G4int index, G4double t)
void momentum_to_velocity(const G4double *momentum, G4double *out)
G4StepperType StepperType() const override
G4double DistChord() const override
constexpr int INDEX_TYPE(G4int i)
void update_x_derivates_using_q(G4int index)
void set_relativistic_coeff(const G4double *momentum)
void SetupInterpolation()
constexpr G4double Linear_Function(const QSStateVector *states, G4int index, G4double delta_t)
void update_sync_time_one_coefficient(G4int index)
void update_sync_time(G4int index)
G4double GetLastStepLength()
void Stepper(const G4double y[], const G4double[], G4double h, G4double yout[], G4double[]) override
void reset(const G4FieldTrack *track)
~G4QSStepper() override=default
constexpr G4double Parabolic_Function(const QSStateVector *states, G4int index, G4double delta_t)
G4double[G4FieldTrack::ncompSVEC] State
Structs used by G4QSStepper.