30 G4Mag_UsualEqRhs* iEquation =
new G4Mag_UsualEqRhs(
this);
33 if (std::find(SUPPORTED_STEPPERS.begin(), SUPPORTED_STEPPERS.end(), integration_stepper) == SUPPORTED_STEPPERS.end()) {
34 log->info(0,
"Integration Stepper ", integration_stepper,
39 G4MagIntegratorStepper* mag_int_stepper =
nullptr;
43 if (integration_stepper ==
"G4DormandPrince745") {
44 mag_int_stepper =
new G4DormandPrince745(iEquation);
45 }
else if (integration_stepper ==
"G4ClassicalRK4") {
46 mag_int_stepper =
new G4ClassicalRK4(iEquation);
47 }
else if (integration_stepper ==
"G4SimpleRunge") {
48 mag_int_stepper =
new G4HelixSimpleRunge(iEquation);
49 }
else if (integration_stepper ==
"G4HelixExplicitEuler") {
50 mag_int_stepper =
new G4HelixExplicitEuler(iEquation);
51 }
else if (integration_stepper ==
"G4HelixImplicitEuler") {
52 mag_int_stepper =
new G4HelixImplicitEuler(iEquation);
53 }
else if (integration_stepper ==
"G4CashKarpRKF45") {
54 mag_int_stepper =
new G4CashKarpRKF45(iEquation);
55 }
else if (integration_stepper ==
"G4RKG3_Stepper") {
56 mag_int_stepper =
new G4RKG3_Stepper(iEquation);
57 }
else if (integration_stepper ==
"G4SimpleHeum") {
58 mag_int_stepper =
new G4SimpleHeum(iEquation);
59 }
else if (integration_stepper ==
"G4NystromRK4") {
60 mag_int_stepper =
new G4NystromRK4(iEquation);
61 }
else if (integration_stepper ==
"G4ImplicitEuler") {
62 mag_int_stepper =
new G4ImplicitEuler(iEquation);
63 }
else if (integration_stepper ==
"G4ExplicitEuler") {
64 mag_int_stepper =
new G4ExplicitEuler(iEquation);
68 " not found. Exiting.");
72 G4ChordFinder* fChordFinder =
new G4ChordFinder(
this, minimum_step, mag_int_stepper);
75 return new G4FieldManager(
this, fChordFinder);