44 : fFieldParameters(fieldParameters)
45{
46
47
48 G4String directoryName = "/field/";
50 {
52 directoryName.append("/");
53 fDirectory = new G4UIdirectory(directoryName);
54 fDirectory->SetGuidance("Magnetic field control commands.");
55 }
56
57 G4String commandName = directoryName;
58 commandName.append("fieldType");
59 fFieldTypeCmd = new G4UIcmdWithAString(commandName, this);
60 G4String guidance = "Select type of the field";
61 fFieldTypeCmd->SetGuidance(guidance);
62 fFieldTypeCmd->SetParameterName("FieldType", false);
63 G4String candidates;
65 {
68 candidates += " ";
69 }
70 fFieldTypeCmd->SetCandidates(candidates);
71 fFieldTypeCmd->AvailableForStates(
73
74 commandName = directoryName;
75 commandName.append("equationType");
76 fEquationTypeCmd = new G4UIcmdWithAString(commandName, this);
77 guidance = "Select type of the equation of motion of a particle in a field";
78 fEquationTypeCmd->SetGuidance(guidance);
79 fEquationTypeCmd->SetParameterName("EquationType", false);
80 candidates = "";
82 {
85 candidates += " ";
86 }
87 fEquationTypeCmd->SetCandidates(candidates);
88 fEquationTypeCmd->AvailableForStates(
90
91 commandName = directoryName;
92 commandName.append("stepperType");
93 fStepperTypeCmd = new G4UIcmdWithAString(commandName, this);
94 guidance =
95 "Select type of the the integrator of particle's equation of motion in a "
96 "field";
97 fStepperTypeCmd->SetGuidance(guidance);
98 fStepperTypeCmd->SetParameterName("StepperType", false);
99 candidates = "";
101 {
105 candidates += " ";
106 }
107 fStepperTypeCmd->SetCandidates(candidates);
108 fStepperTypeCmd->AvailableForStates(
110
111 commandName = directoryName;
112 commandName.append("setMinimumStep");
113 fSetMinimumStepCmd = new G4UIcmdWithADoubleAndUnit(commandName, this);
114 fSetMinimumStepCmd->SetGuidance("Set minimum step in G4ChordFinder");
115 fSetMinimumStepCmd->SetParameterName("StepMinimum", false);
116 fSetMinimumStepCmd->SetDefaultUnit("mm");
117 fSetMinimumStepCmd->SetUnitCategory("Length");
118 fSetMinimumStepCmd->AvailableForStates(
120
121 commandName = directoryName;
122 commandName.append("setDeltaChord");
123 fSetDeltaChordCmd = new G4UIcmdWithADoubleAndUnit(commandName, this);
124 fSetDeltaChordCmd->SetGuidance("Set delta chord in G4ChordFinder");
125 fSetDeltaChordCmd->SetParameterName("DeltaChord", false);
126 fSetDeltaChordCmd->SetDefaultUnit("mm");
127 fSetDeltaChordCmd->SetUnitCategory("Length");
128 fSetDeltaChordCmd->AvailableForStates(
130
131 commandName = directoryName;
132 commandName.append("setDeltaOneStep");
133 fSetDeltaOneStepCmd = new G4UIcmdWithADoubleAndUnit(commandName, this);
134 fSetDeltaOneStepCmd->SetGuidance(
135 "Set delta one step in global field manager");
136 fSetDeltaOneStepCmd->SetParameterName("DeltaOneStep", false);
137 fSetDeltaOneStepCmd->SetDefaultUnit("mm");
138 fSetDeltaOneStepCmd->SetUnitCategory("Length");
139 fSetDeltaOneStepCmd->AvailableForStates(
141
142 commandName = directoryName;
143 commandName.append("setDeltaIntersection");
144 fSetDeltaIntersectionCmd = new G4UIcmdWithADoubleAndUnit(commandName, this);
145 fSetDeltaIntersectionCmd->SetGuidance(
146 "Set delta intersection in global field manager");
147 fSetDeltaIntersectionCmd->SetParameterName("DeltaIntersection", false);
148 fSetDeltaIntersectionCmd->SetDefaultUnit("mm");
149 fSetDeltaIntersectionCmd->SetUnitCategory("Length");
150 fSetDeltaIntersectionCmd->AvailableForStates(
152
153 commandName = directoryName;
154 commandName.append("setMinimumEpsilonStep");
155 fSetMinimumEpsilonStepCmd = new G4UIcmdWithADouble(commandName, this);
156 fSetMinimumEpsilonStepCmd->SetGuidance(
157 "Set minimum epsilon step in global field manager");
158 fSetMinimumEpsilonStepCmd->SetParameterName("MinimumEpsilonStep", false);
159 fSetMinimumEpsilonStepCmd->AvailableForStates(
161
162 commandName = directoryName;
163 commandName.append("setMaximumEpsilonStep");
164 fSetMaximumEpsilonStepCmd = new G4UIcmdWithADouble(commandName, this);
165 fSetMaximumEpsilonStepCmd->SetGuidance(
166 "Set maximum epsilon step in global field manager");
167 fSetMaximumEpsilonStepCmd->SetParameterName("MaximumEpsilonStep", false);
168 fSetMaximumEpsilonStepCmd->AvailableForStates(
170
171 commandName = directoryName;
172 commandName.append("setConstDistance");
173 fSetConstDistanceCmd = new G4UIcmdWithADoubleAndUnit(commandName, this);
174 fSetConstDistanceCmd->SetGuidance(
175 "Set the distance within which the field is considered constant.");
176 fSetConstDistanceCmd->SetGuidance(
177 "Non-zero value will trigger creating a cached magnetic field.");
178 fSetConstDistanceCmd->SetParameterName("ConstDistance", false);
179 fSetConstDistanceCmd->SetDefaultUnit("mm");
180 fSetConstDistanceCmd->SetUnitCategory("Length");
181 fSetConstDistanceCmd->SetRange("ConstDistance >= 0");
183
184 commandName = std::move(directoryName);
185 commandName.append("printParameters");
186 fPrintParametersCmd = new G4UIcmdWithoutParameter(commandName, this);
187 fPrintParametersCmd->SetGuidance("Prints all accuracy parameters.");
188 fPrintParametersCmd->AvailableForStates(
190}
G4EquationType
G4EquationType defines the types of equations of motion of a particle in a field in Geant4.
G4FieldType
G4FieldType defines the available fields in Geant4.
@ kMagnetic
magnetic field
G4StepperType
G4StepperType defines the available integrator of particle's equation of motion in Geant4.
@ kCashKarpRKF45
G4CashKarpRKF45.
@ kUserStepper
User defined stepper.
const G4String & GetVolumeName() const
static G4String EquationTypeName(G4EquationType equation)
static G4String StepperTypeName(G4StepperType stepper)
static G4String FieldTypeName(G4FieldType field)