00001 #ifndef DQMOFFLINE_TRIGGER_TOPELECTRONHLTOFFLINECLIENT 00002 #define DQMOFFLINE_TRIGGER_TOPELECTRONHLTOFFLINECLIENT 00003 00004 // -*- C++ -*- 00005 // 00006 // Package: TopElectronHLTOfflineClient 00007 // Class: EgammaHLTOffline 00008 // 00009 /* 00010 Description: This is a DQM client meant to plot high-level HLT trigger 00011 quantities as stored in the HLT results object TriggerResults for the Egamma triggers 00012 00013 Notes: 00014 Currently I would like to plot simple histograms of three seperate types of variables 00015 1) global event quantities: eg nr of electrons 00016 2) di-object quanities: transverse mass, di-electron mass 00017 3) single object kinematic and id variables: eg et,eta,isolation 00018 00019 */ 00020 // 00021 // Original Author: Sam Harper 00022 // Created: June 2008 00023 // 00024 // 00025 // 00026 00027 #include "FWCore/Framework/interface/Frameworkfwd.h" 00028 #include "FWCore/Framework/interface/EDAnalyzer.h" 00029 00030 #include <vector> 00031 #include <string> 00032 00033 class DQMStore; 00034 class MonitorElement; 00035 00036 00037 class TopElectronHLTOfflineClient : public edm::EDAnalyzer { 00038 00039 private: 00040 DQMStore* dbe_; // non-owned dqm store 00041 std::string dirName_; 00042 00043 std::string hltTag_; 00044 00045 std::vector<std::string> superMeNames_; 00046 std::vector<std::string> eleMeNames_; 00047 00048 std::vector<std::string> electronIdNames_; 00049 std::vector<std::string> superTriggerNames_; 00050 std::vector<std::string> electronTriggerNames_; 00051 00052 bool addExtraId_; 00053 00054 bool runClientEndLumiBlock_; 00055 bool runClientEndRun_; 00056 bool runClientEndJob_; 00057 00058 00059 //disabling copying/assignment 00060 TopElectronHLTOfflineClient(const TopElectronHLTOfflineClient& rhs){} 00061 TopElectronHLTOfflineClient& operator=(const TopElectronHLTOfflineClient& rhs){return *this;} 00062 00063 public: 00064 explicit TopElectronHLTOfflineClient(const edm::ParameterSet& ); 00065 virtual ~TopElectronHLTOfflineClient(); 00066 00067 00068 virtual void beginJob(); 00069 virtual void analyze(const edm::Event&, const edm::EventSetup&); //dummy 00070 virtual void endJob(); 00071 virtual void beginRun(const edm::Run& run, const edm::EventSetup& c); 00072 virtual void endRun(const edm::Run& run, const edm::EventSetup& c); 00073 00074 virtual void beginLuminosityBlock(const edm::LuminosityBlock& lumiSeg,const edm::EventSetup& context){} 00075 // DQM Client Diagnostic 00076 virtual void endLuminosityBlock(const edm::LuminosityBlock& lumiSeg,const edm::EventSetup& c); 00077 00078 MonitorElement* makeEffMonElemFromPassAndAll(const std::string& name,const MonitorElement* pass,const MonitorElement* fail); 00079 void createSingleEffHists(const std::string&, const std::string&, const std::string&); 00080 00081 private: 00082 void runClient_(); //master function which runs the client 00083 00084 }; 00085 00086 00087 00088 #endif