Geant4 9.6.0
Toolkit for the simulation of the passage of particles through matter
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros
G4GeometryMessenger.cc
Go to the documentation of this file.
1//
2// ********************************************************************
3// * License and Disclaimer *
4// * *
5// * The Geant4 software is copyright of the Copyright Holders of *
6// * the Geant4 Collaboration. It is provided under the terms and *
7// * conditions of the Geant4 Software License, included in the file *
8// * LICENSE and available at http://cern.ch/geant4/license . These *
9// * include a list of copyright holders. *
10// * *
11// * Neither the authors of this software system, nor their employing *
12// * institutes,nor the agencies providing financial support for this *
13// * work make any representation or warranty, express or implied, *
14// * regarding this software system or assume any liability for its *
15// * use. Please see the license in the file LICENSE and URL above *
16// * for the full disclaimer and the limitation of liability. *
17// * *
18// * This code implementation is the result of the scientific and *
19// * technical work of the GEANT4 collaboration. *
20// * By using, copying, modifying or distributing the software (or *
21// * any work based on the software) you agree to acknowledge its *
22// * use in resulting scientific publications, and indicate your *
23// * acceptance of all terms of the Geant4 Software license. *
24// ********************************************************************
25//
26//
27// $Id$
28//
29// --------------------------------------------------------------------
30// GEANT 4 class source file
31//
32// G4GeometryMessenger
33//
34// Author: G.Cosmo, CERN.
35//
36// --------------------------------------------------------------------
37
38#include <iomanip>
40
42#include "G4GeometryManager.hh"
43#include "G4VPhysicalVolume.hh"
44#include "G4Navigator.hh"
45
46#include "G4UIdirectory.hh"
47#include "G4UIcommand.hh"
49#include "G4UIcmdWith3Vector.hh"
51#include "G4UIcmdWithABool.hh"
53#include "G4UIcmdWithADouble.hh"
55
57#include "G4GeomTestVolume.hh"
58
59//
60// Constructor
61//
63 : x(0,0,0), p(0,0,1), grdRes(100,100,100), cylRes(90,50,50),
64 cylfZ(0.8), cylfR(0.8), newtol(false), tol(1E-4), // mm
65 recLevel(0), recDepth(-1), tmanager(tman), tlogger(0), tvolume(0)
66{
67 geodir = new G4UIdirectory( "/geometry/" );
68 geodir->SetGuidance( "Geometry control commands." );
69
70 //
71 // Geometry navigator commands
72 //
73 navdir = new G4UIdirectory( "/geometry/navigator/" );
74 navdir->SetGuidance( "Geometry navigator control setup." );
75
76 resCmd = new G4UIcmdWithoutParameter( "/geometry/navigator/reset", this );
77 resCmd->SetGuidance( "Reset navigator and navigation history." );
78 resCmd->SetGuidance( "NOTE: must be called only after kernel has been" );
79 resCmd->SetGuidance( " initialized once through the run manager!" );
81
82 verbCmd = new G4UIcmdWithAnInteger( "/geometry/navigator/verbose", this );
83 verbCmd->SetGuidance( "Set run-time verbosity for the navigator." );
84 verbCmd->SetGuidance(" 0 : Silent (default)");
85 verbCmd->SetGuidance(" 1 : Display volume positioning and step lengths");
86 verbCmd->SetGuidance(" 2 : Display step/safety info on point location");
87 verbCmd->SetGuidance(" 3 : Display minimal state at -every- step");
88 verbCmd->SetGuidance(" 4 : Maximum verbosity (very detailed!)");
89 verbCmd->SetGuidance( "NOTE: this command has effect -only- if Geant4 has" );
90 verbCmd->SetGuidance( " been installed with the G4VERBOSE flag set!" );
91 verbCmd->SetParameterName("level",true);
92 verbCmd->SetDefaultValue(0);
93 verbCmd->SetRange("level >=0 && level <=4");
94
95 chkCmd = new G4UIcmdWithABool( "/geometry/navigator/check_mode", this );
96 chkCmd->SetGuidance( "Set navigator in -check_mode- state." );
97 chkCmd->SetGuidance( "This will cause extra checks to be applied during" );
98 chkCmd->SetGuidance( "navigation. More strict and less tolerant conditions" );
99 chkCmd->SetGuidance( "are applied. A run-time performance penalty may be" );
100 chkCmd->SetGuidance( "observed when the -check_mode- state is activated." );
101 chkCmd->SetGuidance( "NOTE: this command has effect -only- if Geant4 has" );
102 chkCmd->SetGuidance( " been installed with the G4VERBOSE flag set!" );
103 chkCmd->SetParameterName("checkFlag",true);
104 chkCmd->SetDefaultValue(false);
106
107 pchkCmd = new G4UIcmdWithABool( "/geometry/navigator/push_notify", this );
108 pchkCmd->SetGuidance( "Set navigator verbosity push notifications." );
109 pchkCmd->SetGuidance( "This allows to disable/re-enable verbosity in" );
110 pchkCmd->SetGuidance( "navigation, when tracks may get stuck and require" );
111 pchkCmd->SetGuidance( "one artificial push along the direction by the" );
112 pchkCmd->SetGuidance( "navigator. Notification is active by default." );
113 pchkCmd->SetGuidance( "NOTE: this command has effect -only- if Geant4 has" );
114 pchkCmd->SetGuidance( " been installed with the G4VERBOSE flag set!" );
115 pchkCmd->SetParameterName("pushFlag",true);
116 pchkCmd->SetDefaultValue(true);
118
119 //
120 // Geometry verification test commands
121 //
122 testdir = new G4UIdirectory( "/geometry/test/" );
123 testdir->SetGuidance( "Geometry verification control setup." );
124 testdir->SetGuidance( "Helps in detecting possible overlapping regions." );
125
126 tolCmd = new G4UIcmdWithADoubleAndUnit( "/geometry/test/tolerance",this );
127 tolCmd->SetGuidance( "Set error tolerance value." );
128 tolCmd->SetGuidance( "Initial default value: 1E-4*mm." );
129 tolCmd->SetParameterName( "Tolerance", true, true );
130 tolCmd->SetDefaultValue( 1E-4 );
131 tolCmd->SetDefaultUnit( "mm" );
132 tolCmd->SetUnitCategory( "Length" );
133
134 posCmd = new G4UIcmdWith3VectorAndUnit( "/geometry/test/position", this );
135 posCmd->SetGuidance( "Set starting position for the line_test." );
136 posCmd->SetParameterName( "X", "Y", "Z", true, true );
137 posCmd->SetDefaultUnit( "cm" );
138
139 dirCmd = new G4UIcmdWith3VectorAndUnit( "/geometry/test/direction", this );
140 dirCmd->SetGuidance( "Set momentum direction for the line_test." );
141 dirCmd->SetGuidance( "Direction needs not to be a unit vector." );
142 dirCmd->SetParameterName( "Px", "Py", "Pz", true, true );
143 dirCmd->SetRange( "Px != 0 || Py != 0 || Pz != 0" );
144
145 linCmd = new G4UIcmdWithABool( "/geometry/test/line_test", this );
146 linCmd->SetGuidance( "Performs test along a single specified direction/position." );
147 linCmd->SetGuidance( "Use position and direction commands to change default." );
148 linCmd->SetGuidance( "Initial default: position(0,0,0), direction(0,0,1)." );
149 linCmd->SetGuidance( "If recursion flag is set to TRUE, the intersection checks" );
150 linCmd->SetGuidance( "will be performed recursively in the geometry tree." );
151 linCmd->SetParameterName("recursionFlag",true);
152 linCmd->SetDefaultValue(false);
154
155 grzCmd = new G4UIcmdWith3Vector( "/geometry/test/grid_cells", this );
156 grzCmd->SetGuidance( "Define resolution of grid geometry as number of cells," );
157 grzCmd->SetGuidance( "specifying them for each dimension, X, Y and Z." );
158 grzCmd->SetGuidance( "Will be applied to grid_test and recursive_test commands." );
159 grzCmd->SetGuidance( "Initial default values: X=100, Y=100, Z=100." );
160 grzCmd->SetParameterName( "X", "Y", "Z", true, true );
161 grzCmd->SetDefaultValue( G4ThreeVector(100, 100, 100) );
162
163 grdCmd = new G4UIcmdWithABool( "/geometry/test/grid_test", this );
164 grdCmd->SetGuidance( "Start running the default grid test." );
165 grdCmd->SetGuidance( "A grid of lines parallel to a cartesian axis is used;" );
166 grdCmd->SetGuidance( "By default, only direct daughters of the mother volumes are checked." );
167 grdCmd->SetGuidance( "If recursion flag is set to TRUE, the intersection checks" );
168 grdCmd->SetGuidance( "will be performed recursively in the geometry tree." );
169 grdCmd->SetGuidance( "NOTE: the recursion may take a very long time," );
170 grdCmd->SetGuidance( " depending on the geometry complexity !");
171 grdCmd->SetParameterName("recursionFlag",true);
172 grdCmd->SetDefaultValue(false);
174
175 cyzCmd = new G4UIcmdWith3Vector( "/geometry/test/cylinder_geometry", this );
176 cyzCmd->SetGuidance( "Define details of the cylinder geometry, specifying:" );
177 cyzCmd->SetGuidance( " nPhi - number of lines per Phi" );
178 cyzCmd->SetGuidance( " nZ - number of Z points" );
179 cyzCmd->SetGuidance( " nRho - number of Rho points" );
180 cyzCmd->SetGuidance( "Will be applied to the cylinder_test command." );
181 cyzCmd->SetGuidance( "Initial default values: nPhi=90, nZ=50, nRho=50." );
182 cyzCmd->SetParameterName( "nPhi", "nZ", "nRho", true, true );
183 cyzCmd->SetDefaultValue( G4ThreeVector(90, 50, 50) );
184
185 cfzCmd = new G4UIcmdWithADouble( "/geometry/test/cylinder_scaleZ", this );
186 cfzCmd->SetGuidance( "Define the resolution of the cylinder geometry, specifying" );
187 cfzCmd->SetGuidance( "the fraction scale for points along Z." );
188 cfzCmd->SetGuidance( "Initial default values: fracZ=0.8" );
189 cfzCmd->SetParameterName("fracZ",true);
190 cfzCmd->SetDefaultValue(0.8);
191
192 cfrCmd = new G4UIcmdWithADouble( "/geometry/test/cylinder_scaleRho", this );
193 cfrCmd->SetGuidance( "Define the resolution of the cylinder geometry, specifying" );
194 cfrCmd->SetGuidance( "the fraction scale for points along Rho." );
195 cfrCmd->SetGuidance( "Initial default values: fracRho=0.8" );
196 cfrCmd->SetParameterName("fracRho",true);
197 cfrCmd->SetDefaultValue(0.8);
198
199 cylCmd = new G4UIcmdWithABool( "/geometry/test/cylinder_test", this );
200 cylCmd->SetGuidance( "Start running the cylinder test." );
201 cylCmd->SetGuidance( "A set of lines in a cylindrical pattern of gradually" );
202 cylCmd->SetGuidance( "increasing mesh size." );
203 cylCmd->SetGuidance( "By default, only direct daughters of the mother volumes are checked." );
204 cylCmd->SetGuidance( "If recursion flag is set to TRUE, the intersection checks" );
205 cylCmd->SetGuidance( "will be performed recursively in the geometry tree." );
206 cylCmd->SetGuidance( "NOTE: the recursion may take a very long time," );
207 cylCmd->SetGuidance( " depending on the geometry complexity !");
208 cylCmd->SetParameterName("recursionFlag",true);
209 cylCmd->SetDefaultValue(false);
211
212 rcsCmd = new G4UIcmdWithAnInteger( "/geometry/test/recursion_start", this );
213 rcsCmd->SetGuidance( "Set the initial level in the geometry tree for recursion." );
214 rcsCmd->SetGuidance( "recursive_test will then start from the specified level." );
215 rcsCmd->SetParameterName("initial_level",true);
216 rcsCmd->SetDefaultValue(0);
217
218 rcdCmd = new G4UIcmdWithAnInteger( "/geometry/test/recursion_depth", this );
219 rcdCmd->SetGuidance( "Set the depth in the geometry tree for recursion." );
220 rcdCmd->SetGuidance( "recursive_test will then stop after reached the specified depth." );
221 rcdCmd->SetGuidance( "By default, recursion will proceed for the whole depth." );
222 rcdCmd->SetParameterName("recursion_depth",true);
223 rcdCmd->SetDefaultValue(-1);
224
225 // Obsolete verification commands ...
226
227 runCmd = new G4UIcmdWithABool( "/geometry/test/run", this );
228 runCmd->SetGuidance( "Start running the default grid test." );
229 runCmd->SetGuidance( "Same as the grid_test command." );
230 runCmd->SetGuidance( "If recursion flag is set to TRUE, the intersection checks" );
231 runCmd->SetGuidance( "will be performed recursively in the geometry tree." );
232 runCmd->SetGuidance( "NOTE: the recursion may take a very long time," );
233 runCmd->SetGuidance( " depending on the geometry complexity !");
234 runCmd->SetParameterName("recursionFlag",true);
235 runCmd->SetDefaultValue(false);
237
238 recCmd = new G4UIcmdWithoutParameter( "/geometry/test/recursive_test", this );
239 recCmd->SetGuidance( "Start running the recursive grid test." );
240 recCmd->SetGuidance( "A grid of lines along a cartesian axis is recursively" );
241 recCmd->SetGuidance( "to all daughters and daughters of daughters, etc." );
242 recCmd->SetGuidance( "NOTE: it may take a very long time," );
243 recCmd->SetGuidance( " depending on the geometry complexity !");
245}
246
247//
248// Destructor
249//
251{
252 delete linCmd; delete posCmd; delete dirCmd;
253 delete grzCmd; delete grdCmd; delete recCmd; delete runCmd;
254 delete rcsCmd; delete rcdCmd;
255 delete cyzCmd; delete cfzCmd; delete cfrCmd; delete cylCmd;
256 delete tolCmd;
257 delete resCmd; delete verbCmd; delete pchkCmd; delete chkCmd;
258 delete geodir; delete navdir; delete testdir;
259 delete tvolume; delete tlogger;
260}
261
262//
263// Init
264//
265void
266G4GeometryMessenger::Init()
267{
268 // Clean old allocated loggers...
269 //
270 if (tlogger) delete tlogger;
271 if (tvolume) delete tvolume;
272
273 // Create a logger to send errors/output to cout
274 //
275 tlogger = new G4GeomTestStreamLogger(std::cout);
276
277 // Get the world volume
278 //
279 G4VPhysicalVolume* world =
281
282 // Test the actual detector...
283 //
284 tvolume = new G4GeomTestVolume(world, tlogger);
285}
286
287//
288// SetNewValue
289//
290void
292{
293 if (command == resCmd) {
294 ResetNavigator();
295 }
296 else if (command == verbCmd) {
297 SetVerbosity( newValues );
298 }
299 else if (command == chkCmd) {
300 SetCheckMode( newValues );
301 }
302 else if (command == posCmd) {
303 x = posCmd->GetNew3VectorValue( newValues );
304 }
305 else if (command == dirCmd) {
306 p = dirCmd->GetNew3VectorValue( newValues );
307 if (p.mag() < DBL_MIN) {
308 G4cerr << "Please specify non-zero momentum!" << G4endl;
309 p = G4ThreeVector(0,0,1);
310 }
311 }
312 else if (command == tolCmd) {
313 tol = tolCmd->GetNewDoubleValue( newValues );
314 newtol = true;
315 }
316 else if (command == linCmd) {
317 Init();
318 if (linCmd->GetNewBoolValue( newValues ))
319 RecursiveLineTest();
320 else
321 LineTest();
322 }
323 else if ((command == grdCmd) || (command == runCmd)){
324 Init();
325 if (grdCmd->GetNewBoolValue( newValues ) || runCmd->GetNewBoolValue( newValues ))
326 RecursiveGridTest();
327 else
328 GridTest();
329 }
330 else if (command == grzCmd) {
331 grdRes = grzCmd->GetNew3VectorValue( newValues );
332 if (grdRes.mag() < DBL_MIN) {
333 G4cerr << "Please specify non-zero resolution!" << G4endl;
334 grdRes = G4ThreeVector(100,100,100);
335 }
336 }
337 else if (command == cyzCmd) {
338 cylRes = cyzCmd->GetNew3VectorValue( newValues );
339 }
340 else if (command == cfzCmd) {
341 cylfZ = cfzCmd->GetNewDoubleValue( newValues );
342 }
343 else if (command == cfrCmd) {
344 cylfR = cfrCmd->GetNewDoubleValue( newValues );
345 }
346 else if (command == rcsCmd) {
347 recLevel = rcsCmd->GetNewIntValue( newValues );
348 }
349 else if (command == rcdCmd) {
350 recDepth = rcdCmd->GetNewIntValue( newValues );
351 }
352 else if (command == recCmd) {
353 Init();
354 RecursiveGridTest();
355 }
356 else if (command == cylCmd) {
357 Init();
358 if (cylCmd->GetNewBoolValue( newValues ))
359 RecursiveCylinderTest();
360 else
361 CylinderTest();
362 }
363}
364
365//
366// GetCurrentValue
367//
370{
371 G4String cv = "";
372 if (command == posCmd) {
373 cv = posCmd->ConvertToString( x, "cm" );
374 }
375 else if (command == tolCmd) {
376 cv = tolCmd->ConvertToString( tol, "mm" );
377 }
378 else if (command == dirCmd) {
379 cv = dirCmd->ConvertToString( p, "GeV" );
380 }
381 return cv;
382}
383
384//
385// CheckGeometry
386//
387void
388G4GeometryMessenger::CheckGeometry()
389{
390 // Verify that the geometry is closed
391 //
393 if (!geomManager->IsGeometryClosed()) {
394 geomManager->OpenGeometry();
395 geomManager->CloseGeometry(true);
396 }
397}
398
399//
400// ResetNavigator
401//
402void
403G4GeometryMessenger::ResetNavigator()
404{
405 // Close geometry and reset optimisation if necessary
406 //
407 CheckGeometry();
408
409 // Reset navigator's state
410 //
411 G4ThreeVector pt(0,0,0);
412 G4Navigator* navigator = tmanager->GetNavigatorForTracking();
413 navigator->LocateGlobalPointAndSetup(pt,0,false);
414}
415
416//
417// Set navigator verbosity
418//
419void
420G4GeometryMessenger::SetVerbosity(G4String input)
421{
422 G4int level = verbCmd->GetNewIntValue(input);
423 G4Navigator* navigator = tmanager->GetNavigatorForTracking();
424 navigator->SetVerboseLevel(level);
425}
426
427//
428// Set navigator mode
429//
430void
431G4GeometryMessenger::SetCheckMode(G4String input)
432{
433 G4bool mode = chkCmd->GetNewBoolValue(input);
434 G4Navigator* navigator = tmanager->GetNavigatorForTracking();
435 navigator->CheckMode(mode);
436}
437
438//
439// Set navigator verbosity for push notifications
440//
441void
442G4GeometryMessenger::SetPushFlag(G4String input)
443{
444 G4bool mode = pchkCmd->GetNewBoolValue(input);
445 G4Navigator* navigator = tmanager->GetNavigatorForTracking();
446 navigator->SetPushVerbosity(mode);
447}
448
449//
450// LineTest
451//
452void
453G4GeometryMessenger::LineTest()
454{
455 // Close geometry if necessary
456 //
457 CheckGeometry();
458
459 // Verify if error tolerance has changed
460 //
461 if (newtol) tvolume->SetTolerance(tol);
462
463 // Make test on single line supplied by user
464 //
465 tvolume->TestOneLine( x, p );
466
467 // Print out any errors, if found
468 //
469 tvolume->ReportErrors();
470}
471
472//
473// RecursiveLineTest
474//
475void
476G4GeometryMessenger::RecursiveLineTest()
477{
478 // Close geometry if necessary
479 //
480 CheckGeometry();
481
482 // Verify if error tolerance has changed
483 //
484 if (newtol) tvolume->SetTolerance(tol);
485
486 // Make test on single line supplied by user recursively
487 //
488 tvolume->TestRecursiveLine( x, p, recLevel, recDepth );
489
490 // Print out any errors, if found
491 //
492 tvolume->ReportErrors();
493}
494
495//
496// GridTest
497//
498void
499G4GeometryMessenger::GridTest()
500{
501 // Close geometry if necessary
502 //
503 CheckGeometry();
504
505 // Verify if error tolerance has changed
506 //
507 if (newtol) tvolume->SetTolerance(tol);
508
509 // Apply set of trajectories in a 3D grid pattern
510 //
511 tvolume->TestCartGridXYZ( G4int(grdRes.x()),
512 G4int(grdRes.y()),
513 G4int(grdRes.z()) );
514
515 // Print out any errors, if found
516 //
517 tvolume->ReportErrors();
518}
519
520//
521// RecursiveGridTest
522//
523void
524G4GeometryMessenger::RecursiveGridTest()
525{
526 // Close geometry if necessary
527 //
528 CheckGeometry();
529
530 // Verify if error tolerance has changed
531 //
532 if (newtol) tvolume->SetTolerance(tol);
533
534 // Apply set of trajectories in a 3D grid pattern recursively
535 //
536 tvolume->TestRecursiveCartGrid( G4int(grdRes.x()),
537 G4int(grdRes.y()),
538 G4int(grdRes.z()),
539 recLevel, recDepth );
540
541 // Print out any errors, if found
542 //
543 tvolume->ReportErrors();
544}
545
546//
547// CylinderTest
548//
549void
550G4GeometryMessenger::CylinderTest()
551{
552 // Close geometry if necessary
553 //
554 CheckGeometry();
555
556 // Verify if error tolerance has changed
557 //
558 if (newtol) tvolume->SetTolerance(tol);
559
560 // Apply default set of lines in a cylindrical pattern of gradually
561 // increasing mesh size of trajectories in a 3D grid pattern
562 //
563 tvolume->TestCylinder(G4int(cylRes.x()),
564 G4int(cylRes.y()),
565 G4int(cylRes.z()),
566 cylfZ, cylfR, true);
567
568 // Print out any errors, if found
569 //
570 tvolume->ReportErrors();
571}
572
573//
574// RecursiveCylinderTest
575//
576void
577G4GeometryMessenger::RecursiveCylinderTest()
578{
579 // Close geometry if necessary
580 //
581 CheckGeometry();
582
583 // Verify if error tolerance has changed
584 //
585 if (newtol) tvolume->SetTolerance(tol);
586
587 // Apply default set of lines in a cylindrical pattern of gradually
588 // increasing mesh size of trajectories in a 3D grid pattern recursively
589 //
590 tvolume->TestRecursiveCylinder(G4int(cylRes.x()),
591 G4int(cylRes.y()),
592 G4int(cylRes.z()),
593 cylfZ, cylfR, true,
594 recLevel, recDepth );
595
596 // Print out any errors, if found
597 //
598 tvolume->ReportErrors();
599}
@ G4State_Idle
CLHEP::Hep3Vector G4ThreeVector
int G4int
Definition: G4Types.hh:66
bool G4bool
Definition: G4Types.hh:67
#define G4endl
Definition: G4ios.hh:52
G4DLLIMPORT std::ostream G4cerr
double z() const
double x() const
double y() const
double mag() const
void TestCylinder(G4int nPhi=90, G4int nZ=50, G4int nRho=50, G4double fracZ=0.8, G4double fracRho=0.8, G4bool usePhi=false)
void SetTolerance(G4double tolerance)
void TestOneLine(const G4ThreeVector &p, const G4ThreeVector &v)
void TestRecursiveLine(const G4ThreeVector &p, const G4ThreeVector &v, G4int sLevel=0, G4int depth=-1)
void TestRecursiveCylinder(G4int nPhi=90, G4int nZ=50, G4int nRho=50, G4double fracZ=0.8, G4double fracRho=0.8, G4bool usePhi=false, G4int sLevel=0, G4int depth=-1)
void TestRecursiveCartGrid(G4int nx=100, G4int ny=100, G4int nz=100, G4int sLevel=0, G4int depth=-1)
void TestCartGridXYZ(G4int nx=100, G4int ny=100, G4int nz=100)
G4bool CloseGeometry(G4bool pOptimise=true, G4bool verbose=false, G4VPhysicalVolume *vol=0)
void OpenGeometry(G4VPhysicalVolume *vol=0)
static G4GeometryManager * GetInstance()
void SetNewValue(G4UIcommand *command, G4String newValues)
G4String GetCurrentValue(G4UIcommand *command)
G4GeometryMessenger(G4TransportationManager *tman)
void SetVerboseLevel(G4int level)
void SetPushVerbosity(G4bool mode)
void CheckMode(G4bool mode)
G4VPhysicalVolume * GetWorldVolume() const
virtual G4VPhysicalVolume * LocateGlobalPointAndSetup(const G4ThreeVector &point, const G4ThreeVector *direction=0, const G4bool pRelativeSearch=true, const G4bool ignoreDirection=true)
Definition: G4Navigator.cc:116
G4Navigator * GetNavigatorForTracking() const
void SetDefaultUnit(const char *defUnit)
static G4ThreeVector GetNew3VectorValue(const char *paramString)
void SetParameterName(const char *theNameX, const char *theNameY, const char *theNameZ, G4bool omittable, G4bool currentAsDefault=false)
static G4ThreeVector GetNew3VectorValue(const char *paramString)
void SetParameterName(const char *theNameX, const char *theNameY, const char *theNameZ, G4bool omittable, G4bool currentAsDefault=false)
void SetDefaultValue(G4ThreeVector defVal)
static G4bool GetNewBoolValue(const char *paramString)
void SetParameterName(const char *theName, G4bool omittable, G4bool currentAsDefault=false)
void SetDefaultValue(G4bool defVal)
void SetUnitCategory(const char *unitCategory)
void SetDefaultUnit(const char *defUnit)
static G4double GetNewDoubleValue(const char *paramString)
void SetParameterName(const char *theName, G4bool omittable, G4bool currentAsDefault=false)
void SetParameterName(const char *theName, G4bool omittable, G4bool currentAsDefault=false)
static G4double GetNewDoubleValue(const char *paramString)
void SetDefaultValue(G4double defVal)
void SetParameterName(const char *theName, G4bool omittable, G4bool currentAsDefault=false)
static G4int GetNewIntValue(const char *paramString)
void SetDefaultValue(G4int defVal)
static G4String ConvertToString(G4bool boolVal)
Definition: G4UIcommand.cc:349
void SetGuidance(const char *aGuidance)
Definition: G4UIcommand.hh:156
void SetRange(const char *rs)
Definition: G4UIcommand.hh:120
void AvailableForStates(G4ApplicationState s1)
Definition: G4UIcommand.cc:219
#define DBL_MIN
Definition: templates.hh:75