40#ifndef G4TMAGFIELD_EQUATION_HH
41#define G4TMAGFIELD_EQUATION_HH
49template <
class T_Field>
64 itsField->T_Field::GetFieldValue(Point, Field);
71 G4double momentum_mag_square = y[3]*y[3] + y[4]*y[4] + y[5]*y[5];
72 G4double inv_momentum_magnitude = 1.0 / std::sqrt( momentum_mag_square );
75 dydx[0] = y[3]*inv_momentum_magnitude;
76 dydx[1] = y[4]*inv_momentum_magnitude;
77 dydx[2] = y[5]*inv_momentum_magnitude;
79 dydx[3] = cof*(y[4]*
B[2] - y[5]*
B[1]) ;
80 dydx[4] = cof*(y[5]*
B[0] - y[3]*
B[2]) ;
81 dydx[5] = cof*(y[3]*
B[1] - y[4]*
B[0]) ;
90 G4double Field[G4maximum_number_of_field_components];
102 enum { G4maximum_number_of_field_components = 24 };
G4double B(G4double temperature)
void RightHandSide(const G4double y[], G4double dydx[]) const
G4Mag_UsualEqRhs(G4MagneticField *MagField)
void TEvaluateRhsGivenB(const G4double y[], const G4double B[3], G4double dydx[]) const
G4double PositionAndTime[4]
__attribute__((always_inline)) void RightHandSide(const G4double y[]
virtual ~G4TMagFieldEquation()=default
TEvaluateRhsGivenB(y, Field, dydx)
G4TMagFieldEquation(T_Field *f)
void GetFieldValue(const G4double Point[4], G4double Field[]) const
GetFieldValue(PositionAndTime, Field)