Go to the documentation of this file.00001 #include "DQM/L1TMonitorClient/interface/L1TCSCTFClient.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 using namespace edm;
00013 using namespace std;
00014
00015 L1TCSCTFClient::L1TCSCTFClient(const edm::ParameterSet& ps){
00016 parameters=ps;
00017 initialize();
00018 }
00019
00020 L1TCSCTFClient::~L1TCSCTFClient(){}
00021
00022
00023 void L1TCSCTFClient::initialize(){
00024 counterLS = 0;
00025 counterEvt = 0;
00026
00027
00028 dbe = Service<DQMStore>().operator->();
00029
00030 input_dir = parameters.getUntrackedParameter<string>("input_dir","");
00031 output_dir = parameters.getUntrackedParameter<string>("output_dir","");
00032 prescaleLS = parameters.getUntrackedParameter<int>("prescaleLS",-1);
00033 prescaleEvt = parameters.getUntrackedParameter<int>("prescaleEvt",-1);
00034 }
00035
00036
00037 void L1TCSCTFClient::beginJob(void){
00038
00039 dbe = Service<DQMStore>().operator->();
00040
00041
00042 dbe->setCurrentFolder(output_dir);
00043 csctferrors_ = dbe->book1D("csctferrors_","CSCTF Errors",6,0,6);
00044 dbe->setCurrentFolder(input_dir);
00045 }
00046
00047
00048 void L1TCSCTFClient::beginRun(const Run& r, const EventSetup& context) {}
00049
00050
00051 void L1TCSCTFClient::beginLuminosityBlock(const LuminosityBlock& lumiSeg, const EventSetup& context) {
00052
00053 }
00054
00055 void L1TCSCTFClient::endLuminosityBlock(const edm::LuminosityBlock& lumiSeg, const edm::EventSetup& c){
00056 dbe->setCurrentFolder(input_dir);
00057
00058 vector<string> meVec = dbe->getMEs();
00059 for(vector<string>::const_iterator it=meVec.begin(); it!=meVec.end(); it++){
00060 string full_path = input_dir + "/" + (*it);
00061 MonitorElement *me =dbe->get(full_path);
00062 if( !me ){
00063 LogInfo("TriggerDQM")<<full_path<<" NOT FOUND.";
00064 continue;
00065 }
00066
00067
00068
00069
00070
00071
00072
00073
00074
00075
00076
00077
00078
00079
00080
00081
00082
00083
00084
00085
00086
00087
00088
00089
00090
00091
00092
00093 if( (*it) != "CSCTF_errors" ) continue;
00094 TH1F *errors = me->getTH1F();
00095 csctferrors_->getTH1F()->Reset();
00096 if(!errors) continue;
00097 for(int bin=1; bin<=errors->GetXaxis()->GetNbins(); bin++)
00098 csctferrors_->Fill(bin-0.5,errors->GetBinContent(bin));
00099 }
00100 }
00101
00102
00103 void L1TCSCTFClient::analyze(const Event& e, const EventSetup& context){
00104 counterEvt++;
00105 if (prescaleEvt<1) return;
00106 if (prescaleEvt>0 && counterEvt%prescaleEvt!=0) return;
00107
00108 dbe->setCurrentFolder(input_dir);
00109
00110
00111 vector<string> meVec = dbe->getMEs();
00112 for(vector<string>::const_iterator it=meVec.begin(); it!=meVec.end(); it++){
00113 string full_path = input_dir + "/" + (*it);
00114 MonitorElement *me =dbe->get(full_path);
00115 if( !me ){
00116 LogError("TriggerDQM")<<full_path<<" NOT FOUND.";
00117 continue;
00118 }
00119
00120 if( (*it) != "CSCTF_errors" ) continue;
00121 TH1F *errors = me->getTH1F();
00122 csctferrors_->getTH1F()->Reset();
00123 if(!errors) continue;
00124 for(int bin=1; bin<=errors->GetXaxis()->GetNbins(); bin++)
00125 csctferrors_->Fill(bin-0.5,errors->GetBinContent(bin));
00126 }
00127 }
00128
00129
00130 void L1TCSCTFClient::endRun(const Run& r, const EventSetup& context){}
00131
00132
00133 void L1TCSCTFClient::endJob(void){}