Go to the documentation of this file.00001 #include <iostream>
00002
00003 #include "DQMOffline/EGamma/plugins/PhotonDataCertification.h"
00004 #include "FWCore/Framework/interface/Run.h"
00005
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017 using namespace std;
00018
00019 PhotonDataCertification::PhotonDataCertification(const edm::ParameterSet& pset)
00020
00021 {
00022
00023 dbe_ = 0;
00024 dbe_ = edm::Service<DQMStore>().operator->();
00025 dbe_->setVerbose(0);
00026 parameters_ = pset;
00027 verbose_ = parameters_.getParameter<bool>("verbose");
00028
00029 if(verbose_) cout << ">>> Constructor (PhotonDataCertification) <<<" << endl;
00030
00031 }
00032
00033
00034 PhotonDataCertification::~PhotonDataCertification()
00035 {
00036 }
00037
00038
00039
00040
00041
00042
00043
00044 void
00045 PhotonDataCertification::analyze(const edm::Event& iEvent, const edm::EventSetup& iSetup)
00046 {
00047 using namespace edm;
00048
00049 if(verbose_) std::cout << ">>> Analyze (PhotonDataCertification) <<<" << std::endl;
00050
00051 }
00052
00053
00054 void
00055 PhotonDataCertification::beginJob()
00056 {
00057 }
00058
00059
00060 void
00061 PhotonDataCertification::endJob()
00062 {
00063 }
00064
00065
00066 void
00067 PhotonDataCertification::beginRun(const edm::Run& run, const edm::EventSetup& c)
00068 {
00069
00070 if(verbose_) std::cout << ">>> BeginRun (PhotonDataCertification) <<<" << std::endl;
00071 if(verbose_) std::cout << ">>> "<< run.id() << std::endl;
00072
00073 }
00074
00075
00076 void
00077 PhotonDataCertification::endRun(const edm::Run& run, const edm::EventSetup& c)
00078 {
00079 if(verbose_) std::cout << ">>> EndRun (PhotonDataCertification) <<<" << std::endl;
00080
00081 std::vector<string> histoNameVector;
00082
00083
00084
00085
00086 if(!dbe_) return;
00087
00088 dbe_->setCurrentFolder("Egamma/EventInfo/");
00089
00090 MonitorElement* reportSummary = dbe_->bookFloat("reportSummary");
00091 MonitorElement* CertificationSummary = dbe_->bookFloat("CertificationSummary");
00092
00093
00094 MonitorElement* reportSummaryMap = dbe_->book2D("reportSummaryMap","reportSummaryMap",2,0,2,2,0,2);
00095 MonitorElement* CertificationSummaryMap = dbe_->book2D("CertificationSummaryMap","CertificationSummaryMap",2,0,2,2,0,2);
00096
00097 TH2 * reportSummaryMapTH2 = reportSummaryMap->getTH2F();
00098
00099 reportSummaryMapTH2->GetXaxis()->SetBinLabel(1,"Eta");
00100 reportSummaryMapTH2->GetXaxis()->SetBinLabel(2,"Phi");
00101 reportSummaryMapTH2->GetYaxis()->SetBinLabel(1,"SpikeTest");
00102 reportSummaryMapTH2->GetYaxis()->SetBinLabel(2,"HoleTest");
00103
00104 TH2 * CertificationSummaryMapTH2 = CertificationSummaryMap->getTH2F();
00105
00106 CertificationSummaryMapTH2->GetXaxis()->SetBinLabel(1,"Eta");
00107 CertificationSummaryMapTH2->GetXaxis()->SetBinLabel(2,"Phi");
00108 CertificationSummaryMapTH2->GetYaxis()->SetBinLabel(1,"SpikeTest");
00109 CertificationSummaryMapTH2->GetYaxis()->SetBinLabel(2,"HoleTest");
00110
00111
00112
00113
00114 histoNameVector.push_back("nPhoAllEcal");
00115 histoNameVector.push_back("r9AllEcal");
00116 histoNameVector.push_back("phoEta");
00117 histoNameVector.push_back("phoPhi");
00118
00119
00120
00121
00122
00123
00124
00125
00126
00127
00128
00129
00130
00131
00132 if(verbose_) std::cout << "\n>>> looping over histograms to be tested <<<\n\n";
00133 for(std::vector<string>::iterator it=histoNameVector.begin();it!=histoNameVector.end();++it){
00134
00135 string HistoName = (*it);
00136 if(verbose_) std::cout << ">>> " << HistoName;
00137
00138 MonitorElement * TestHist=0;
00139
00140 if(HistoName.find("Efficiency")!=std::string::npos){
00141 TestHist = dbe_->get("Egamma/PhotonAnalyzer/Efficiencies/"+HistoName);
00142 }
00143 else{
00144 TestHist = dbe_->get("Egamma/PhotonAnalyzer/GoodCandidatePhotons/Et above 0 GeV/"+HistoName);
00145 }
00146 bool validMe = TestHist!=0;
00147 if(verbose_) std::cout << " is valid? " << validMe << "\n";
00148 if(!validMe) continue;
00149
00150 if(verbose_) std::cout << ">>> TestHist Name: " << TestHist->getName() << "\n\n";
00151
00152
00153
00154
00155 std::vector<QReport *> myQReports = TestHist->getQReports();
00156 if(verbose_) cout << TestHist->getName() <<": myQReports.size() = " << myQReports.size() << "\n\n";
00157 for(uint i=0;i!=myQReports.size();++i) {
00158
00159 std::string qtname = myQReports[i]->getQRName() ;
00160 float qtresult = myQReports[i]->getQTresult();
00161 int qtstatus = myQReports[i]->getStatus() ;
00162
00163 if(verbose_) std::cout << "\tTest " << i << ": qtname: " << qtname << "\n";
00164 if(verbose_) std::cout << "\tTest " << i << ": qtresult: " << qtresult << std::endl;
00165 if(verbose_) std::cout << "\tTest " << i << ": qtstatus: " << qtstatus << "\n\n";
00166
00167
00168
00169 dbe_->setCurrentFolder("Egamma/EventInfo/reportSummaryContents/");
00170 MonitorElement * Float = dbe_->bookFloat(HistoName+"_"+qtname);
00171 Float->Fill(qtresult);
00172
00173 }
00174 }
00175
00176
00177
00178
00179
00180 float etaSpikeTestResult=0;
00181 float phiSpikeTestResult=0;
00182 float etaHoleTestResult=0;
00183 float phiHoleTestResult=0;
00184
00185 if(dbe_->get("Egamma/EventInfo/reportSummaryContents/phoEta_SpikeTest")!=0)
00186 etaSpikeTestResult = dbe_->get("Egamma/EventInfo/reportSummaryContents/phoEta_SpikeTest")->getFloatValue();
00187 else etaSpikeTestResult = -1;
00188
00189 if(dbe_->get("Egamma/EventInfo/reportSummaryContents/phoPhi_SpikeTest")!=0)
00190 phiSpikeTestResult = dbe_->get("Egamma/EventInfo/reportSummaryContents/phoPhi_SpikeTest")->getFloatValue();
00191 else phiSpikeTestResult = -1;
00192
00193 if(dbe_->get("Egamma/EventInfo/reportSummaryContents/phoEta_HoleTest")!=0)
00194 etaHoleTestResult = dbe_->get("Egamma/EventInfo/reportSummaryContents/phoEta_HoleTest")->getFloatValue();
00195 else etaHoleTestResult = -1;
00196
00197 if(dbe_->get("Egamma/EventInfo/reportSummaryContents/phoPhi_HoleTest")!=0)
00198 phiHoleTestResult = dbe_->get("Egamma/EventInfo/reportSummaryContents/phoPhi_HoleTest")->getFloatValue();
00199 else phiHoleTestResult = -1;
00200
00201
00202
00203 if(verbose_) std::cout << ">>> Results of tests to be put into Summary Maps <<<\n\n";
00204 if(verbose_) std::cout << "\tetaSpikeTestResult= " << etaSpikeTestResult << "\n";
00205 if(verbose_) std::cout << "\tphiSpikeTestResult= " << phiSpikeTestResult << "\n";
00206 if(verbose_) std::cout << "\tetaHoleTestResult= " << etaHoleTestResult << "\n";
00207 if(verbose_) std::cout << "\tphiHoleTestResult= " << phiHoleTestResult << "\n\n";
00208
00209
00210
00211 float reportSummaryFloat = (etaSpikeTestResult+etaHoleTestResult+phiSpikeTestResult+phiHoleTestResult)/4.;
00212 if(reportSummaryFloat<0) reportSummaryFloat = -1;
00213 reportSummary->Fill(reportSummaryFloat);
00214 CertificationSummary->Fill(reportSummaryFloat);
00215
00216 reportSummaryMap->Fill(0,0,etaSpikeTestResult);
00217 reportSummaryMap->Fill(0,1,etaHoleTestResult);
00218 reportSummaryMap->Fill(1,0,phiSpikeTestResult);
00219 reportSummaryMap->Fill(1,1,phiHoleTestResult);
00220
00221 CertificationSummaryMap->Fill(0,0,etaSpikeTestResult);
00222 CertificationSummaryMap->Fill(0,1,etaHoleTestResult);
00223 CertificationSummaryMap->Fill(1,0,phiSpikeTestResult);
00224 CertificationSummaryMap->Fill(1,1,phiHoleTestResult);
00225
00226
00227
00228
00229 }