CMS 3D CMS Logo

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

#include <DQM/LogMonitor/src/LogMessageMonitor.cc>

Inheritance diagram for LogMessageMonitor:
one::DQMEDAnalyzer< T > one::dqmimplementation::DQMBaseClass< T... >

Public Member Functions

 LogMessageMonitor (const edm::ParameterSet &)
 
 ~LogMessageMonitor () override
 
- Public Member Functions inherited from one::DQMEDAnalyzer< T >
 DQMEDAnalyzer ()=default
 
 DQMEDAnalyzer (DQMEDAnalyzer< T... > const &)=delete
 
 DQMEDAnalyzer (DQMEDAnalyzer< T... > &&)=delete
 
 ~DQMEDAnalyzer () override=default
 

Static Public Member Functions

static void fillDescriptions (edm::ConfigurationDescriptions &descriptions)
 

Private Member Functions

void analyze (const edm::Event &, const edm::EventSetup &) override
 
void bookHistograms (DQMStore::IBooker &, edm::Run const &, edm::EventSetup const &) override
 
void endJob () override
 
void endRun (edm::Run const &, edm::EventSetup const &) override
 

Private Attributes

std::vector< std::string > categories_vector_
 
MonitorElementCategoriesVsModules
 
edm::ParameterSet conf_
 
bool doPUmonitoring_
 
bool doWarningsPlots_
 
DQMStoredqmStore_
 
edm::EDGetTokenT< std::vector< edm::ErrorSummaryEntry > > errorToken_
 
GenericTriggerEventFlaggenTriggerEventFlag_
 
std::string histname
 
GetLumilumiDetails_
 
std::vector< std::string > modules_vector_
 
std::vector< MonitorElement * > ModulesErrorsVsBXlumi
 
std::map< std::string, int > modulesMap
 
std::vector< MonitorElement * > ModulesWarningsVsBXlumi
 
std::string pluginsMonName_
 

Detailed Description

Description: [one line class summary]

Implementation: [Notes on implementation]

Description: [one line class summary] from https://twiki.cern.ch/twiki/bin/view/CMS/TrackingPOGFilters#Filters Events with (partly) aborted track reconstruction The track reconstruction code is protected against events with too large occupancy which can cause an excessive use of CPU time and memory. Each iteration of the track reconstruction can be aborted if:

ELSeverityLevel

http://cmssdt.cern.ch/SDT/lxr/source/FWCore/MessageLogger/interface/ELseverityLevel.h?v=CMSSW_5_3_4 108 enum ELsev_ { 109 ELsev_noValueAssigned = 0 // default returned by map when not found 110 , ELsev_zeroSeverity // threshold use only 111 , ELsev_incidental // flash this on a screen 112 , ELsev_success // report reaching a milestone 113 , ELsev_info // information 114 , ELsev_warning // warning 115 , ELsev_warning2 // more serious warning 116 , ELsev_error // error detected 117 , ELsev_error2 // more serious error 118 , ELsev_next // advise to skip to next event 119 , ELsev_unspecified // severity was not specified 120 , ELsev_severe // future results are suspect 121 , ELsev_severe2 // more severe 122 , ELsev_abort // suggest aborting 123 , ELsev_fatal // strongly suggest aborting! 124 , ELsev_highestSeverity // threshold use only 125 // --— 126 , nLevels // how many levels? 127 }; // ELsev_

Implementation: [Notes on implementation]

Definition at line 53 of file LogMessageMonitor.h.

Constructor & Destructor Documentation

LogMessageMonitor::LogMessageMonitor ( const edm::ParameterSet iConfig)
explicit

Definition at line 79 of file LogMessageMonitor.cc.

References EnergyCorrector::c, errorToken_, genTriggerEventFlag_, edm::ParameterSet::getParameter(), and lumiDetails_.

81  , conf_ ( iConfig )
82  , pluginsMonName_ ( iConfig.getParameter<std::string> ("pluginsMonName") )
83  , modules_vector_ ( iConfig.getParameter<std::vector<std::string> >("modules") )
84  , categories_vector_ ( iConfig.getParameter<std::vector<std::string> >("categories") )
85  , doWarningsPlots_ ( iConfig.getParameter<bool> ("doWarningsPlots") )
86  , doPUmonitoring_ ( iConfig.getParameter<bool> ("doPUmonitoring") )
87 {
88 
89  errorToken_ = consumes<std::vector<edm::ErrorSummaryEntry> >(edm::InputTag("logErrorHarvester") );
90 
91  edm::ConsumesCollector c{ consumesCollector() };
92  //now do what ever initialization is needed
93  lumiDetails_ = new GetLumi( iConfig.getParameter<edm::ParameterSet>("BXlumiSetup"), c );
94  genTriggerEventFlag_ = new GenericTriggerEventFlag(iConfig.getParameter<edm::ParameterSet>("genericTriggerEventPSet"),consumesCollector(), *this);
95 }
T getParameter(std::string const &) const
std::vector< std::string > categories_vector_
Provides a code based selection for trigger and DCS information in order to have no failing filters i...
edm::ParameterSet conf_
edm::EDGetTokenT< std::vector< edm::ErrorSummaryEntry > > errorToken_
GenericTriggerEventFlag * genTriggerEventFlag_
std::vector< std::string > modules_vector_
std::string pluginsMonName_
LogMessageMonitor::~LogMessageMonitor ( )
override

Definition at line 98 of file LogMessageMonitor.cc.

References genTriggerEventFlag_.

99 {
100 
101  // do anything here that needs to be done at desctruction time
102  // (e.g. close files, deallocate resources etc.)
103  // if ( lumiDetails_ ) delete lumiDetails_;
105 
106 }
GenericTriggerEventFlag * genTriggerEventFlag_

Member Function Documentation

void LogMessageMonitor::analyze ( const edm::Event iEvent,
const edm::EventSetup iSetup 
)
overrideprivate

Definition at line 115 of file LogMessageMonitor.cc.

References GenericTriggerEventFlag::accept(), categories_vector_, CategoriesVsModules, taus_updatedMVAIds_cff::category, KineDebug3::count(), doPUmonitoring_, doWarningsPlots_, edm::ELseverityLevel::ELsev_error, benchmark_cfg::errors, errorToken_, HcalObjRepresent::Fill(), genTriggerEventFlag_, edm::Event::getByToken(), MonitorElement::getTH1(), GetLumi::getValue(), mps_fire::i, edm::HandleBase::isValid(), lumiDetails_, ModulesErrorsVsBXlumi, modulesMap, ModulesWarningsVsBXlumi, gen::n, mvaElectronID_Fall17_iso_V1_cff::nCategories, GenericTriggerEventFlag::on(), alignCSCRings::s, and AlCaHLTBitMon_QueryRunRegistry::string.

116 {
117 
118  // Filter out events if Trigger Filtering is requested
119  if (genTriggerEventFlag_->on()&& ! genTriggerEventFlag_->accept( iEvent, iSetup) ) return;
120 
121  double BXlumi = -1.;
122  if ( doPUmonitoring_ )
123  lumiDetails_->getValue(iEvent);
124 
125  // Take the ErrorSummaryEntry container
127  iEvent.getByToken(errorToken_,errors);
128  // Check that errors is valid
129  if(!errors.isValid()) return;
130  // Compare severity level of error with ELseveritylevel instance el : "-e" should be the lowest error
131  edm::ELseverityLevel el("-e");
132 
133  // Find the total number of errors in iEvent
134  if(errors->empty()){
135  if ( doPUmonitoring_ ) {
136  for(size_t i = 0; i < modulesMap.size(); i++) {
137  ModulesErrorsVsBXlumi[i] -> Fill(BXlumi,0.);
138  if ( doWarningsPlots_ )
139  ModulesWarningsVsBXlumi[i] -> Fill(BXlumi,0.);
140  }
141  }
142  } else {
143 
144  size_t nCategories = categories_vector_.size();
145 
146  for( size_t i = 0, n = errors->size(); i < n ; i++){
147 
148  // std::cout << "LogMessageMonitor::analyze] Severity for error/warning: " << (*errors)[i].severity << " " <<(*errors)[i].module << std::endl;
149  // remove the first part of the module string, what is before ":"
150  std::string s = (*errors)[i].module;
151  size_t pos = s.find(':');
152  std::string s_module = s.substr(pos+1,s.size());
153  std::map<std::string,int>::const_iterator it = modulesMap.find(s_module);
154  if (it!=modulesMap.end()){
155  // std::cout << "LogMessageMonitor::analyze] it: " << " --> " << s_module << std::endl;
156 
157  // IF THIS IS AN ERROR on the ELseverityLevel SCALE, FILL ERROR HISTS
158  if((*errors)[i].severity.getLevel() >= edm::ELseverityLevel::ELsev_error) {
159  if ( doPUmonitoring_ )
160  ModulesErrorsVsBXlumi[it->second]->Fill (BXlumi, (*errors)[i].count);
161 
162  // loop over the different categories of errors
163  // defined by configuration file
164  // if the category is not in the given list
165  // it fills the bin "others"
166  TString module = it->first;
167  TString category = (*errors)[i].category;
168  int ibinX = CategoriesVsModules->getTH1()->GetXaxis()->FindBin(module);
169  int ibinY = CategoriesVsModules->getTH1()->GetYaxis()->FindBin(category);
170  /*
171  std::cout << "LogMessageMonitor::analyze] ibinX: " << ibinX << " it->second: " << it->second << " it->first: " << it->first << std::endl;
172  std::cout << "LogMessageMonitor::analyze] ibinY: " << ibinY << " (*errors)[i].category: " << (*errors)[i].category << std::endl;
173  size_t nbinsX = CategoriesVsModules->getTH1()->GetNbinsX();
174  for (size_t bin = 1; bin<=nbinsX; bin++) {
175  std::cout << "binX" << bin << ": " << CategoriesVsModules->getTH1()->GetXaxis()->GetBinLabel(bin) << std::endl;
176  }
177  size_t nbinsY = CategoriesVsModules->getTH1()->GetNbinsY();
178  for (size_t bin = 1; bin<=nbinsY; bin++) {
179  std::cout << "binY" << bin << ": " << CategoriesVsModules->getTH1()->GetYaxis()->GetBinLabel(bin) << std::endl;
180  }
181  */
182  if ( ibinY>0 ) {
183  int ncount = CategoriesVsModules->getTH1()->GetBinContent(ibinX,ibinY)+1;
184  CategoriesVsModules->getTH1()->SetBinContent(ibinX,ibinY,ncount);
185  } else {
186  int ncount = CategoriesVsModules->getTH1()->GetBinContent(ibinX,nCategories)+1;
187  CategoriesVsModules->getTH1()->SetBinContent(ibinX,nCategories,ncount);
188  }
189  } else {
190  // IF ONLY WARNING, FILL WARNING HISTS
191  if ( doWarningsPlots_ )
192  if ( doPUmonitoring_ )
193  ModulesWarningsVsBXlumi[it->second]->Fill(BXlumi, (*errors)[i].count);
194  }
195  }
196  }
197  }
198 }
MonitorElement * CategoriesVsModules
std::vector< std::string > categories_vector_
bool getByToken(EDGetToken token, Handle< PROD > &result) const
Definition: Event.h:579
std::vector< MonitorElement * > ModulesWarningsVsBXlumi
TH1 * getTH1() const
std::map< std::string, int > modulesMap
std::vector< MonitorElement * > ModulesErrorsVsBXlumi
double getValue(const edm::Event &)
Definition: GetLumi.cc:64
void Fill(HcalDetId &id, double val, std::vector< TH2F > &depth)
bool accept(const edm::Event &event, const edm::EventSetup &setup)
To be called from analyze/filter() methods.
edm::EDGetTokenT< std::vector< edm::ErrorSummaryEntry > > errorToken_
bool isValid() const
Definition: HandleBase.h:74
GenericTriggerEventFlag * genTriggerEventFlag_
Definition: vlib.h:208
void LogMessageMonitor::bookHistograms ( DQMStore::IBooker ibooker,
edm::Run const &  iRun,
edm::EventSetup const &  iSetup 
)
overrideprivate

Definition at line 200 of file LogMessageMonitor.cc.

References DQMStore::IBooker::book2D(), DQMStore::IBooker::bookProfile(), categories_vector_, CategoriesVsModules, conf_, doPUmonitoring_, doWarningsPlots_, genTriggerEventFlag_, edm::ParameterSet::getParameter(), MonitorElement::getTH1(), histname, mps_fire::i, GenericTriggerEventFlag::initRun(), modules_vector_, ModulesErrorsVsBXlumi, modulesMap, ModulesWarningsVsBXlumi, mvaElectronID_Fall17_iso_V1_cff::nCategories, GenericTriggerEventFlag::on(), pluginsMonName_, MonitorElement::setAxisTitle(), MonitorElement::setBinLabel(), DQMStore::IBooker::setCurrentFolder(), and AlCaHLTBitMon_QueryRunRegistry::string.

203 {
204 
205  if ( genTriggerEventFlag_->on() ) genTriggerEventFlag_->initRun( iRun, iSetup );
206 
207  std::string MEFolderName = conf_.getParameter<std::string>("LogFolderName");
208 
209  ibooker.setCurrentFolder(MEFolderName);
210 
211  categories_vector_.push_back("others");
212  size_t nModules = modules_vector_.size();
213  size_t nCategories = categories_vector_.size();
214 
215  histname = pluginsMonName_+"ErrorsVsModules";
216  CategoriesVsModules = ibooker.book2D(histname, histname, nModules, 0., double(nModules), nCategories, 0., double(nCategories) );
217  CategoriesVsModules->getTH1()->GetXaxis()->SetNoAlphanumeric();
218  CategoriesVsModules->getTH1()->GetYaxis()->SetNoAlphanumeric();
219  CategoriesVsModules->setAxisTitle("modules",1);
220  for (size_t imodule = 0; imodule < nModules; imodule++)
221  CategoriesVsModules->setBinLabel(imodule+1,modules_vector_[imodule],1);
222  CategoriesVsModules->setAxisTitle("categories",2);
223  // CategoriesVsModules->getTH1()->GetXaxis()->LabelsOption("v");
224  for (size_t icategories = 0; icategories < nCategories; icategories++)
225  CategoriesVsModules->setBinLabel(icategories+1,categories_vector_[icategories],2);
226 
227  // MAKE MODULEMAP USING INPUT FROM CFG FILE
228  for (size_t i = 0; i < modules_vector_.size(); i++){
229  modulesMap.insert( std::pair<std::string,int>(modules_vector_[i],i) );
230  }
231 
232  if ( doPUmonitoring_ ) {
233  // BOOK THE HISTOGRAMS
234  // get binning from the configuration
235  edm::ParameterSet BXlumiParameters = conf_.getParameter<edm::ParameterSet>("BXlumiSetup");
236  int BXlumiBin = BXlumiParameters.getParameter<int>("BXlumiBin");
237  double BXlumiMin = BXlumiParameters.getParameter<double>("BXlumiMin");
238  double BXlumiMax = BXlumiParameters.getParameter<double>("BXlumiMax");
239 
240  size_t i = 0;
241  for(std::map<std::string,int>::const_iterator it = modulesMap.begin();
242  it != modulesMap.end(); ++it, i++){
243 
244  ibooker.setCurrentFolder(MEFolderName + "/PUmonitoring/Errors");
245 
246  histname = "errorsVsBXlumi_" + it->first;
247  ModulesErrorsVsBXlumi.push_back( dynamic_cast<MonitorElement*>(ibooker.bookProfile( histname, histname, BXlumiBin, BXlumiMin, BXlumiMax, 0.,100, "")) );
248  ModulesErrorsVsBXlumi[i] -> setAxisTitle("BXlumi [10^{30} Hz cm^{-2}]", 1);
249  ModulesErrorsVsBXlumi[i] -> setAxisTitle("Mean number of errors", 2);
250 
251  if ( doWarningsPlots_ ) {
252  ibooker.setCurrentFolder(MEFolderName + "/PUmonitoring/Warnings");
253 
254  histname = "warningVsBXlumi_" + it->first;
255  ModulesWarningsVsBXlumi.push_back( dynamic_cast<MonitorElement*>(ibooker.bookProfile( histname, histname, BXlumiBin, BXlumiMin, BXlumiMax, 0.,100, "")) );
256  ModulesWarningsVsBXlumi[i] -> setAxisTitle("BXlumi [10^{30} Hz cm^{-2}]", 1);
257  ModulesWarningsVsBXlumi[i] -> setAxisTitle("Mean number of warnings", 2);
258  }
259  }
260  }
261 
262 }
T getParameter(std::string const &) const
MonitorElement * CategoriesVsModules
MonitorElement * bookProfile(Args &&...args)
Definition: DQMStore.h:113
std::vector< std::string > categories_vector_
std::vector< MonitorElement * > ModulesWarningsVsBXlumi
TH1 * getTH1() const
void setBinLabel(int bin, const std::string &label, int axis=1)
set bin label for x, y or z axis (axis=1, 2, 3 respectively)
std::map< std::string, int > modulesMap
std::vector< MonitorElement * > ModulesErrorsVsBXlumi
edm::ParameterSet conf_
void setCurrentFolder(std::string const &fullpath)
Definition: DQMStore.cc:268
MonitorElement * book2D(Args &&...args)
Definition: DQMStore.h:109
GenericTriggerEventFlag * genTriggerEventFlag_
std::vector< std::string > modules_vector_
std::string pluginsMonName_
void initRun(const edm::Run &run, const edm::EventSetup &setup)
To be called from beginRun() methods.
void setAxisTitle(const std::string &title, int axis=1)
set x-, y- or z-axis title (axis=1, 2, 3 respectively)
void LogMessageMonitor::endJob ( void  )
overrideprivate

Definition at line 274 of file LogMessageMonitor.cc.

References conf_, dqmStore_, edm::ParameterSet::getParameter(), postProcessorL1Gen_cff::outputFileName, DQMStore::save(), DQMStore::showDirStructure(), and AlCaHLTBitMon_QueryRunRegistry::string.

275 {
276  bool outputMEsInRootFile = conf_.getParameter<bool>("OutputMEsInRootFile");
278  if(outputMEsInRootFile)
279  {
281  dqmStore_->save(outputFileName);
282  }
283 }
T getParameter(std::string const &) const
edm::ParameterSet conf_
void showDirStructure() const
Definition: DQMStore.cc:3285
void save(std::string const &filename, std::string const &path="", std::string const &pattern="", std::string const &rewrite="", uint32_t run=0, uint32_t lumi=0, SaveReferenceTag ref=SaveWithReference, int minStatus=dqm::qstatus::STATUS_OK, std::string const &fileupdate="RECREATE")
Definition: DQMStore.cc:2443
void LogMessageMonitor::endRun ( edm::Run const &  ,
edm::EventSetup const &   
)
overrideprivate

Definition at line 295 of file LogMessageMonitor.cc.

296 {
297 }
void LogMessageMonitor::fillDescriptions ( edm::ConfigurationDescriptions descriptions)
static

Definition at line 301 of file LogMessageMonitor.cc.

References edm::ConfigurationDescriptions::addDefault(), DEFINE_FWK_MODULE, and edm::ParameterSetDescription::setUnknown().

301  {
302  //The following says we do not know what parameters are allowed so do no validation
303  // Please change this to state exactly what you do use, even if it is no parameters
305  desc.setUnknown();
306  descriptions.addDefault(desc);
307 }
void addDefault(ParameterSetDescription const &psetDescription)

Member Data Documentation

std::vector<std::string> LogMessageMonitor::categories_vector_
private

Definition at line 84 of file LogMessageMonitor.h.

Referenced by analyze(), and bookHistograms().

MonitorElement* LogMessageMonitor::CategoriesVsModules
private

Definition at line 93 of file LogMessageMonitor.h.

Referenced by analyze(), and bookHistograms().

edm::ParameterSet LogMessageMonitor::conf_
private

Definition at line 77 of file LogMessageMonitor.h.

Referenced by bookHistograms(), and endJob().

bool LogMessageMonitor::doPUmonitoring_
private

Definition at line 96 of file LogMessageMonitor.h.

Referenced by analyze(), and bookHistograms().

bool LogMessageMonitor::doWarningsPlots_
private

Definition at line 95 of file LogMessageMonitor.h.

Referenced by analyze(), and bookHistograms().

DQMStore* LogMessageMonitor::dqmStore_
private

Definition at line 76 of file LogMessageMonitor.h.

Referenced by endJob().

edm::EDGetTokenT<std::vector<edm::ErrorSummaryEntry> > LogMessageMonitor::errorToken_
private

Definition at line 72 of file LogMessageMonitor.h.

Referenced by analyze(), and LogMessageMonitor().

GenericTriggerEventFlag* LogMessageMonitor::genTriggerEventFlag_
private

Definition at line 87 of file LogMessageMonitor.h.

Referenced by analyze(), bookHistograms(), LogMessageMonitor(), and ~LogMessageMonitor().

std::string LogMessageMonitor::histname
private

Definition at line 74 of file LogMessageMonitor.h.

Referenced by bookHistograms().

GetLumi* LogMessageMonitor::lumiDetails_
private

Definition at line 86 of file LogMessageMonitor.h.

Referenced by analyze(), and LogMessageMonitor().

std::vector<std::string> LogMessageMonitor::modules_vector_
private

Definition at line 83 of file LogMessageMonitor.h.

Referenced by bookHistograms().

std::vector<MonitorElement*> LogMessageMonitor::ModulesErrorsVsBXlumi
private

Definition at line 90 of file LogMessageMonitor.h.

Referenced by analyze(), and bookHistograms().

std::map<std::string,int> LogMessageMonitor::modulesMap
private

Definition at line 79 of file LogMessageMonitor.h.

Referenced by analyze(), and bookHistograms().

std::vector<MonitorElement*> LogMessageMonitor::ModulesWarningsVsBXlumi
private

Definition at line 91 of file LogMessageMonitor.h.

Referenced by analyze(), and bookHistograms().

std::string LogMessageMonitor::pluginsMonName_
private

Definition at line 82 of file LogMessageMonitor.h.

Referenced by bookHistograms().