Is navigator order supposed to matter?

Started by mwj12, Dec 08, 2025, 04:27 AM

Previous topic - Next topic

mwj12

*
Newbie
Posts: 26
Logged
I find that I get substantially different simulation results depending on the order in which navigators are defined. In the attached file MeshVox.py, I define meshed navigators first  (for a CBCT bowtie and collimator) and a voxelized navigator second (the phantom). This leads to the simulated projection image shown in the attached MeshVox.png, which is how the result should look. However, if I interchange the order of the meshed and voxelized navigators (see VoxMesh.py) then the result exhibits a strong artifact (see VoxMesh.png).

Is this expected behavior? If so, what are the precise rules for how the ordering determines navigation geometry?

didier.benoit

Administrator
*****
Newbie
Posts: 18
Logged
In GGEMS v1.3, the order in which navigators are defined does affect the simulation, especially when volumes overlap or one volume lies inside the bounding box of another. This is expected behaviour for the v1.3 geometry system.
The reason is that v1.3 does not implement a hierarchical geometry (no mother/daughter volumes) and does not perform overlap resolution. All navigators are stored in a simple linear list, and during particle transport the engine queries them in the order they were created.
The first navigator that reports an intersection is taken as the active geometry for that step.
As a consequence:
- If a meshed navigator (bowtie, collimator) is defined before the voxelized phantom, the meshed object is encountered first, and the projection looks correct.
-If the voxelized phantom is defined before the meshed navigators, the phantom intercepts the particles earlier, effectively masking the mesh geometry and producing artifacts.
So the results you observe (Mesh→Vox giving correct projections, Vox→Mesh producing strong artifacts) are consistent with the internal design of v1.3.
This behaviour will be redesigned in GGEMS v2, which will introduce a unified geometry system with proper hierarchy and overlap handling, so that navigator ordering will no longer affect physics results.

mwj12

*
Newbie
Posts: 26
Logged
OK, but if that's the case, it sounds like if I list the bowtie first, then a primary photon will propagate correctly, but back-scatter from the CBCT detector can never propagate correctly. A back-scattered photon should encounter the phantom first, but if the bowtie is constructed first in the .py script, it will encounter the bowtie first, based on what you are saying.