From db6a19aa45effab1d84944d858a1cc610e47ac11 Mon Sep 17 00:00:00 2001
From: Davide Mancusi <davide.mancusi@cea.fr>
Date: Wed, 12 Dec 2018 16:45:22 +0100
Subject: [PATCH] Apply fix from ddc88ff2 to voxelized navigation, too

This commit fixes navigation in overlapping nodes when the point is
close to the boundary. See also:
https://root-forum.cern.ch/t/unexpected-navigation-behaviour-with-overlapping-nodes/26618
---
 geom/geom/src/TGeoNavigator.cxx | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/geom/geom/src/TGeoNavigator.cxx b/geom/geom/src/TGeoNavigator.cxx
index d3fae795c96..6c0d7969774 100644
--- a/geom/geom/src/TGeoNavigator.cxx
+++ b/geom/geom/src/TGeoNavigator.cxx
@@ -1179,7 +1179,8 @@ TGeoNode *TGeoNavigator::FindNextDaughterBoundary(Double_t *point, Double_t *dir
          current->cd();
          current->MasterToLocal(point, lpoint);
          current->MasterToLocalVect(dir, ldir);
-         if (current->IsOverlapping() && current->GetVolume()->Contains(lpoint)) continue;
+         if (current->IsOverlapping() && current->GetVolume()->Contains(lpoint) &&
+             current->GetVolume()->GetShape()->Safety(lpoint, kTRUE) > gTolerance) continue;
          snext = current->GetVolume()->GetShape()->DistFromOutside(lpoint, ldir, 3, fStep);
          sumchecked++;
 //         printf("checked %d from %d : snext=%g\n", sumchecked, nd, snext);
-- 
GitLab