00001 #ifndef DQMOFFLINE_TRIGGER_EGAMMAHLTOFFLINE 00002 #define DQMOFFLINE_TRIGGER_EGAMMAHLTOFFLINE 00003 00004 // -*- C++ -*- 00005 // 00006 // Package: EgammaHLTOffline 00007 // Class: EgammaHLTOffline 00008 // 00009 /* 00010 Description: This is a DQM source 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 "DataFormats/HLTReco/interface/TriggerEvent.h" 00028 #include "DataFormats/EgammaCandidates/interface/GsfElectronFwd.h" 00029 00030 #include "FWCore/Framework/interface/Frameworkfwd.h" 00031 #include "FWCore/Framework/interface/EDAnalyzer.h" 00032 #include "FWCore/ParameterSet/interface/ParameterSet.h" 00033 #include "FWCore/Framework/interface/Event.h" 00034 00035 #include "DQMOffline/Trigger/interface/MonElemContainer.h" 00036 #include "DQMOffline/Trigger/interface/MonElemManager.h" 00037 #include "DQMOffline/Trigger/interface/EgHLTOffHelper.h" 00038 #include "DQMOffline/Trigger/interface/TrigCodes.h" 00039 00040 class DQMStore; 00041 00042 class EleHLTPathMon; 00043 00044 namespace trigger{ 00045 class TriggerObject; 00046 00047 } 00048 00049 class EgammaHLTOffline : public edm::EDAnalyzer { 00050 00051 private: 00052 DQMStore* dbe_; //dbe seems to be the standard name for this, I dont know why. We of course dont own it 00053 00054 std::vector<EleHLTPathMon*> elePathMonHists_; //monitoring histograms for different trigger paths, we own them 00055 edm::InputTag triggerSummaryLabel_; 00056 std::string dirName_; 00057 00058 EgHLTOffHelper egHelper_;// this is where up wrap up nasty code which will be replaced by offical tools at some point 00059 std::vector<std::string> namesFiltersUsed_; //the names of all the filters used (so we dont have to do calculations for every filter in the event 00060 00061 std::vector<std::string> eleHLTPathNames_;//names of the HLT paths to use 00062 std::vector<std::string> eleHLTFilterNames_;//names of the filter names to use, appended to the pathNames 00063 00064 std::vector<MonElemContainer<EgHLTOffEle>*> eleMonElems_; 00065 00066 //disabling copying/assignment 00067 EgammaHLTOffline(const EgammaHLTOffline& rhs){} 00068 EgammaHLTOffline& operator=(const EgammaHLTOffline& rhs){return *this;} 00069 00070 public: 00071 explicit EgammaHLTOffline(const edm::ParameterSet& ); 00072 virtual ~EgammaHLTOffline(); 00073 00074 00075 virtual void beginJob(const edm::EventSetup&); 00076 virtual void analyze(const edm::Event&, const edm::EventSetup&); 00077 virtual void endJob(); 00078 virtual void beginRun(const edm::Run& run, const edm::EventSetup& c); 00079 virtual void endRun(const edm::Run& run, const edm::EventSetup& c); 00080 00081 void addTrigPath(const std::string& name); 00082 void obtainFiltersElePasses(const std::vector<EgHLTOffEle>& eles,const std::vector<std::string>& filters,edm::Handle<trigger::TriggerEvent> trigEvt,std::vector<std::vector<int> >& filtersElePasses); 00083 void filterNamesUsed(std::vector<std::string>& filterNames); 00084 TrigCodes::TrigBitSet setFiltersElePasses(std::vector<EgHLTOffEle>& eles,const std::vector<std::string>& filters,edm::Handle<trigger::TriggerEvent> trigEvt); 00085 00086 }; 00087 00088 00089 00090 #endif