Every Universe in my HexLattice has an outer unbounded region with material=Moderator, and HexLattice.outer is an empty and unbounded Universe/Cell with material=Moderator. Does HexLattice construct six plane surfaces for each entry? Or is it smart enough to realize those surfaces have the same material on both sides and can be omitted?
(The Cell in which the HexLattice is placed has a region with limiting surfaces in all directions.)
In other words: would tracking be more efficient if I used neither HexLattice nor many Universe-s, and simply used many Cell-s with appropriately-translated surfaces? All my Universes are built from Cells using just ZCylinder and ZPlane.
Not exactly – it doesn’t explicitly construct planes in the same way that you as a user can define planes, but when particles are tracking through a lattice, they will be stopped at the boundary of each lattice element.
No, even when the material is the same on both sides, particles will still be stopped at the boundary.
Not necessarily – it likely depends on how many lattice elements you have. As you point out, doing it without a lattice would prevent particles from stopping at the artificial boundary. However, the problem is that if you have pins in each of your hexagonal lattice positions, when a particle leaves one pin, it has to determine the distance to the next surface and if the cell on the other side has a complex region definition (i.e., outside of pin 1 & outside of pin 2 & outside of pin 3 & so on), doing that distance to nearest surface can be expensive. So the short answer is that you’d have to try it out to see what the difference in performance is, but my gut instinct is that for most cases using a lattice is going to be faster.
Geant4 got a big improvement in tracking efficiency by dividing the world into axis-aligned rectangular voxels, with each voxel having a list of its surfaces. So finding the current voxel is indexing, not searching, and the search for the next surface is small (voxels are automatically subdivided to make it so).
I suppose the Lattice is effectively doing something similar.