TGeoManager::FindNode() always returning top node


I have a geometry of detectors, with sub components. Everything is placed within a global ‘TOP’ volume. I would like to be able to find the deepest node the current point is positioned in. The TGeoManager::FindNode() method is designed specifically for this, yet I always get the top node instead!

What are possible causes for this? My geometry file seems correct, the top node contains the daughter detectors, which contain the daughter subcomponents. Is there something more to setting the current point of the TGeoManager and calling FindNode() ?

Thanks in advance.

Here’s a specific question that may answer my problem,

When is it needed to call TGeoTranslation::RegisterYourself() ? I’ve been using TGeoTranslation’s inline, such as
parent->AddNode(daughter,i,new TGeoTranslation(x,y,z));

But instead declaring the TGeoTranslation, and calling the RegisterYourself method seems to work cleaner.

It seems I had a shared boundary between two daughters, and the translation information was not propogated. I’m surprised I never received a warning, but there you go. #-o