From 3314e7e6eb1f43201a2b37264d909d301526d08f Mon Sep 17 00:00:00 2001 From: Susumu Oda <susumu.oda@cern.ch> Date: Thu, 23 May 2019 09:31:12 +0000 Subject: [PATCH] Fix ATLASRECTS-4966 by downgrading ERROR messages to WARNING messages and limiting the number of such WARNINGs. --- .../src/SCT_FlaggedConditionTool.cxx | 32 ++++++++++++++++--- .../src/SCT_FlaggedConditionTool.h | 10 ++++-- 2 files changed, 36 insertions(+), 6 deletions(-) diff --git a/InnerDetector/InDetConditions/SCT_ConditionsTools/src/SCT_FlaggedConditionTool.cxx b/InnerDetector/InDetConditions/SCT_ConditionsTools/src/SCT_FlaggedConditionTool.cxx index 31d6a016fa5..333d74c08f3 100644 --- a/InnerDetector/InDetConditions/SCT_ConditionsTools/src/SCT_FlaggedConditionTool.cxx +++ b/InnerDetector/InDetConditions/SCT_ConditionsTools/src/SCT_FlaggedConditionTool.cxx @@ -64,7 +64,13 @@ bool SCT_FlaggedConditionTool::isGood(const Identifier& elementId, InDetConditio bool SCT_FlaggedConditionTool::isGood(const IdentifierHash& hashId, const EventContext& ctx) const { const SCT_FlaggedCondData* badIds{getCondData(ctx)}; if (badIds==nullptr) { - ATH_MSG_ERROR("SCT_FlaggedCondData cannot be retrieved. (isGood)"); + if (m_numWarnForFailures<m_maxNumWarnForFailures) { + ATH_MSG_WARNING("SCT_FlaggedCondData cannot be retrieved. (isGood)"); + m_numWarnForFailures++; + if (m_numWarnForFailures==m_maxNumWarnForFailures) { + ATH_MSG_WARNING("Disabling this type of messages from " << name()); + } + } return false; } @@ -84,7 +90,13 @@ const std::string& SCT_FlaggedConditionTool::details(const IdentifierHash& hashI const SCT_FlaggedCondData* badIds{getCondData(ctx)}; if (badIds==nullptr) { - ATH_MSG_ERROR("SCT_FlaggedCondData cannot be retrieved. (details)"); + if (m_numWarnForFailures<m_maxNumWarnForFailures) { + ATH_MSG_WARNING("SCT_FlaggedCondData cannot be retrieved. (details)"); + m_numWarnForFailures++; + if (m_numWarnForFailures==m_maxNumWarnForFailures) { + ATH_MSG_WARNING("Disabling this type of messages from " << name()); + } + } return nullString; } @@ -112,7 +124,13 @@ const std::string& SCT_FlaggedConditionTool::details(const Identifier& Id) const int SCT_FlaggedConditionTool::numBadIds(const EventContext& ctx) const { const SCT_FlaggedCondData* badIds{getCondData(ctx)}; if (badIds==nullptr) { - ATH_MSG_ERROR("SCT_FlaggedCondData cannot be retrieved. (numBadIds)"); + if (m_numWarnForFailures<m_maxNumWarnForFailures) { + ATH_MSG_WARNING("SCT_FlaggedCondData cannot be retrieved. (numBadIds)"); + m_numWarnForFailures++; + if (m_numWarnForFailures==m_maxNumWarnForFailures) { + ATH_MSG_WARNING("Disabling this type of messages from " << name()); + } + } return -1; } @@ -136,7 +154,13 @@ const SCT_FlaggedCondData* SCT_FlaggedConditionTool::getBadIds() const { const SCT_FlaggedCondData* SCT_FlaggedConditionTool::getCondData(const EventContext& ctx) const { SG::ReadHandle<SCT_FlaggedCondData> condData{m_badIds, ctx}; if (not condData.isValid()) { - ATH_MSG_ERROR("Failed to get " << m_badIds.key()); + if (m_numWarnForFailures<m_maxNumWarnForFailures) { + ATH_MSG_WARNING("Failed to get " << m_badIds.key()); + m_numWarnForFailures++; + if (m_numWarnForFailures==m_maxNumWarnForFailures) { + ATH_MSG_WARNING("Disabling this type of messages from " << name()); + } + } return nullptr; } return condData.cptr(); diff --git a/InnerDetector/InDetConditions/SCT_ConditionsTools/src/SCT_FlaggedConditionTool.h b/InnerDetector/InDetConditions/SCT_ConditionsTools/src/SCT_FlaggedConditionTool.h index 552c4419bfd..60c54b3686e 100644 --- a/InnerDetector/InDetConditions/SCT_ConditionsTools/src/SCT_FlaggedConditionTool.h +++ b/InnerDetector/InDetConditions/SCT_ConditionsTools/src/SCT_FlaggedConditionTool.h @@ -1,3 +1,5 @@ +// -*- C++ -*- + /* Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration */ @@ -11,14 +13,15 @@ #ifndef SCT_FlaggedConditionTool_h #define SCT_FlaggedConditionTool_h -// Gaudi - // Athena #include "AthenaBaseComps/AthAlgTool.h" #include "SCT_ConditionsTools/ISCT_FlaggedConditionTool.h" #include "InDetConditionsSummaryService/InDetHierarchy.h" #include "StoreGate/ReadHandleKey.h" +// STL +#include <atomic> + // Forward declarations class SCT_ID; @@ -67,6 +70,9 @@ public: // SCT_FlaggedCondData_TRIG created by SCT_TrgClusterization for InDetTrigInDetSCT_FlaggedConditionTool SG::ReadHandleKey<SCT_FlaggedCondData> m_badIds{this, "SCT_FlaggedCondData", "SCT_FlaggedCondData", "SCT flagged conditions data"}; + UnsignedIntegerProperty m_maxNumWarnForFailures{this, "MaxNumWarnForFailures", 5}; + mutable std::atomic_uint m_numWarnForFailures{0}; + const SCT_ID* m_sctID{nullptr}; //!< ID helper for SCT const SCT_FlaggedCondData* getCondData(const EventContext& ctx) const; -- GitLab