- Timestamp:
- Dec 22, 2010, 3:52:27 PM (14 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/source/geometry/navigation/src/G4GeomTestSegment.cc
r1337 r1347 25 25 // 26 26 // 27 // $Id: G4GeomTestSegment.cc,v 1.1 1 2007/11/16 09:39:14 gcosmo Exp $28 // GEANT4 tag $Name: geant4-09-04- beta-01$27 // $Id: G4GeomTestSegment.cc,v 1.13 2010/08/20 09:03:54 gcosmo Exp $ 28 // GEANT4 tag $Name: geant4-09-04-ref-00 $ 29 29 // 30 30 // -------------------------------------------------------------------- … … 275 275 G4bool entering; 276 276 G4double vSurfN; 277 // G4cout<<"Entering Find Some Points vSearch="<<vSearch<<" p="<<p<<G4endl; 278 // 277 279 278 // Look for nearest intersection point in the specified 280 279 // direction and return if there isn't one … … 283 282 switch(solid->Inside(p)) { 284 283 case kInside: 285 dist = solid->DistanceToOut(p,vSearch); 286 // G4cout<<"Inside DistToOut="<<dist<<G4endl; 284 dist = solid->DistanceToOut(p,vSearch); 287 285 if (dist >= kInfinity) { 288 286 logger->SolidProblem( solid, … … 290 288 return; 291 289 } 292 293 290 s += sign*dist; 294 291 entering = false; … … 296 293 case kOutside: 297 294 dist = solid->DistanceToIn(p,vSearch); 298 //G4cout<<"Outside DistToIn="<<dist<<G4endl;299 295 if (dist >= kInfinity) return; 300 301 296 s += sign*dist; 302 297 entering = true; 303 298 break; 304 299 case kSurface: 305 vSurfN=v Search.dot(solid->SurfaceNormal(p));306 if(std:: abs(vSurfN)<kCarTolerance)vSurfN=0;300 vSurfN=v.dot(solid->SurfaceNormal(p)); 301 if(std::fabs(vSurfN)<kCarTolerance)vSurfN=0; 307 302 entering = (vSurfN < 0); 308 //G4cout<<"Surface SurfN="<<solid->SurfaceNormal(p)<<" v.dotN="<<vSurfN<<" entering="<<entering<<G4endl;309 303 break; 310 304 default: … … 361 355 // 362 356 points.push_back( G4GeomTestPoint( p, s, entering==forward ) ); 363 //G4cout<<"Add point p"<<p<<" s="<<s<<" entering="<<entering<<G4endl;357 364 358 } 365 359 … … 369 363 if (entering) { 370 364 dist = solid->DistanceToOut(p,vSearch); 371 //G4cout<<"if entering distToOut="<<dist<<G4endl;372 365 if (dist >= kInfinity) { 373 366 logger->SolidProblem( solid, … … 389 382 return; 390 383 } 391 392 if(std::abs(dist)<=kCarTolerance){ 393 G4double push = 1E-6; 394 s += sign*push; 395 p = p0 + s*v; 396 EInside inside = solid->Inside(p); 397 if (inside == kOutside) { 398 entering = false; 399 break; 400 } 401 } 402 403 384 404 385 entering = false; 405 386 } 406 387 else { 407 388 dist = solid->DistanceToIn(p,vSearch); 408 //G4cout<<"if exiting distToIn="<<dist<<G4endl;409 389 if (dist >= kInfinity) return; 410 390
Note: See TracChangeset
for help on using the changeset viewer.