00001 #include "DQM/HcalMonitorClient/interface/HcalDetDiagPedestalClient.h"
00002 #include "DQM/HcalMonitorClient/interface/HcalClientUtils.h"
00003 #include "DQM/HcalMonitorClient/interface/HcalHistoUtils.h"
00004
00005 #include "CondFormats/HcalObjects/interface/HcalChannelStatus.h"
00006 #include "CondFormats/HcalObjects/interface/HcalChannelQuality.h"
00007 #include "CondFormats/HcalObjects/interface/HcalCondObjectContainer.h"
00008
00009 #include "CalibCalorimetry/HcalAlgos/interface/HcalLogicalMapGenerator.h"
00010 #include "CondFormats/HcalObjects/interface/HcalLogicalMap.h"
00011
00012 #include <iostream>
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024 HcalDetDiagPedestalClient::HcalDetDiagPedestalClient(std::string myname)
00025 {
00026 name_=myname; status=0;
00027 }
00028
00029 HcalDetDiagPedestalClient::HcalDetDiagPedestalClient(std::string myname, const edm::ParameterSet& ps)
00030 {
00031 name_=myname;
00032 enableCleanup_ = ps.getUntrackedParameter<bool>("enableCleanup",false);
00033 debug_ = ps.getUntrackedParameter<int>("debug",0);
00034 prefixME_ = ps.getUntrackedParameter<std::string>("subSystemFolder","Hcal/");
00035 if (prefixME_.substr(prefixME_.size()-1,prefixME_.size())!="/")
00036 prefixME_.append("/");
00037 subdir_ = ps.getUntrackedParameter<std::string>("DetDiagPedestalFolder","DetDiagPedestalMonitor_Hcal/");
00038 if (subdir_.size()>0 && subdir_.substr(subdir_.size()-1,subdir_.size())!="/")
00039 subdir_.append("/");
00040 subdir_=prefixME_+subdir_;
00041
00042 validHtmlOutput_ = ps.getUntrackedParameter<bool>("DetDiagPedestal_validHtmlOutput",true);
00043 cloneME_ = ps.getUntrackedParameter<bool>("cloneME", true);
00044 badChannelStatusMask_ = ps.getUntrackedParameter<int>("DetDiagPedestal_BadChannelStatusMask",
00045 ps.getUntrackedParameter<int>("BadChannelStatusMask",(1<<HcalChannelStatus::HcalCellDead)));
00046
00047 minerrorrate_ = ps.getUntrackedParameter<double>("DetDiagPedestal_minerrorrate",
00048 ps.getUntrackedParameter<double>("minerrorrate",0.05));
00049 minevents_ = ps.getUntrackedParameter<int>("DetDiagPedestal_minevents",
00050 ps.getUntrackedParameter<int>("minevents",1));
00051 Online_ = ps.getUntrackedParameter<bool>("online",false);
00052
00053 ProblemCells=0;
00054 ProblemCellsByDepth=0;
00055 }
00056
00057 void HcalDetDiagPedestalClient::analyze()
00058 {
00059 if (debug_>2) std::cout <<"\tHcalDetDiagPedestalClient::analyze()"<<std::endl;
00060 calculateProblems();
00061 }
00062
00063 void HcalDetDiagPedestalClient::calculateProblems()
00064 {
00065 if (debug_>2) std::cout <<"\t\tHcalDetDiagPedestalClient::calculateProblems()"<<std::endl;
00066 if(!dqmStore_) return;
00067 double totalevents=0;
00068 int etabins=0, phibins=0, zside=0;
00069 double problemvalue=0;
00070
00071
00072 if (ProblemCells!=0)
00073 {
00074 ProblemCells->Reset();
00075 (ProblemCells->getTH2F())->SetMaximum(1.05);
00076 (ProblemCells->getTH2F())->SetMinimum(0.);
00077 }
00078 for (unsigned int d=0;d<ProblemCellsByDepth->depth.size();++d)
00079 {
00080 if (ProblemCellsByDepth->depth[d]!=0)
00081 {
00082 ProblemCellsByDepth->depth[d]->Reset();
00083 (ProblemCellsByDepth->depth[d]->getTH2F())->SetMaximum(1.05);
00084 (ProblemCellsByDepth->depth[d]->getTH2F())->SetMinimum(0.);
00085 }
00086 }
00087 enoughevents_=true;
00088
00089
00090
00091 std::vector<std::string> name = HcalEtaPhiHistNames();
00092
00093
00094 TH2F* PedestalsMissing[4];
00095 TH2F* PedestalsUnstable[4];
00096 TH2F* PedestalsBadMean[4];
00097 TH2F* PedestalsBadRMS[4];
00098 MonitorElement* me;
00099 for (int i=0;i<4;++i)
00100 {
00101
00102 PedestalsMissing[i]=0;
00103 PedestalsUnstable[i]=0;
00104 PedestalsBadMean[i]=0;
00105 PedestalsBadRMS[i]=0;
00106 std::string s=subdir_+name[i]+" Problem Missing Channels";
00107 me=dqmStore_->get(s.c_str());
00108 if (me!=0) PedestalsMissing[i]=HcalUtilsClient::getHisto<TH2F*>(me, cloneME_, PedestalsMissing[i], debug_);
00109 else
00110 {
00111 if (debug_>0)
00112 std::cout <<"<HcalDetDiagPedestalClient::calcluateProblems> could not get histogram '"<<s<<"'"<<std::endl;
00113 }
00114
00115 s=subdir_+name[i]+" Problem Unstable Channels";
00116 me=dqmStore_->get(s.c_str());
00117 if (me!=0) PedestalsUnstable[i]=HcalUtilsClient::getHisto<TH2F*>(me, cloneME_, PedestalsUnstable[i], debug_);
00118 else if (debug_>0) std::cout <<"<HcalDetDiagPedestalClient::calculateProblems> could not get histogram '"<<s<<"'"<<std::endl;
00119 s=subdir_+name[i]+" Problem Bad Pedestal Value";
00120 me=dqmStore_->get(s.c_str());
00121 if (me!=0) PedestalsBadMean[i]=HcalUtilsClient::getHisto<TH2F*>(me, cloneME_, PedestalsBadMean[i], debug_);
00122 else if (debug_>0) std::cout <<"<HcalDetDiagPedestalClient::calculateProblems> could not get histogram '"<<s<<"'"<<std::endl;
00123 s=subdir_+name[i]+" Problem Bad Rms Value";
00124 me=dqmStore_->get(s.c_str());
00125 if (me!=0) PedestalsBadRMS[i]=HcalUtilsClient::getHisto<TH2F*>(me, cloneME_, PedestalsBadRMS[i], debug_);
00126 else if (debug_>0) std::cout <<"<HcalDetDiagPedestalClient::calculateProblems> could not get histogram '"<<s<<"'"<<std::endl;
00127 }
00128
00129
00130
00131
00132 for (unsigned int d=0;d<ProblemCellsByDepth->depth.size();++d)
00133 {
00134 if (ProblemCellsByDepth->depth[d]==0) continue;
00135
00136
00137 totalevents=0;
00138
00139 if (PedestalsMissing[d]!=0) totalevents = PedestalsMissing[d]->GetBinContent(0);
00140 else if (PedestalsUnstable[d]!=0) totalevents = PedestalsUnstable[d]->GetBinContent(0);
00141 else if (PedestalsBadMean[d]!=0) totalevents = PedestalsBadMean[d]->GetBinContent(0);
00142 else if (PedestalsBadRMS[d]!=0) totalevents = PedestalsBadRMS[d]->GetBinContent(0);
00143
00144
00145 totalevents=1;
00146 etabins=(ProblemCellsByDepth->depth[d]->getTH2F())->GetNbinsX();
00147 phibins=(ProblemCellsByDepth->depth[d]->getTH2F())->GetNbinsY();
00148 for (int eta=0;eta<etabins;++eta)
00149 {
00150 int ieta=CalcIeta(eta,d+1);
00151 if (ieta==-9999) continue;
00152 for (int phi=0;phi<phibins;++phi)
00153 {
00154 problemvalue=0;
00155 if (PedestalsMissing[d]!=0) problemvalue += PedestalsMissing[d]->GetBinContent(eta+1,phi+1)*1./totalevents;
00156 if (PedestalsUnstable[d]!=0) problemvalue += PedestalsUnstable[d]->GetBinContent(eta+1,phi+1)*1./totalevents;
00157 if (PedestalsBadMean[d]!=0) problemvalue += PedestalsBadMean[d]->GetBinContent(eta+1,phi+1)*1./totalevents;
00158 if (PedestalsBadRMS[d]!=0) problemvalue += PedestalsBadRMS[d]->GetBinContent(eta+1,phi+1)*1./totalevents;
00159
00160 if (problemvalue==0) continue;
00161
00162 problemvalue = std::min(1.,problemvalue);
00163
00164 zside=0;
00165 if (isHF(eta,d+1))
00166 ieta<0 ? zside = -1 : zside = 1;
00167
00168
00169
00170 if (problemvalue>minerrorrate_)
00171 {
00172 HcalSubdetector subdet=HcalEmpty;
00173 if (isHB(eta,d+1))subdet=HcalBarrel;
00174 else if (isHE(eta,d+1)) subdet=HcalEndcap;
00175 else if (isHF(eta,d+1)) subdet=HcalForward;
00176 else if (isHO(eta,d+1)) subdet=HcalOuter;
00177 HcalDetId hcalid(subdet, ieta, phi+1, (int)(d+1));
00178 if (badstatusmap.find(hcalid)!=badstatusmap.end())
00179 problemvalue=999;
00180 }
00181
00182 ProblemCellsByDepth->depth[d]->setBinContent(eta+1,phi+1,problemvalue);
00183 if (ProblemCells!=0) ProblemCells->Fill(ieta+zside,phi+1,problemvalue);
00184 }
00185 }
00186 }
00187
00188 if (ProblemCells==0)
00189 {
00190 if (debug_>0) std::cout <<"<HcalDetDiagPedestalClient::analyze> ProblemCells histogram does not exist!"<<std::endl;
00191 return;
00192 }
00193
00194
00195 etabins=(ProblemCells->getTH2F())->GetNbinsX();
00196 phibins=(ProblemCells->getTH2F())->GetNbinsY();
00197 for (int eta=0;eta<etabins;++eta)
00198 {
00199 for (int phi=0;phi<phibins;++phi)
00200 {
00201 if (ProblemCells->getBinContent(eta+1,phi+1)>1. && ProblemCells->getBinContent(eta+1,phi+1)<999)
00202 ProblemCells->setBinContent(eta+1,phi+1,1.);
00203 }
00204 }
00205
00206 FillUnphysicalHEHFBins(*ProblemCellsByDepth);
00207 FillUnphysicalHEHFBins(ProblemCells);
00208 return;
00209 }
00210
00211 void HcalDetDiagPedestalClient::beginJob()
00212 {
00213 dqmStore_ = edm::Service<DQMStore>().operator->();
00214 if (debug_>0)
00215 {
00216 std::cout <<"<HcalDetDiagPedestalClient::beginJob()> Displaying dqmStore directory structure:"<<std::endl;
00217 dqmStore_->showDirStructure();
00218 }
00219 }
00220 void HcalDetDiagPedestalClient::endJob(){}
00221
00222 void HcalDetDiagPedestalClient::beginRun(void)
00223 {
00224 enoughevents_=false;
00225 if (!dqmStore_)
00226 {
00227 if (debug_>0) std::cout <<"<HcalDetDiagPedestalClient::beginRun> dqmStore does not exist!"<<std::endl;
00228 return;
00229 }
00230 dqmStore_->setCurrentFolder(subdir_);
00231 problemnames_.clear();
00232
00233
00234 ProblemCells=dqmStore_->book2D(" ProblemDetDiagPedestal",
00235 " Problem DetDiagPedestal Rate for all HCAL;ieta;iphi",
00236 85,-42.5,42.5,
00237 72,0.5,72.5);
00238 problemnames_.push_back(ProblemCells->getName());
00239 if (debug_>1)
00240 std::cout << "Tried to create ProblemCells Monitor Element in directory "<<subdir_<<" \t Failed? "<<(ProblemCells==0)<<std::endl;
00241 dqmStore_->setCurrentFolder(subdir_+"problem_DetDiagPedestal");
00242 ProblemCellsByDepth = new EtaPhiHists();
00243 ProblemCellsByDepth->setup(dqmStore_," Problem DetDiagPedestal Rate");
00244 for (unsigned int i=0; i<ProblemCellsByDepth->depth.size();++i)
00245 problemnames_.push_back(ProblemCellsByDepth->depth[i]->getName());
00246 nevts_=0;
00247 }
00248
00249 void HcalDetDiagPedestalClient::endRun(void){analyze();}
00250
00251 void HcalDetDiagPedestalClient::setup(void){}
00252 void HcalDetDiagPedestalClient::cleanup(void){}
00253
00254 bool HcalDetDiagPedestalClient::hasErrors_Temp(void)
00255 {
00256 if(status&2) return true;
00257 return false;
00258
00259 if (!ProblemCells)
00260 {
00261 if (debug_>1) std::cout <<"<HcalDetDiagPedestalClient::hasErrors_Temp> ProblemCells histogram does not exist!"<<std::endl;
00262 return false;
00263 }
00264 int problemcount=0;
00265 int ieta=-9999;
00266
00267 for (int depth=0;depth<4; ++depth)
00268 {
00269 int etabins = (ProblemCells->getTH2F())->GetNbinsX();
00270 int phibins = (ProblemCells->getTH2F())->GetNbinsY();
00271 for (int hist_eta=0;hist_eta<etabins;++hist_eta)
00272 {
00273 for (int hist_phi=0; hist_phi<phibins;++hist_phi)
00274 {
00275 ieta=CalcIeta(hist_eta,depth+1);
00276 if (ieta==-9999) continue;
00277 if (ProblemCellsByDepth->depth[depth]==0)
00278 continue;
00279 if (ProblemCellsByDepth->depth[depth]->getBinContent(hist_eta,hist_phi)>minerrorrate_)
00280 ++problemcount;
00281
00282 }
00283 }
00284 }
00285
00286 if (problemcount>0) return true;
00287 return false;
00288 }
00289
00290 bool HcalDetDiagPedestalClient::hasWarnings_Temp(void){
00291 if(status&1) return true;
00292 return false;
00293 }
00294 bool HcalDetDiagPedestalClient::hasOther_Temp(void){return false;}
00295 bool HcalDetDiagPedestalClient::test_enabled(void){return true;}
00296
00297
00298 void HcalDetDiagPedestalClient::updateChannelStatus(std::map<HcalDetId, unsigned int>& myqual)
00299 {
00300
00301
00302
00303
00304 }
00305
00306 static void printTableHeader(ofstream& file,std::string header){
00307 file << "</html><html xmlns=\"https://www.w3.org/1999/xhtml\">"<< std::endl;
00308 file << "<head>"<< std::endl;
00309 file << "<meta https-equiv=\"Content-Type\" content=\"text/html\"/>"<< std::endl;
00310 file << "<title>"<< header <<"</title>"<< std::endl;
00311 file << "<style type=\"text/css\">"<< std::endl;
00312 file << " body,td{ background-color: #FFFFCC; font-family: arial, arial ce, helvetica; font-size: 12px; }"<< std::endl;
00313 file << " td.s0 { font-family: arial, arial ce, helvetica; }"<< std::endl;
00314 file << " td.s1 { font-family: arial, arial ce, helvetica; font-weight: bold; background-color: #FFC169; text-align: center;}"<< std::endl;
00315 file << " td.s2 { font-family: arial, arial ce, helvetica; background-color: #eeeeee; }"<< std::endl;
00316 file << " td.s3 { font-family: arial, arial ce, helvetica; background-color: #d0d0d0; }"<< std::endl;
00317 file << " td.s4 { font-family: arial, arial ce, helvetica; background-color: #FFC169; }"<< std::endl;
00318 file << "</style>"<< std::endl;
00319 file << "<body>"<< std::endl;
00320 file << "<table>"<< std::endl;
00321 }
00322
00323 static void printTableLine(ofstream& file,int ind,HcalDetId& detid,HcalFrontEndId& lmap_entry,HcalElectronicsId &emap_entry,std::string comment=""){
00324 if(ind==0){
00325 file << "<tr>";
00326 file << "<td class=\"s4\" align=\"center\">#</td>" << std::endl;
00327 file << "<td class=\"s1\" align=\"center\">ETA</td>" << std::endl;
00328 file << "<td class=\"s1\" align=\"center\">PHI</td>" << std::endl;
00329 file << "<td class=\"s1\" align=\"center\">DEPTH</td>"<< std::endl;
00330 file << "<td class=\"s1\" align=\"center\">RBX</td>" << std::endl;
00331 file << "<td class=\"s1\" align=\"center\">RM</td>" << std::endl;
00332 file << "<td class=\"s1\" align=\"center\">PIXEL</td>" << std::endl;
00333 file << "<td class=\"s1\" align=\"center\">RM_FIBER</td>" << std::endl;
00334 file << "<td class=\"s1\" align=\"center\">FIBER_CH</td>" << std::endl;
00335 file << "<td class=\"s1\" align=\"center\">QIE</td>" << std::endl;
00336 file << "<td class=\"s1\" align=\"center\">ADC</td>" << std::endl;
00337 file << "<td class=\"s1\" align=\"center\">CRATE</td>" << std::endl;
00338 file << "<td class=\"s1\" align=\"center\">DCC</td>" << std::endl;
00339 file << "<td class=\"s1\" align=\"center\">SPIGOT</td>" << std::endl;
00340 file << "<td class=\"s1\" align=\"center\">HTR_FIBER</td>" << std::endl;
00341 file << "<td class=\"s1\" align=\"center\">HTR_SLOT</td>" << std::endl;
00342 file << "<td class=\"s1\" align=\"center\">HTR_FPGA</td>" << std::endl;
00343 if(comment[0]!=0) file << "<td class=\"s1\" align=\"center\">Comment</td>" << std::endl;
00344 file << "</tr>" << std::endl;
00345 }
00346 std::string raw_class;
00347 file << "<tr>"<< std::endl;
00348 if((ind%2)==1){
00349 raw_class="<td class=\"s2\" align=\"center\">";
00350 }else{
00351 raw_class="<td class=\"s3\" align=\"center\">";
00352 }
00353 file << "<td class=\"s4\" align=\"center\">" << ind+1 <<"</td>"<< std::endl;
00354 file << raw_class<< detid.ieta()<<"</td>"<< std::endl;
00355 file << raw_class<< detid.iphi()<<"</td>"<< std::endl;
00356 file << raw_class<< detid.depth() <<"</td>"<< std::endl;
00357 file << raw_class<< lmap_entry.rbx()<<"</td>"<< std::endl;
00358 file << raw_class<< lmap_entry.rm() <<"</td>"<< std::endl;
00359 file << raw_class<< lmap_entry.pixel()<<"</td>"<< std::endl;
00360 file << raw_class<< lmap_entry.rmFiber() <<"</td>"<< std::endl;
00361 file << raw_class<< lmap_entry.fiberChannel()<<"</td>"<< std::endl;
00362 file << raw_class<< lmap_entry.qieCard() <<"</td>"<< std::endl;
00363 file << raw_class<< lmap_entry.adc()<<"</td>"<< std::endl;
00364 file << raw_class<< emap_entry.readoutVMECrateId()<<"</td>"<< std::endl;
00365 file << raw_class<< emap_entry.dccid()<<"</td>"<< std::endl;
00366 file << raw_class<< emap_entry.spigot()<<"</td>"<< std::endl;
00367 file << raw_class<< emap_entry.fiberIndex()<<"</td>"<< std::endl;
00368 file << raw_class<< emap_entry.htrSlot()<<"</td>"<< std::endl;
00369 file << raw_class<< emap_entry.htrTopBottom()<<"</td>"<< std::endl;
00370 if(comment[0]!=0) file << raw_class<< comment<<"</td>"<< std::endl;
00371 }
00372 static void printTableTail(ofstream& file){
00373 file << "</table>"<< std::endl;
00374 file << "</body>"<< std::endl;
00375 file << "</html>"<< std::endl;
00376 }
00377
00378 bool HcalDetDiagPedestalClient::validHtmlOutput(){
00379 std::string s=subdir_+"HcalDetDiagPedestalMonitor Event Number";
00380 MonitorElement *me = dqmStore_->get(s.c_str());
00381 int n=0;
00382 if ( me ) {
00383 s = me->valueString();
00384 sscanf((s.substr(2,s.length()-2)).c_str(), "%d", &n);
00385 }
00386 if(n<100) return false;
00387 return true;
00388 }
00389
00390 void HcalDetDiagPedestalClient::htmlOutput(std::string htmlDir){
00391 int MissingCnt=0,UnstableCnt=0,BadCnt=0;
00392 int HBP[4]={0,0,0,0},HBM[4]={0,0,0,0},HEP[4]={0,0,0,0},HEM[4]={0,0,0,0},HFP[4]={0,0,0,0},HFM[4]={0,0,0,0},HO[4] ={0,0,0,0};
00393 int newHBP[4]={0,0,0,0},newHBM[4]={0,0,0,0},newHEP[4]={0,0,0,0},newHEM[4]={0,0,0,0};
00394 int newHFP[4]={0,0,0,0},newHFM[4]={0,0,0,0},newHO[4] ={0,0,0,0};
00395 if (debug_>0) std::cout << "<HcalDetDiagPedestalClient::htmlOutput> Preparing html output ..." << std::endl;
00396 if(!dqmStore_) return;
00397
00398 HcalLogicalMapGenerator gen;
00399 HcalLogicalMap lmap(gen.createMap());
00400 HcalElectronicsMap emap=lmap.generateHcalElectronicsMap();
00401 TH2F *Missing_val[4],*Unstable_val[4],*BadPed_val[4],*BadRMS_val[4];
00402 MonitorElement* me;
00403
00404
00405 TH1F *PedestalsAve4HB=0;
00406 TH1F *PedestalsAve4HE=0;
00407 TH1F *PedestalsAve4HO=0;
00408 TH1F *PedestalsAve4HF=0;
00409 TH1F *PedestalsAve4Simp=0;
00410
00411 TH1F *PedestalsAve4HBref=0;
00412 TH1F *PedestalsAve4HEref=0;
00413 TH1F *PedestalsAve4HOref=0;
00414 TH1F *PedestalsAve4HFref=0;
00415 TH1F *PedestalsRmsHB=0;
00416 TH1F *PedestalsRmsHE=0;
00417 TH1F *PedestalsRmsHO=0;
00418 TH1F *PedestalsRmsHF=0;
00419 TH1F *PedestalsRmsSimp=0;
00420
00421 TH1F *PedestalsRmsHBref=0;
00422 TH1F *PedestalsRmsHEref=0;
00423 TH1F *PedestalsRmsHOref=0;
00424 TH1F *PedestalsRmsHFref=0;
00425
00426 TH2F *Pedestals2DRmsHBHEHF=0;
00427 TH2F *Pedestals2DRmsHO=0;
00428 TH2F *Pedestals2DHBHEHF=0;
00429 TH2F *Pedestals2DHO=0;
00430 TH2F *Pedestals2DErrorHBHEHF=0;
00431 TH2F *Pedestals2DErrorHO=0;
00432
00433 std::string s=subdir_+"Summary Plots/HB Pedestal Distribution (average over 4 caps)"; me=dqmStore_->get(s.c_str());
00434 if(me!=0) PedestalsAve4HB=HcalUtilsClient::getHisto<TH1F*>(me, cloneME_, PedestalsAve4HB, debug_); else return;
00435 s=subdir_+"Summary Plots/HE Pedestal Distribution (average over 4 caps)"; me=dqmStore_->get(s.c_str());
00436 if(me!=0) PedestalsAve4HE=HcalUtilsClient::getHisto<TH1F*>(me, cloneME_, PedestalsAve4HE, debug_); else return;
00437 s=subdir_+"Summary Plots/HO Pedestal Distribution (average over 4 caps)"; me=dqmStore_->get(s.c_str());
00438 if(me!=0) PedestalsAve4HO=HcalUtilsClient::getHisto<TH1F*>(me, cloneME_, PedestalsAve4HO, debug_); else return;
00439 s=subdir_+"Summary Plots/HF Pedestal Distribution (average over 4 caps)"; me=dqmStore_->get(s.c_str());
00440 if(me!=0) PedestalsAve4HF=HcalUtilsClient::getHisto<TH1F*>(me, cloneME_, PedestalsAve4HF, debug_); else return;
00441 s=subdir_+"Summary Plots/SIPM Pedestal Distribution (average over 4 caps)"; me=dqmStore_->get(s.c_str());
00442 if(me!=0) PedestalsAve4Simp=HcalUtilsClient::getHisto<TH1F*>(me, cloneME_, PedestalsAve4Simp, debug_); else return;
00443
00444 s=subdir_+"Summary Plots/HB Pedestal-Reference Distribution (average over 4 caps)"; me=dqmStore_->get(s.c_str());
00445 if(me!=0) PedestalsAve4HBref=HcalUtilsClient::getHisto<TH1F*>(me, cloneME_, PedestalsAve4HBref, debug_); else return;
00446 s=subdir_+"Summary Plots/HE Pedestal-Reference Distribution (average over 4 caps)"; me=dqmStore_->get(s.c_str());
00447 if(me!=0) PedestalsAve4HEref=HcalUtilsClient::getHisto<TH1F*>(me, cloneME_, PedestalsAve4HEref, debug_); else return;
00448 s=subdir_+"Summary Plots/HO Pedestal-Reference Distribution (average over 4 caps)"; me=dqmStore_->get(s.c_str());
00449 if(me!=0) PedestalsAve4HOref=HcalUtilsClient::getHisto<TH1F*>(me, cloneME_, PedestalsAve4HOref, debug_); else return;
00450 s=subdir_+"Summary Plots/HF Pedestal-Reference Distribution (average over 4 caps)"; me=dqmStore_->get(s.c_str());
00451 if(me!=0) PedestalsAve4HFref=HcalUtilsClient::getHisto<TH1F*>(me, cloneME_, PedestalsAve4HFref, debug_); else return;
00452
00453 s=subdir_+"Summary Plots/HB Pedestal RMS Distribution (individual cap)"; me=dqmStore_->get(s.c_str());
00454 if(me!=0) PedestalsRmsHB=HcalUtilsClient::getHisto<TH1F*>(me, cloneME_, PedestalsRmsHB, debug_); else return;
00455 s=subdir_+"Summary Plots/HE Pedestal RMS Distribution (individual cap)"; me=dqmStore_->get(s.c_str());
00456 if(me!=0) PedestalsRmsHE=HcalUtilsClient::getHisto<TH1F*>(me, cloneME_, PedestalsRmsHE, debug_); else return;
00457 s=subdir_+"Summary Plots/HO Pedestal RMS Distribution (individual cap)"; me=dqmStore_->get(s.c_str());
00458 if(me!=0) PedestalsRmsHO=HcalUtilsClient::getHisto<TH1F*>(me, cloneME_, PedestalsRmsHO, debug_); else return;
00459 s=subdir_+"Summary Plots/HF Pedestal RMS Distribution (individual cap)"; me=dqmStore_->get(s.c_str());
00460 if(me!=0) PedestalsRmsHF=HcalUtilsClient::getHisto<TH1F*>(me, cloneME_, PedestalsRmsHF, debug_); else return;
00461 s=subdir_+"Summary Plots/SIPM Pedestal RMS Distribution (individual cap)"; me=dqmStore_->get(s.c_str());
00462 if(me!=0) PedestalsRmsSimp=HcalUtilsClient::getHisto<TH1F*>(me, cloneME_, PedestalsRmsSimp, debug_); else return;
00463
00464 s=subdir_+"Summary Plots/HB Pedestal_rms-Reference_rms Distribution"; me=dqmStore_->get(s.c_str());
00465 if(me!=0) PedestalsRmsHBref=HcalUtilsClient::getHisto<TH1F*>(me, cloneME_, PedestalsRmsHBref, debug_); else return;
00466 s=subdir_+"Summary Plots/HE Pedestal_rms-Reference_rms Distribution"; me=dqmStore_->get(s.c_str());
00467 if(me!=0) PedestalsRmsHEref=HcalUtilsClient::getHisto<TH1F*>(me, cloneME_, PedestalsRmsHEref, debug_); else return;
00468 s=subdir_+"Summary Plots/HO Pedestal_rms-Reference_rms Distribution"; me=dqmStore_->get(s.c_str());
00469 if(me!=0) PedestalsRmsHOref=HcalUtilsClient::getHisto<TH1F*>(me, cloneME_, PedestalsRmsHOref, debug_); else return;
00470 s=subdir_+"Summary Plots/HF Pedestal_rms-Reference_rms Distribution"; me=dqmStore_->get(s.c_str());
00471 if(me!=0) PedestalsRmsHFref=HcalUtilsClient::getHisto<TH1F*>(me, cloneME_, PedestalsRmsHFref, debug_); else return;
00472
00473 s=subdir_+"Summary Plots/HBHEHF pedestal mean map"; me=dqmStore_->get(s.c_str());
00474 if(me!=0) Pedestals2DHBHEHF=HcalUtilsClient::getHisto<TH2F*>(me, cloneME_, Pedestals2DHBHEHF, debug_); else return;
00475 s=subdir_+"Summary Plots/HO pedestal mean map"; me=dqmStore_->get(s.c_str());
00476 if(me!=0) Pedestals2DHO=HcalUtilsClient::getHisto<TH2F*>(me, cloneME_, Pedestals2DHO, debug_); else return;
00477 s=subdir_+"Summary Plots/HBHEHF pedestal rms map"; me=dqmStore_->get(s.c_str());
00478 if(me!=0) Pedestals2DRmsHBHEHF=HcalUtilsClient::getHisto<TH2F*>(me, cloneME_, Pedestals2DRmsHBHEHF, debug_); else return;
00479 s=subdir_+"Summary Plots/HO pedestal rms map"; me=dqmStore_->get(s.c_str());
00480 if(me!=0) Pedestals2DRmsHO=HcalUtilsClient::getHisto<TH2F*>(me, cloneME_, Pedestals2DRmsHO, debug_); else return;
00481 s=subdir_+"Summary Plots/HBHEHF pedestal problems map"; me=dqmStore_->get(s.c_str());
00482 if(me!=0) Pedestals2DErrorHBHEHF=HcalUtilsClient::getHisto<TH2F*>(me, cloneME_, Pedestals2DErrorHBHEHF, debug_); else return;
00483 s=subdir_+"Summary Plots/HO pedestal problems map"; me=dqmStore_->get(s.c_str());
00484 if(me!=0) Pedestals2DErrorHO=HcalUtilsClient::getHisto<TH2F*>(me, cloneME_, Pedestals2DErrorHO, debug_); else return;
00485
00486
00487 std::vector<std::string> name = HcalEtaPhiHistNames();
00488 for(int i=0;i<4;++i){
00489 Missing_val[i]=Unstable_val[i]=BadPed_val[i]=BadRMS_val[i]=0;
00490 std::string s=subdir_+"Plots for client/"+name[i]+" Missing channels";
00491 me=dqmStore_->get(s.c_str());
00492 if (me!=0) Missing_val[i]=HcalUtilsClient::getHisto<TH2F*>(me, cloneME_, Missing_val[i], debug_); else return;
00493 s=subdir_+"Plots for client/"+name[i]+" Channel instability value";
00494 me=dqmStore_->get(s.c_str());
00495 if (me!=0) Unstable_val[i]=HcalUtilsClient::getHisto<TH2F*>(me, cloneME_, Unstable_val[i], debug_); else return;
00496 s=subdir_+"Plots for client/"+name[i]+" Bad Pedestal-Ref Value";
00497 me=dqmStore_->get(s.c_str());
00498 if (me!=0) BadPed_val[i]=HcalUtilsClient::getHisto<TH2F*>(me, cloneME_, BadPed_val[i], debug_); else return;
00499 s=subdir_+"Plots for client/"+name[i]+" Bad Rms-ref Value";
00500 me=dqmStore_->get(s.c_str());
00501 if (me!=0) BadRMS_val[i]=HcalUtilsClient::getHisto<TH2F*>(me, cloneME_, BadRMS_val[i], debug_); else return;
00502 }
00503
00504 for(int d=0;d<4;++d){
00505 int etabins=Missing_val[d]->GetNbinsX();
00506 int phibins=Missing_val[d]->GetNbinsY();
00507 for(int phi=0;phi<phibins;++phi)for(int eta=0;eta<etabins;++eta){
00508 int ieta=CalcIeta(eta,d+1);
00509 if(ieta==-9999) continue;
00510 HcalSubdetector subdet=HcalEmpty;
00511 if(isHB(eta,d+1))subdet=HcalBarrel;
00512 else if (isHE(eta,d+1)) subdet=HcalEndcap;
00513 else if (isHF(eta,d+1)) subdet=HcalForward;
00514 else if (isHO(eta,d+1)) subdet=HcalOuter;
00515 HcalDetId hcalid(subdet, ieta, phi+1, (int)(d+1));
00516 float val=Missing_val[d]->GetBinContent(eta+1,phi+1);
00517 if(val!=0){
00518 if(subdet==HcalBarrel){
00519 if(ieta>0){ HBP[0]++;}else{ HBM[0]++;} MissingCnt++;
00520 if(badstatusmap.find(hcalid)==badstatusmap.end()){if(ieta>0){ newHBP[0]++;}else{ newHBM[0]++;}}
00521 }
00522 if(subdet==HcalEndcap){
00523 if(ieta>0){ HEP[0]++;}else{ HEM[0]++;} MissingCnt++;
00524 if(badstatusmap.find(hcalid)==badstatusmap.end()){if(ieta>0){ newHEP[0]++;}else{ newHEM[0]++;}}
00525 }
00526 if(subdet==HcalForward){
00527 if(ieta>0){ HFP[0]++;}else{ HFM[0]++;} MissingCnt++;
00528 if(badstatusmap.find(hcalid)==badstatusmap.end()){if(ieta>0){ newHFP[0]++;}else{ newHFM[0]++;}}
00529 }
00530 if(subdet==HcalOuter){
00531 HO[0]++;MissingCnt++;
00532 if(badstatusmap.find(hcalid)==badstatusmap.end()){newHO[0]++;}
00533 }
00534 }
00535 val=Unstable_val[d]->GetBinContent(eta+1,phi+1);
00536 if(val!=0){
00537 if(subdet==HcalBarrel){
00538 if(ieta>0){ HBP[1]++;}else{ HBM[1]++;} UnstableCnt++;
00539 if(badstatusmap.find(hcalid)==badstatusmap.end()){if(ieta>0){ newHBP[1]++;}else{ newHBM[1]++;}}
00540 }
00541 if(subdet==HcalEndcap){
00542 if(ieta>0){ HEP[1]++;}else{ HEM[1]++;} UnstableCnt++;
00543 if(badstatusmap.find(hcalid)==badstatusmap.end()){if(ieta>0){ newHEP[1]++;}else{ newHEM[1]++;}}
00544 }
00545 if(subdet==HcalForward){
00546 if(ieta>0){ HFP[1]++;}else{ HFM[1]++;} UnstableCnt++;
00547 if(badstatusmap.find(hcalid)==badstatusmap.end()){if(ieta>0){ newHFP[1]++;}else{ newHFM[1]++;}}
00548 }
00549 if(subdet==HcalOuter){
00550 HO[1]++;UnstableCnt++;
00551 if(badstatusmap.find(hcalid)==badstatusmap.end()){newHO[1]++;}
00552 }
00553 }
00554 val=BadPed_val[d]->GetBinContent(eta+1,phi+1);
00555 if(val!=0){
00556 if(subdet==HcalBarrel){
00557 if(ieta>0){ HBP[2]++;}else{ HBM[2]++;} BadCnt++;
00558 if(badstatusmap.find(hcalid)==badstatusmap.end()){if(ieta>0){ newHBP[2]++;}else{ newHBM[2]++;}}
00559 }
00560 if(subdet==HcalEndcap){
00561 if(ieta>0){ HEP[2]++;}else{ HEM[2]++;} BadCnt++;
00562 if(badstatusmap.find(hcalid)==badstatusmap.end()){if(ieta>0){ newHEP[2]++;}else{ newHEM[2]++;}}
00563 }
00564 if(subdet==HcalForward){
00565 if(ieta>0){ HFP[2]++;}else{ HFM[2]++;} BadCnt++;
00566 if(badstatusmap.find(hcalid)==badstatusmap.end()){if(ieta>0){ newHFP[2]++;}else{ newHFM[2]++;}}
00567 }
00568 if(subdet==HcalOuter){
00569 HO[2]++;BadCnt++;
00570 if(badstatusmap.find(hcalid)==badstatusmap.end()){newHO[2]++;}
00571 }
00572 }
00573 val=BadRMS_val[d]->GetBinContent(eta+1,phi+1);
00574 if(val!=0){
00575 if(subdet==HcalBarrel){
00576 if(ieta>0){ HBP[3]++;}else{ HBM[3]++;} BadCnt++;
00577 if(badstatusmap.find(hcalid)==badstatusmap.end()){if(ieta>0){ newHBP[3]++;}else{ newHBM[3]++;}}
00578 }
00579 if(subdet==HcalEndcap){
00580 if(ieta>0){ HEP[3]++;}else{ HEM[3]++;} BadCnt++;
00581 if(badstatusmap.find(hcalid)==badstatusmap.end()){if(ieta>0){ newHEP[3]++;}else{ newHEM[3]++;}}
00582 }
00583 if(subdet==HcalForward){
00584 if(ieta>0){ HFP[3]++;}else{ HFM[3]++;} BadCnt++;
00585 if(badstatusmap.find(hcalid)==badstatusmap.end()){if(ieta>0){ newHFP[3]++;}else{ newHFM[3]++;}}
00586 }
00587 if(subdet==HcalOuter){
00588 HO[3]++;BadCnt++;
00589 if(badstatusmap.find(hcalid)==badstatusmap.end()){newHO[3]++;}
00590 }
00591 }
00592 }
00593 }
00594
00595
00596 ofstream badMissing;
00597 badMissing.open((htmlDir+"bad_missing_table.html").c_str());
00598 printTableHeader(badMissing,"Missing Channels list");
00599 ofstream badUnstable;
00600 badUnstable.open((htmlDir+"bad_unstable_table.html").c_str());
00601 printTableHeader(badUnstable,"Unstable Channels list");
00602 ofstream badPedRMS;
00603 badPedRMS.open((htmlDir+"bad_badpedrms_table.html").c_str());
00604 printTableHeader(badPedRMS,"Missing Channels list");
00605
00606 int cnt=0;
00607 if((HBP[0]+HBP[0])>0 && (HBM[0]+HBP[0])!=(1296*2)){
00608 badMissing << "<tr><td align=\"center\"><h3>"<< "HB" <<"</h3></td></tr>" << std::endl;
00609 for(int d=0;d<4;++d){
00610 int etabins=Missing_val[d]->GetNbinsX();
00611 int phibins=Missing_val[d]->GetNbinsY();
00612 for(int phi=0;phi<phibins;++phi)for(int eta=0;eta<etabins;++eta){
00613 int ieta=CalcIeta(eta,d+1);
00614 if(ieta==-9999) continue;
00615 if(!isHB(eta,d+1)) continue;
00616 float val=Missing_val[d]->GetBinContent(eta+1,phi+1);
00617 if(val==0) continue;
00618 HcalDetId hcalid(HcalBarrel,ieta,phi+1,d+1);
00619 std::string s=" ";
00620 if(badstatusmap.find(hcalid)!=badstatusmap.end()){ s="Known problem";}
00621 HcalFrontEndId lmap_entry=lmap.getHcalFrontEndId(hcalid);
00622 HcalElectronicsId emap_entry=emap.lookup(hcalid);
00623 printTableLine(badMissing,cnt++,hcalid,lmap_entry,emap_entry,s);
00624 }
00625 }
00626 }
00627 cnt=0;
00628 if((HEP[0]+HEP[0])>0 && (HEM[0]+HEP[0])!=(1296*2)){
00629 badMissing << "<tr><td align=\"center\"><h3>"<< "HE" <<"</h3></td></tr>" << std::endl;
00630 for(int d=0;d<4;++d){
00631 int etabins=Missing_val[d]->GetNbinsX();
00632 int phibins=Missing_val[d]->GetNbinsY();
00633 for(int phi=0;phi<phibins;++phi)for(int eta=0;eta<etabins;++eta){
00634 int ieta=CalcIeta(eta,d+1);
00635 if(ieta==-9999) continue;
00636 if(!isHE(eta,d+1)) continue;
00637 float val=Missing_val[d]->GetBinContent(eta+1,phi+1);
00638 if(val==0) continue;
00639 HcalDetId hcalid(HcalEndcap,ieta,phi+1,d+1);
00640 std::string s=" ";
00641 if(badstatusmap.find(hcalid)!=badstatusmap.end()){ s="Known problem";}
00642 HcalFrontEndId lmap_entry=lmap.getHcalFrontEndId(hcalid);
00643 HcalElectronicsId emap_entry=emap.lookup(hcalid);
00644 printTableLine(badMissing,cnt++,hcalid,lmap_entry,emap_entry,s);
00645 }
00646 }
00647 }
00648 cnt=0;
00649 if(HO[0]>0 && HO[0]!=2160){
00650 badMissing << "<tr><td align=\"center\"><h3>"<< "HO" <<"</h3></td></tr>" << std::endl;
00651 for(int d=0;d<4;++d){
00652 int etabins=Missing_val[d]->GetNbinsX();
00653 int phibins=Missing_val[d]->GetNbinsY();
00654 for(int phi=0;phi<phibins;++phi)for(int eta=0;eta<etabins;++eta){
00655 int ieta=CalcIeta(eta,d+1);
00656 if(ieta==-9999) continue;
00657 if(!isHO(eta,d+1)) continue;
00658 float val=Missing_val[d]->GetBinContent(eta+1,phi+1);
00659 if(val==0) continue;
00660 HcalDetId hcalid(HcalOuter,ieta,phi+1,d+1);
00661 std::string s=" ";
00662 if(badstatusmap.find(hcalid)!=badstatusmap.end()){ s="Known problem";}
00663 HcalFrontEndId lmap_entry=lmap.getHcalFrontEndId(hcalid);
00664 HcalElectronicsId emap_entry=emap.lookup(hcalid);
00665 printTableLine(badMissing,cnt++,hcalid,lmap_entry,emap_entry,s);
00666 }
00667 }
00668 }
00669 cnt=0;
00670 if((HFP[0]+HFP[0])>0 && (HFM[0]+HFP[0])!=(864*2)){
00671 badMissing << "<tr><td align=\"center\"><h3>"<< "HF" <<"</h3></td></tr>" << std::endl;
00672 for(int d=0;d<4;++d){
00673 int etabins=Missing_val[d]->GetNbinsX();
00674 int phibins=Missing_val[d]->GetNbinsY();
00675 for(int phi=0;phi<phibins;++phi)for(int eta=0;eta<etabins;++eta){
00676 int ieta=CalcIeta(eta,d+1);
00677 if(ieta==-9999) continue;
00678 if(!isHF(eta,d+1)) continue;
00679 float val=Missing_val[d]->GetBinContent(eta+1,phi+1);
00680 if(val==0) continue;
00681 HcalDetId hcalid(HcalForward,ieta,phi+1,d+1);
00682 std::string s=" ";
00683 if(badstatusmap.find(hcalid)!=badstatusmap.end()){ s="Known problem";}
00684 HcalFrontEndId lmap_entry=lmap.getHcalFrontEndId(hcalid);
00685 HcalElectronicsId emap_entry=emap.lookup(hcalid);
00686 printTableLine(badMissing,cnt++,hcalid,lmap_entry,emap_entry,s);
00687 }
00688 }
00689 }
00691 cnt=0;
00692 if((HBP[1]+HBP[1])>0){
00693 badUnstable << "<tr><td align=\"center\"><h3>"<< "HB" <<"</h3></td></tr>" << std::endl;
00694 for(int d=0;d<4;++d){
00695 int etabins=Unstable_val[d]->GetNbinsX();
00696 int phibins=Unstable_val[d]->GetNbinsY();
00697 for(int phi=0;phi<phibins;++phi)for(int eta=0;eta<etabins;++eta){
00698 int ieta=CalcIeta(eta,d+1);
00699 if(ieta==-9999) continue;
00700 if(!isHB(eta,d+1)) continue;
00701 float val=Unstable_val[d]->GetBinContent(eta+1,phi+1);
00702 if(val==0) continue;
00703 HcalDetId hcalid(HcalBarrel,ieta,phi+1,d+1);
00704 char comment[100]; sprintf(comment,"Missing in %.3f%% of events\n",(1.0-val)*100.0);
00705 std::string s=comment;
00706 if(badstatusmap.find(hcalid)!=badstatusmap.end()){ s+=",Known problem";}
00707 HcalFrontEndId lmap_entry=lmap.getHcalFrontEndId(hcalid);
00708 HcalElectronicsId emap_entry=emap.lookup(hcalid);
00709 printTableLine(badUnstable,cnt++,hcalid,lmap_entry,emap_entry,s);
00710 }
00711 }
00712 }
00713 cnt=0;
00714 if((HEP[1]+HEP[1])>0){
00715 badUnstable << "<tr><td align=\"center\"><h3>"<< "HE" <<"</h3></td></tr>" << std::endl;
00716 for(int d=0;d<4;++d){
00717 int etabins=Unstable_val[d]->GetNbinsX();
00718 int phibins=Unstable_val[d]->GetNbinsY();
00719 for(int phi=0;phi<phibins;++phi)for(int eta=0;eta<etabins;++eta){
00720 int ieta=CalcIeta(eta,d+1);
00721 if(ieta==-9999) continue;
00722 if(!isHE(eta,d+1)) continue;
00723 float val=Unstable_val[d]->GetBinContent(eta+1,phi+1);
00724 if(val==0) continue;
00725 HcalDetId hcalid(HcalEndcap,ieta,phi+1,d+1);
00726 char comment[100]; sprintf(comment,"Missing in %.3f%% of events\n",(1.0-val)*100.0);
00727 std::string s=comment;
00728 if(badstatusmap.find(hcalid)!=badstatusmap.end()){ s+=",Known problem";}
00729 HcalFrontEndId lmap_entry=lmap.getHcalFrontEndId(hcalid);
00730 HcalElectronicsId emap_entry=emap.lookup(hcalid);
00731 printTableLine(badUnstable,cnt++,hcalid,lmap_entry,emap_entry,s);
00732 }
00733 }
00734 }
00735 cnt=0;
00736 if(HO[1]>0){
00737 badUnstable << "<tr><td align=\"center\"><h3>"<< "HO" <<"</h3></td></tr>" << std::endl;
00738 for(int d=0;d<4;++d){
00739 int etabins=Unstable_val[d]->GetNbinsX();
00740 int phibins=Unstable_val[d]->GetNbinsY();
00741 for(int phi=0;phi<phibins;++phi)for(int eta=0;eta<etabins;++eta){
00742 int ieta=CalcIeta(eta,d+1);
00743 if(ieta==-9999) continue;
00744 if(!isHO(eta,d+1)) continue;
00745 float val=Unstable_val[d]->GetBinContent(eta+1,phi+1);
00746 if(val==0) continue;
00747 HcalDetId hcalid(HcalOuter,ieta,phi+1,d+1);
00748 char comment[100]; sprintf(comment,"Missing in %.3f%% of events\n",(1.0-val)*100.0);
00749 std::string s=comment;
00750 if(badstatusmap.find(hcalid)!=badstatusmap.end()){ s+=",Known problem";}
00751 HcalFrontEndId lmap_entry=lmap.getHcalFrontEndId(hcalid);
00752 HcalElectronicsId emap_entry=emap.lookup(hcalid);
00753 printTableLine(badUnstable,cnt++,hcalid,lmap_entry,emap_entry,s);
00754 }
00755 }
00756 }
00757 cnt=0;
00758 if((HFP[1]+HFP[1])>0){
00759 badUnstable << "<tr><td align=\"center\"><h3>"<< "HF" <<"</h3></td></tr>" << std::endl;
00760 for(int d=0;d<4;++d){
00761 int etabins=Unstable_val[d]->GetNbinsX();
00762 int phibins=Unstable_val[d]->GetNbinsY();
00763 for(int phi=0;phi<phibins;++phi)for(int eta=0;eta<etabins;++eta){
00764 int ieta=CalcIeta(eta,d+1);
00765 if(ieta==-9999) continue;
00766 if(!isHF(eta,d+1)) continue;
00767 float val=Unstable_val[d]->GetBinContent(eta+1,phi+1);
00768 if(val==0) continue;
00769 HcalDetId hcalid(HcalForward,ieta,phi+1,d+1);
00770 char comment[100]; sprintf(comment,"Missing in %.3f%% of events\n",(1.0-val)*100.0);
00771 std::string s=comment;
00772 if(badstatusmap.find(hcalid)!=badstatusmap.end()){ s+=",Known problem";}
00773 HcalFrontEndId lmap_entry=lmap.getHcalFrontEndId(hcalid);
00774 HcalElectronicsId emap_entry=emap.lookup(hcalid);
00775 printTableLine(badUnstable,cnt++,hcalid,lmap_entry,emap_entry,s);
00776 }
00777 }
00778 }
00780 cnt=0;
00781 if((HBP[2]+HBP[2]+HBP[3]+HBP[3])>0){
00782 badPedRMS << "<tr><td align=\"center\"><h3>"<< "HB" <<"</h3></td></tr>" << std::endl;
00783 for(int d=0;d<4;++d){
00784 int etabins=BadPed_val[d]->GetNbinsX();
00785 int phibins=BadPed_val[d]->GetNbinsY();
00786 for(int phi=0;phi<phibins;++phi)for(int eta=0;eta<etabins;++eta){
00787 int ieta=CalcIeta(eta,d+1);
00788 if(ieta==-9999) continue;
00789 if(!isHB(eta,d+1)) continue;
00790 float val1=BadPed_val[d]->GetBinContent(eta+1,phi+1);
00791 float val2=BadRMS_val[d]->GetBinContent(eta+1,phi+1);
00792 if(val1==0 && val2==0) continue;
00793 HcalDetId hcalid(HcalBarrel,ieta,phi+1,d+1);
00794 char comment[100];
00795 if(val1!=0) sprintf(comment,"Ped-Ref=%.2f",val1);
00796 if(val2!=0) sprintf(comment,"Rms-Ref=%.2f",val2);
00797 if(val1!=0 && val2!=0) sprintf(comment,"Ped-Ref=%.2f,Rms-Ref=%.2f",val1,val2);
00798 std::string s=comment;
00799 if(badstatusmap.find(hcalid)!=badstatusmap.end()){ s+=",Known problem";}
00800 HcalFrontEndId lmap_entry=lmap.getHcalFrontEndId(hcalid);
00801 HcalElectronicsId emap_entry=emap.lookup(hcalid);
00802 printTableLine(badPedRMS,cnt++,hcalid,lmap_entry,emap_entry,s);
00803 }
00804 }
00805 }
00806 cnt=0;
00807 if((HEP[2]+HEP[2]+HEP[3]+HEP[3])>0){
00808 badPedRMS << "<tr><td align=\"center\"><h3>"<< "HE" <<"</h3></td></tr>" << std::endl;
00809 for(int d=0;d<4;++d){
00810 int etabins=BadPed_val[d]->GetNbinsX();
00811 int phibins=BadPed_val[d]->GetNbinsY();
00812 for(int phi=0;phi<phibins;++phi)for(int eta=0;eta<etabins;++eta){
00813 int ieta=CalcIeta(eta,d+1);
00814 if(ieta==-9999) continue;
00815 if(!isHE(eta,d+1)) continue;
00816 float val1=BadPed_val[d]->GetBinContent(eta+1,phi+1);
00817 float val2=BadRMS_val[d]->GetBinContent(eta+1,phi+1);
00818 if(val1==0 && val2==0) continue;
00819 HcalDetId hcalid(HcalEndcap,ieta,phi+1,d+1);
00820 char comment[100];
00821 if(val1!=0) sprintf(comment,"Ped-Ref=%.2f",val1);
00822 if(val2!=0) sprintf(comment,"Rms-Ref=%.2f",val2);
00823 if(val1!=0 && val2!=0) sprintf(comment,"Ped-Ref=%.2f,Rms-Ref=%.2f",val1,val2);
00824 std::string s=comment;
00825 if(badstatusmap.find(hcalid)!=badstatusmap.end()){ s+=",Known problem";}
00826 HcalFrontEndId lmap_entry=lmap.getHcalFrontEndId(hcalid);
00827 HcalElectronicsId emap_entry=emap.lookup(hcalid);
00828 printTableLine(badPedRMS,cnt++,hcalid,lmap_entry,emap_entry,s);
00829 }
00830 }
00831 }
00832 cnt=0;
00833 if((HO[2]+HO[3])>0){
00834 badPedRMS << "<tr><td align=\"center\"><h3>"<< "HO" <<"</h3></td></tr>" << std::endl;
00835 for(int d=0;d<4;++d){
00836 int etabins=BadPed_val[d]->GetNbinsX();
00837 int phibins=BadPed_val[d]->GetNbinsY();
00838 for(int phi=0;phi<phibins;++phi)for(int eta=0;eta<etabins;++eta){
00839 int ieta=CalcIeta(eta,d+1);
00840 if(ieta==-9999) continue;
00841 if(!isHO(eta,d+1)) continue;
00842 float val1=BadPed_val[d]->GetBinContent(eta+1,phi+1);
00843 float val2=BadRMS_val[d]->GetBinContent(eta+1,phi+1);
00844 if(val1==0 && val2==0) continue;
00845 HcalDetId hcalid(HcalOuter,ieta,phi+1,d+1);
00846 char comment[100];
00847 if(val1!=0) sprintf(comment,"Ped-Ref=%.2f",val1);
00848 if(val2!=0) sprintf(comment,"Rms-Ref=%.2f",val2);
00849 if(val1!=0 && val2!=0) sprintf(comment,"Ped-Ref=%.2f,Rms-Ref=%.2f",val1,val2);
00850 std::string s=comment;
00851 if(badstatusmap.find(hcalid)!=badstatusmap.end()){ s+=",Known problem";}
00852 HcalFrontEndId lmap_entry=lmap.getHcalFrontEndId(hcalid);
00853 HcalElectronicsId emap_entry=emap.lookup(hcalid);
00854 printTableLine(badPedRMS,cnt++,hcalid,lmap_entry,emap_entry,s);
00855 }
00856 }
00857 }
00858 cnt=0;
00859 if((HFP[2]+HFP[2]+HFP[3]+HFP[3])>0){
00860 badPedRMS << "<tr><td align=\"center\"><h3>"<< "HF" <<"</h3></td></tr>" << std::endl;
00861 for(int d=0;d<4;++d){
00862 int etabins=BadPed_val[d]->GetNbinsX();
00863 int phibins=BadPed_val[d]->GetNbinsY();
00864 for(int phi=0;phi<phibins;++phi)for(int eta=0;eta<etabins;++eta){
00865 int ieta=CalcIeta(eta,d+1);
00866 if(ieta==-9999) continue;
00867 if(!isHF(eta,d+1)) continue;
00868 float val1=BadPed_val[d]->GetBinContent(eta+1,phi+1);
00869 float val2=BadRMS_val[d]->GetBinContent(eta+1,phi+1);
00870 if(val1==0 && val2==0) continue;
00871 HcalDetId hcalid(HcalForward,ieta,phi+1,d+1);
00872 char comment[100];
00873 if(val1!=0) sprintf(comment,"Ped-Ref=%.2f",val1);
00874 if(val2!=0) sprintf(comment,"Rms-Ref=%.2f",val2);
00875 if(val1!=0 && val2!=0) sprintf(comment,"Ped-Ref=%.2f,Rms-Ref=%.2f",val1,val2);
00876 std::string s=comment;
00877 if(badstatusmap.find(hcalid)!=badstatusmap.end()){ s+=",Known problem";}
00878 HcalFrontEndId lmap_entry=lmap.getHcalFrontEndId(hcalid);
00879 HcalElectronicsId emap_entry=emap.lookup(hcalid);
00880 printTableLine(badPedRMS,cnt++,hcalid,lmap_entry,emap_entry,s);
00881 }
00882 }
00883 }
00884
00885 printTableTail(badMissing);
00886 badMissing.close();
00887 printTableTail(badUnstable);
00888 badUnstable.close();
00889 printTableTail(badPedRMS);
00890 badPedRMS.close();
00891
00892 int ievt_ = -1,runNo=-1;
00893 std::string ref_run;
00894 s=subdir_+"HcalDetDiagPedestalMonitor Event Number";
00895 me = dqmStore_->get(s.c_str());
00896 if ( me ) {
00897 s = me->valueString();
00898 sscanf((s.substr(2,s.length()-2)).c_str(), "%d", &ievt_);
00899 }
00900 s=subdir_+"HcalDetDiagPedestalMonitor Run Number";
00901 me = dqmStore_->get(s.c_str());
00902 if ( me ) {
00903 s = me->valueString();
00904 sscanf((s.substr(2,s.length()-2)).c_str(), "%d", &runNo);
00905 }
00906 s=subdir_+"HcalDetDiagLaserMonitor Reference Run";
00907 me = dqmStore_->get(s.c_str());
00908 if(me) {
00909 std::string s=me->valueString();
00910 char str[200];
00911 sscanf((s.substr(2,s.length()-2)).c_str(), "%s", str);
00912 ref_run=str;
00913 }
00914
00915 gROOT->SetBatch(true);
00916 gStyle->SetCanvasColor(0);
00917 gStyle->SetPadColor(0);
00918 gStyle->SetOptStat(111110);
00919 gStyle->SetPalette(1);
00920
00921 TCanvas *can=new TCanvas("HcalDetDiagPedestalClient","HcalDetDiagPedestalClient",0,0,500,350);
00922 can->cd();
00923
00924 ofstream htmlFile;
00925 std::string outfile=htmlDir+name_+".html";
00926 htmlFile.open(outfile.c_str());
00927
00928 htmlFile << "<!DOCTYPE html PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\"> " << std::endl;
00929 htmlFile << "<html> " << std::endl;
00930 htmlFile << "<head> " << std::endl;
00931 htmlFile << " <meta content=\"text/html; charset=ISO-8859-1\" " << std::endl;
00932 htmlFile << " https-equiv=\"content-type\"> " << std::endl;
00933 htmlFile << " <title>Detector Diagnostics Pedestal Monitor</title> " << std::endl;
00934 htmlFile << "</head> " << std::endl;
00935 htmlFile << "<style type=\"text/css\"> td { font-weight: bold } </style>" << std::endl;
00936 htmlFile << "<style type=\"text/css\">"<< std::endl;
00937 htmlFile << " td.s0 { font-family: arial, arial ce, helvetica; font-weight: bold; background-color: #FF7700; text-align: center;}"<< std::endl;
00938 htmlFile << " td.s1 { font-family: arial, arial ce, helvetica; font-weight: bold; background-color: #FFC169; text-align: center;}"<< std::endl;
00939 htmlFile << " td.s2 { font-family: arial, arial ce, helvetica; background-color: red; }"<< std::endl;
00940 htmlFile << " td.s3 { font-family: arial, arial ce, helvetica; background-color: yellow; }"<< std::endl;
00941 htmlFile << " td.s4 { font-family: arial, arial ce, helvetica; background-color: green; }"<< std::endl;
00942 htmlFile << " td.s5 { font-family: arial, arial ce, helvetica; background-color: silver; }"<< std::endl;
00943 std::string state[4]={"<td class=\"s2\" align=\"center\">",
00944 "<td class=\"s3\" align=\"center\">",
00945 "<td class=\"s4\" align=\"center\">",
00946 "<td class=\"s5\" align=\"center\">"};
00947 htmlFile << "</style>"<< std::endl;
00948 htmlFile << "<body> " << std::endl;
00949 htmlFile << "<br> " << std::endl;
00950 htmlFile << "<h2>Run: " << std::endl;
00951 htmlFile << " <span " << std::endl;
00952 htmlFile << " style=\"color: rgb(0, 0, 153);\">" << runNo << "</span></h2>" << std::endl;
00953 htmlFile << "<h2>Monitoring task: <span " << std::endl;
00954 htmlFile << " style=\"color: rgb(0, 0, 153);\">Detector Diagnostics Pedestal Monitor</span></h2> " << std::endl;
00955 htmlFile << "<h2>Events processed: <span " << std::endl;
00956 htmlFile << " style=\"color: rgb(0, 0, 153);\">" << ievt_ << "</span></h2>" << std::endl;
00957 htmlFile << "<hr>" << std::endl;
00959 htmlFile << "<table width=100% border=1>" << std::endl;
00960 htmlFile << "<tr>" << std::endl;
00961 htmlFile << "<td class=\"s0\" width=20% align=\"center\">SebDet</td>" << std::endl;
00962 htmlFile << "<td class=\"s0\" width=20% align=\"center\">Missing</td>" << std::endl;
00963 htmlFile << "<td class=\"s0\" width=20% align=\"center\">Unstable</td>" << std::endl;
00964 htmlFile << "<td class=\"s0\" width=20% align=\"center\">Bad |Ped-Ref|</td>" << std::endl;
00965 htmlFile << "<td class=\"s0\" width=20% align=\"center\">Bad |Rms-Ref|</td>" << std::endl;
00966 htmlFile << "</tr><tr>" << std::endl;
00967 int ind1=0,ind2=0,ind3=0,ind4=0;
00968 htmlFile << "<td class=\"s1\" align=\"center\">HB+</td>" << std::endl;
00969 ind1=3; if(newHBP[0]==0) ind1=2; if(newHBP[0]>0 && newHBP[0]<=12) ind1=1; if(newHBP[0]>=12 && newHBP[0]<1296) ind1=0;
00970 ind2=3; if(newHBP[1]==0) ind2=2; if(newHBP[1]>0) ind2=1; if(newHBP[1]>21) ind2=0;
00971 ind3=3; if(newHBP[2]==0) ind3=2; if(newHBP[2]>0) ind3=1; if(newHBP[2]>21) ind3=0;
00972 ind4=3; if(newHBP[3]==0) ind4=2; if(newHBP[3]>0) ind4=1; if(newHBP[3]>21) ind4=0;
00973 if(ind1==3) ind2=ind3=ind4=3;
00974 if(ind1==0 || ind2==0 || ind3==0 || ind4==0) status|=2; else if(ind1==1 || ind2==1 || ind3==1 || ind4==1) status|=1;
00975 htmlFile << state[ind1] << HBP[0] <<" (1296)</td>" << std::endl;
00976 htmlFile << state[ind2] << HBP[1] <<"</td>" << std::endl;
00977 htmlFile << state[ind3] << HBP[2] <<"</td>" << std::endl;
00978 htmlFile << state[ind4] << HBP[3] <<"</td>" << std::endl;
00979
00980 htmlFile << "</tr><tr>" << std::endl;
00981 htmlFile << "<td class=\"s1\" align=\"center\">HB-</td>" << std::endl;
00982 ind1=3; if(newHBM[0]==0) ind1=2; if(newHBM[0]>0 && newHBM[0]<=12) ind1=1; if(newHBM[0]>=12 && newHBM[0]<1296) ind1=0;
00983 ind2=3; if(newHBM[1]==0) ind2=2; if(newHBM[1]>0) ind2=1; if(newHBM[1]>21) ind2=0;
00984 ind3=3; if(newHBM[2]==0) ind3=2; if(newHBM[2]>0) ind3=1; if(newHBM[2]>21) ind3=0;
00985 ind4=3; if(newHBM[3]==0) ind4=2; if(newHBM[3]>0) ind4=1; if(newHBM[3]>21) ind4=0;
00986 if(ind1==3) ind2=ind3=ind4=3;
00987 if(ind1==0 || ind2==0 || ind3==0 || ind4==0) status|=2; else if(ind1==1 || ind2==1 || ind3==1 || ind4==1) status|=1;
00988 htmlFile << state[ind1] << HBM[0] <<" (1296)</td>" << std::endl;
00989 htmlFile << state[ind2] << HBM[1] <<"</td>" << std::endl;
00990 htmlFile << state[ind3] << HBM[2] <<"</td>" << std::endl;
00991 htmlFile << state[ind4] << HBM[3] <<"</td>" << std::endl;
00992
00993 htmlFile << "</tr><tr>" << std::endl;
00994 htmlFile << "<td class=\"s1\" align=\"center\">HE+</td>" << std::endl;
00995 ind1=3; if(newHEP[0]==0) ind1=2; if(newHEP[0]>0 && newHEP[0]<=12) ind1=1; if(newHEP[0]>=12 && newHEP[0]<1296) ind1=0;
00996 ind2=3; if(newHEP[1]==0) ind2=2; if(newHEP[1]>0) ind2=1; if(newHEP[1]>21) ind2=0;
00997 ind3=3; if(newHEP[2]==0) ind3=2; if(newHEP[2]>0) ind3=1; if(newHEP[2]>21) ind3=0;
00998 ind4=3; if(newHEP[3]==0) ind4=2; if(newHEP[3]>0) ind4=1; if(newHEP[3]>21) ind4=0;
00999 if(ind1==3) ind2=ind3=ind4=3;
01000 if(ind1==0 || ind2==0 || ind3==0 || ind4==0) status|=2; else if(ind1==1 || ind2==1 || ind3==1 || ind4==1) status|=1;
01001 htmlFile << state[ind1] << HEP[0] <<" (1296)</td>" << std::endl;
01002 htmlFile << state[ind2] << HEP[1] <<"</td>" << std::endl;
01003 htmlFile << state[ind3] << HEP[2] <<"</td>" << std::endl;
01004 htmlFile << state[ind4] << HEP[3] <<"</td>" << std::endl;
01005
01006 htmlFile << "</tr><tr>" << std::endl;
01007 htmlFile << "<td class=\"s1\" align=\"center\">HE-</td>" << std::endl;
01008 ind1=3; if(newHEM[0]==0) ind1=2; if(newHEM[0]>0 && newHEM[0]<=12) ind1=1; if(newHEM[0]>=12 && newHEM[0]<1296) ind1=0;
01009 ind2=3; if(newHEM[1]==0) ind2=2; if(newHEM[1]>0) ind2=1; if(newHEM[1]>21) ind2=0;
01010 ind3=3; if(newHEM[2]==0) ind3=2; if(newHEM[2]>0) ind3=1; if(newHEM[2]>21) ind3=0;
01011 ind4=3; if(newHEM[3]==0) ind4=2; if(newHEM[3]>0) ind4=1; if(newHEM[3]>21) ind4=0;
01012 if(ind1==3) ind2=ind3=ind4=3;
01013 if(ind1==0 || ind2==0 || ind3==0 || ind4==0) status|=2; else if(ind1==1 || ind2==1 || ind3==1 || ind4==1) status|=1;
01014 htmlFile << state[ind1] << HEM[0] <<" (1296)</td>" << std::endl;
01015 htmlFile << state[ind2] << HEM[1] <<"</td>" << std::endl;
01016 htmlFile << state[ind3] << HEM[2] <<"</td>" << std::endl;
01017 htmlFile << state[ind4] << HEM[3] <<"</td>" << std::endl;
01018
01019 htmlFile << "</tr><tr>" << std::endl;
01020 htmlFile << "<td class=\"s1\" align=\"center\">HF+</td>" << std::endl;
01021 ind1=3; if(newHFP[0]==0) ind1=2; if(newHFP[0]>0 && newHFP[0]<=12) ind1=1; if(newHFP[0]>=12 && newHFP[0]<864) ind1=0;
01022 ind2=3; if(newHFP[1]==0) ind2=2; if(newHFP[1]>0) ind2=1; if(newHFP[1]>21) ind2=0;
01023 ind3=3; if(newHFP[2]==0) ind3=2; if(newHFP[2]>0) ind3=1; if(newHFP[2]>21) ind3=0;
01024 ind4=3; if(newHFP[3]==0) ind4=2; if(newHFP[3]>0) ind4=1; if(newHFP[3]>21) ind4=0;
01025 if(ind1==3) ind2=ind3=ind4=3;
01026 if(ind1==0 || ind2==0 || ind3==0 || ind4==0) status|=2; else if(ind1==1 || ind2==1 || ind3==1 || ind4==1) status|=1;
01027 htmlFile << state[ind1] << HFP[0] <<" (864)</td>" << std::endl;
01028 htmlFile << state[ind2] << HFP[1] <<"</td>" << std::endl;
01029 htmlFile << state[ind3] << HFP[2] <<"</td>" << std::endl;
01030 htmlFile << state[ind4] << HFP[3] <<"</td>" << std::endl;
01031
01032 htmlFile << "</tr><tr>" << std::endl;
01033 htmlFile << "<td class=\"s1\" align=\"center\">HF-</td>" << std::endl;
01034 ind1=3; if(newHFM[0]==0) ind1=2; if(newHFM[0]>0 && newHFM[0]<=12) ind1=1; if(newHFM[0]>=12 && newHFM[0]<864) ind1=0;
01035 ind2=3; if(newHFM[1]==0) ind2=2; if(newHFM[1]>0) ind2=1; if(newHFM[1]>21) ind2=0;
01036 ind3=3; if(newHFM[2]==0) ind3=2; if(newHFM[2]>0) ind3=1; if(newHFM[2]>21) ind3=0;
01037 ind4=3; if(newHFM[3]==0) ind4=2; if(newHFM[3]>0) ind4=1; if(newHFM[3]>21) ind4=0;
01038 if(ind1==3) ind2=ind3=ind4=3;
01039 if(ind1==0 || ind2==0 || ind3==0 || ind4==0) status|=2; else if(ind1==1 || ind2==1 || ind3==1 || ind4==1) status|=1;
01040 htmlFile << state[ind1] << HFM[0] <<" (864)</td>" << std::endl;
01041 htmlFile << state[ind2] << HFM[1] <<"</td>" << std::endl;
01042 htmlFile << state[ind3] << HFM[2] <<"</td>" << std::endl;
01043 htmlFile << state[ind4] << HFM[3] <<"</td>" << std::endl;
01044
01045 htmlFile << "</tr><tr>" << std::endl;
01046 htmlFile << "<td class=\"s1\" align=\"center\">HO</td>" << std::endl;
01047 ind1=3; if(newHO[0]==0) ind1=2; if(newHO[0]>0 && newHO[0]<=12) ind1=1; if(newHO[0]>=12 && newHO[0]<2160) ind1=0;
01048 ind2=3; if(newHO[1]==0) ind2=2; if(newHO[1]>0) ind2=1; if(newHO[1]>21) ind2=0;
01049 ind3=3; if(newHO[2]==0) ind3=2; if(newHO[2]>0) ind3=1; if(newHO[2]>21) ind3=0;
01050 ind4=3; if(newHO[3]==0) ind4=2; if(newHO[3]>0) ind4=1; if(newHO[3]>21) ind4=0;
01051 if(ind1==3) ind2=ind3=ind4=3;
01052 if(ind1==0 || ind2==0 || ind3==0 || ind4==0) status|=2; else if(ind1==1 || ind2==1 || ind3==1 || ind4==1) status|=1;
01053 htmlFile << state[ind1] << HO[0] <<" (2160)</td>" << std::endl;
01054 htmlFile << state[ind2] << HO[1] <<"</td>" << std::endl;
01055 htmlFile << state[ind3] << HO[2] <<"</td>" << std::endl;
01056 htmlFile << state[ind4] << HO[3] <<"</td>" << std::endl;
01057
01058 htmlFile << "</tr></table>" << std::endl;
01059 htmlFile << "<hr>" << std::endl;
01061 if((MissingCnt+UnstableCnt+BadCnt)>0){
01062 htmlFile << "<table width=100% border=1><tr>" << std::endl;
01063 if(MissingCnt>0) htmlFile << "<td><a href=\"" << "bad_missing_table.html" <<"\">list of missing channels</a></td>";
01064 if(UnstableCnt>0) htmlFile << "<td><a href=\"" << "bad_unstable_table.html" <<"\">list of unstable channels</a></td>";
01065 if(BadCnt>0) htmlFile << "<td><a href=\"" << "bad_badpedrms_table.html" <<"\">list of bad pedestal/rms channels</a></td>";
01066 htmlFile << "</tr></table>" << std::endl;
01067 }
01068 can->SetGridy();
01069 can->SetGridx();
01070 can->SetLogy(0);
01071
01072
01073
01075 htmlFile << "<h2 align=\"center\">Summary plots</h2>" << std::endl;
01076 htmlFile << "<table width=100% border=0><tr>" << std::endl;
01077 htmlFile << "<tr align=\"left\">" << std::endl;
01078 Pedestals2DHBHEHF->SetStats(0);
01079 Pedestals2DHBHEHF->SetMaximum(5);
01080 Pedestals2DHBHEHF->SetNdivisions(36,"Y");
01081 Pedestals2DHBHEHF->Draw("COLZ");
01082 can->SaveAs((htmlDir + "hbhehf_pedestal_map.gif").c_str());
01083 htmlFile << "<td><img src=\"hbhehf_pedestal_map.gif\" alt=\"hbhehf pedestal mean map\"> </td>" << std::endl;
01084 Pedestals2DHO->SetStats(0);
01085 Pedestals2DHO->SetMaximum(5);
01086 Pedestals2DHO->SetNdivisions(36,"Y");
01087 Pedestals2DHO->Draw("COLZ");
01088 can->SaveAs((htmlDir + "ho_pedestal_map.gif").c_str());
01089 htmlFile << "<td><img src=\"ho_pedestal_map.gif\" alt=\"ho pedestal mean map\"> </td>" << std::endl;
01090 htmlFile << "</tr>" << std::endl;
01091
01092 htmlFile << "<tr align=\"left\">" << std::endl;
01093 Pedestals2DRmsHBHEHF->SetStats(0);
01094 Pedestals2DRmsHBHEHF->SetMaximum(2);
01095 Pedestals2DRmsHBHEHF->SetNdivisions(36,"Y");
01096 Pedestals2DRmsHBHEHF->Draw("COLZ");
01097 can->SaveAs((htmlDir + "hbhehf_rms_map.gif").c_str());
01098 htmlFile << "<td><img src=\"hbhehf_rms_map.gif\" alt=\"hbhehf pedestal rms map\"> </td>" << std::endl;
01099 Pedestals2DRmsHO->SetStats(0);
01100 Pedestals2DRmsHO->SetMaximum(2);
01101 Pedestals2DRmsHO->SetNdivisions(36,"Y");
01102 Pedestals2DRmsHO->Draw("COLZ");
01103 can->SaveAs((htmlDir + "ho_rms_map.gif").c_str());
01104 htmlFile << "<td><img src=\"ho_rms_map.gif\" alt=\"ho pedestal rms map\"> </td>" << std::endl;
01105 htmlFile << "</tr>" << std::endl;
01106
01107 htmlFile << "<tr align=\"left\">" << std::endl;
01108 Pedestals2DErrorHBHEHF->SetStats(0);
01109 Pedestals2DErrorHBHEHF->SetNdivisions(36,"Y");
01110 Pedestals2DErrorHBHEHF->Draw("COLZ");
01111 can->SaveAs((htmlDir + "hbhehf_error_map.gif").c_str());
01112 htmlFile << "<td><img src=\"hbhehf_error_map.gif\" alt=\"hbhehf pedestal error map\"> </td>" << std::endl;
01113 Pedestals2DErrorHO->SetStats(0);
01114 Pedestals2DErrorHO->SetNdivisions(36,"Y");
01115 Pedestals2DErrorHO->Draw("COLZ");
01116 can->SaveAs((htmlDir + "ho_error_map.gif").c_str());
01117 htmlFile << "<td><img src=\"ho_error_map.gif\" alt=\"ho pedestal error map\"> </td>" << std::endl;
01118 htmlFile << "</tr>" << std::endl;
01119 htmlFile << "</table>" << std::endl;
01120 htmlFile << "<hr>" << std::endl;
01121
01123 htmlFile << "<h2 align=\"center\">HB Pedestal plots (Reference run "<<ref_run<<")</h2>" << std::endl;
01124 htmlFile << "<table width=100% border=0><tr>" << std::endl;
01125 htmlFile << "<tr align=\"left\">" << std::endl;
01126 if(PedestalsAve4HB->GetMaximum()>0) can->SetLogy(1); else can->SetLogy(0);
01127 PedestalsAve4HB->Draw();
01128 can->SaveAs((htmlDir + "hb_pedestal_distribution.gif").c_str());
01129 htmlFile << "<td><img src=\"hb_pedestal_distribution.gif\" alt=\"hb pedestal mean\"> </td>" << std::endl;
01130 if(PedestalsRmsHB->GetMaximum()>0) can->SetLogy(1); else can->SetLogy(0);
01131 PedestalsRmsHB->Draw();
01132 can->SaveAs((htmlDir + "hb_pedestal_rms_distribution.gif").c_str());
01133 htmlFile << "<td><img src=\"hb_pedestal_rms_distribution.gif\" alt=\"hb pedestal rms mean\"> </td>" << std::endl;
01134 htmlFile << "</tr>" << std::endl;
01135
01136 htmlFile << "<tr align=\"left\">" << std::endl;
01137 if(PedestalsAve4HBref->GetMaximum()>0) can->SetLogy(1); else can->SetLogy(0);
01138 PedestalsAve4HBref->Draw();
01139 can->SaveAs((htmlDir + "hb_pedestal_ref_distribution.gif").c_str());
01140 htmlFile << "<td><img src=\"hb_pedestal_ref_distribution.gif\" alt=\"hb pedestal-reference mean\"> </td>" << std::endl;
01141 if(PedestalsRmsHBref->GetMaximum()>0) can->SetLogy(1); else can->SetLogy(0);
01142 PedestalsRmsHBref->Draw();
01143 can->SaveAs((htmlDir + "hb_pedestal_rms_ref_distribution.gif").c_str());
01144 htmlFile << "<td><img src=\"hb_pedestal_rms_ref_distribution.gif\" alt=\"hb pedestal rms-reference mean\"> </td>" << std::endl;
01145 htmlFile << "</tr>" << std::endl;
01146 htmlFile << "</table>" << std::endl;
01148 htmlFile << "<h2 align=\"center\">HE Pedestal plots (Reference run "<<ref_run<<")</h2>" << std::endl;
01149 htmlFile << "<table width=100% border=0><tr>" << std::endl;
01150 htmlFile << "<tr align=\"left\">" << std::endl;
01151 if(PedestalsAve4HE->GetMaximum()>0) can->SetLogy(1); else can->SetLogy(0);
01152 PedestalsAve4HE->Draw();
01153 can->SaveAs((htmlDir + "he_pedestal_distribution.gif").c_str());
01154 htmlFile << "<td><img src=\"he_pedestal_distribution.gif\" alt=\"he pedestal mean\"> </td>" << std::endl;
01155 if(PedestalsRmsHE->GetMaximum()>0) can->SetLogy(1); else can->SetLogy(0);
01156 PedestalsRmsHE->Draw();
01157 can->SaveAs((htmlDir + "he_pedestal_rms_distribution.gif").c_str());
01158 htmlFile << "<td><img src=\"he_pedestal_rms_distribution.gif\" alt=\"he pedestal rms mean\"> </td>" << std::endl;
01159 htmlFile << "</tr>" << std::endl;
01160
01161 htmlFile << "<tr align=\"left\">" << std::endl;
01162 if(PedestalsAve4HEref->GetMaximum()>0) can->SetLogy(1); else can->SetLogy(0);
01163 PedestalsAve4HEref->Draw();
01164 can->SaveAs((htmlDir + "he_pedestal_ref_distribution.gif").c_str());
01165 htmlFile << "<td><img src=\"he_pedestal_ref_distribution.gif\" alt=\"he pedestal-reference mean\"> </td>" << std::endl;
01166 if(PedestalsRmsHEref->GetMaximum()>0) can->SetLogy(1); else can->SetLogy(0);
01167 PedestalsRmsHEref->Draw();
01168 can->SaveAs((htmlDir + "he_pedestal_rms_ref_distribution.gif").c_str());
01169 htmlFile << "<td><img src=\"he_pedestal_rms_ref_distribution.gif\" alt=\"he pedestal rms-reference mean\"> </td>" << std::endl;
01170 htmlFile << "</tr>" << std::endl;
01171 htmlFile << "</table>" << std::endl;
01173 htmlFile << "<h2 align=\"center\">HO Pedestal plots (Reference run "<<ref_run<<")</h2>" << std::endl;
01174 htmlFile << "<table width=100% border=0><tr>" << std::endl;
01175 htmlFile << "<tr align=\"left\">" << std::endl;
01176 if(PedestalsAve4HO->GetMaximum()>0) can->SetLogy(1); else can->SetLogy(0);
01177 PedestalsAve4HO->Draw();
01178 can->SaveAs((htmlDir + "ho_pedestal_distribution.gif").c_str());
01179 htmlFile << "<td><img src=\"ho_pedestal_distribution.gif\" alt=\"ho pedestal mean\"> </td>" << std::endl;
01180 if(PedestalsRmsHO->GetMaximum()>0) can->SetLogy(1); else can->SetLogy(0);
01181 PedestalsRmsHO->Draw();
01182 can->SaveAs((htmlDir + "ho_pedestal_rms_distribution.gif").c_str());
01183 htmlFile << "<td><img src=\"ho_pedestal_rms_distribution.gif\" alt=\"ho pedestal rms mean\"> </td>" << std::endl;
01184 htmlFile << "</tr>" << std::endl;
01185
01186 htmlFile << "<tr align=\"left\">" << std::endl;
01187 if(PedestalsAve4Simp->GetMaximum()>0) can->SetLogy(1); else can->SetLogy(0);
01188 PedestalsAve4Simp->Draw();
01189 can->SaveAs((htmlDir + "sipm_pedestal_distribution.gif").c_str());
01190 htmlFile << "<td><img src=\"sipm_pedestal_distribution.gif\" alt=\"sipm pedestal mean\"> </td>" << std::endl;
01191 if(PedestalsRmsSimp->GetMaximum()>0) can->SetLogy(1); else can->SetLogy(0);
01192 PedestalsRmsSimp->Draw();
01193 can->SaveAs((htmlDir + "simp_pedestal_rms_distribution.gif").c_str());
01194 htmlFile << "<td><img src=\"simp_pedestal_rms_distribution.gif\" alt=\"sipm pedestal rms mean\"> </td>" << std::endl;
01195 htmlFile << "</tr>" << std::endl;
01196
01197 htmlFile << "<tr align=\"left\">" << std::endl;
01198 if(PedestalsAve4HOref->GetMaximum()>0) can->SetLogy(1); else can->SetLogy(0);
01199 PedestalsAve4HOref->Draw();
01200 can->SaveAs((htmlDir + "ho_pedestal_ref_distribution.gif").c_str());
01201 htmlFile << "<td><img src=\"ho_pedestal_ref_distribution.gif\" alt=\"ho pedestal-reference mean\"> </td>" << std::endl;
01202 if(PedestalsRmsHOref->GetMaximum()>0) can->SetLogy(1); else can->SetLogy(0);
01203 PedestalsRmsHOref->Draw();
01204 can->SaveAs((htmlDir + "ho_pedestal_rms_ref_distribution.gif").c_str());
01205 htmlFile << "<td><img src=\"ho_pedestal_rms_ref_distribution.gif\" alt=\"ho pedestal rms-reference mean\"> </td>" << std::endl;
01206 htmlFile << "</tr>" << std::endl;
01207 htmlFile << "</table>" << std::endl;
01209
01210 htmlFile << "<h2 align=\"center\">HF Pedestal plots (Reference run "<<ref_run<<")</h2>" << std::endl;
01211 htmlFile << "<table width=100% border=0><tr>" << std::endl;
01212 htmlFile << "<tr align=\"left\">" << std::endl;
01213 if(PedestalsAve4HF->GetMaximum()>0) can->SetLogy(1); else can->SetLogy(0);
01214 PedestalsAve4HF->Draw();
01215 can->SaveAs((htmlDir + "hf_pedestal_distribution.gif").c_str());
01216 htmlFile << "<td><img src=\"hf_pedestal_distribution.gif\" alt=\"hf pedestal mean\"> </td>" << std::endl;
01217 if(PedestalsRmsHF->GetMaximum()>0) can->SetLogy(1); else can->SetLogy(0);
01218 PedestalsRmsHF->Draw();
01219 can->SaveAs((htmlDir + "hf_pedestal_rms_distribution.gif").c_str());
01220 htmlFile << "<td><img src=\"hf_pedestal_rms_distribution.gif\" alt=\"hf pedestal rms mean\"> </td>" << std::endl;
01221 htmlFile << "</tr>" << std::endl;
01222
01223 htmlFile << "<tr align=\"left\">" << std::endl;
01224 if(PedestalsAve4HFref->GetMaximum()>0) can->SetLogy(1); else can->SetLogy(0);
01225 PedestalsAve4HFref->Draw();
01226 can->SaveAs((htmlDir + "hf_pedestal_ref_distribution.gif").c_str());
01227 htmlFile << "<td><img src=\"hf_pedestal_ref_distribution.gif\" alt=\"hf pedestal-reference mean\"> </td>" << std::endl;
01228 if(PedestalsRmsHFref->GetMaximum()>0) can->SetLogy(1); else can->SetLogy(0);
01229 PedestalsRmsHFref->Draw();
01230 can->SaveAs((htmlDir + "hf_pedestal_rms_ref_distribution.gif").c_str());
01231 htmlFile << "<td><img src=\"hf_pedestal_rms_ref_distribution.gif\" alt=\"hf pedestal rms-reference mean\"> </td>" << std::endl;
01232 htmlFile << "</tr>" << std::endl;
01233 htmlFile << "</table>" << std::endl;
01234
01235
01236 htmlFile << "</body> " << std::endl;
01237 htmlFile << "</html> " << std::endl;
01238 htmlFile.close();
01239 can->Close();
01240 }