You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
DCAFitterN: log-throttling for err.messages + user policy for bad CovMat
Due to the linearization errors the covariance matrix of the track propagated to some point may become non-positive defined.
In this case an error will be logged (logarithmically throttled), the relevant correlation coefficient of the cov.matrix is
redefined to cure the position part of the cov.matrix and further program flow depends on the user settings for
DCAFitterN::setBadCovPolicy(v):
DCAFitterN::setBadCovPolicy(DCAFitterN::Discard) : abandon fit (default)
DCAFitterN::setBadCovPolicy(DCAFitterN::Override) : continue fit with overridden cov.matrix
DCAFitterN::setBadCovPolicy(DCAFitterN::OverrideAnFlag): continue fit with overridden cov.matrix but set the propagation failure flag (can be checked using the
isPropagationFailure(int cand = 0) method).
Copy file name to clipboardExpand all lines: Common/DCAFitter/README.md
+17-2Lines changed: 17 additions & 2 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -2,7 +2,7 @@
2
2
\page refDetectorsVertexing DCAFitter
3
3
/doxy -->
4
4
5
-
##DCAFitterN
5
+
# DCAFitterN
6
6
7
7
Templated class to fit the Point of Closest Approach (PCA) of secondary vertex with N prongs. Allows minimization of either absolute or weighted Distances of Closest Approach (DCA) of N tracks to their common PCA.
8
8
@@ -74,7 +74,22 @@ Extra method `setWeightedFinalPCA(bool)` is provided for the "mixed" mode: if `s
74
74
but the final V0 position will be calculated using weighted average. One can also recalculate the V0 position by the weighted average method by calling explicitly
75
75
`ft.recalculatePCAWithErrors(int icand=0)`, w/o prior call of `setWeightedFinalPCA(true)`: this will update the position returned by the `getPCACandidate(int cand = 0)`.
76
76
77
-
The covariance matrix of the V0 position is calculated as an inversed sum of tracks inversed covariances at respective `X_dca` points.
77
+
The covariance matrix of the V0 position is calculated as an inverted sum of tracks inversed covariances at respective `X_dca` points.
78
78
79
79
See ``O2/Common/DCAFitter/test/testDCAFitterN.cxx`` for more extended example.
80
80
Currently only 2 and 3 prongs permitted, thought this can be changed by modifying ``DCAFitterN::NMax`` constant.
81
+
82
+
## Error handling
83
+
84
+
It may happen that the track propagation to the the proximity of the PCA fails at the various stage of the fit. In this case the fit is abandoned and the failure flag is set, it can be checked using
85
+
isPropagationFailure(int cand = 0)` method.
86
+
87
+
Also, due to the linearization errors the covariance matrix of the track propagated to some point may become non-positive defined.
88
+
In this case the relevant correlation coefficient of the cov.matrix is redefined to cure the position part of the cov.matrix and further program flow depends on the user settings for `DCAFitterN::setBadCovPolicy(v)`:
89
+
90
+
`DCAFitterN::setBadCovPolicy(DCAFitterN::Discard);` : abandon fit (default)
91
+
92
+
`DCAFitterN::setBadCovPolicy(DCAFitterN::Override);` : continue fit with overridden cov.matrix
93
+
94
+
`DCAFitterN::setBadCovPolicy(DCAFitterN::OverrideAnFlag);` continue fit with overridden cov.matrix but set the propagation failure flag (can be checked using the same `isPropagationFailure(int cand = 0)` method).
using ArrTrPos = o2::gpu::gpustd::array<Vec3D, N>; // container of Track positions
101
119
102
120
public:
121
+
enum BadCovPolicy { // if encountering non-positive defined cov. matrix, the choice is:
122
+
Discard = 0, // stop evaluation
123
+
Override = 1, // override correlation coef. to have cov.matrix pos.def and continue
124
+
OverrideAndFlag = 2// override correlation coef. to have cov.matrix pos.def, set mPropFailed flag of corresponding candidate to true and continue (up to the user to check the flag)
0 commit comments