-
Notifications
You must be signed in to change notification settings - Fork 52
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
Backward filter for Two-filter Smoothing #788
Conversation
161893c
to
faf6000
Compare
ff749a7
to
6de3783
Compare
142f1d0
to
5bc4c4d
Compare
As @beomki-yeo discovered in acts-project/traccc#788, constant reverse iterators cannot be currently compared to non-constant reverse iterators as is required by the C++ standard in section [container.requirements.general]. This commit adds the necessary comparison code, and adds some tests for the new behaviour.
As @beomki-yeo discovered in acts-project/traccc#788, constant reverse iterators cannot be currently compared to non-constant reverse iterators as is required by the C++ standard in section [container.requirements.general]. This commit adds the necessary comparison code, and adds some tests for the new behaviour.
As @beomki-yeo discovered in acts-project/traccc#788, constant reverse iterators cannot be currently compared to non-constant reverse iterators as is required by the C++ standard in section [container.requirements.general]. This commit adds the necessary comparison code, and adds some tests for the new behaviour.
1e15615
to
bfcf283
Compare
bfcf283
to
88384c7
Compare
@@ -123,9 +126,10 @@ TEST_P(CkfSparseTrackTelescopeTests, Run) { | |||
// Finding algorithm configuration | |||
typename traccc::finding_config cfg; | |||
cfg.ptc_hypothesis = ptc; | |||
cfg.chi2_max = 30.f; | |||
cfg.chi2_max = 200.f; |
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.
After I set the B field to z-axis and Telescope planes set along the x-axis, chi2 cut value of 30 for the CKF selection did not work for a few measurements :/
I believe the cut value of 30 should be OK in most cases from the distribution of chi2 of the Kalman Fitter (See the plot below). The change to 200 is just to cover the outliers which happen very rarely

If I read the ACTS implementation correctly it just rewinds the direction and uses the usual KF formalism but then sets That does not seem correct to me 🤔 since we would use measurements twice without accounting this in the covariance. Have you looked at this @beomki-yeo? I suppose you use the formalism provided in the reference? |
If I read the code correctly, And It seems the ACTS backward filter does not inflate covariance. I inflated the covariance of both forward and backward propagator. In the various references, I found that there are two boundary conditions:
The second condition sounds a bit weird because there is no inverse matrix for a zero matrix but I interpreted this as a big diagonal initial covariance matrix. |
Yeah it seems some measurements are used twice; |
ecff9e4
to
1b1ad86
Compare
1b1ad86
to
29251f3
Compare
29251f3
to
099392e
Compare
|
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.
OK, lets get this in an fix stuff later
This PR implements the two-filters smoother where a smoothed state is calculated by taking a weighted average between filtered state from the forward filter and predicted state from the backward filter (See Eq (3.38) of Pattern Recognition, Tracking and Vertex Reconstruction in Particle Detectors)
Following changes are made to implement the two-filters method:
However, the default smoothing algorithm will still be the RTS smoother (i.e. smoothing algorithm which is already implemented) until we improve the two-filters method with the DirectNavigator of ACTS. The DirectNavigator is required to make sure that forward and backward filter propagate through the same set of surfaces.