Skip to content

[VECGEOM-178] Introducing Assemblies

This commit provides an implementation of assemblies similar to what exists in TGeo.

The work took advantage of an earlier prototype by Michaela Gheata (branch mgheata/assembly), which was adapted to use the new VecGeom navigator classes: In particular, assemblies now reuse navigation components and can be used in combination with any (voxel) acceleration structure.

Due to the strong connection to navigation components, several adaptations needed to be performed on those classes. This includes most notably

  • modified LevelLocator interfaces (returning a NavigationState and not just a PlacedVolume), to be able to correctly return the final location in an assembly
  • accompanying change in the GlobalLocator
  • templating LevelLocators on "AssemblyAware" property, such that assembly treatment is activated only when needed
  • overall code simplification of LevelLocators (more shared kernels and code reuse)
  • some changes in SafetyEstimators and Navigator classes

This commit is functionally complete. It can correctly treat the ALICE ITS detector. Some further optimizations will be addressed elsewhere.

Merge request reports