Skip to content

Commit 725808c

Browse files
committed
Common: DCAFitter simplify exp.-backoff of logging
Signed-off-by: Felix Schlepper <felix.schlepper@cern.ch>
1 parent 08f60b3 commit 725808c

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;
@@ -1079,8 +1075,7 @@ GPUd() bool DCAFitterN<N, Args...>::minimizeChi2NoErr()
10791075
// do Newton-Rapson iteration with corrections = - dchi2/d{x0..xN} * [ d^2chi2/d{x0..xN}^2 ]^-1
10801076
if (!mD2Chi2Dx2.Invert()) {
10811077
if (mLoggerBadInv.needToLog()) {
1082-
printf("fitter %d: error (%ld muted): Inversion failed\n", mFitterID, mLoggerBadCov.getNMuted());
1083-
mLoggerBadInv.evCountPrev = mLoggerBadInv.evCount;
1078+
printf("fitter %d: error (%ld muted): Inversion failed\n", mFitterID, mLoggerBadCov.evCount);
10841079
}
10851080
mFitStatus[mCurHyp] = FitStatus::FailInv2ndDeriv;
10861081
return false;
@@ -1244,11 +1239,10 @@ GPUdi() bool DCAFitterN<N, Args...>::propagateParamToX(o2::track::TrackPar& t, f
12441239
mPropFailed[mCurHyp] = true;
12451240
if (mLoggerBadProp.needToLog()) {
12461241
#ifndef GPUCA_GPUCODE
1247-
printf("fitter %d: error (%ld muted): propagation failed for %s\n", mFitterID, mLoggerBadProp.getNMuted(), t.asString().c_str());
1242+
printf("fitter %d: error (%ld muted): propagation failed for %s\n", mFitterID, mLoggerBadProp.evCount, t.asString().c_str());
12481243
#else
1249-
printf("fitter %d: error (%ld muted): propagation failed\n", mFitterID, mLoggerBadProp.getNMuted());
1244+
printf("fitter %d: error (%ld muted): propagation failed\n", mFitterID, mLoggerBadProp.evCount);
12501245
#endif
1251-
mLoggerBadProp.evCountPrev = mLoggerBadProp.evCount;
12521246
}
12531247
}
12541248
return res;
@@ -1271,11 +1265,10 @@ GPUdi() bool DCAFitterN<N, Args...>::propagateToX(o2::track::TrackParCov& t, flo
12711265
mPropFailed[mCurHyp] = true;
12721266
if (mLoggerBadProp.needToLog()) {
12731267
#ifndef GPUCA_GPUCODE
1274-
printf("fitter %d: error (%ld muted): propagation failed for %s\n", mFitterID, mLoggerBadProp.getNMuted(), t.asString().c_str());
1268+
printf("fitter %d: error (%ld muted): propagation failed for %s\n", mFitterID, mLoggerBadProp.evCount, t.asString().c_str());
12751269
#else
1276-
printf("fitter %d: error (%ld muted): propagation failed\n", mFitterID, mLoggerBadProp.getNMuted());
1270+
printf("fitter %d: error (%ld muted): propagation failed\n", mFitterID, mLoggerBadProp.evCount);
12771271
#endif
1278-
mLoggerBadProp.evCountPrev = mLoggerBadProp.evCount;
12791272
}
12801273
}
12811274
return res;

0 commit comments

Comments
 (0)