-
Notifications
You must be signed in to change notification settings - Fork 178
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!: Seeding runs on const inputs #1948
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 this is a vector in the side that you index into? Honestly I don't think that's a bad idea at all to separate mutable from immutable information. Would it be possible to Not store the index in the spaceport mint itself somehow?
Also how does this interplay with the split between internal and external spacepoints and you EDM work?
Concerning the EDM my reasoning is the following: Since the now... is there a way to avoid the index completely? I do not see an easy solution tbh. And I would argue that the index would be the best approach since we foresee to have it in the future anyway. |
Just to be clear (and adding @noemina @tboldagh and @LuisFelipeCoelho to the discussion) this PR serves two purposes:
template <typename external_spacepoint_t>
inline bool xyzCoordinateCheck(
const Acts::SeedFinderConfig<external_spacepoint_t>& m_config,
const Acts::InternalSpacePoint<external_spacepoint_t>& sp,
const double* spacepointPosition, double* outputCoordinates) {
// check the compatibility of SPs coordinates in xyz assuming the
// Bottom-Middle direction with the strip measurement details
const float topHalfStripLength = m_config.getTopHalfStripLength(sp.sp());
const float bottomHalfStripLength =
m_config.getBottomHalfStripLength(sp.sp());
const Acts::Vector3 topStripDirection =
m_config.getTopStripDirection(sp.sp());
const Acts::Vector3 bottomStripDirection =
m_config.getBottomStripDirection(sp.sp());
const Acts::Vector3 stripCenterDistance =
m_config.getStripCenterDistance(sp.sp());
[...] And no... these getters return the objects by value, so we cannot go for a |
Codecov Report
@@ Coverage Diff @@
## main #1948 +/- ##
==========================================
- Coverage 49.59% 49.56% -0.04%
==========================================
Files 410 411 +1
Lines 23302 23319 +17
Branches 10634 10636 +2
==========================================
Hits 11557 11557
- Misses 4295 4312 +17
Partials 7450 7450
📣 We’re building smart automated test selection to slash your CI/CD build times. Learn more |
📊 Physics performance monitoring for 17ab95bFull report VertexingSeedingCKFAmbiguity resolutionTruth tracking (Kalman Filter)Truth tracking (GSF) |
@paulgessinger I only need to fix the documentation. Are you OK with the design of |
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 I made some comments on the code level but wonder more about the structure of the change. Technically what is needed here is an option to decorate const SP data.
The InternalSpacePoint does that already, without extra indirection through indices. It is not clear to me what SPData is for then?
My point is that we want to move away from the |
Hi Carlo,
and then everywhere in seeding code we would use: or we go with two vectors, one with UPs and another with decorating quantities (SPData in this PR). I would argue the the first approach is cleaner, i.e. indices that are always easy to mix. What do you think? |
So we discussed this live and Carlo clarified that this PR is only one of the steps. In the next steps the SpacePointData and backend collection will be all proxied by the SpacePointProxy and the indexing will not be exposed anywhere beyond the EDM (will be an internal thing). This addresses my concerns. |
@tboldagh and I have discussed this PR and the final design I'm envisioning for the ACTS Space Point class. I'm attaching here a scheme of the final design and will open an Issue to collect all the PRs required to reach this design |
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.
Small additional suggestion (realy small).
After clarifications the PR makes perfect sense.
@tboldagh @LuisFelipeCoelho @paulgessinger if we are ok with this then can we add the automerge (could not find a way to reference a label with markdown in github 😔) label? |
Changes to the code so that the seeding can run now on a collection of const space points. This implies that some additional variables of the space points (that the seeding algorithm set and uses) are now stored in a specific vector of a struct containing these variables. For now these variables are `quality` and `deltaR` The (internal) space points have now an internal index that acts as an identifier. This index will point the code to the correct element of the above-mentioned vector. Once we move to the `SpacePointProxy` strategy, this index will already be available
… copying them (acts-project#1966) Built on top of acts-project#1948 Dynamic variables are stored in the `SpacePointData` object. It looks like ~95% of the strip space points will have to use these variables during the seed finding process.
Changes to the code so that the seeding can run now on a collection of const space points.
This implies that some additional variables of the space points (that the seeding algorithm set and uses) are now stored in a specific vector of a struct containing these variables. For now these variables are
quality
anddeltaR
The (internal) space points have now an internal index that acts as an identifier. This index will point the code to the correct element of the above-mentioned vector. Once we move to the
SpacePointProxy
strategy, this index will already be available