11#include <simulation/monopoles/G4MonopoleEquation.h>
14#include <CLHEP/Units/PhysicalConstants.h>
15#include <CLHEP/Units/SystemOfUnits.h>
19using namespace Belle2::Monopoles;
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] ;
56 G4double Energy = std::sqrt(pSquared +
fMassCof);
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(G4MagneticField *mField)
Constructor.
~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...
Abstract base class for different kinds of events.