EgHLTOfflineClient

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 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178
#ifndef DQMOFFLINE_TRIGGER_EGHLTOFFLINECLIENT
#define DQMOFFLINE_TRIGGER_EGHLTOFFLINECLIENT

// -*- C++ -*-
//
// Package:    EgammaHLTOfflineClient
// Class:      EgammaHLTOffline
//
/*
 Description: This is a DQM client meant to plot high-level HLT trigger 
 quantities as stored in the HLT results object TriggerResults for the Egamma triggers

 Notes:
  Currently I would like to plot simple histograms of three seperate types of variables
  1) global event quantities: eg nr of electrons
  2) di-object quanities: transverse mass, di-electron mass
  3) single object kinematic and id variables: eg et,eta,isolation

*/
//
// Original Author:  Sam Harper
//         Created:  June 2008
//
//
//

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

#include <vector>
#include <string>

class EgHLTOfflineClient : public DQMEDHarvester {
private:
  std::string dirName_;

  std::vector<std::string> eleHLTFilterNames_;  //names of the filters monitored using electrons to make plots for
  std::vector<std::string> eleHLTFilterNames2Leg_;
  std::vector<std::string> eleTightLooseTrigNames_;
  std::vector<std::string> phoHLTFilterNames_;  //names of the filters monitored using photons to make plots for
  std::vector<std::string> phoHLTFilterNames2Leg_;
  std::vector<std::string> phoTightLooseTrigNames_;

  std::vector<std::string> eleN1EffVars_;
  std::vector<std::string> eleSingleEffVars_;
  std::vector<std::string> eleEffTags_;

  std::vector<std::string> phoN1EffVars_;
  std::vector<std::string> phoSingleEffVars_;
  std::vector<std::string> phoEffTags_;

  std::vector<std::string> eleTrigTPEffVsVars_;
  std::vector<std::string> phoTrigTPEffVsVars_;
  std::vector<std::string> eleLooseTightTrigEffVsVars_;
  std::vector<std::string> phoLooseTightTrigEffVsVars_;

  std::vector<std::string> eleHLTvOfflineVars_;
  std::vector<std::string> phoHLTvOfflineVars_;

  bool runClientEndLumiBlock_;
  bool runClientEndRun_;
  bool runClientEndJob_;

  bool filterInactiveTriggers_;
  bool isSetup_;
  std::string hltTag_;

public:
  explicit EgHLTOfflineClient(const edm::ParameterSet&);
  ~EgHLTOfflineClient() override;

  void beginRun(const edm::Run& run, const edm::EventSetup& c) override;
  // DQM Client Diagnostic
  void dqmEndJob(DQMStore::IBooker&, DQMStore::IGetter&) override;  //performed in the endJob
  void dqmEndLuminosityBlock(DQMStore::IBooker&,
                             DQMStore::IGetter&,
                             edm::LuminosityBlock const&,
                             edm::EventSetup const&) override;  //performed in the endLumi

  //at somepoint these all may migrate to a helper class
  void createN1EffHists(const std::string& filterName,
                        const std::string& baseName,
                        const std::string& region,
                        const std::vector<std::string>& varNames,
                        DQMStore::IBooker&,
                        DQMStore::IGetter&);

  void createSingleEffHists(const std::string& filterName,
                            const std::string& baseName,
                            const std::string& region,
                            const std::vector<std::string>& varNames,
                            DQMStore::IBooker&,
                            DQMStore::IGetter&);

  void createLooseTightTrigEff(const std::vector<std::string>& tightLooseTrigNames,
                               const std::string& region,
                               const std::vector<std::string>& vsVarNames,
                               const std::string& objName,
                               DQMStore::IBooker&,
                               DQMStore::IGetter&);

  void createTrigTagProbeEffHists(const std::string& filterName,
                                  const std::string& region,
                                  const std::vector<std::string>& vsVarNames,
                                  const std::string& objName,
                                  DQMStore::IBooker&,
                                  DQMStore::IGetter&);

  void createTrigTagProbeEffHistsNewAlgo(const std::string& filterName,
                                         const std::string& region,
                                         const std::vector<std::string>& vsVarNames,
                                         const std::string& objName,
                                         DQMStore::IBooker&,
                                         DQMStore::IGetter&);

  void createTrigTagProbeEffHists2Leg(const std::string& filterNameLeg1,
                                      const std::string& filterNameLeg2,
                                      const std::string& region,
                                      const std::vector<std::string>& vsVarNames,
                                      const std::string& objName,
                                      DQMStore::IBooker&,
                                      DQMStore::IGetter&);

  void createHLTvsOfflineHists(const std::string& filterName,
                               const std::string& baseName,
                               const std::string& region,
                               const std::vector<std::string>& varNames,
                               DQMStore::IBooker&,
                               DQMStore::IGetter&);

  MonitorElement* FillHLTvsOfflineHist(const std::string& filter,
                                       const std::string& name,
                                       const std::string& title,
                                       const MonitorElement* numer,
                                       const MonitorElement* denom,
                                       DQMStore::IBooker&,
                                       DQMStore::IGetter&);

  MonitorElement* makeEffMonElemFromPassAndAll(const std::string& filterName,
                                               const std::string& name,
                                               const std::string& title,
                                               const MonitorElement* pass,
                                               const MonitorElement* all,
                                               DQMStore::IBooker&,
                                               DQMStore::IGetter&);

  MonitorElement* makeEffMonElemFromPassAndFail(const std::string& filterName,
                                                const std::string& name,
                                                const std::string& title,
                                                const MonitorElement* pass,
                                                const MonitorElement* fail,
                                                DQMStore::IBooker&,
                                                DQMStore::IGetter&);

  MonitorElement* makeEffMonElemFromPassAndFailAndTagTag(const std::string& filter,
                                                         const std::string& name,
                                                         const std::string& title,
                                                         const MonitorElement* pass,
                                                         const MonitorElement* fail,
                                                         const MonitorElement* tagtag,
                                                         DQMStore::IBooker&,
                                                         DQMStore::IGetter&);

  MonitorElement* makeEffMonElem2Leg(const std::string& filter,
                                     const std::string& name,
                                     const std::string& title,
                                     const MonitorElement* Leg1Eff,
                                     const MonitorElement* Leg2NotLeg1Source,
                                     const MonitorElement* all,
                                     DQMStore::IBooker&,
                                     DQMStore::IGetter&);

private:
  void runClient_(DQMStore::IBooker&, DQMStore::IGetter&);  //master function which runs the client
};

#endif