ACTS-398-Implement SurfaceArray using Grid, reimplement SurfaceArrayCreator methods
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
andGrid
such as- Axis wrapping:
Open
,Closed
andBound
-
AnyAxis
concept that enables introspection from outside ofGrid
- Makes use of type-erasure
- Axis wrapping:
- Towards this: added a lot of functionality in
-
Rework of
Layer::getCompatibleSurfaces
to use neighbors coming directly fromGrid
instead of direct links like binmember and neighbors -
Rework a lot in
SurfaceArrayCreator
:- Now tries to be consistent in all overloads.
- Introduce new
ProtoLayer
andProtoAxis
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