00001 #include "DQMOffline/Trigger/interface/DQMOfflineHLTEventInfoClient.h"
00002
00003 #include "FWCore/ServiceRegistry/interface/Service.h"
00004 #include "FWCore/ParameterSet/interface/ParameterSet.h"
00005 #include "FWCore/Framework/interface/ESHandle.h"
00006 #include "FWCore/Framework/interface/EventSetup.h"
00007 #include "FWCore/MessageLogger/interface/MessageLogger.h"
00008 #include "DQMServices/Core/interface/QReport.h"
00009 #include "DQMServices/Core/interface/DQMStore.h"
00010 #include "DQMServices/Core/interface/MonitorElement.h"
00011 #include <stdio.h>
00012 #include <sstream>
00013 #include <math.h>
00014 #include <TProfile.h>
00015 #include <TProfile2D.h>
00016 #include <memory>
00017 #include <iostream>
00018 #include <iomanip>
00019 #include <map>
00020 #include <vector>
00021 #include <string>
00022 #include <fstream>
00023 #include "TROOT.h"
00024 #include "TRandom.h"
00025 #include <TH1F.h>
00026 #include <TH2F.h>
00027
00028 using namespace edm;
00029 using namespace std;
00030
00031
00032
00033
00034
00035
00037
00038
00040
00041
00042
00043
00045
00046
00048
00049
00051
00052
00053
00054
00055
00057
00058
00059
00061
00062
00064
00065
00066
00067
00068
00069
00070
00071
00072
00073
00074
00075
00076
00077
00078
00079
00080
00081
00082
00083
00084
00085
00086
00087
00088 DQMOfflineHLTEventInfoClient::DQMOfflineHLTEventInfoClient(const edm::ParameterSet& ps)
00089 {
00090 parameters_=ps;
00091 initialize();
00092 }
00093
00094 DQMOfflineHLTEventInfoClient::~DQMOfflineHLTEventInfoClient(){
00095 if(verbose_) cout <<"[TriggerDQM]: ending... " << endl;
00096 }
00097
00098
00099 void DQMOfflineHLTEventInfoClient::initialize(){
00100
00101 counterLS_=0;
00102 counterEvt_=0;
00103
00104
00105 dbe_ = Service<DQMStore>().operator->();
00106
00107
00108 verbose_ = parameters_.getUntrackedParameter<bool>("verbose", false);
00109
00110 prescaleLS_ = parameters_.getUntrackedParameter<int>("prescaleLS", -1);
00111 if(verbose_) cout << "DQM lumi section prescale = " << prescaleLS_ << " lumi section(s)"<< endl;
00112
00113 prescaleEvt_ = parameters_.getUntrackedParameter<int>("prescaleEvt", -1);
00114 if(verbose_) cout << "DQM event prescale = " << prescaleEvt_ << " events(s)"<< endl;
00115
00116
00117
00118 }
00119
00120
00121 void DQMOfflineHLTEventInfoClient::beginJob(){
00122
00123 if(verbose_) cout <<"[TriggerDQM]: Begin Job" << endl;
00124
00125 dbe_ = Service<DQMStore>().operator->();
00126
00127 dbe_->setCurrentFolder("HLT/EventInfo");
00128
00129
00130 reportSummary_ = dbe_->get("HLT/EventInfo/reportSummary");
00131
00132 if ( reportSummary_ ) {
00133 dbe_->removeElement(reportSummary_->getName());
00134 }
00135
00136 reportSummary_ = dbe_->bookFloat("reportSummary");
00137
00138 if (reportSummary_) reportSummary_->Fill(1);
00139
00140
00141 CertificationSummary_ = dbe_->get("HLT/EventInfo/CertificationSummary");
00142
00143 if ( CertificationSummary_ ) {
00144 dbe_->removeElement(CertificationSummary_->getName());
00145 }
00146
00147 CertificationSummary_ = dbe_->bookFloat("CertificationSummary");
00148
00149 if (CertificationSummary_) CertificationSummary_->Fill(1);
00150
00151
00152 if (reportSummary_) reportSummary_->Fill(1);
00153
00154
00155
00156
00157 dbe_->setCurrentFolder("HLT/EventInfo");
00158
00159 reportSummaryMap_ = dbe_->get("HLT/EventInfo/reportSummaryMap");
00160 if ( reportSummaryMap_ ) {
00161 dbe_->removeElement(reportSummaryMap_->getName());
00162 }
00163
00164
00165 reportSummaryMap_ = dbe_->book2D("reportSummaryMap", "reportSummaryMap", 1, 1, 2, 6, 1, 7);
00166 reportSummaryMap_->setAxisTitle("", 1);
00167 reportSummaryMap_->setAxisTitle("", 2);
00168 reportSummaryMap_->setBinLabel(1,"Muon",2);
00169 reportSummaryMap_->setBinLabel(2,"Electron",2);
00170 reportSummaryMap_->setBinLabel(3,"Photon",2);
00171 reportSummaryMap_->setBinLabel(4,"JetMET",2);
00172 reportSummaryMap_->setBinLabel(5,"BJet",2);
00173 reportSummaryMap_->setBinLabel(6,"Tau",2);
00174 reportSummaryMap_->setBinLabel(1," ",1);
00175
00176
00177 CertificationSummaryMap_ = dbe_->get("HLT/EventInfo/CertificationSummaryMap");
00178 if ( CertificationSummaryMap_ ) {
00179 dbe_->removeElement(CertificationSummaryMap_->getName());
00180 }
00181
00182
00183 CertificationSummaryMap_ = dbe_->book2D("CertificationSummaryMap", "CertificationSummaryMap", 1, 1, 2, 6, 1, 7);
00184 CertificationSummaryMap_->setAxisTitle("", 1);
00185 CertificationSummaryMap_->setAxisTitle("", 2);
00186 CertificationSummaryMap_->setBinLabel(1,"Muon",2);
00187 CertificationSummaryMap_->setBinLabel(2,"Electron",2);
00188 CertificationSummaryMap_->setBinLabel(3,"Photon",2);
00189 CertificationSummaryMap_->setBinLabel(4,"JetMET",2);
00190 CertificationSummaryMap_->setBinLabel(5,"BJet",2);
00191 CertificationSummaryMap_->setBinLabel(6,"Tau",2);
00192 CertificationSummaryMap_->setBinLabel(1," ",1);
00193
00194 }
00195
00196
00197 void DQMOfflineHLTEventInfoClient::beginRun(const Run& r, const EventSetup& context) {
00198 }
00199
00200
00201 void DQMOfflineHLTEventInfoClient::beginLuminosityBlock(const LuminosityBlock& lumiSeg, const EventSetup& context) {
00202
00203 }
00204
00205 void DQMOfflineHLTEventInfoClient::endLuminosityBlock(const edm::LuminosityBlock& lumiSeg,
00206 const edm::EventSetup& c){
00207 }
00208
00209
00210 void DQMOfflineHLTEventInfoClient::analyze(const Event& e, const EventSetup& context){
00211
00212 counterEvt_++;
00213 if (prescaleEvt_<1) return;
00214 if (prescaleEvt_>0 && counterEvt_%prescaleEvt_ != 0) return;
00215
00216 if(verbose_) cout << "DQMOfflineHLTEventInfoClient::analyze" << endl;
00217
00218
00219 }
00220
00221
00222 void DQMOfflineHLTEventInfoClient::endRun(const Run& r, const EventSetup& context){
00223
00224 float summarySum = 0;
00225 float reportSummary = 0;
00226
00227 dbe_->setCurrentFolder("HLT/EventInfo/reportSummaryContents");
00228 MonitorElement* HLT_Muon = dbe_->get("HLT_Muon");
00229 if(HLT_Muon) reportSummaryContent_.push_back(HLT_Muon);
00230
00231 MonitorElement * HLT_Electron = dbe_->get("HLT_Electron");
00232 if(HLT_Electron) reportSummaryContent_.push_back(HLT_Electron);
00233
00234 MonitorElement * HLT_Photon = dbe_->get("HLT_Photon");
00235 if(HLT_Photon) reportSummaryContent_.push_back(HLT_Photon);
00236
00237 MonitorElement * HLT_Tau = dbe_->get("HLT_Tau");
00238 if(HLT_Tau) reportSummaryContent_.push_back(HLT_Tau);
00239
00240
00241 int nSubsystems = reportSummaryContent_.size();
00242
00243 for (int m = 0; m < nSubsystems; m++) {
00244 summarySum += (reportSummaryContent_[m])->getFloatValue();
00245 }
00246
00247
00248 if(nSubsystems > 0) {
00249 reportSummary = summarySum / nSubsystems;;
00250 }
00251 else {
00252 reportSummary = 1;
00253 }
00254
00255 reportSummary_->Fill(reportSummary);
00256 CertificationSummary_->Fill(reportSummary);
00257
00258 float muonValue = 1;
00259 if(HLT_Muon) muonValue = HLT_Muon->getFloatValue();
00260
00261 float electronValue = 1;
00262 if(HLT_Electron) electronValue = HLT_Electron->getFloatValue();
00263
00264 float photonValue = 1;
00265 if(HLT_Photon) photonValue = HLT_Photon->getFloatValue();
00266
00267 float tauValue = 1;
00268 if(HLT_Tau) tauValue = HLT_Tau->getFloatValue();
00269
00270 reportSummaryMap_->setBinContent(1,1,muonValue);
00271 reportSummaryMap_->setBinContent(1,2,electronValue);
00272 reportSummaryMap_->setBinContent(1,3,photonValue);
00273 reportSummaryMap_->setBinContent(1,4,1);
00274 reportSummaryMap_->setBinContent(1,5,1);
00275 reportSummaryMap_->setBinContent(1,6,tauValue);
00276
00277 CertificationSummaryMap_->setBinContent(1,1,muonValue);
00278 CertificationSummaryMap_->setBinContent(1,2,electronValue);
00279 CertificationSummaryMap_->setBinContent(1,3,photonValue);
00280 CertificationSummaryMap_->setBinContent(1,4,1);
00281 CertificationSummaryMap_->setBinContent(1,5,1);
00282 CertificationSummaryMap_->setBinContent(1,6,tauValue);
00283 }
00284
00285
00286 void DQMOfflineHLTEventInfoClient::endJob(){
00287 }
00288