The actual test is in BLGroupElement::testGeometry().
Public Member Functions | |
BLCMDgeometry () | |
G4String | commandName () |
int | command (BLArgumentVector &argv, BLArgumentMap &namedArgs) |
void | defineNamedArgs () |
void | callback (int type) |
Private Attributes | |
G4int | nPoints |
G4int | printGeometry |
G4int | visual |
G4double | tolerance |
G4bool | registered |
BLCMDgeometry::BLCMDgeometry | ( | ) |
References BLCMDTYPE_CONTROL, nPoints, printGeometry, BLCommand::registerCommand(), registered, BLCommand::setDescription(), BLCommand::setSynopsis(), tolerance, and visual.
00050 : BLCommand(), BLCallback() 00051 { 00052 registerCommand(BLCMDTYPE_CONTROL); 00053 setSynopsis("Arranges to perform a geometry test."); 00054 setDescription("The geometry test checks nPoints points on the surface of\n" 00055 "each element, verifying that they are inside the parent\n" 00056 "element and that they are not inside any sibling element.\n" 00057 "The default of 100 points is usually sufficient; 0 means\n" 00058 "omit the geometry test. The first 20-40 points (depending\n" 00059 "on element) test 'corners', the rest are randomly distributed\n" 00060 "on the surface. The default tolerance is 0.002 mm."); 00061 00062 nPoints = 100; 00063 printGeometry = 0; 00064 visual = 0; 00065 tolerance = 0.002 * mm; 00066 registered = false; 00067 }
G4String BLCMDgeometry::commandName | ( | ) | [inline, virtual] |
int BLCMDgeometry::command | ( | BLArgumentVector & | argv, | |
BLArgumentMap & | namedArgs | |||
) | [virtual] |
Implements BLCommand.
References BLManager::getObject(), BLCommand::handleNamedArgs(), BLCommand::print(), BLManager::registerCallback(), registered, and visual.
00070 { 00071 handleNamedArgs(namedArgs); 00072 00073 if(!registered) { 00074 BLManager::getObject()->registerCallback(this,0); 00075 if(visual) BLManager::getObject()->registerCallback(this,4); 00076 registered = true; 00077 } 00078 00079 print(""); 00080 00081 return 0; 00082 }
void BLCMDgeometry::defineNamedArgs | ( | ) | [virtual] |
Reimplemented from BLCommand.
References BLCommand::argDouble(), BLCommand::argInt(), nPoints, printGeometry, tolerance, and visual.
00085 { 00086 argInt(nPoints,"nPoints","The number of surface points to test per element"); 00087 argInt(printGeometry,"printGeometry","Set nonzero to print the entire geometry."); 00088 argInt(visual,"visual","Set nonzero to display the geometry test points."); 00089 argDouble(tolerance,"tolerance","Tolerance for inside/outside tests (mm)."); 00090 }
void BLCMDgeometry::callback | ( | int | type | ) | [virtual] |
Reimplemented from BLCallback.
References BLManager::displayGeometry(), BLManager::getObject(), BLGroup::getWorld(), nPoints, printGeometry, BLGroupElement::testGeometry(), and tolerance.
00093 { 00094 if(printGeometry) { 00095 printf("\nGeometry display:\n"); 00096 BLManager::getObject()->displayGeometry(); 00097 } 00098 00099 if(nPoints > 0) { 00100 printf("\nGeometry test nPoints=%d tolerance=%.3f mm:\n", 00101 nPoints,tolerance); 00102 int start=time(0); 00103 int err = BLGroup::getWorld()->testGeometry(nPoints,tolerance, 00104 type==4); 00105 printf("Total geometry errors = %d %ld seconds\n\n", 00106 err,time(0)-start); 00107 00108 } 00109 }
G4int BLCMDgeometry::nPoints [private] |
Referenced by BLCMDgeometry(), callback(), and defineNamedArgs().
G4int BLCMDgeometry::printGeometry [private] |
Referenced by BLCMDgeometry(), callback(), and defineNamedArgs().
G4int BLCMDgeometry::visual [private] |
Referenced by BLCMDgeometry(), command(), and defineNamedArgs().
G4double BLCMDgeometry::tolerance [private] |
Referenced by BLCMDgeometry(), callback(), and defineNamedArgs().
G4bool BLCMDgeometry::registered [private] |
Referenced by BLCMDgeometry(), and command().