44 : fFieldParameters(fieldParameters)
51 directoryName.append(fieldParameters->GetVolumeName());
52 directoryName.append(
"/");
53 fDirectory = new G4UIdirectory(directoryName);
54 fDirectory->SetGuidance(
"Magnetic field control commands.");
57 G4String commandName = directoryName;
58 commandName.append(
"fieldType");
60 G4String guidance =
"Select type of the field";
61 fFieldTypeCmd->SetGuidance(guidance);
62 fFieldTypeCmd->SetParameterName(
"FieldType",
false);
70 fFieldTypeCmd->SetCandidates(candidates);
71 fFieldTypeCmd->AvailableForStates(
74 commandName = directoryName;
75 commandName.append(
"equationType");
77 guidance =
"Select type of the equation of motion of a particle in a field";
78 fEquationTypeCmd->SetGuidance(guidance);
79 fEquationTypeCmd->SetParameterName(
"EquationType",
false);
87 fEquationTypeCmd->SetCandidates(candidates);
88 fEquationTypeCmd->AvailableForStates(
91 commandName = directoryName;
92 commandName.append(
"stepperType");
95 "Select type of the the integrator of particle's equation of motion in a "
97 fStepperTypeCmd->SetGuidance(guidance);
98 fStepperTypeCmd->SetParameterName(
"StepperType",
false);
107 fStepperTypeCmd->SetCandidates(candidates);
108 fStepperTypeCmd->AvailableForStates(
111 commandName = directoryName;
112 commandName.append(
"setMinimumStep");
114 fSetMinimumStepCmd->SetGuidance(
"Set minimum step in G4ChordFinder");
115 fSetMinimumStepCmd->SetParameterName(
"StepMinimum",
false);
116 fSetMinimumStepCmd->SetDefaultUnit(
"mm");
117 fSetMinimumStepCmd->SetUnitCategory(
"Length");
118 fSetMinimumStepCmd->AvailableForStates(
121 commandName = directoryName;
122 commandName.append(
"setDeltaChord");
124 fSetDeltaChordCmd->SetGuidance(
"Set delta chord in G4ChordFinder");
125 fSetDeltaChordCmd->SetParameterName(
"DeltaChord",
false);
126 fSetDeltaChordCmd->SetDefaultUnit(
"mm");
127 fSetDeltaChordCmd->SetUnitCategory(
"Length");
128 fSetDeltaChordCmd->AvailableForStates(
131 commandName = directoryName;
132 commandName.append(
"setDeltaOneStep");
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(
142 commandName = directoryName;
143 commandName.append(
"setDeltaIntersection");
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(
153 commandName = directoryName;
154 commandName.append(
"setMinimumEpsilonStep");
156 fSetMinimumEpsilonStepCmd->SetGuidance(
157 "Set minimum epsilon step in global field manager");
158 fSetMinimumEpsilonStepCmd->SetParameterName(
"MinimumEpsilonStep",
false);
159 fSetMinimumEpsilonStepCmd->AvailableForStates(
162 commandName = directoryName;
163 commandName.append(
"setMaximumEpsilonStep");
165 fSetMaximumEpsilonStepCmd->SetGuidance(
166 "Set maximum epsilon step in global field manager");
167 fSetMaximumEpsilonStepCmd->SetParameterName(
"MaximumEpsilonStep",
false);
168 fSetMaximumEpsilonStepCmd->AvailableForStates(
171 commandName = directoryName;
172 commandName.append(
"setConstDistance");
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");
184 commandName = std::move(directoryName);
185 commandName.append(
"printParameters");
187 fPrintParametersCmd->SetGuidance(
"Prints all accuracy parameters.");
188 fPrintParametersCmd->AvailableForStates(
220 if (command == fFieldTypeCmd)
227 fFieldParameters->SetFieldType(ft);
234 if (command == fEquationTypeCmd)
241 fFieldParameters->SetEquationType(et);
248 if (command == fStepperTypeCmd)
255 fFieldParameters->SetStepperType(st);
262 if (command == fSetMinimumStepCmd)
264 fFieldParameters->SetMinimumStep(
265 fSetMinimumStepCmd->GetNewDoubleValue(newValues));
269 if (command == fSetDeltaChordCmd)
271 fFieldParameters->SetDeltaChord(
272 fSetDeltaChordCmd->GetNewDoubleValue(newValues));
276 if (command == fSetDeltaOneStepCmd)
278 fFieldParameters->SetDeltaOneStep(
279 fSetDeltaOneStepCmd->GetNewDoubleValue(newValues));
283 if (command == fSetDeltaIntersectionCmd)
285 fFieldParameters->SetDeltaIntersection(
286 fSetDeltaIntersectionCmd->GetNewDoubleValue(newValues));
290 if (command == fSetMinimumEpsilonStepCmd)
292 fFieldParameters->SetMinimumEpsilonStep(
293 fSetMinimumEpsilonStepCmd->GetNewDoubleValue(newValues));
297 if (command == fSetMaximumEpsilonStepCmd)
299 fFieldParameters->SetMaximumEpsilonStep(
300 fSetMaximumEpsilonStepCmd->GetNewDoubleValue(newValues));
304 if (command == fSetConstDistanceCmd)
306 fFieldParameters->SetConstDistance(
307 fSetConstDistanceCmd->GetNewDoubleValue(newValues));
311 if (command == fPrintParametersCmd)
313 fFieldParameters->PrintParameters();