Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2024-04-06 12:07:57

0001 #ifndef DQM_L1TMONITORCLIENT_L1TEventInfoClient_H
0002 #define DQM_L1TMONITORCLIENT_L1TEventInfoClient_H
0003 
0004 /**
0005  * \class L1TEventInfoClient
0006  *
0007  *
0008  * Description: fill L1 report summary for trigger L1T and emulator L1TEMU DQM.
0009  *
0010  * Implementation:
0011  *    <TODO: enter implementation details>
0012  *
0013  * \author: Vasile Mihai Ghete   - HEPHY Vienna
0014  *
0015  *    Re-designed and fully rewritten class.
0016  *    Original version and authors: see CVS history
0017  *
0018  *
0019  */
0020 
0021 // system include files
0022 #include <memory>
0023 #include <iostream>
0024 #include <fstream>
0025 #include <string>
0026 #include <vector>
0027 
0028 // user include files
0029 
0030 #include "FWCore/Framework/interface/Frameworkfwd.h"
0031 #include "FWCore/Framework/interface/Event.h"
0032 #include "FWCore/Framework/interface/MakerMacros.h"
0033 #include "DQMServices/Core/interface/DQMStore.h"
0034 #include "DQMServices/Core/interface/DQMEDHarvester.h"
0035 
0036 // forward declarations
0037 
0038 // class declaration
0039 class L1TEventInfoClient : public DQMEDHarvester {
0040 public:
0041   /// Constructor
0042   L1TEventInfoClient(const edm::ParameterSet &);
0043 
0044   /// Destructor
0045   ~L1TEventInfoClient() override;
0046 
0047 protected:
0048   void dqmEndLuminosityBlock(DQMStore::IBooker &ibooker,
0049                              DQMStore::IGetter &igetter,
0050                              const edm::LuminosityBlock &,
0051                              const edm::EventSetup &) override;
0052 
0053   /// end job
0054   void dqmEndJob(DQMStore::IBooker &ibooker, DQMStore::IGetter &igetter) override;
0055 
0056 private:
0057   /// input parameters
0058 
0059   bool m_verbose;
0060   std::string m_monitorDir;
0061 
0062   bool m_runInEventLoop;
0063   bool m_runInEndLumi;
0064   bool m_runInEndRun;
0065   bool m_runInEndJob;
0066 
0067   std::vector<edm::ParameterSet> m_l1Systems;
0068   std::vector<edm::ParameterSet> m_l1Objects;
0069   std::vector<std::string> m_disableL1Systems;
0070   std::vector<std::string> m_disableL1Objects;
0071 
0072   /// private methods
0073 
0074   /// initialize properly all elements
0075   void initialize();
0076 
0077   /// dump the content of the monitoring elements defined in this module
0078   void dumpContentMonitorElements(DQMStore::IBooker &ibooker, DQMStore::IGetter &igetter);
0079 
0080   /// book histograms
0081   void book(DQMStore::IBooker &ibooker, DQMStore::IGetter &igetter);
0082 
0083   /// read quality test results
0084   void readQtResults(DQMStore::IBooker &ibooker, DQMStore::IGetter &igetter);
0085 
0086   /// number of L1 trigger systems
0087   size_t m_nrL1Systems;
0088 
0089   /// number of L1 trigger objects
0090   size_t m_nrL1Objects;
0091 
0092   /// total number of quality tests enabled for summary report for L1 trigger systems
0093   /// and L1 trigger objects
0094   size_t m_totalNrQtSummaryEnabled;
0095 
0096   std::vector<std::string> m_systemLabel;
0097   std::vector<std::string> m_systemLabelExt;
0098   std::vector<int> m_systemDisable;
0099 
0100   std::vector<std::vector<std::string> > m_systemQualityTestName;
0101   std::vector<std::vector<std::string> > m_systemQualityTestHist;
0102   std::vector<std::vector<unsigned int> > m_systemQtSummaryEnabled;
0103 
0104   std::vector<int> m_objectDisable;
0105   std::vector<std::string> m_objectLabel;
0106   std::vector<std::string> m_objectFolder;
0107 
0108   std::vector<std::vector<std::string> > m_objectQualityTestName;
0109   std::vector<std::vector<std::string> > m_objectQualityTestHist;
0110   std::vector<std::vector<unsigned int> > m_objectQtSummaryEnabled;
0111 
0112   /// summary report
0113 
0114   Float_t m_reportSummary;
0115   Float_t m_summarySum;
0116   std::vector<int> m_summaryContent;
0117 
0118   /// a summary report
0119   MonitorElement *m_meReportSummary;
0120 
0121   /// monitor elements to report content for all quality tests
0122   std::vector<MonitorElement *> m_meReportSummaryContent;
0123 
0124   /// report summary map
0125   MonitorElement *m_meReportSummaryMap;
0126 };
0127 
0128 #endif