ACTS-398-Implement SurfaceArray using Grid, reimplement SurfaceArrayCreator methods
This MR contains:
-
Implementation of an actual
SurfaceArrayclass (no longer just a typedef over BinnedArray)- Towards this: added a lot of functionality in
AxisandGridsuch as- Axis wrapping:
Open,ClosedandBound -
AnyAxisconcept that enables introspection from outside ofGrid - Makes use of type-erasure
- Axis wrapping:
- Towards this: added a lot of functionality in
-
Rework of
Layer::getCompatibleSurfacesto use neighbors coming directly fromGridinstead of direct links like binmember and neighbors -
Rework a lot in
SurfaceArrayCreator:- Now tries to be consistent in all overloads.
- Introduce new
ProtoLayerandProtoAxisclass to capture properties before actually creating instances-
ProtoLayeralso 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) -
SurfaceArrayCreatorhas 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