-
Notifications
You must be signed in to change notification settings - Fork 168
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
feat!: Add IVertexFinder
interface, use in vertexing
#2948
feat!: Add IVertexFinder
interface, use in vertexing
#2948
Conversation
78a84d4
to
70455c4
Compare
70455c4
to
e7b6dc2
Compare
e7b6dc2
to
01fd8e5
Compare
📊: Physics performance monitoring for ff46291physmon summary
|
23b8dc4
to
8a21b11
Compare
80b258f
to
dee393a
Compare
@andiwand this is ready now. |
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.
Left a few general comments. I am definitely in favor of removing such templated interfaces as I do not think we gain any runtime performance from it. On the other hand we lose time during compilation and non-templated code is easier to reason about IMO.
I wonder how far we are from actually using virtual inheritance and keeping the state inside the algorithm. We could even use a templated frontend to keep the ACTS state / algorithm separation intact.
I stumbled across this vertex seed finder and vertex finder interface a few weeks ago and it did not really make sense to me. I think these should be two different interfaces but maybe I am missing something.
Core/include/Acts/Vertexing/AdaptiveGridDensityVertexFinder.ipp
Outdated
Show resolved
Hide resolved
@andiwand The main argument against internal state is thread-safety, in my opinion. This separation defines well which parts are mutable and which ones are not, and we don't need to create / recreate the tools frequently. |
AMVFinderAlg sets up finder at construction now (not execute)
38464ac
to
29213f8
Compare
I seem to have broken physmon with the updates I added. |
…2948) This PR introduces a new `IVertexFinder` with an interface that can support the existing vertex finder implementations, with the exception of the seed vertex finder (which depends on specific spacepoint triplets). The interface introduces a type-erased state holder that the client of the finder initializes via the `makeState` interface function, and which the finder implementation downcasts to manipulate the state. This enables the concrete interface without templating. Since some vertex finders use *other* vertex finders as seeders, this also allows to have the seed finder property use this `IVertexFinder` interface. I did not observe CPU performance degradation as documented in acts-project#2842. Part of: - acts-project#2842 Blocked by: - acts-project#2946
…#2955) This changes the interface found in `KalmanVertexUpdater` and `KalmanVertexTrackUpdater` to handling the dispatch into 3 and 4 dimensions at runtime inside their respective compilation units. Part of: - acts-project#2842 Blocked by: - acts-project#2948
…2948) This PR introduces a new `IVertexFinder` with an interface that can support the existing vertex finder implementations, with the exception of the seed vertex finder (which depends on specific spacepoint triplets). The interface introduces a type-erased state holder that the client of the finder initializes via the `makeState` interface function, and which the finder implementation downcasts to manipulate the state. This enables the concrete interface without templating. Since some vertex finders use *other* vertex finders as seeders, this also allows to have the seed finder property use this `IVertexFinder` interface. I did not observe CPU performance degradation as documented in acts-project#2842. Part of: - acts-project#2842 Blocked by: - acts-project#2946
…#2955) This changes the interface found in `KalmanVertexUpdater` and `KalmanVertexTrackUpdater` to handling the dispatch into 3 and 4 dimensions at runtime inside their respective compilation units. Part of: - acts-project#2842 Blocked by: - acts-project#2948
This PR introduces a new
IVertexFinder
with an interface that can support the existing vertex finder implementations, with the exception of the seed vertex finder (which depends on specific spacepoint triplets).The interface introduces a type-erased state holder that the client of the finder initializes via the
makeState
interface function, and which the finder implementation downcasts to manipulate the state. This enables the concrete interface without templating.Since some vertex finders use other vertex finders as seeders, this also allows to have the seed finder property use this
IVertexFinder
interface.I did not observe CPU performance degradation as documented in #2842.
Part of:
Blocked by:
Delegate
for track linearizers #2946