-
Notifications
You must be signed in to change notification settings - Fork 174
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
refactor!: General binned group for seeding #2854
refactor!: General binned group for seeding #2854
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
So: a BinnedGroup
now is a grid + an iteration sequence. Could you maybe elaborate, maybe in the tests next to the assertions, what the iteration order is in each case?
Then I have the general point that you're using unique_ptr
in ways where I don't think you actually need to. Can you double check this? Are you trying to optimize the number of copies this way, or is there another reason that I'm missing.
Follow up from #2854 In this PR I am defining a grid geometry for a cylindrical experiment with (phi, z) bins. This is done in a specific file that is included in the GridSpacePoint file. Other specializations can then be easily added in the same fashion (e.g. a pre-defined grid for telescope geometry). Requires: - #2838 - #2854 - #2835
A general class for defining a `BinnedGroup`. This class stores a `grid` (owns it), two `GridBinFinders` and a navigation pattern, optionally defined by the user. The PR also defines its iterator. This will replace the current `BinnedSPGroup` implementation, which is very specific. Also, creating and filling a grid cannot be generalized imho: variable definitions, selection cuts, number of axes and their ordering. As such, the creation and the filling of the grid are now handled externally, and not inside the `BinnedGroup` class, and it's the user's duty to make sure the filling happens. In my mind, all of this should be handled by the user for any custom way of doing it. One thing we can provide (as we currently do but I'm afraid is more a "nice consequence" then a "design") some pre-defined grids for specific geometries. For instance we can define a `CylindricalSpacePointGrid<external_spacepoint_t>` (as well as `CylindricalBinnedGroup<external_spacepoint_t>`) or a `TelescopeSpacePointGrid<external_spacepoint_t>` (and its `TelescopeBinnedGroup<external_spacepoint_t>`). These last points are not covered here, will be addressed in another PR once this one is in. My idea is to define these "specialization" as simple `typedef`s of the above generic classes, as well as defining functions for their creation and filling. This can be located inside a new `Acts/Seeding/detail` folder, so we can add as many specializations as possible. Requires: - acts-project#2838 - acts-project#2835 - acts-project#2839 (maybe optional?)
…#2858) Follow up from acts-project#2854 In this PR I am defining a grid geometry for a cylindrical experiment with (phi, z) bins. This is done in a specific file that is included in the GridSpacePoint file. Other specializations can then be easily added in the same fashion (e.g. a pre-defined grid for telescope geometry). Requires: - acts-project#2838 - acts-project#2854 - acts-project#2835
A general class for defining a
BinnedGroup
. This class stores agrid
(owns it), twoGridBinFinders
and a navigation pattern, optionally defined by the user. The PR also defines its iterator.This will replace the current
BinnedSPGroup
implementation, which is very specific.Also, creating and filling a grid cannot be generalized imho: variable definitions, selection cuts, number of axes and their ordering. As such, the creation and the filling of the grid are now handled externally, and not inside the
BinnedGroup
class, and it's the user's duty to make sure the filling happens.In my mind, all of this should be handled by the user for any custom way of doing it. One thing we can provide (as we currently do but I'm afraid is more a "nice consequence" then a "design") some pre-defined grids for specific geometries.
For instance we can define a
CylindricalSpacePointGrid<external_spacepoint_t>
(as well asCylindricalBinnedGroup<external_spacepoint_t>
) or aTelescopeSpacePointGrid<external_spacepoint_t>
(and itsTelescopeBinnedGroup<external_spacepoint_t>
).These last points are not covered here, will be addressed in another PR once this one is in. My idea is to define these "specialization" as simple
typedef
s of the above generic classes, as well as defining functions for their creation and filling. This can be located inside a newActs/Seeding/detail
folder, so we can add as many specializations as possible.Requires:
skipZMiddleBinSearch
#2835