CMS 3D CMS Logo

List of all members | Public Member Functions | Protected Member Functions | Private Member Functions | Private Attributes
QualityTester Class Reference

#include <QualityTester.h>

Inheritance diagram for QualityTester:
edm::EDAnalyzer edm::EDConsumerBase HLTTauRelvalQTester

Public Member Functions

 QualityTester (const edm::ParameterSet &ps)
 Constructor. More...
 
 ~QualityTester () override
 Destructor. More...
 
- Public Member Functions inherited from edm::EDAnalyzer
void callWhenNewProductsRegistered (std::function< void(BranchDescription const &)> const &func)
 
 EDAnalyzer ()
 
SerialTaskQueueglobalLuminosityBlocksQueue ()
 
SerialTaskQueueglobalRunsQueue ()
 
ModuleDescription const & moduleDescription () const
 
std::string workerType () const
 
 ~EDAnalyzer () 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
 
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)
 
virtual ~EDConsumerBase () noexcept(false)
 

Protected Member Functions

void analyze (const edm::Event &e, const edm::EventSetup &c) override
 Analyze. More...
 
void beginRun (const edm::Run &, const edm::EventSetup &) override
 
void endJob () override
 
void endLuminosityBlock (edm::LuminosityBlock const &lumiSeg, edm::EventSetup const &c) override
 perform the actual quality tests More...
 
void endRun (const edm::Run &r, const edm::EventSetup &c) override
 
- 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 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)
 

Private Member Functions

void performTests ()
 

Private Attributes

DQMStorebei
 
bool getQualityTestsFromFile
 
std::string Label
 
int nEvents
 
int prescaleFactor
 
bool qtestOnEndJob
 
bool qtestOnEndLumi
 
bool qtestOnEndRun
 
QTestHandleqtHandler
 
std::string reportThreshold
 
bool testInEventloop
 
bool verboseQT
 

Additional Inherited Members

- Public Types inherited from edm::EDAnalyzer
typedef EDAnalyzer ModuleType
 
- Public Types inherited from edm::EDConsumerBase
typedef ProductLabels Labels
 
- Static Public Member Functions inherited from edm::EDAnalyzer
static const std::string & baseType ()
 
static void fillDescriptions (ConfigurationDescriptions &descriptions)
 
static void prevalidate (ConfigurationDescriptions &)
 
static bool wantsGlobalLuminosityBlocks ()
 
static bool wantsGlobalRuns ()
 
static bool wantsStreamLuminosityBlocks ()
 
static bool wantsStreamRuns ()
 

Detailed Description

Definition at line 33 of file QualityTester.h.

Constructor & Destructor Documentation

QualityTester::QualityTester ( const edm::ParameterSet ps)

Constructor.

Definition at line 24 of file QualityTester.cc.

References edm::ParameterSet::getUntrackedParameter(), ecalTriggerPrimitiveDigis_cfi::Label, nEvents, nanoDQM_cff::prescaleFactor, nanoDQM_cff::qtestOnEndLumi, nanoDQM_cff::testInEventloop, and nanoDQM_cff::verboseQT.

25 {
26  prescaleFactor = ps.getUntrackedParameter<int>("prescaleFactor", 1);
27  getQualityTestsFromFile = ps.getUntrackedParameter<bool>("getQualityTestsFromFile", true);
28  Label = ps.getUntrackedParameter<string>("label","");
29  reportThreshold = ps.getUntrackedParameter<string>("reportThreshold", "");
30  testInEventloop = ps.getUntrackedParameter<bool>("testInEventloop",false);
31  qtestOnEndRun = ps.getUntrackedParameter<bool>("qtestOnEndRun",true);
32  qtestOnEndJob = ps.getUntrackedParameter<bool>("qtestOnEndJob",false);
33  qtestOnEndLumi = ps.getUntrackedParameter<bool>("qtestOnEndLumi",false);
34  verboseQT = ps.getUntrackedParameter<bool>("verboseQT", true);
35 
37 
39 
40  // if you use this module, it's non-sense not to provide the QualityTests.xml
41  if (getQualityTestsFromFile) {
43  qtHandler->configureTests(FileInPath(qtlist).fullPath(), bei);
44  }
45 
46 
47  nEvents = 0;
48 
49 }
T getUntrackedParameter(std::string const &, T const &) const
bool testInEventloop
Definition: QualityTester.h:63
bool getQualityTestsFromFile
Definition: QualityTester.h:61
QTestHandle * qtHandler
Definition: QualityTester.h:72
std::string Label
Definition: QualityTester.h:62
DQMStore * bei
Definition: QualityTester.h:70
std::string reportThreshold
Definition: QualityTester.h:67
QualityTester::~QualityTester ( )
override

Destructor.

Definition at line 74 of file QualityTester.cc.

75 {
76  delete qtHandler;
77 }
QTestHandle * qtHandler
Definition: QualityTester.h:72

Member Function Documentation

void QualityTester::analyze ( const edm::Event e,
const edm::EventSetup c 
)
overrideprotected

Analyze.

Definition at line 79 of file QualityTester.cc.

References nEvents, nanoDQM_cff::prescaleFactor, and nanoDQM_cff::testInEventloop.

Referenced by HLTTauRelvalQTester::analyze().

80 {
81  if (testInEventloop) {
82  nEvents++;
84  && prescaleFactor > 0
85  && nEvents % prescaleFactor == 0) {
86  performTests();
87  }
88  }
89 }
bool testInEventloop
Definition: QualityTester.h:63
bool getQualityTestsFromFile
Definition: QualityTester.h:61
void QualityTester::beginRun ( const edm::Run run,
const edm::EventSetup iSetup 
)
overrideprotected

Definition at line 51 of file QualityTester.cc.

References Exception, edm::eventsetup::heterocontainer::HCTypeTag::findType(), edm::EventSetup::get(), ecalTriggerPrimitiveDigis_cfi::Label, AlCaHLTBitMon_QueryRunRegistry::string, edm::eventsetup::EventSetupRecordKey::type(), and makeMuonMisalignmentScenario::xmlfile.

51  {
52 
53  // if getQualityTestsFromFile is False, it means that the end-user wants them from the Database
56  if(recordKey.type() == edm::eventsetup::EventSetupRecordKey::TypeTag()) {
57  throw cms::Exception ("Record not found") << "Record \"DQMXMLFileRcd"
58  << "\" does not exist!" << std::endl;
59  }
60 // std::cout << "Reading XML from Database" << std::endl ;
62  iSetup.get<DQMXMLFileRcd>().get(Label,xmlfile);
63  std::unique_ptr<std::vector<unsigned char> > vc( (*xmlfile).getUncompressedBlob() );
64  std::string xmlstr="";
65  for(unsigned char & it : *vc){
66  xmlstr += it;
67  }
68 
69  qtHandler->configureTests(xmlstr,bei,true);
70 
71  }
72 }
bool getQualityTestsFromFile
Definition: QualityTester.h:61
QTestHandle * qtHandler
Definition: QualityTester.h:72
static HCTypeTag findType(char const *iTypeName)
find a type based on the types name, if not found will return default HCTypeTag
std::string Label
Definition: QualityTester.h:62
xmlfile
Make an XML representation of the misalignment.
const T & get() const
Definition: EventSetup.h:59
heterocontainer::HCTypeTag TypeTag
DQMStore * bei
Definition: QualityTester.h:70
bool configureTests(const std::string &configFile, DQMStore *bei, bool UseDB=false)
Parses Config File and configures the quality tests.
Definition: QTestHandle.cc:38
void QualityTester::endJob ( void  )
overrideprotectedvirtual

Reimplemented from edm::EDAnalyzer.

Reimplemented in HLTTauRelvalQTester.

Definition at line 106 of file QualityTester.cc.

Referenced by HLTTauRelvalQTester::endJob().

106  {
108 }
void QualityTester::endLuminosityBlock ( edm::LuminosityBlock const &  lumiSeg,
edm::EventSetup const &  c 
)
overrideprotectedvirtual

perform the actual quality tests

Reimplemented from edm::EDAnalyzer.

Reimplemented in HLTTauRelvalQTester.

Definition at line 91 of file QualityTester.cc.

References edm::LuminosityBlockBase::id(), edm::LuminosityBlockID::luminosityBlock(), nanoDQM_cff::prescaleFactor, nanoDQM_cff::qtestOnEndLumi, and nanoDQM_cff::testInEventloop.

Referenced by HLTTauRelvalQTester::endLuminosityBlock().

92 {
95  && prescaleFactor > 0
96  && lumiSeg.id().luminosityBlock() % prescaleFactor == 0) {
97  performTests();
98  }
99  }
100 }
bool testInEventloop
Definition: QualityTester.h:63
bool getQualityTestsFromFile
Definition: QualityTester.h:61
void QualityTester::endRun ( const edm::Run r,
const edm::EventSetup c 
)
overrideprotected

Definition at line 102 of file QualityTester.cc.

Referenced by HLTTauRelvalQTester::endRun().

102  {
104 }
void QualityTester::performTests ( )
private

Definition at line 110 of file QualityTester.cc.

References gather_cfg::cout, mps_check::msg, AlCaHLTBitMon_QueryRunRegistry::string, and nanoDQM_cff::verboseQT.

111 {
112  // done here because new ME can appear while processing data
114 
115  edm::LogVerbatim ("QualityTester") << "Running the Quality Test";
116 
117  bei->runQTests();
118 
119  if (!reportThreshold.empty())
120  {
121  std::map< std::string, std::vector<std::string> > theAlarms
123 
124  for (auto & theAlarm : theAlarms)
125  {
126  const std::string &alarmType = theAlarm.first;
127  const std::vector<std::string> &msgs = theAlarm.second;
128  if ((reportThreshold == "black")
129  || (reportThreshold == "orange" && (alarmType == "orange" || alarmType == "red"))
130  || (reportThreshold == "red" && alarmType == "red"))
131  {
132  std::cout << std::endl;
133  std::cout << "Error Type: " << alarmType << std::endl;
134  for (auto const & msg : msgs)
135  std::cout << msg << std::endl;
136  }
137  }
138  std::cout << std::endl;
139  }
140 }
QTestHandle * qtHandler
Definition: QualityTester.h:72
std::map< std::string, std::vector< std::string > > checkDetailedQTStatus(DQMStore *bei) const
Checks alarms for single MonitorElements.
Definition: QTestHandle.cc:100
void attachTests(DQMStore *bei, bool verboseQT=true)
Attaches the quality tests to the MonitorElement.
Definition: QTestHandle.cc:65
tuple msg
Definition: mps_check.py:277
DQMStore * bei
Definition: QualityTester.h:70
std::string reportThreshold
Definition: QualityTester.h:67

Member Data Documentation

DQMStore* QualityTester::bei
private

Definition at line 70 of file QualityTester.h.

bool QualityTester::getQualityTestsFromFile
private

Definition at line 61 of file QualityTester.h.

std::string QualityTester::Label
private

Definition at line 62 of file QualityTester.h.

int QualityTester::nEvents
private

Definition at line 59 of file QualityTester.h.

Referenced by looper.Looper::loop().

int QualityTester::prescaleFactor
private

Definition at line 60 of file QualityTester.h.

bool QualityTester::qtestOnEndJob
private

Definition at line 65 of file QualityTester.h.

bool QualityTester::qtestOnEndLumi
private

Definition at line 66 of file QualityTester.h.

bool QualityTester::qtestOnEndRun
private

Definition at line 64 of file QualityTester.h.

QTestHandle* QualityTester::qtHandler
private

Definition at line 72 of file QualityTester.h.

std::string QualityTester::reportThreshold
private

Definition at line 67 of file QualityTester.h.

bool QualityTester::testInEventloop
private

Definition at line 63 of file QualityTester.h.

bool QualityTester::verboseQT
private

Definition at line 68 of file QualityTester.h.