-
Notifications
You must be signed in to change notification settings - Fork 173
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: unbiased trackstates for fitters that do not smooth #2999
Conversation
Codecov ReportAll modified and coverable lines are covered by tests ✅
Additional details and impacted files@@ Coverage Diff @@
## main #2999 +/- ##
=======================================
Coverage 48.67% 48.67%
=======================================
Files 493 493
Lines 29004 29004
Branches 13816 13816
=======================================
Hits 14117 14117
Misses 4947 4947
Partials 9940 9940 ☔ View full report in Codecov by Sentry. |
📊: Physics performance monitoring for a1a038bphysmon summary
|
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.
I wonder if it would be better to actually write smoothed parameters in the GX2 as smoothed corresponds to a global fit.
In case of the GSF there is a smoothing step which seems not to be taken in one of the tests since the output changes?
We had about 1,5 years ago a discussion in that direction. Since non of the 3 categories really make sense for the GX2F, we settled to use
|
to me predicted seems the most confusing one but okay I don't want to open a discussion on this here But I don't think these changes should affect the GSF output |
@andiwand Not sure this helps, but originally, I was thinking that we would treat them stacked, like
There's an accessor that returns the highest of these, i.e. smoothed if available, otherwise filtered if available, otherwise predicted. That accessor is called Anyway, I don't have a strong preference what the GX2F should write its result in. I could also see them being conceptually closest to smoothed, rather than predicted. |
@paulgessinger in developer meeting: should we refactor to automatically take the "highest" fit? |
…ct#2999) ## What? Lets the `RootTrackStatesWriter.cpp` write unbiased states, even if there are no `smoothed` states. ## Why? The states we are writing are based upon the Kalman Filter formalism. There, we would expect `predicted`, `filtered`, and `smoothed` states. The `smoothed` states should be the final states. Other fitters, like the GX2F, do not take this path. Therefore, the final estimate is written to `predicted`. Until now, the `unbiased` states could only be computed from `smoothed` states. However, it is also for interest for other fitters to investigate the `unbiased` pulls and residuals. The idea for this PR evolved while investigating the track states for the GX2F (PR acts-project#2949). Seems to be useful to have this in. ## Notes We need to check for `state.hasCalibrated()`, since the physmon tests for the GSF were crashing. It seems, the GSF creates states without measurements. There, the programme aborted with ``` state.calibratedSize(): 4294967295 template_switch<Fn, 6, 6>(v=4294967295) is not valid (v > NMAX) ```
…ct#2999) ## What? Lets the `RootTrackStatesWriter.cpp` write unbiased states, even if there are no `smoothed` states. ## Why? The states we are writing are based upon the Kalman Filter formalism. There, we would expect `predicted`, `filtered`, and `smoothed` states. The `smoothed` states should be the final states. Other fitters, like the GX2F, do not take this path. Therefore, the final estimate is written to `predicted`. Until now, the `unbiased` states could only be computed from `smoothed` states. However, it is also for interest for other fitters to investigate the `unbiased` pulls and residuals. The idea for this PR evolved while investigating the track states for the GX2F (PR acts-project#2949). Seems to be useful to have this in. ## Notes We need to check for `state.hasCalibrated()`, since the physmon tests for the GSF were crashing. It seems, the GSF creates states without measurements. There, the programme aborted with ``` state.calibratedSize(): 4294967295 template_switch<Fn, 6, 6>(v=4294967295) is not valid (v > NMAX) ```
…ct#2999) ## What? Lets the `RootTrackStatesWriter.cpp` write unbiased states, even if there are no `smoothed` states. ## Why? The states we are writing are based upon the Kalman Filter formalism. There, we would expect `predicted`, `filtered`, and `smoothed` states. The `smoothed` states should be the final states. Other fitters, like the GX2F, do not take this path. Therefore, the final estimate is written to `predicted`. Until now, the `unbiased` states could only be computed from `smoothed` states. However, it is also for interest for other fitters to investigate the `unbiased` pulls and residuals. The idea for this PR evolved while investigating the track states for the GX2F (PR acts-project#2949). Seems to be useful to have this in. ## Notes We need to check for `state.hasCalibrated()`, since the physmon tests for the GSF were crashing. It seems, the GSF creates states without measurements. There, the programme aborted with ``` state.calibratedSize(): 4294967295 template_switch<Fn, 6, 6>(v=4294967295) is not valid (v > NMAX) ```
What?
Lets the
RootTrackStatesWriter.cpp
write unbiased states, even if there are nosmoothed
states.Why?
The states we are writing are based upon the Kalman Filter formalism. There, we would expect
predicted
,filtered
, andsmoothed
states. Thesmoothed
states should be the final states. Other fitters, like the GX2F, do not take this path. Therefore, the final estimate is written topredicted
.Until now, the
unbiased
states could only be computed fromsmoothed
states. However, it is also for interest for other fitters to investigate theunbiased
pulls and residuals.The idea for this PR evolved while investigating the track states for the GX2F (PR #2949). Seems to be useful to have this in.
Notes
We need to check for
state.hasCalibrated()
, since the physmon tests for the GSF were crashing. It seems, the GSF creates states without measurements. There, the programme aborted with