Skip to content

ACTS-398-Implement SurfaceArray using Grid, reimplement SurfaceArrayCreator methods

Paul Gessinger-Befurt requested to merge surfacearray-replacement-grid into master

This MR contains:

  • Implementation of an actual SurfaceArray class (no longer just a typedef over BinnedArray)

    • Towards this: added a lot of functionality in Axis and Grid such as
      • Axis wrapping: Open, Closed and Bound
      • AnyAxis concept that enables introspection from outside of Grid
      • Makes use of type-erasure
  • Rework of Layer::getCompatibleSurfaces to use neighbors coming directly from Grid instead of direct links like binmember and neighbors

  • Rework a lot in SurfaceArrayCreator:

    • Now tries to be consistent in all overloads.
    • Introduce new ProtoLayer and ProtoAxis class to capture properties before actually creating instances
      • ProtoLayer also now contains the only implementation of the logic which determines layer size from a vector of surfaces
    • Rework determination of bin counts (determineBinCount) and min/max for axes (createEquidistantAxis/createVariableAxis)
    • SurfaceArrayCreator has config which accepts a surface matcher. Default implementation looks at the coordinate equality in binning direction (identical to @jhrdinka's implementation before). Can be used to inject outside info, e.g. Geometry ID

This also makes ACTS-314 unnecessary, since binmembers do not have to be determined explicitly anymore.

Thoughts?

Edited by Paul Gessinger-Befurt

Merge request reports