37#ifndef G4TMAG_ERROR_STEPPER_HH
38#define G4TMAG_ERROR_STEPPER_HH
45template <
class T_Stepper,
class T_Equation,
unsigned int N>
50 G4int numStateVariables = 12)
93template <class T_Stepper, class T_Equation,
unsigned int N >
108 for(
unsigned int i = 0; i < N; ++i)
115 for(
unsigned int i = N; i < maxvar; ++i)
116 yOutput[i] = yInput[i];
122 static_cast<T_Stepper*
>(
this)->DumbStepper(
yInitial, dydx, halfStep,
125 static_cast<T_Stepper*
>(
this)->DumbStepper(
yMiddle,
dydxMid, halfStep,
133 static_cast<T_Stepper*
>(
this)->DumbStepper(
yInitial, dydx, hstep,
yOneStep);
134 for(
unsigned int i = 0; i < N; ++i)
136 yError[i] = yOutput[i] -
yOneStep[i];
139 T_Stepper::IntegratorCorrection;
151template <
class T_Stepper,
class T_Equation,
unsigned int N >
171 distChord = distLine;
CLHEP::Hep3Vector G4ThreeVector
static G4double Distline(const G4ThreeVector &OtherPnt, const G4ThreeVector &LinePntA, const G4ThreeVector &LinePntB)
G4int GetNumberOfStateVariables() const
G4ThreeVector fFinalPoint
G4double DistChord() const override final
G4ThreeVector fInitialPoint
G4TMagErrorStepper(T_Equation *EqRhs, G4int numberOfVariables, G4int numStateVariables=12)
G4double yInitial[N< 8 ? 8 :N]
G4double yOneStep[N< 8 ? 8 :N]
G4double dydxMid[N< 8 ? 8 :N]
T_Equation * fEquation_Rhs
virtual ~G4TMagErrorStepper()
void RightHandSide(G4double y[], G4double dydx[])
void Stepper(const G4double yInput[], const G4double dydx[], G4double hstep, G4double yOutput[], G4double yError[]) override final
G4double yMiddle[N< 8 ? 8 :N]