CMS 3D CMS Logo

List of all members | Public Member Functions | Static Public Member Functions | Private Member Functions | Private Attributes
LogErrorFilter Class Reference

#include <FWCore/LogErrorFilter/src/LogErrorFilter.cc>

Inheritance diagram for LogErrorFilter:
edm::stream::EDFilter<> edm::stream::EDFilterBase edm::ProducerBase edm::EDConsumerBase edm::ProductRegistryHelper

Public Member Functions

 LogErrorFilter (edm::ParameterSet const &)
 
 ~LogErrorFilter () override
 
- Public Member Functions inherited from edm::stream::EDFilter<>
 EDFilter ()=default
 
bool hasAbilityToProduceInLumis () const final
 
bool hasAbilityToProduceInRuns () const final
 
- Public Member Functions inherited from edm::stream::EDFilterBase
 EDFilterBase ()
 
ModuleDescription const & moduleDescription () const
 
 ~EDFilterBase () override
 
- Public Member Functions inherited from edm::ProducerBase
void callWhenNewProductsRegistered (std::function< void(BranchDescription const &)> const &func)
 
std::vector< edm::ProductResolverIndex > const & indiciesForPutProducts (BranchType iBranchType) const
 
 ProducerBase ()
 
std::vector< edm::ProductResolverIndex > const & putTokenIndexToProductResolverIndex () const
 
void registerProducts (ProducerBase *, ProductRegistry *, ModuleDescription const &)
 
std::function< void(BranchDescription const &)> registrationCallback () const
 used by the fwk to register list of products More...
 
void resolvePutIndicies (BranchType iBranchType, ModuleToResolverIndicies const &iIndicies, std::string const &moduleLabel)
 
 ~ProducerBase () noexcept(false) override
 
- Public Member Functions inherited from edm::EDConsumerBase
std::vector< ConsumesInfoconsumesInfo () const
 
void convertCurrentProcessAlias (std::string const &processName)
 Convert "@currentProcess" in InputTag process names to the actual current process name. More...
 
 EDConsumerBase ()
 
 EDConsumerBase (EDConsumerBase const &)=delete
 
 EDConsumerBase (EDConsumerBase &&)=default
 
ESProxyIndex const * esGetTokenIndices (edm::Transition iTrans) const
 
ProductResolverIndexAndSkipBit indexFrom (EDGetToken, BranchType, TypeID const &) const
 
void itemsMayGet (BranchType, std::vector< ProductResolverIndexAndSkipBit > &) const
 
void itemsToGet (BranchType, std::vector< ProductResolverIndexAndSkipBit > &) const
 
std::vector< ProductResolverIndexAndSkipBit > const & itemsToGetFrom (BranchType iType) const
 
void labelsForToken (EDGetToken iToken, Labels &oLabels) const
 
void modulesWhoseProductsAreConsumed (std::vector< ModuleDescription const * > &modules, ProductRegistry const &preg, std::map< std::string, ModuleDescription const * > const &labelsToDesc, std::string const &processName) const
 
EDConsumerBase const & operator= (EDConsumerBase const &)=delete
 
EDConsumerBaseoperator= (EDConsumerBase &&)=default
 
bool registeredToConsume (ProductResolverIndex, bool, BranchType) const
 
bool registeredToConsumeMany (TypeID const &, BranchType) const
 
ProductResolverIndexAndSkipBit uncheckedIndexFrom (EDGetToken) const
 
void updateLookup (BranchType iBranchType, ProductResolverIndexHelper const &, bool iPrefetchMayGet)
 
void updateLookup (eventsetup::ESRecordsToProxyIndices const &)
 
virtual ~EDConsumerBase () noexcept(false)
 

Static Public Member Functions

static void fillDescriptions (edm::ConfigurationDescriptions &descriptions)
 
- Static Public Member Functions inherited from edm::stream::EDFilterBase
static const std::string & baseType ()
 
static void fillDescriptions (ConfigurationDescriptions &descriptions)
 
static void prevalidate (ConfigurationDescriptions &descriptions)
 

Private Member Functions

void beginLuminosityBlock (edm::LuminosityBlock const &, edm::EventSetup const &) override
 
bool filter (edm::Event &, edm::EventSetup const &) override
 

Private Attributes

bool atLeastOneEntry_
 
bool atLeastOneError_
 
bool atLeastOneWarning_
 
std::vector< std::string > avoidCategories_
 
std::map< std::string, unsigned int > errorCounts_
 
edm::EDGetTokenT< std::vector< edm::ErrorSummaryEntry > > harvesterToken_
 
unsigned int maxErrorKindsPerLumi_
 
unsigned int maxWarningKindsPerLumi_
 
bool useThresholdsPerKind_
 
std::map< std::string, unsigned int > warningCounts_
 

Additional Inherited Members

- Public Types inherited from edm::stream::EDFilter<>
typedef CacheContexts< T... > CacheTypes
 
typedef CacheTypes::GlobalCache GlobalCache
 
typedef AbilityChecker< T... > HasAbility
 
typedef CacheTypes::LuminosityBlockCache LuminosityBlockCache
 
typedef LuminosityBlockContextT< LuminosityBlockCache, RunCache, GlobalCacheLuminosityBlockContext
 
typedef CacheTypes::LuminosityBlockSummaryCache LuminosityBlockSummaryCache
 
typedef CacheTypes::RunCache RunCache
 
typedef RunContextT< RunCache, GlobalCacheRunContext
 
typedef CacheTypes::RunSummaryCache RunSummaryCache
 
- Public Types inherited from edm::stream::EDFilterBase
typedef EDFilterAdaptorBase ModuleType
 
- Public Types inherited from edm::ProducerBase
using ModuleToResolverIndicies = std::unordered_multimap< std::string, std::tuple< edm::TypeID const *, const char *, edm::ProductResolverIndex >>
 
typedef ProductRegistryHelper::TypeLabelList TypeLabelList
 
- Public Types inherited from edm::EDConsumerBase
typedef ProductLabels Labels
 
- Protected Member Functions inherited from edm::EDConsumerBase
template<typename ProductType , BranchType B = InEvent>
EDGetTokenT< ProductType > consumes (edm::InputTag const &tag)
 
EDGetToken consumes (const TypeToGet &id, edm::InputTag const &tag)
 
template<BranchType B>
EDGetToken consumes (TypeToGet const &id, edm::InputTag const &tag)
 
ConsumesCollector consumesCollector ()
 Use a ConsumesCollector to gather consumes information from helper functions. More...
 
template<typename ProductType , BranchType B = InEvent>
void consumesMany ()
 
void consumesMany (const TypeToGet &id)
 
template<BranchType B>
void consumesMany (const TypeToGet &id)
 
template<typename ESProduct , typename ESRecord , Transition Tr = Transition::Event>
auto esConsumes ()
 
template<typename ESProduct , typename ESRecord , Transition Tr = Transition::Event>
auto esConsumes (ESInputTag const &tag)
 
template<typename ProductType , BranchType B = InEvent>
EDGetTokenT< ProductType > mayConsume (edm::InputTag const &tag)
 
EDGetToken mayConsume (const TypeToGet &id, edm::InputTag const &tag)
 
template<BranchType B>
EDGetToken mayConsume (const TypeToGet &id, edm::InputTag const &tag)
 

Detailed Description

Description: [one line class summary]

Implementation: [Notes on implementation]

Definition at line 35 of file LogErrorFilter.cc.

Constructor & Destructor Documentation

LogErrorFilter::LogErrorFilter ( edm::ParameterSet const &  iConfig)
explicit

Definition at line 73 of file LogErrorFilter.cc.

References atLeastOneError_, atLeastOneWarning_, edm::errors::Configuration, Exception, edm::ParameterSet::getParameter(), harvesterToken_, maxErrorKindsPerLumi_, maxWarningKindsPerLumi_, and useThresholdsPerKind_.

74  : atLeastOneError_(iConfig.getParameter<bool>("atLeastOneError")),
75  atLeastOneWarning_(iConfig.getParameter<bool>("atLeastOneWarning")),
77  useThresholdsPerKind_(iConfig.getParameter<bool>("useThresholdsPerKind")),
78  avoidCategories_(iConfig.getParameter<std::vector<std::string>>("avoidCategories")) {
81  << "Useless configuration of the error/warning filter. Need to select on an error or a warning or both.\n";
82  }
83  harvesterToken_ = consumes<std::vector<edm::ErrorSummaryEntry>>(iConfig.getParameter<edm::InputTag>("harvesterTag"));
84  maxErrorKindsPerLumi_ = 999999;
85  maxWarningKindsPerLumi_ = 999999;
87  maxErrorKindsPerLumi_ = iConfig.getParameter<unsigned int>("maxErrorKindsPerLumi");
88  maxWarningKindsPerLumi_ = iConfig.getParameter<unsigned int>("maxWarningKindsPerLumi");
89  }
90 }
bool useThresholdsPerKind_
std::vector< std::string > avoidCategories_
unsigned int maxErrorKindsPerLumi_
unsigned int maxWarningKindsPerLumi_
edm::EDGetTokenT< std::vector< edm::ErrorSummaryEntry > > harvesterToken_
LogErrorFilter::~LogErrorFilter ( )
override

Definition at line 92 of file LogErrorFilter.cc.

92  {
93  // do anything here that needs to be done at desctruction time
94  // (e.g. close files, deallocate resources etc.)
95 }

Member Function Documentation

void LogErrorFilter::beginLuminosityBlock ( edm::LuminosityBlock const &  ,
edm::EventSetup const &   
)
overrideprivatevirtual

Reimplemented from edm::stream::EDFilterBase.

Definition at line 181 of file LogErrorFilter.cc.

References errorCounts_, useThresholdsPerKind_, and warningCounts_.

181  {
182  if (useThresholdsPerKind_) {
183  for (auto& err : errorCounts_) {
184  err.second = 0;
185  }
186  for (auto& err : warningCounts_) {
187  err.second = 0;
188  }
189  }
190 
191  return;
192 }
bool useThresholdsPerKind_
std::map< std::string, unsigned int > errorCounts_
std::map< std::string, unsigned int > warningCounts_
void LogErrorFilter::fillDescriptions ( edm::ConfigurationDescriptions descriptions)
static

Definition at line 194 of file LogErrorFilter.cc.

References edm::ConfigurationDescriptions::add(), edm::ParameterSetDescription::add(), and DEFINE_FWK_MODULE.

194  {
196  desc.add<edm::InputTag>("harvesterTag");
197  desc.add<bool>("atLeastOneError");
198  desc.add<bool>("atLeastOneWarning");
199  desc.add<bool>("useThresholdsPerKind");
200  desc.add<unsigned int>("maxErrorKindsPerLumi", 999999);
201  desc.add<unsigned int>("maxWarningKindsPerLumi", 999999);
202  desc.add<std::vector<std::string>>("avoidCategories");
203  descriptions.add("logErrorFilter", desc);
204 }
ParameterDescriptionBase * add(U const &iLabel, T const &value)
void add(std::string const &label, ParameterSetDescription const &psetDescription)
bool LogErrorFilter::filter ( edm::Event iEvent,
edm::EventSetup const &   
)
overrideprivatevirtual

Implements edm::stream::EDFilterBase.

Definition at line 102 of file LogErrorFilter.cc.

References atLeastOneEntry_, atLeastOneError_, atLeastOneWarning_, avoidCategories_, edm::ELseverityLevel::ELsev_error, edm::ELseverityLevel::ELsev_warning, errorCounts_, spr::find(), edm::Event::getHandle(), edm::ELseverityLevel::getLevel(), harvesterToken_, callgraph::kind, maxErrorKindsPerLumi_, maxWarningKindsPerLumi_, ErrorSummaryFilter_cfi::severity, AlCaHLTBitMon_QueryRunRegistry::string, heppy_report::summary, useThresholdsPerKind_, and warningCounts_.

102  {
103  if (auto errorsAndWarnings = iEvent.getHandle(harvesterToken_)) {
104  if (useThresholdsPerKind_) {
105  unsigned int errorsBelowThreshold = 0;
106  unsigned int warningsBelowThreshold = 0;
107  // update counters here
108  for (auto const& summary : *errorsAndWarnings) {
109  if (std::find(avoidCategories_.begin(), avoidCategories_.end(), summary.category) != avoidCategories_.end())
110  continue;
111  std::string kind = summary.category + ":" + summary.module;
112  int iSeverity = summary.severity.getLevel();
113  if (iSeverity == edm::ELseverityLevel::ELsev_error) {
114  unsigned int& iCount = errorCounts_[kind];
115  iCount++;
116  if (iCount <= maxErrorKindsPerLumi_)
117  errorsBelowThreshold++;
118  } else if (iSeverity == edm::ELseverityLevel::ELsev_warning) {
119  unsigned int& iCount = warningCounts_[kind];
120  iCount++;
121  if (iCount <= maxWarningKindsPerLumi_)
122  warningsBelowThreshold++;
123  }
124  }
125  return ((atLeastOneEntry_ && (errorsBelowThreshold > 0 || warningsBelowThreshold > 0)) ||
126  (atLeastOneError_ && errorsBelowThreshold > 0) || (atLeastOneWarning_ && warningsBelowThreshold > 0));
127  } else {
128  //no separation by kind, just count any errors/warnings
129  if (atLeastOneEntry_) {
130  for (auto const& summary : *errorsAndWarnings) {
131  edm::ELseverityLevel const& severity = summary.severity;
132  if (severity.getLevel() != edm::ELseverityLevel::ELsev_error and
134  continue;
135  }
136  if (!avoidCategories_.empty()) {
137  //veto categories from user input.
138  if (std::find(avoidCategories_.begin(), avoidCategories_.end(), summary.category) !=
139  avoidCategories_.end()) {
140  continue;
141  }
142  }
143  return true;
144  }
145  return false;
146  } else {
148  unsigned int nError = 0;
149  unsigned int nWarning = 0;
150  for (auto const& summary : *errorsAndWarnings) {
151  //veto categories from user input.
152  if (!avoidCategories_.empty()) {
153  if (std::find(avoidCategories_.begin(), avoidCategories_.end(), summary.category) !=
154  avoidCategories_.end()) {
155  continue;
156  }
157  }
158  edm::ELseverityLevel const& severity = summary.severity;
159  //count errors
160  if (severity.getLevel() == edm::ELseverityLevel::ELsev_error) {
161  ++nError;
162  }
163  //count warnings
164  if (severity.getLevel() == edm::ELseverityLevel::ELsev_warning) {
165  ++nWarning;
166  }
167  }
168  if (atLeastOneError_ && nError != 0) {
169  return (true);
170  }
171  if (atLeastOneWarning_ && nWarning != 0) {
172  return (true);
173  }
174  }
175  }
176  }
177  }
178  return (false);
179 }
void find(edm::Handle< EcalRecHitCollection > &hits, DetId thisDet, std::vector< EcalRecHitCollection::const_iterator > &hit, bool debug=false)
Definition: FindCaloHit.cc:20
bool useThresholdsPerKind_
std::vector< std::string > avoidCategories_
unsigned int maxErrorKindsPerLumi_
Handle< PROD > getHandle(EDGetTokenT< PROD > token) const
Definition: Event.h:539
std::map< std::string, unsigned int > errorCounts_
unsigned int maxWarningKindsPerLumi_
edm::EDGetTokenT< std::vector< edm::ErrorSummaryEntry > > harvesterToken_
std::map< std::string, unsigned int > warningCounts_

Member Data Documentation

bool LogErrorFilter::atLeastOneEntry_
private

Definition at line 50 of file LogErrorFilter.cc.

Referenced by filter().

bool LogErrorFilter::atLeastOneError_
private

Definition at line 48 of file LogErrorFilter.cc.

Referenced by filter(), and LogErrorFilter().

bool LogErrorFilter::atLeastOneWarning_
private

Definition at line 49 of file LogErrorFilter.cc.

Referenced by filter(), and LogErrorFilter().

std::vector<std::string> LogErrorFilter::avoidCategories_
private

Definition at line 56 of file LogErrorFilter.cc.

Referenced by filter().

std::map<std::string, unsigned int> LogErrorFilter::errorCounts_
private

Definition at line 58 of file LogErrorFilter.cc.

Referenced by beginLuminosityBlock(), and filter().

edm::EDGetTokenT<std::vector<edm::ErrorSummaryEntry> > LogErrorFilter::harvesterToken_
private

Definition at line 47 of file LogErrorFilter.cc.

Referenced by filter(), and LogErrorFilter().

unsigned int LogErrorFilter::maxErrorKindsPerLumi_
private

Definition at line 53 of file LogErrorFilter.cc.

Referenced by filter(), and LogErrorFilter().

unsigned int LogErrorFilter::maxWarningKindsPerLumi_
private

Definition at line 54 of file LogErrorFilter.cc.

Referenced by filter(), and LogErrorFilter().

bool LogErrorFilter::useThresholdsPerKind_
private

Definition at line 51 of file LogErrorFilter.cc.

Referenced by beginLuminosityBlock(), filter(), and LogErrorFilter().

std::map<std::string, unsigned int> LogErrorFilter::warningCounts_
private

Definition at line 59 of file LogErrorFilter.cc.

Referenced by beginLuminosityBlock(), and filter().