Skip to content

Commit 4774ec2

Browse files
committed
Common: DCAFitter simplify exp.-backoff of logging
Signed-off-by: Felix Schlepper <felix.schlepper@cern.ch>
1 parent 0b2ae98 commit 4774ec2

File tree

1 file changed

+18
-25
lines changed

1 file changed

+18
-25
lines changed

Common/DCAFitter/include/DCAFitter/DCAFitterN.h

Lines changed: 18 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -75,21 +75,20 @@ struct TrackDeriv {
7575
///< Log log-throttling helper
7676
struct LogLogThrottler {
7777
size_t evCount{0};
78-
size_t evCountPrev{0};
79-
size_t logCount{0};
80-
78+
size_t nextLog{1};
8179
GPUdi() bool needToLog()
8280
{
83-
if (size_t(o2::gpu::GPUCommonMath::Log(++evCount)) + 1 > logCount) {
84-
logCount++;
81+
if (++evCount > nextLog) {
82+
nextLog *= 2;
8583
return true;
8684
}
8785
return false;
8886
}
89-
90-
GPUdi() size_t getNMuted() const { return evCount - evCountPrev - 1; }
91-
92-
GPUdi() void clear() { evCount = evCountPrev = logCount = 0; }
87+
GPUdi() void clear()
88+
{
89+
evCount = 0;
90+
nextLog = 1;
91+
}
9392
};
9493

9594
template <int N, typename... Args>
@@ -747,12 +746,11 @@ GPUd() bool DCAFitterN<N, Args...>::recalculatePCAWithErrors(int cand)
747746
if (mLoggerBadCov.needToLog()) {
748747
#ifndef GPUCA_GPUCODE
749748
printf("fitter %d: error (%ld muted): overrode invalid track covariance from %s\n",
750-
mFitterID, mLoggerBadCov.getNMuted(), mCandTr[mCurHyp][i].asString().c_str());
749+
mFitterID, mLoggerBadCov.evCount, mCandTr[mCurHyp][i].asString().c_str());
751750
#else
752751
printf("fitter %d: error (%ld muted): overrode invalid track covariance cyy:%e czz:%e cyz:%e\n",
753-
mFitterID, mLoggerBadCov.getNMuted(), mCandTr[mCurHyp][i].getSigmaY2(), mCandTr[mCurHyp][i].getSigmaZ2(), mCandTr[mCurHyp][i].getSigmaZY());
752+
mFitterID, mLoggerBadCov.evCount, mCandTr[mCurHyp][i].getSigmaY2(), mCandTr[mCurHyp][i].getSigmaZ2(), mCandTr[mCurHyp][i].getSigmaZY());
754753
#endif
755-
mLoggerBadCov.evCountPrev = mLoggerBadCov.evCount;
756754
}
757755
mFitStatus[mCurHyp] = FitStatus::FailInvCov;
758756
if (mBadCovPolicy == Discard) {
@@ -975,12 +973,11 @@ GPUd() bool DCAFitterN<N, Args...>::minimizeChi2()
975973
if (mLoggerBadCov.needToLog()) {
976974
#ifndef GPUCA_GPUCODE
977975
printf("fitter %d: error (%ld muted): overrode invalid track covariance from %s\n",
978-
mFitterID, mLoggerBadCov.getNMuted(), mCandTr[mCurHyp][i].asString().c_str());
976+
mFitterID, mLoggerBadCov.evCount, mCandTr[mCurHyp][i].asString().c_str());
979977
#else
980978
printf("fitter %d: error (%ld muted): overrode invalid track covariance cyy:%e czz:%e cyz:%e\n",
981-
mFitterID, mLoggerBadCov.getNMuted(), mCandTr[mCurHyp][i].getSigmaY2(), mCandTr[mCurHyp][i].getSigmaZ2(), mCandTr[mCurHyp][i].getSigmaZY());
979+
mFitterID, mLoggerBadCov.evCount, mCandTr[mCurHyp][i].getSigmaY2(), mCandTr[mCurHyp][i].getSigmaZ2(), mCandTr[mCurHyp][i].getSigmaZY());
982980
#endif
983-
mLoggerBadCov.evCountPrev = mLoggerBadCov.evCount;
984981
}
985982
mFitStatus[mCurHyp] = FitStatus::FailInvCov;
986983
if (mBadCovPolicy == Discard) {
@@ -1010,8 +1007,7 @@ GPUd() bool DCAFitterN<N, Args...>::minimizeChi2()
10101007
// do Newton-Rapson iteration with corrections = - dchi2/d{x0..xN} * [ d^2chi2/d{x0..xN}^2 ]^-1
10111008
if (!mD2Chi2Dx2.Invert()) {
10121009
if (mLoggerBadInv.needToLog()) {
1013-
printf("fitter %d: error (%ld muted): Inversion failed\n", mFitterID, mLoggerBadCov.getNMuted());
1014-
mLoggerBadInv.evCountPrev = mLoggerBadInv.evCount;
1010+
printf("fitter %d: error (%ld muted): Inversion failed\n", mFitterID, mLoggerBadCov.evCount);
10151011
}
10161012
mFitStatus[mCurHyp] = FitStatus::FailInv2ndDeriv;
10171013
return false;
@@ -1082,8 +1078,7 @@ GPUd() bool DCAFitterN<N, Args...>::minimizeChi2NoErr()
10821078
// do Newton-Rapson iteration with corrections = - dchi2/d{x0..xN} * [ d^2chi2/d{x0..xN}^2 ]^-1
10831079
if (!mD2Chi2Dx2.Invert()) {
10841080
if (mLoggerBadInv.needToLog()) {
1085-
printf("fitter %d: error (%ld muted): Inversion failed\n", mFitterID, mLoggerBadCov.getNMuted());
1086-
mLoggerBadInv.evCountPrev = mLoggerBadInv.evCount;
1081+
printf("fitter %d: error (%ld muted): Inversion failed\n", mFitterID, mLoggerBadCov.evCount);
10871082
}
10881083
mFitStatus[mCurHyp] = FitStatus::FailInv2ndDeriv;
10891084
return false;
@@ -1247,11 +1242,10 @@ GPUdi() bool DCAFitterN<N, Args...>::propagateParamToX(o2::track::TrackPar& t, f
12471242
mPropFailed[mCurHyp] = true;
12481243
if (mLoggerBadProp.needToLog()) {
12491244
#ifndef GPUCA_GPUCODE
1250-
printf("fitter %d: error (%ld muted): propagation failed for %s\n", mFitterID, mLoggerBadProp.getNMuted(), t.asString().c_str());
1245+
printf("fitter %d: error (%ld muted): propagation failed for %s\n", mFitterID, mLoggerBadProp.evCount, t.asString().c_str());
12511246
#else
1252-
printf("fitter %d: error (%ld muted): propagation failed\n", mFitterID, mLoggerBadProp.getNMuted());
1247+
printf("fitter %d: error (%ld muted): propagation failed\n", mFitterID, mLoggerBadProp.evCount);
12531248
#endif
1254-
mLoggerBadProp.evCountPrev = mLoggerBadProp.evCount;
12551249
}
12561250
}
12571251
return res;
@@ -1274,11 +1268,10 @@ GPUdi() bool DCAFitterN<N, Args...>::propagateToX(o2::track::TrackParCov& t, flo
12741268
mPropFailed[mCurHyp] = true;
12751269
if (mLoggerBadProp.needToLog()) {
12761270
#ifndef GPUCA_GPUCODE
1277-
printf("fitter %d: error (%ld muted): propagation failed for %s\n", mFitterID, mLoggerBadProp.getNMuted(), t.asString().c_str());
1271+
printf("fitter %d: error (%ld muted): propagation failed for %s\n", mFitterID, mLoggerBadProp.evCount, t.asString().c_str());
12781272
#else
1279-
printf("fitter %d: error (%ld muted): propagation failed\n", mFitterID, mLoggerBadProp.getNMuted());
1273+
printf("fitter %d: error (%ld muted): propagation failed\n", mFitterID, mLoggerBadProp.evCount);
12801274
#endif
1281-
mLoggerBadProp.evCountPrev = mLoggerBadProp.evCount;
12821275
}
12831276
}
12841277
return res;

0 commit comments

Comments
 (0)