Go to the documentation of this file.00001 #include "DQM/L1TMonitorClient/interface/L1TRPCTFClient.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 "TRandom.h"
00012
00013 #include <TF1.h>
00014 #include <stdio.h>
00015 #include <sstream>
00016 #include <math.h>
00017 #include <TProfile.h>
00018 #include <TProfile2D.h>
00019
00020 using namespace edm;
00021 using namespace std;
00022
00023 L1TRPCTFClient::L1TRPCTFClient(const edm::ParameterSet& ps)
00024 {
00025 parameters_=ps;
00026 initialize();
00027 }
00028
00029 L1TRPCTFClient::~L1TRPCTFClient(){
00030 LogInfo("TriggerDQM")<<"[TriggerDQM]: ending... ";
00031 }
00032
00033
00034 void L1TRPCTFClient::initialize(){
00035
00036 counterLS_=0;
00037 counterEvt_=0;
00038
00039
00040 dbe_ = Service<DQMStore>().operator->();
00041
00042
00043 monitorName_ = parameters_.getUntrackedParameter<string>("monitorName","");
00044
00045 prescaleLS_ = parameters_.getUntrackedParameter<int>("prescaleLS", -1);
00046
00047 prescaleEvt_ = parameters_.getUntrackedParameter<int>("prescaleEvt", -1);
00048
00049 output_dir_ = parameters_.getUntrackedParameter<string>("output_dir","");
00050
00051 input_dir_ = parameters_.getUntrackedParameter<string>("input_dir","");
00052
00053
00054 verbose_ = parameters_.getUntrackedParameter<bool>("verbose", false);
00055
00056 m_runInEventLoop = parameters_.getUntrackedParameter<bool>("runInEventLoop", false);
00057 m_runInEndLumi = parameters_.getUntrackedParameter<bool>("runInEndLumi", false);
00058 m_runInEndRun = parameters_.getUntrackedParameter<bool>("runInEndRun", false);
00059 m_runInEndJob = parameters_.getUntrackedParameter<bool>("runInEndJob", false);
00060
00061
00062 LogInfo( "TriggerDQM");
00063
00064
00065 }
00066
00067
00068 void L1TRPCTFClient::beginJob(void){
00069
00070 LogInfo("TriggerDQM")<<"[TriggerDQM]: Begin Job";
00071
00072
00073 dbe_ = Service<DQMStore>().operator->();
00074
00075 dbe_->setCurrentFolder(output_dir_);
00076
00077 m_deadChannels = dbe_->book2D("RPCTF_deadchannels",
00078 "RPCTF deadchannels",
00079 33, -16.5, 16.5,
00080 144, -0.5, 143.5);
00081 m_noisyChannels = dbe_->book2D("RPCTF_noisychannels",
00082 "RPCTF noisy channels",
00083 33, -16.5, 16.5,
00084 144, -0.5, 143.5);
00085 }
00086
00087 void L1TRPCTFClient::beginRun(const Run& r, const EventSetup& context) {
00088 }
00089
00090
00091 void L1TRPCTFClient::beginLuminosityBlock(const LuminosityBlock& lumiSeg, const EventSetup& context) {
00092
00093
00094 }
00095
00096
00097 void L1TRPCTFClient::endLuminosityBlock(const edm::LuminosityBlock& lumiSeg,
00098 const edm::EventSetup& c)
00099 {
00100 if (verbose_) std::cout << "L1TRPCTFClient::endLuminosityBlock" << std::endl;
00101
00102 if (m_runInEndLumi) {
00103
00104 processHistograms();
00105 }
00106
00107 }
00108
00109
00110 void L1TRPCTFClient::analyze(const Event& e, const EventSetup& context) {
00111
00112 counterEvt_++;
00113 if (prescaleEvt_ < 1)
00114 return;
00115 if (prescaleEvt_ > 0 && counterEvt_ % prescaleEvt_ != 0)
00116 return;
00117
00118
00119
00120
00121 if (m_runInEventLoop) {
00122
00123 processHistograms();
00124 }
00125
00126 }
00127
00128
00129 void L1TRPCTFClient::endRun(const Run& r, const EventSetup& context){
00130
00131 if (m_runInEndRun) {
00132
00133 processHistograms();
00134 }
00135
00136 }
00137
00138
00139 void L1TRPCTFClient::endJob() {
00140
00141 if (m_runInEndJob) {
00142
00143 processHistograms();
00144 }
00145
00146 }
00147
00148
00149
00150 void L1TRPCTFClient::processHistograms() {
00151
00152 dbe_->setCurrentFolder(input_dir_);
00153
00154 {
00155
00156 MonitorElement *me
00157 = dbe_->get( (input_dir_+"/RPCTF_muons_eta_phi_bx0").c_str() );
00158
00159 if (me){
00160 const QReport *qreport;
00161
00162 qreport = me->getQReport("DeadChannels_RPCTF_2D");
00163 if (qreport) {
00164 vector<dqm::me_util::Channel> badChannels = qreport->getBadChannels();
00165 for (vector<dqm::me_util::Channel>::iterator channel = badChannels.begin();
00166 channel != badChannels.end();
00167 ++channel)
00168 {
00169 m_deadChannels->setBinContent((*channel).getBinX(),
00170 (*channel).getBinY(),
00171 100);
00172 }
00173 }
00174
00175 qreport = me->getQReport("HotChannels_RPCTF_2D");
00176 if (qreport) {
00177 vector<dqm::me_util::Channel> badChannels = qreport->getBadChannels();
00178 for (vector<dqm::me_util::Channel>::iterator channel = badChannels.begin();
00179 channel != badChannels.end();
00180 ++channel)
00181 {
00182
00183 m_noisyChannels->setBinContent((*channel).getBinX(), 100);
00184 }
00185 }
00186
00187 }
00188
00189
00190 }
00191
00192
00193 if (verbose_)
00194 {
00195 std::vector<string> meVec = dbe_->getMEs();
00196 for (vector<string>::const_iterator it = meVec.begin(); it != meVec.end(); it++) {
00197
00198 std::string full_path = input_dir_ + "/" + (*it);
00199 MonitorElement * me =dbe_->get(full_path);
00200
00201
00202 std::vector<QReport *> Qtest_map = me->getQReports();
00203
00204 if (Qtest_map.size() > 0) {
00205 std::cout << "Test: " << full_path << std::endl;
00206 for (std::vector<QReport *>::const_iterator it = Qtest_map.begin();
00207 it != Qtest_map.end();
00208 ++it)
00209 {
00210 std::cout
00211 << " Name "<< (*it)->getQRName()
00212 << " Status " << (*it)->getStatus()
00213 <<std::endl;
00214
00215 std::vector<dqm::me_util::Channel> badChannels=(*it)->getBadChannels();
00216
00217 vector<dqm::me_util::Channel>::iterator badchsit = badChannels.begin();
00218 while(badchsit != badChannels.end())
00219 {
00220 int ix = (*badchsit).getBinX();
00221 int iy = (*badchsit).getBinY();
00222 std::cout << "(" << ix <<","<< iy << ") ";
00223 ++badchsit;
00224 }
00225 std::cout << std::endl;
00226
00227 }
00228 }
00229
00230 }
00231 }
00232
00233
00234 }
00235
00236