Problem 1709 - Frequent GeomNav0003 G4Exceptions
Summary: Frequent GeomNav0003 G4Exceptions
Status: RESOLVED WORKSFORME
Alias: None
Product: Geant4
Classification: Unclassified
Component: geometry/navigation (show other problems)
Version: 10.1
Hardware: All All
: P5 normal
Assignee: John Apostolakis
URL:
Depends on:
Blocks:
 
Reported: 2015-02-04 23:40 CET by Krzysztof Genser
Modified: 2016-12-14 17:24 CET (History)
1 user (show)

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this problem.
Description Krzysztof Genser 2015-02-04 23:40:42 CET
When using ShieldingM_MEV physicslist the following exceptions occur frequently.
Observed for low energy (~0.3Mev) electrons.

The exception and volume description follows:

History depth=8

-------- WWWW ------- G4Exception-START -------- WWWW -------
*** G4Exception : GeomNav0003
      issued by : G4Navigator::GetGlobalExitNormal()
 WARNING> Expected normal-global-frame to be valid,  i.e. a unit vector!
  - but |normal|   = 1.00602812  - and |normal|^2 = 1.012092579
 which differs from 1.0 by 0.01209257923
   n = (-0.3898221121,-0.1044525201,0.9215318612)
============================================================
   State of Navigator: 
The current state of G4Navigator is: 
  ValidExitNormal= 1
  ExitNormal     = (0.4036,0.9215,0)
  Exiting        = 1
  Entering       = 0
  BlockedPhysicalVolume= None
  BlockedReplicaNo     = -1
  LastStepWasZero      = 1

 Current Localpoint = (1.0028883,2.2900251,245.90264)
 PreviousSftOrigin  = (-4471.4981,102.51648,11713.114)
 PreviousSafety     = 0
Current History: 
Level=[0]: Phys Name=[World] Type=[N]
Level=[1]: Phys Name=[HallAir] Type=[N]
Level=[2]: Phys Name=[DS3Vacuum] Type=[N]
Level=[3]: Phys Name=[TrackerMother] Type=[N]
Level=[4]: Phys Name=[TTrackerDeviceEnvelope_43] Type=[N]
Level=[5]: Phys Name=[SectorEnvelope] Type=[N]
Level=[6]: Phys Name=[TTrackerStrawGas_0_0_0_22] Type=[N]
Level=[7]: Phys Name=[TTrackerStrawWall_0_0_0_22] Type=[N]
Level=[8]: Phys Name=[TTrackerStrawWallInnerMetal2_0_0_0_22] Type=[N]

============================================================
Value obtained from stored global-normal is not a unit vector.

*** This is just a warning message. ***
-------- WWWW -------- G4Exception-END --------- WWWW -------

...

The last volume has the following parameters:

-----------------------------------------------------------
    *** Dump for solid - TTrackerStrawWallInnerMetal2_0_0_0_22 ***
    ===================================================
 Solid type: G4Tubs
 Parameters: 
    inner radius : 2.485 mm 
    outer radius : 2.48502 mm 
    half length Z: 472.6153133098842 mm 
    starting phi : 0 degrees 
    delta phi    : 360 degrees 
-----------------------------------------------------------
Comment 1 John Apostolakis 2015-02-05 17:35:53 CET
The problem seems to arise when distanceToOut of this G4Tubs is called from G4NormalNavigation::ComputeStep().

As a result of that call the projected exit point is at a radius of 2.50 mm -- which is clearly an error as the outer radius of the Tubs is 2.48502.

The exit point explains the value of the normal which is calculated using the outer radius (for points on the outer cylindrical surface).  The normal  is obtained by dividing the vector of the position (restricted to the local X-Y plane) by the outer radius. The normal is longer than unity by exactly the ratio of 2.50 / 2.48502.

To understand why this erroneous intersection point is found, we need to identify the parameters of the DistanceToOut call.

I created a custom version of G4NormalNavigation and G4VoxelNavigation which include additional printout, and enabled the 'Check' mode by changing the default value in the constructor.
Comment 2 John Apostolakis 2015-02-05 17:37:24 CET
The result of the run which included my changes was an early termination with a different error condition:

-------- EEEE ------- G4Exception-START -------- EEEE -------
*** G4Exception : GeomNav0003
     issued by : G4NormalNavigation::ComputeStep()
Point is outside Current Volume -
         Point (-64.7546,-47.6281,0.0230113) is outside current volume VirtualDetector_TT_FrontHollow
         Estimated isotropic distance to solid (distToIn)= 0.0130113Point is far outside Current Volume !

*** Fatal Exception *** core dump ***
-------- EEEE -------- G4Exception-END --------- EEEE -------

-----------------------------------------------------------
   *** Dump for solid - VirtualDetector_TT_FrontHollow ***
   ===================================================
Solid type: G4Tubs
Parameters:
   inner radius : 0 mm
   outer radius : 840 mm
   half length Z: 0.01 mm
   starting phi : 0 degrees
   delta phi    : 360 degrees
-----------------------------------------------------------
checkForOverlaps SurfaceArea is:      4433521, surfaceCheckPoints        44335 for VirtualDetector_TT_FrontHollow
Checking overlaps for volume VirtualDetector_TT_FrontHollow ... OK!
Comment 3 John Apostolakis 2016-12-13 20:19:42 CET
Further investigation using sub-navigators with extra verbosity did not yet reveal the source of the problem.

Unrelated revisions in G4Tubs.cc though appear to have decreased significantly the incidence of the problem.
Comment 4 John Apostolakis 2016-12-14 17:24:50 CET
Since the user no longer and we are unable to reproduce the problem, we are closing it.