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
Copy file name to clipboardExpand all lines: Common/DCAFitter/include/DCAFitter/DCAFitterN.h
+67-13Lines changed: 67 additions & 13 deletions
Original file line number
Diff line number
Diff line change
@@ -118,10 +118,26 @@ class DCAFitterN
118
118
using ArrTrPos = o2::gpu::gpustd::array<Vec3D, N>; // container of Track positions
119
119
120
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)
121
+
enum BadCovPolicy : uint8_t { // 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)
125
+
};
126
+
127
+
enum FitStatus : uint8_t { // fit status of crossing hypothesis
128
+
None = 0, // no status set
129
+
Converged = 1, // fit converged
130
+
NoCrossing = 2, // no reasaonable crossing was found
131
+
RejRadius = 3, // radius of crossing was not acceptable
132
+
RejTrackX = 4, // one candidate track x was below the mimimum required radius
133
+
RejTrackRoughZ = 5, // rejected by rough cut on tracks Z difference
134
+
RejChi2Max = 6, // rejected by maximum chi2 cut
135
+
FailProp = 7, // propagation of at least prong to PCA failed
136
+
FailInvCov = 8, // inversion of cov.-matrix failed
137
+
FailInvWeight = 9, // inversion of Ti weight matrix failed
138
+
FailInv2ndDeriv = 10, // inversion of 2nd derivatives failed
139
+
FailCorrTracks = 11, // correction of tracks to updated x failed
140
+
FailCloserAlt = 12, // alternative PCA is closer
125
141
};
126
142
127
143
staticconstexprintgetNProngs() { return N; }
@@ -154,7 +170,7 @@ class DCAFitterN
154
170
///< check if propagation of tracks to candidate vertex was done
@@ -407,7 +428,8 @@ GPUd() int DCAFitterN<N, Args...>::process(const Tr&... args)
407
428
mTrAux[i].set(*mOrigTrPtr[i], mBz);
408
429
}
409
430
if (!mCrossings.set(mTrAux[0], *mOrigTrPtr[0], mTrAux[1], *mOrigTrPtr[1], mMaxDXYIni, mIsCollinear)) { // even for N>2 it should be enough to test just 1 loop
410
-
return0; // no crossing
431
+
mFitStatus[mCurHyp] = FitStatus::NoCrossing;
432
+
return0;
411
433
}
412
434
for (int ih = 0; ih < MAXHYP; ih++) {
413
435
mPropFailed[ih] = false;
@@ -428,6 +450,7 @@ GPUd() int DCAFitterN<N, Args...>::process(const Tr&... args)
0 commit comments