G4OpBoundaryProcess tests for very short step lengths. If the step length is shorter than the geometrical tolerance, it is the volume reallocation step after one of the reflection-type boundary interactions (i.e. the particle is going back into the same volume it came from). The status is set to StepTooSmall, and the code returns (after setting velocity). https://geant4.kek.jp/lxr/source/processes/optical/src/G4OpBoundaryProcess.cc#L186 However, occasionally the step length is greater than the geometric tolerance (1e-9 mm). In this case the status is not set to StepTooSmall. The example LXe has code to check for this. https://geant4.kek.jp/lxr/source/examples/extended/optical/LXe/src/LXeSteppingAction.cc#L168 This results in a JustWarning exception (see it with LXe.mac, maybe increasing the number of particles). G4WT4 > step length: 2.10214e-09 G4WT4 > LXeSteppingAction::UserSteppingAction(): trackID=1498 parentID=871 opticalphoton E(MeV)=2.43451e-06n/ at (-79.9805,-0.685051,-126.228) prePV: Cladding1 postPV: Fiber G4WT4 > -------- WWWW ------- G4Exception-START -------- WWWW ------- *** G4Exception : LXeExpl01 issued by : LXeSteppingAction: LXeSteppingAction: No reallocation step after reflection!Something is wrong with the surface normal or geometry *** This is just a warning message. *** -------- WWWW -------- G4Exception-END --------- WWWW -------
A warning in G4OpBoundaryProcess is now printed when the optical photon step length is between 1e-9 mm and 1-e8 mm, stating that the boundary scattering may be incorrect. Coincidentally, I'm no longer seeing step lengths greater than 1e-9 in the Geant4 development version.