11 #include <simulation/monopoles/G4MonopoleEquation.h>
14 #include <CLHEP/Units/PhysicalConstants.h>
15 #include <CLHEP/Units/SystemOfUnits.h>
19 using namespace Belle2::Monopoles;
20 using namespace CLHEP;
22 G4MonopoleEquation::G4MonopoleEquation(G4MagneticField* mField)
23 : G4EquationOfMotion(mField)
32 G4double particleMass)
34 G4double particleMagneticCharge = particleChargeState.MagneticCharge();
35 G4double particleElectricCharge = particleChargeState.GetCharge();
38 fElCharge = eplus * particleElectricCharge * c_light;
40 fMagCharge = eplus * particleMagneticCharge * c_light ;
42 fMassCof = particleMass * particleMass ;
47 const G4double Field[],
48 G4double dydx[])
const
54 G4double pSquared = y[3] * y[3] + y[4] * y[4] + y[5] * y[5] ;
58 G4double pModuleInverse = 1.0 /
std::sqrt(pSquared);
60 G4double inverse_velocity = Energy * pModuleInverse / c_light;
62 G4double cofEl =
fElCharge * pModuleInverse ;
63 G4double cofMag =
fMagCharge * Energy * pModuleInverse;
66 dydx[0] = y[3] * pModuleInverse ;
67 dydx[1] = y[4] * pModuleInverse ;
68 dydx[2] = y[5] * pModuleInverse ;
80 dydx[3] = cofMag * Field[0] + cofEl * (y[4] * Field[2] - y[5] * Field[1]);
81 dydx[4] = cofMag * Field[1] + cofEl * (y[5] * Field[0] - y[3] * Field[2]);
82 dydx[5] = cofMag * Field[2] + cofEl * (y[3] * Field[1] - y[4] * Field[0]);
98 dydx[7] = inverse_velocity;
G4double fElCharge
Electric charge in case of a dyon.
G4double fMagCharge
Magnetic charge of the monopole, in e+ units.
~G4MonopoleEquation()
Destructor.
G4double fMassCof
Square of the monopole mass.
virtual void SetChargeMomentumMass(G4ChargeState particleChargeState, G4double momentum, G4double mass)
G4EquationOfMotion::SetChargeMomentumMass() implementation.
virtual void EvaluateRhsGivenB(const G4double y[], const G4double Field[], G4double dydx[]) const
Given the value of the electromagnetic field, this function calculates the value of the derivative dy...
double sqrt(double a)
sqrt for double
Abstract base class for different kinds of events.