30 G4Mag_UsualEqRhs* iEquation =
new G4Mag_UsualEqRhs(
this);
33 if (std::find(SUPPORTED_STEPPERS.begin(), SUPPORTED_STEPPERS.end(), integration_stepper) == SUPPORTED_STEPPERS.end()) {
35 0,
"Integration Stepper %1 not supported. Using default: %2", integration_stepper,
40 G4MagIntegratorStepper* mag_int_stepper =
nullptr;
44 if (integration_stepper ==
"G4DormandPrince745") {
45 mag_int_stepper =
new G4DormandPrince745(iEquation);
46 }
else if (integration_stepper ==
"G4ClassicalRK4") {
47 mag_int_stepper =
new G4ClassicalRK4(iEquation);
48 }
else if (integration_stepper ==
"G4SimpleRunge") {
49 mag_int_stepper =
new G4HelixSimpleRunge(iEquation);
50 }
else if (integration_stepper ==
"G4HelixExplicitEuler") {
51 mag_int_stepper =
new G4HelixExplicitEuler(iEquation);
52 }
else if (integration_stepper ==
"G4HelixImplicitEuler") {
53 mag_int_stepper =
new G4HelixImplicitEuler(iEquation);
54 }
else if (integration_stepper ==
"G4CashKarpRKF45") {
55 mag_int_stepper =
new G4CashKarpRKF45(iEquation);
56 }
else if (integration_stepper ==
"G4RKG3_Stepper") {
57 mag_int_stepper =
new G4RKG3_Stepper(iEquation);
58 }
else if (integration_stepper ==
"G4SimpleHeum") {
59 mag_int_stepper =
new G4SimpleHeum(iEquation);
60 }
else if (integration_stepper ==
"G4NystromRK4") {
61 mag_int_stepper =
new G4NystromRK4(iEquation);
62 }
else if (integration_stepper ==
"G4ImplicitEuler") {
63 mag_int_stepper =
new G4ImplicitEuler(iEquation);
64 }
else if (integration_stepper ==
"G4ExplicitEuler") {
65 mag_int_stepper =
new G4ExplicitEuler(iEquation);
73 G4ChordFinder* fChordFinder =
new G4ChordFinder(
this, minimum_step, mag_int_stepper);
76 return new G4FieldManager(
this, fChordFinder);