00001 #ifndef HLTJetMETDQMSource_H
00002 #define HLTJetMETDQMSource_H
00003
00004
00005
00006
00007
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028 #include <memory>
00029 #include <unistd.h>
00030
00031
00032
00033 #include "FWCore/Framework/interface/Frameworkfwd.h"
00034 #include "FWCore/Framework/interface/EDAnalyzer.h"
00035
00036 #include "FWCore/Framework/interface/Event.h"
00037 #include "FWCore/Framework/interface/MakerMacros.h"
00038 #include "DataFormats/HLTReco/interface/TriggerEvent.h"
00039
00040 #include "DQMServices/Core/interface/DQMStore.h"
00041 #include "DQMServices/Core/interface/MonitorElement.h"
00042 #include "FWCore/ServiceRegistry/interface/Service.h"
00043 #include "FWCore/MessageLogger/interface/MessageLogger.h"
00044 #include "FWCore/ParameterSet/interface/ParameterSet.h"
00045 #include <iostream>
00046 #include <fstream>
00047 #include <vector>
00048
00049
00050
00051
00052
00053 class HLTJetMETDQMSource : public edm::EDAnalyzer {
00054 public:
00055 explicit HLTJetMETDQMSource(const edm::ParameterSet&);
00056 ~HLTJetMETDQMSource();
00057
00058
00059 private:
00060 virtual void beginJob(const edm::EventSetup&) ;
00061 virtual void analyze(const edm::Event&, const edm::EventSetup&);
00062 virtual void endJob() ;
00063
00064
00065 void beginRun(const edm::Run& run, const edm::EventSetup& c);
00066
00067
00068 void endRun(const edm::Run& run, const edm::EventSetup& c);
00069
00070
00071
00072 bool isFirst;
00073
00074 int nev_;
00075 DQMStore * dbe_;
00076
00077 MonitorElement* total_;
00078
00079 bool plotAll_;
00080 bool resetMe_;
00081 int currentRun_;
00082
00083 unsigned int nBins_;
00084 double ptMin_ ;
00085 double ptMax_ ;
00086
00087 std::string dirname_;
00088 bool monitorDaemon_;
00089 int theHLTOutputType;
00090 edm::InputTag triggerSummaryLabel_;
00091 edm::InputTag triggerResultLabel_;
00092
00093
00094 class PathInfo {
00095 PathInfo():
00096 pathIndex_(-1), pathName_("unset"), objectType_(-1)
00097 {};
00098 public:
00099 void setHistos(MonitorElement* const et, MonitorElement* const eta,
00100 MonitorElement* const phi,
00101 MonitorElement* const etavsphi,
00102 MonitorElement* const etavset,
00103 MonitorElement* const phivset
00104 ) {
00105 et_ = et;
00106 eta_ = eta;
00107 phi_ = phi;
00108 etavsphi_ = etavsphi;
00109 etavset_ = etavset;
00110 phivset_ = phivset;
00111 }
00112 MonitorElement * getEtHisto() {
00113 return et_;
00114 }
00115 MonitorElement * getEtaHisto() {
00116 return eta_;
00117 }
00118 MonitorElement * getPhiHisto() {
00119 return phi_;
00120 }
00121 MonitorElement * getEtaVsPhiHisto() {
00122 return etavsphi_;
00123 }
00124 MonitorElement * getEtaVsEtHisto() {
00125 return etavset_;
00126 }
00127 MonitorElement * getPhiVsEtHisto() {
00128 return phivset_;
00129 }
00130 const std::string getName(void ) const {
00131 return pathName_;
00132 }
00133 ~PathInfo() {};
00134 PathInfo(std::string pathName, size_t type, float ptmin,
00135 float ptmax):
00136 pathName_(pathName), objectType_(type),
00137 et_(0), eta_(0), phi_(0), etavsphi_(0), etavset_(0), phivset_(0),
00138 ptmin_(ptmin), ptmax_(ptmax)
00139 {
00140 };
00141 PathInfo(std::string pathName, size_t type,
00142 MonitorElement *et,
00143 MonitorElement *eta,
00144 MonitorElement *phi,
00145 MonitorElement *etavsphi,
00146 MonitorElement *etavset,
00147 MonitorElement *phivset,
00148 float ptmin, float ptmax
00149 ):
00150 pathName_(pathName), objectType_(type),
00151 et_(et), eta_(eta), phi_(phi), etavsphi_(etavsphi),
00152 etavset_(etavset), phivset_(phivset),
00153 ptmin_(ptmin), ptmax_(ptmax)
00154 {};
00155 bool operator==(const std::string v)
00156 {
00157 return v==pathName_;
00158 }
00159 private:
00160 int pathIndex_;
00161 std::string pathName_;
00162 int objectType_;
00163
00164
00165 MonitorElement *et_, *eta_, *phi_, *etavsphi_, *etavset_, *phivset_;
00166
00167 float ptmin_, ptmax_;
00168
00169 const int index() {
00170 return pathIndex_;
00171 }
00172 const int type() {
00173 return objectType_;
00174 }
00175
00176 public:
00177 float getPtMin() const { return ptmin_; }
00178 float getPtMax() const { return ptmax_; }
00179 };
00180
00181
00182 class PathInfoCollection: public std::vector<PathInfo> {
00183 public:
00184 PathInfoCollection(): std::vector<PathInfo>()
00185 {};
00186 std::vector<PathInfo>::iterator find(std::string pathName) {
00187 return std::find(begin(), end(), pathName);
00188 }
00189 };
00190 PathInfoCollection hltPaths_;
00191
00192
00193 };
00194 #endif