L1TEventInfoClient

Macros

Line Code
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128
#ifndef DQM_L1TMONITORCLIENT_L1TEventInfoClient_H
#define DQM_L1TMONITORCLIENT_L1TEventInfoClient_H

/**
 * \class L1TEventInfoClient
 *
 *
 * Description: fill L1 report summary for trigger L1T and emulator L1TEMU DQM.
 *
 * Implementation:
 *    <TODO: enter implementation details>
 *
 * \author: Vasile Mihai Ghete   - HEPHY Vienna
 *
 *    Re-designed and fully rewritten class.
 *    Original version and authors: see CVS history
 *
 *
 */

// system include files
#include <memory>
#include <iostream>
#include <fstream>
#include <string>
#include <vector>

// user include files

#include "FWCore/Framework/interface/Frameworkfwd.h"
#include "FWCore/Framework/interface/Event.h"
#include "FWCore/Framework/interface/MakerMacros.h"
#include "DQMServices/Core/interface/DQMStore.h"
#include "DQMServices/Core/interface/DQMEDHarvester.h"

// forward declarations

// class declaration
class L1TEventInfoClient : public DQMEDHarvester {
public:
  /// Constructor
  L1TEventInfoClient(const edm::ParameterSet &);

  /// Destructor
  ~L1TEventInfoClient() override;

protected:
  void dqmEndLuminosityBlock(DQMStore::IBooker &ibooker,
                             DQMStore::IGetter &igetter,
                             const edm::LuminosityBlock &,
                             const edm::EventSetup &) override;

  /// end job
  void dqmEndJob(DQMStore::IBooker &ibooker, DQMStore::IGetter &igetter) override;

private:
  /// input parameters

  bool m_verbose;
  std::string m_monitorDir;

  bool m_runInEventLoop;
  bool m_runInEndLumi;
  bool m_runInEndRun;
  bool m_runInEndJob;

  std::vector<edm::ParameterSet> m_l1Systems;
  std::vector<edm::ParameterSet> m_l1Objects;
  std::vector<std::string> m_disableL1Systems;
  std::vector<std::string> m_disableL1Objects;

  /// private methods

  /// initialize properly all elements
  void initialize();

  /// dump the content of the monitoring elements defined in this module
  void dumpContentMonitorElements(DQMStore::IBooker &ibooker, DQMStore::IGetter &igetter);

  /// book histograms
  void book(DQMStore::IBooker &ibooker, DQMStore::IGetter &igetter);

  /// read quality test results
  void readQtResults(DQMStore::IBooker &ibooker, DQMStore::IGetter &igetter);

  /// number of L1 trigger systems
  size_t m_nrL1Systems;

  /// number of L1 trigger objects
  size_t m_nrL1Objects;

  /// total number of quality tests enabled for summary report for L1 trigger systems
  /// and L1 trigger objects
  size_t m_totalNrQtSummaryEnabled;

  std::vector<std::string> m_systemLabel;
  std::vector<std::string> m_systemLabelExt;
  std::vector<int> m_systemDisable;

  std::vector<std::vector<std::string> > m_systemQualityTestName;
  std::vector<std::vector<std::string> > m_systemQualityTestHist;
  std::vector<std::vector<unsigned int> > m_systemQtSummaryEnabled;

  std::vector<int> m_objectDisable;
  std::vector<std::string> m_objectLabel;
  std::vector<std::string> m_objectFolder;

  std::vector<std::vector<std::string> > m_objectQualityTestName;
  std::vector<std::vector<std::string> > m_objectQualityTestHist;
  std::vector<std::vector<unsigned int> > m_objectQtSummaryEnabled;

  /// summary report

  Float_t m_reportSummary;
  Float_t m_summarySum;
  std::vector<int> m_summaryContent;

  /// a summary report
  MonitorElement *m_meReportSummary;

  /// monitor elements to report content for all quality tests
  std::vector<MonitorElement *> m_meReportSummaryContent;

  /// report summary map
  MonitorElement *m_meReportSummaryMap;
};

#endif