00001 #ifndef FOURVECTORHLTOFFLINE_H
00002 #define FOURVECTORHLTOFFLINE_H
00003
00004
00005
00006
00007
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025 #include <memory>
00026 #include <unistd.h>
00027
00028
00029
00030 #include "FWCore/Framework/interface/Frameworkfwd.h"
00031 #include "FWCore/Framework/interface/EDAnalyzer.h"
00032
00033 #include "FWCore/Framework/interface/Event.h"
00034 #include "FWCore/Framework/interface/MakerMacros.h"
00035 #include "DataFormats/HLTReco/interface/TriggerEvent.h"
00036 #include "DataFormats/Common/interface/TriggerResults.h"
00037 #include "HLTrigger/HLTcore/interface/HLTConfigProvider.h"
00038
00039 #include "DQMServices/Core/interface/DQMStore.h"
00040 #include "DQMServices/Core/interface/MonitorElement.h"
00041 #include "FWCore/ServiceRegistry/interface/Service.h"
00042 #include "FWCore/MessageLogger/interface/MessageLogger.h"
00043 #include "FWCore/ParameterSet/interface/ParameterSet.h"
00044 #include <iostream>
00045 #include <fstream>
00046 #include <vector>
00047
00048
00049
00050
00051
00052 class FourVectorHLTOffline : public edm::EDAnalyzer {
00053 public:
00054 explicit FourVectorHLTOffline(const edm::ParameterSet&);
00055 ~FourVectorHLTOffline();
00056
00057
00058 private:
00059 virtual void beginJob(const edm::EventSetup&) ;
00060 virtual void analyze(const edm::Event&, const edm::EventSetup&);
00061 virtual void endJob() ;
00062
00063
00064 void beginRun(const edm::Run& run, const edm::EventSetup& c);
00065
00066
00067 void endRun(const edm::Run& run, const edm::EventSetup& c);
00068
00069
00070
00071 int nev_;
00072 DQMStore * dbe_;
00073
00074 MonitorElement* total_;
00075
00076 bool plotAll_;
00077 bool resetMe_;
00078 int currentRun_;
00079
00080 unsigned int nBins_;
00081 double ptMin_ ;
00082 double ptMax_ ;
00083
00084 std::string dirname_;
00085 std::string processname_;
00086 bool monitorDaemon_;
00087 int theHLTOutputType;
00088 edm::InputTag triggerSummaryLabel_;
00089 edm::InputTag triggerResultsLabel_;
00090 HLTConfigProvider hltConfig_;
00091
00092 MonitorElement* scalersSelect;
00093
00094
00095 class PathInfo {
00096 PathInfo():
00097 pathIndex_(-1), denomPathName_("unset"), pathName_("unset"), l1pathName_("unset"), filterName_("unset"), processName_("unset"), objectType_(-1)
00098 {};
00099 public:
00100 void setHistos(
00101 MonitorElement* const NOn,
00102 MonitorElement* const onEtOn,
00103 MonitorElement* const onEtaOn,
00104 MonitorElement* const onPhiOn,
00105 MonitorElement* const onEtavsonPhiOn,
00106 MonitorElement* const offEtOff,
00107 MonitorElement* const offEtaOff,
00108 MonitorElement* const offPhiOff,
00109 MonitorElement* const offEtavsoffPhiOff,
00110 MonitorElement* const l1EtL1,
00111 MonitorElement* const l1EtaL1,
00112 MonitorElement* const l1PhiL1,
00113 MonitorElement* const l1Etavsl1PhiL1,
00114 MonitorElement* const l1EtL1On,
00115 MonitorElement* const l1EtaL1On,
00116 MonitorElement* const l1PhiL1On,
00117 MonitorElement* const l1Etavsl1PhiL1On,
00118 MonitorElement* const offEtL1Off,
00119 MonitorElement* const offEtaL1Off,
00120 MonitorElement* const offPhiL1Off,
00121 MonitorElement* const offEtavsoffPhiL1Off,
00122 MonitorElement* const offEtOnOff,
00123 MonitorElement* const offEtaOnOff,
00124 MonitorElement* const offPhiOnOff,
00125 MonitorElement* const offEtavsoffPhiOnOff) {
00126 NOn_ = NOn;
00127 onEtOn_ = onEtOn;
00128 onEtaOn_ = onEtaOn;
00129 onPhiOn_ = onPhiOn;
00130 onEtavsonPhiOn_ = onEtavsonPhiOn;
00131 offEtOff_ = offEtOff;
00132 offEtaOff_ = offEtaOff;
00133 offPhiOff_ = offPhiOff;
00134 offEtavsoffPhiOff_ = offEtavsoffPhiOff;
00135 l1EtL1_ = l1EtL1;
00136 l1EtaL1_ = l1EtaL1;
00137 l1PhiL1_ = l1PhiL1;
00138 l1Etavsl1PhiL1_ = l1Etavsl1PhiL1;
00139 l1EtL1On_ = l1EtL1On;
00140 l1EtaL1On_ = l1EtaL1On;
00141 l1PhiL1On_ = l1PhiL1On;
00142 l1Etavsl1PhiL1On_ = l1Etavsl1PhiL1On;
00143 offEtL1Off_ = offEtL1Off;
00144 offEtaL1Off_ = offEtaL1Off;
00145 offPhiL1Off_ = offPhiL1Off;
00146 offEtavsoffPhiL1Off_ = offEtavsoffPhiL1Off;
00147 offEtOnOff_ = offEtOnOff;
00148 offEtaOnOff_ = offEtaOnOff;
00149 offPhiOnOff_ = offPhiOnOff;
00150 offEtavsoffPhiOnOff_ = offEtavsoffPhiOnOff;
00151 }
00152 MonitorElement * getNOnHisto() {
00153 return NOn_;
00154 }
00155 MonitorElement * getOnEtOnHisto() {
00156 return onEtOn_;
00157 }
00158 MonitorElement * getOnEtaOnHisto() {
00159 return onEtaOn_;
00160 }
00161 MonitorElement * getOnPhiOnHisto() {
00162 return onPhiOn_;
00163 }
00164 MonitorElement * getOnEtaVsOnPhiOnHisto() {
00165 return onEtavsonPhiOn_;
00166 }
00167 MonitorElement * getOffEtOffHisto() {
00168 return offEtOff_;
00169 }
00170 MonitorElement * getOffEtaOffHisto() {
00171 return offEtaOff_;
00172 }
00173 MonitorElement * getOffPhiOffHisto() {
00174 return offPhiOff_;
00175 }
00176 MonitorElement * getOffEtaVsOffPhiOffHisto() {
00177 return offEtavsoffPhiOff_;
00178 }
00179 MonitorElement * getL1EtL1Histo() {
00180 return l1EtL1_;
00181 }
00182 MonitorElement * getL1EtaL1Histo() {
00183 return l1EtaL1_;
00184 }
00185 MonitorElement * getL1PhiL1Histo() {
00186 return l1PhiL1_;
00187 }
00188 MonitorElement * getL1EtaVsL1PhiL1Histo() {
00189 return l1Etavsl1PhiL1_;
00190 }
00191 MonitorElement * getL1EtL1OnHisto() {
00192 return l1EtL1On_;
00193 }
00194 MonitorElement * getL1EtaL1OnHisto() {
00195 return l1EtaL1On_;
00196 }
00197 MonitorElement * getL1PhiL1OnHisto() {
00198 return l1PhiL1On_;
00199 }
00200 MonitorElement * getL1EtaVsL1PhiL1OnHisto() {
00201 return l1Etavsl1PhiL1On_;
00202 }
00203 MonitorElement * getOffEtL1OffHisto() {
00204 return offEtL1Off_;
00205 }
00206 MonitorElement * getOffEtaL1OffHisto() {
00207 return offEtaL1Off_;
00208 }
00209 MonitorElement * getOffPhiL1OffHisto() {
00210 return offPhiL1Off_;
00211 }
00212 MonitorElement * getOffEtaVsOffPhiL1OffHisto() {
00213 return offEtavsoffPhiL1Off_;
00214 }
00215 MonitorElement * getOffEtOnOffHisto() {
00216 return offEtOnOff_;
00217 }
00218 MonitorElement * getOffEtaOnOffHisto() {
00219 return offEtaOnOff_;
00220 }
00221 MonitorElement * getOffPhiOnOffHisto() {
00222 return offPhiOnOff_;
00223 }
00224 MonitorElement * getOffEtaVsOffPhiOnOffHisto() {
00225 return offEtavsoffPhiOnOff_;
00226 }
00227 const std::string getLabel(void ) const {
00228 return filterName_;
00229 }
00230 void setLabel(std::string labelName){
00231 filterName_ = labelName;
00232 return;
00233 }
00234 const std::string getPath(void ) const {
00235 return pathName_;
00236 }
00237 const std::string getl1Path(void ) const {
00238 return l1pathName_;
00239 }
00240 const std::string getDenomPath(void ) const {
00241 return denomPathName_;
00242 }
00243 const std::string getProcess(void ) const {
00244 return processName_;
00245 }
00246 const int getObjectType(void ) const {
00247 return objectType_;
00248 }
00249
00250 const edm::InputTag getTag(void) const{
00251 edm::InputTag tagName(filterName_,"",processName_);
00252 return tagName;
00253 }
00254 ~PathInfo() {};
00255 PathInfo(std::string denomPathName, std::string pathName, std::string l1pathName, std::string filterName, std::string processName, size_t type, float ptmin,
00256 float ptmax):
00257 denomPathName_(denomPathName), pathName_(pathName), l1pathName_(l1pathName), filterName_(filterName), processName_(processName), objectType_(type),
00258 NOn_(0),
00259 onEtOn_(0), onEtaOn_(0), onPhiOn_(0), onEtavsonPhiOn_(0),
00260 offEtOff_(0), offEtaOff_(0), offPhiOff_(0), offEtavsoffPhiOff_(0),
00261 l1EtL1_(0), l1EtaL1_(0), l1PhiL1_(0), l1Etavsl1PhiL1_(0),
00262 l1EtL1On_(0), l1EtaL1On_(0), l1PhiL1On_(0), l1Etavsl1PhiL1On_(0),
00263 offEtL1Off_(0), offEtaL1Off_(0), offPhiL1Off_(0), offEtavsoffPhiL1Off_(0),
00264 offEtOnOff_(0), offEtaOnOff_(0), offPhiOnOff_(0), offEtavsoffPhiOnOff_(0),
00265 ptmin_(ptmin), ptmax_(ptmax)
00266 {
00267 };
00268 PathInfo(std::string denomPathName, std::string pathName, std::string l1pathName, std::string filterName, std::string processName, size_t type,
00269 MonitorElement *NOn,
00270 MonitorElement *onEtOn,
00271 MonitorElement *onEtaOn,
00272 MonitorElement *onPhiOn,
00273 MonitorElement *onEtavsonPhiOn,
00274 MonitorElement *offEtOff,
00275 MonitorElement *offEtaOff,
00276 MonitorElement *offPhiOff,
00277 MonitorElement *offEtavsoffPhiOff,
00278 MonitorElement *l1EtL1,
00279 MonitorElement *l1EtaL1,
00280 MonitorElement *l1PhiL1,
00281 MonitorElement *l1Etavsl1PhiL1,
00282 MonitorElement *l1EtL1On,
00283 MonitorElement *l1EtaL1On,
00284 MonitorElement *l1PhiL1On,
00285 MonitorElement *l1Etavsl1PhiL1On,
00286 MonitorElement *offEtL1Off,
00287 MonitorElement *offEtaL1Off,
00288 MonitorElement *offPhiL1Off,
00289 MonitorElement *offEtavsoffPhiL1Off,
00290 MonitorElement *offEtOnOff,
00291 MonitorElement *offEtaOnOff,
00292 MonitorElement *offPhiOnOff,
00293 MonitorElement *offEtavsoffPhiOnOff,
00294 float ptmin, float ptmax
00295 ):
00296 denomPathName_(denomPathName), pathName_(pathName), l1pathName_(l1pathName), filterName_(filterName), processName_(processName), objectType_(type),
00297 NOn_(NOn),
00298 onEtOn_(onEtOn), onEtaOn_(onEtaOn), onPhiOn_(onPhiOn), onEtavsonPhiOn_(onEtavsonPhiOn),
00299 offEtOff_(offEtOff), offEtaOff_(offEtaOff), offPhiOff_(offPhiOff), offEtavsoffPhiOff_(offEtavsoffPhiOff),
00300 l1EtL1_(l1EtL1), l1EtaL1_(l1EtaL1), l1PhiL1_(l1PhiL1), l1Etavsl1PhiL1_(l1Etavsl1PhiL1),
00301 l1EtL1On_(l1EtL1On), l1EtaL1On_(l1EtaL1On), l1PhiL1On_(l1PhiL1On), l1Etavsl1PhiL1On_(l1Etavsl1PhiL1On),
00302 offEtL1Off_(offEtL1Off), offEtaL1Off_(offEtaL1Off), offPhiL1Off_(offPhiL1Off), offEtavsoffPhiL1Off_(offEtavsoffPhiL1Off),
00303 offEtOnOff_(offEtOnOff), offEtaOnOff_(offEtaOnOff), offPhiOnOff_(offPhiOnOff), offEtavsoffPhiOnOff_(offEtavsoffPhiOnOff),
00304 ptmin_(ptmin), ptmax_(ptmax)
00305 {};
00306 bool operator==(const std::string v)
00307 {
00308 return v==filterName_;
00309 }
00310 private:
00311 int pathIndex_;
00312 std::string denomPathName_;
00313 std::string pathName_;
00314 std::string l1pathName_;
00315 std::string filterName_;
00316 std::string processName_;
00317 int objectType_;
00318
00319
00320 MonitorElement *NOn_, *onEtOn_, *onEtaOn_, *onPhiOn_, *onEtavsonPhiOn_;
00321 MonitorElement *offEtOff_, *offEtaOff_, *offPhiOff_, *offEtavsoffPhiOff_;
00322 MonitorElement *l1EtL1_, *l1EtaL1_, *l1PhiL1_, *l1Etavsl1PhiL1_;
00323 MonitorElement *l1EtL1On_, *l1EtaL1On_, *l1PhiL1On_, *l1Etavsl1PhiL1On_;
00324 MonitorElement *offEtL1Off_, *offEtaL1Off_, *offPhiL1Off_, *offEtavsoffPhiL1Off_;
00325 MonitorElement *offEtOnOff_, *offEtaOnOff_, *offPhiOnOff_, *offEtavsoffPhiOnOff_;
00326
00327 float ptmin_, ptmax_;
00328
00329 const int index() {
00330 return pathIndex_;
00331 }
00332 const int type() {
00333 return objectType_;
00334 }
00335 public:
00336 float getPtMin() const { return ptmin_; }
00337 float getPtMax() const { return ptmax_; }
00338 };
00339
00340
00341 class PathInfoCollection: public std::vector<PathInfo> {
00342 public:
00343 PathInfoCollection(): std::vector<PathInfo>()
00344 {};
00345 std::vector<PathInfo>::iterator find(std::string pathName) {
00346 return std::find(begin(), end(), pathName);
00347 }
00348 };
00349 PathInfoCollection hltPaths_;
00350
00351
00352 };
00353 #endif