56 spin = particleCharge.
GetSpin();
58 omegac = (eplus/mass)*c_light;
60 G4double muB = 0.5*eplus*hbar_Planck/(mass/c_squared);
63 if ( spin != 0. ) g_BMT = (std::abs(magMoment)/muB)/spin;
66 anomaly = (g_BMT - 2.)/2.;
79 G4double inv_momentum_magnitude = 1.0 / std::sqrt( momentum_mag_square );
82 dydx[0] = y[3] * inv_momentum_magnitude;
83 dydx[1] = y[4] * inv_momentum_magnitude;
84 dydx[2] = y[5] * inv_momentum_magnitude;
94 dydx[3] = cof*(y[4]*
B[2] - y[5]*
B[1]) ;
95 dydx[4] = cof*(y[5]*
B[0] - y[3]*
B[2]) ;
96 dydx[5] = cof*(y[3]*
B[1] - y[4]*
B[0]) ;
100 u *= inv_momentum_magnitude;
104 G4double udb = anomaly*beta*gamma/(1.+gamma) * (BField * u);
105 G4double ucb = (anomaly+1./gamma)/beta;
108 dydx[6] = dydx[7] = dydx[8] = 0.0;
123 if (Spin.mag2() != 0.)
125 dSpin = pcharge*omegac*(ucb*(Spin.cross(BField))-udb*(Spin.cross(u)));
129 dydx[10] = dSpin.
y();
130 dydx[11] = dSpin.
z();
double B(double temperature)
G4double GetCharge() const
G4double GetMagneticDipoleMoment() const
virtual void SetChargeMomentumMass(G4ChargeState particleCharge, G4double MomentumXc, G4double mass)
G4Mag_SpinEqRhs(G4MagneticField *MagField)
void SetChargeMomentumMass(G4ChargeState particleCharge, G4double MomentumXc, G4double mass)
void EvaluateRhsGivenB(const G4double y[], const G4double B[3], G4double dydx[]) const