@@ -75,21 +75,20 @@ struct TrackDeriv {
7575// /< Log log-throttling helper
7676struct 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
9594template <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