-
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
refactor: Rework projector #3453
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.
Seems like a good idea overall if this is cheaper to compute.
The other enums changing underlying type is unrelated, right?
Examples/Framework/include/ActsExamples/EventData/Measurement.hpp
Outdated
Show resolved
Hide resolved
17% is wild. I guess it's because in the ODD chain we still run the projection quite a lot for calibrating every single measurement. |
I expected a bit more because @goetzgaycken got about 30% in Athena with a similar change but maybe it is due to the geometry and the eta coverage somehow |
Quality Gate passedIssues Measures |
This reverts commit a28acc3.
Originally #3453 --- Reworks the projector storage in the track EDM and the operations on vectors matrices. The bitset in the track EDM is replaced by a simple sequence of `std::uint8_t` which provide the mapping `measurement index -> bound index`. A helper is provided, `SubspaceHelper`, which collects convenience functions that convert to the legacy format and to matrix form and also do operations on vectors and matrices e.g. `projectVector` and `projectMatrix`. The benefit of this change is that the mapping and storage of the mapping becomes easier to grasp and also computationally less expensive. Instead of relying on eigen matrix operations we map directly to the desired object. A similar change in Athena improved the overall track finding CPU time by 30%. In favor of `SubspaceHelper` I removed `FixedSizeSubspace` and `VariableSizeSubspace` and made the necessary changes in the Examples. In principle these changes should be non-breaking. The switch in API should be scheduled for v37.
Reworks the projector storage in the track EDM and the operations on vectors matrices. The bitset in the track EDM is replaced by a simple sequence of
std::uint8_t
which provide the mappingmeasurement index -> bound index
. A helper is provided,SubspaceHelper
, which collects convenience functions that convert to the legacy format and to matrix form and also do operations on vectors and matrices e.g.projectVector
andprojectMatrix
.The benefit of this change is that the mapping and storage of the mapping becomes easier to grasp and also computationally less expensive. Instead of relying on eigen matrix operations we map directly to the desired object.
A similar change in Athena improved the overall track finding CPU time by 30%.
In favor of
SubspaceHelper
I removedFixedSizeSubspace
andVariableSizeSubspace
and made the necessary changes in the Examples.In principle these changes should be non-breaking. The switch in API should be scheduled for v37.