Skip to content
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

Merged
merged 158 commits into from
Jan 18, 2024

Conversation

CarloVarni
Copy link
Collaborator

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 typedefs 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:

@CarloVarni CarloVarni marked this pull request as ready for review January 16, 2024 07:11
Carlo Varni and others added 3 commits January 16, 2024 21:21
@CarloVarni CarloVarni removed the 🛑 blocked This item is blocked by another item label Jan 17, 2024
@CarloVarni CarloVarni requested a review from andiwand January 17, 2024 09:59
Copy link
Member

@paulgessinger paulgessinger left a 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.

Core/include/Acts/Seeding/SpacePointGrid.ipp Show resolved Hide resolved
Core/include/Acts/Seeding/BinnedGroupIterator.hpp Outdated Show resolved Hide resolved
Core/include/Acts/Seeding/BinnedGroup.hpp Outdated Show resolved Hide resolved
Tests/UnitTests/Core/Seeding/BinnedGroupTest.cpp Outdated Show resolved Hide resolved
@kodiakhq kodiakhq bot merged commit cbd38cd into acts-project:main Jan 18, 2024
51 checks passed
@CarloVarni CarloVarni deleted the generalBinnedSPgroup branch January 18, 2024 09:33
@acts-project-service
Copy link
Collaborator

🔴 Athena integration test results [cbd38cd]

Build job with this PR failed!

Please investigate the build job for the pipeline!

@acts-project-service acts-project-service added the Breaks Athena build This PR breaks the Athena build label Jan 18, 2024
kodiakhq bot pushed a commit that referenced this pull request Jan 19, 2024
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
@paulgessinger paulgessinger added Breaks Athena build This PR breaks the Athena build and removed Breaks Athena build This PR breaks the Athena build labels Jan 23, 2024
LaraCalic pushed a commit to LaraCalic/acts that referenced this pull request Feb 10, 2024
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?)
LaraCalic pushed a commit to LaraCalic/acts that referenced this pull request Feb 10, 2024
…#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
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Breaks Athena build This PR breaks the Athena build Component - Core Affects the Core module Component - Examples Affects the Examples module Component - Plugins Affects one or more Plugins Seeding Track Finding
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants