17 #include "CLHEP/Units/PhysicalConstants.h" 18 #include "CLHEP/Units/SystemOfUnits.h" 24 : G4EquationOfMotion( emField )
37 G4double particleMass)
39 G4double particleMagneticCharge= particleChargeState.MagneticCharge();
40 G4double particleElectricCharge= particleChargeState.GetCharge();
42 fElCharge = CLHEP::eplus*particleElectricCharge*CLHEP::c_light;
44 fMagCharge = CLHEP::eplus*particleMagneticCharge*CLHEP::c_light;
50 fMassCof = particleMass*particleMass ;
57 const G4double Field[],
58 G4double dydx[] )
const 64 G4double pSquared = y[3]*y[3] + y[4]*y[4] + y[5]*y[5] ;
68 G4double pModuleInverse = 1.0/
std::sqrt(pSquared);
70 G4double inverse_velocity = Energy * pModuleInverse / CLHEP::c_light;
72 G4double cofEl =
fElCharge * pModuleInverse ;
73 G4double cofMag =
fMagCharge * Energy * pModuleInverse;
76 dydx[0] = y[3]*pModuleInverse ;
77 dydx[1] = y[4]*pModuleInverse ;
78 dydx[2] = y[5]*pModuleInverse ;
90 dydx[3] = cofMag * Field[0] + cofEl * (y[4]*Field[2] - y[5]*Field[1]);
91 dydx[4] = cofMag * Field[1] + cofEl * (y[5]*Field[0] - y[3]*Field[2]);
92 dydx[5] = cofMag * Field[2] + cofEl * (y[3]*Field[1] - y[4]*Field[0]);
108 dydx[7] = inverse_velocity;
~MonopoleEquation() override
MonopoleEquation(G4MagneticField *emField)
void EvaluateRhsGivenB(const G4double y[], const G4double Field[], G4double dydx[]) const override
void SetChargeMomentumMass(G4ChargeState particleChargeState, G4double momentum, G4double mass) override