30 G4Mag_UsualEqRhs* iEquation =
new G4Mag_UsualEqRhs(
this);
33 if (std::find(SUPPORTED_STEPPERS.begin(), SUPPORTED_STEPPERS.end(), integration_stepper) == SUPPORTED_STEPPERS.end()) {
38 G4MagIntegratorStepper* mag_int_stepper =
nullptr;
42 if (integration_stepper ==
"G4DormandPrince745") {
43 mag_int_stepper =
new G4DormandPrince745(iEquation);
44 }
else if (integration_stepper ==
"G4ClassicalRK4") {
45 mag_int_stepper =
new G4ClassicalRK4(iEquation);
46 }
else if (integration_stepper ==
"G4SimpleRunge") {
47 mag_int_stepper =
new G4HelixSimpleRunge(iEquation);
48 }
else if (integration_stepper ==
"G4HelixExplicitEuler") {
49 mag_int_stepper =
new G4HelixExplicitEuler(iEquation);
50 }
else if (integration_stepper ==
"G4HelixImplicitEuler") {
51 mag_int_stepper =
new G4HelixImplicitEuler(iEquation);
52 }
else if (integration_stepper ==
"G4CashKarpRKF45") {
53 mag_int_stepper =
new G4CashKarpRKF45(iEquation);
54 }
else if (integration_stepper ==
"G4RKG3_Stepper") {
55 mag_int_stepper =
new G4RKG3_Stepper(iEquation);
56 }
else if (integration_stepper ==
"G4SimpleHeum") {
57 mag_int_stepper =
new G4SimpleHeum(iEquation);
58 }
else if (integration_stepper ==
"G4NystromRK4") {
59 mag_int_stepper =
new G4NystromRK4(iEquation);
60 }
else if (integration_stepper ==
"G4ImplicitEuler") {
61 mag_int_stepper =
new G4ImplicitEuler(iEquation);
62 }
else if (integration_stepper ==
"G4ExplicitEuler") {
63 mag_int_stepper =
new G4ExplicitEuler(iEquation);
70 G4ChordFinder* fChordFinder =
new G4ChordFinder(
this, minimum_step, mag_int_stepper);
73 return new G4FieldManager(
this, fChordFinder);