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),
65 recLevel(0), recDepth(-1), tmanager(tman), tlogger(0), tvolume(0)
68 geodir->
SetGuidance(
"Geometry control commands." );
74 navdir->
SetGuidance(
"Geometry navigator control setup." );
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!" );
83 verbCmd->
SetGuidance(
"Set run-time verbosity for the navigator." );
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!" );
93 verbCmd->
SetRange(
"level >=0 && level <=4");
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!" );
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!" );
123 testdir->
SetGuidance(
"Geometry verification control setup." );
124 testdir->
SetGuidance(
"Helps in detecting possible overlapping regions." );
127 tolCmd->
SetGuidance(
"Set error tolerance value." );
128 tolCmd->
SetGuidance(
"Initial default value: 1E-4*mm." );
135 posCmd->
SetGuidance(
"Set starting position for the line_test." );
140 dirCmd->
SetGuidance(
"Set momentum direction for the line_test." );
141 dirCmd->
SetGuidance(
"Direction needs not to be a unit vector." );
143 dirCmd->
SetRange(
"Px != 0 || Py != 0 || Pz != 0" );
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." );
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." );
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 !");
176 cyzCmd->
SetGuidance(
"Define details of the cylinder geometry, specifying:" );
177 cyzCmd->
SetGuidance(
" nPhi - number of lines per Phi" );
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." );
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" );
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" );
200 cylCmd->
SetGuidance(
"Start running the cylinder test." );
201 cylCmd->
SetGuidance(
"A set of lines in a cylindrical pattern of gradually" );
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 !");
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." );
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." );
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 !");
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 !");
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;
257 delete resCmd;
delete verbCmd;
delete pchkCmd;
delete chkCmd;
258 delete geodir;
delete navdir;
delete testdir;
259 delete tvolume;
delete tlogger;
266G4GeometryMessenger::Init()
270 if (tlogger)
delete tlogger;
271 if (tvolume)
delete tvolume;
293 if (command == resCmd) {
296 else if (command == verbCmd) {
297 SetVerbosity( newValues );
299 else if (command == chkCmd) {
300 SetCheckMode( newValues );
302 else if (command == posCmd) {
305 else if (command == dirCmd) {
308 G4cerr <<
"Please specify non-zero momentum!" <<
G4endl;
312 else if (command == tolCmd) {
316 else if (command == linCmd) {
323 else if ((command == grdCmd) || (command == runCmd)){
330 else if (command == grzCmd) {
333 G4cerr <<
"Please specify non-zero resolution!" <<
G4endl;
337 else if (command == cyzCmd) {
340 else if (command == cfzCmd) {
343 else if (command == cfrCmd) {
346 else if (command == rcsCmd) {
349 else if (command == rcdCmd) {
352 else if (command == recCmd) {
356 else if (command == cylCmd) {
359 RecursiveCylinderTest();
372 if (command == posCmd) {
375 else if (command == tolCmd) {
378 else if (command == dirCmd) {
388G4GeometryMessenger::CheckGeometry()
403G4GeometryMessenger::ResetNavigator()
420G4GeometryMessenger::SetVerbosity(
G4String input)
431G4GeometryMessenger::SetCheckMode(
G4String input)
442G4GeometryMessenger::SetPushFlag(
G4String input)
453G4GeometryMessenger::LineTest()
476G4GeometryMessenger::RecursiveLineTest()
499G4GeometryMessenger::GridTest()
524G4GeometryMessenger::RecursiveGridTest()
539 recLevel, recDepth );
550G4GeometryMessenger::CylinderTest()
577G4GeometryMessenger::RecursiveCylinderTest()
594 recLevel, recDepth );
CLHEP::Hep3Vector G4ThreeVector
G4DLLIMPORT std::ostream G4cerr
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)
G4bool IsGeometryClosed()
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)
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 SetDefaultValue(G4double 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)
void SetGuidance(const char *aGuidance)
void SetRange(const char *rs)
void AvailableForStates(G4ApplicationState s1)