33 if (prefixME_.substr(prefixME_.size()-1,prefixME_.size())!=
"/")
34 prefixME_.append(
"/");
58 if (
debug_>2)
std::cout <<
"\tHcalDetDiagPedestalClient::analyze()"<<std::endl;
64 if (
debug_>2)
std::cout <<
"\t\tHcalDetDiagPedestalClient::calculateProblems()"<<std::endl;
67 int etabins=0, phibins=0,
zside=0;
68 double problemvalue=0;
93 TH2F* PedestalsMissing[4];
94 TH2F* PedestalsUnstable[4];
95 TH2F* PedestalsBadMean[4];
96 TH2F* PedestalsBadRMS[4];
101 PedestalsMissing[
i]=0;
102 PedestalsUnstable[
i]=0;
103 PedestalsBadMean[
i]=0;
104 PedestalsBadRMS[
i]=0;
107 if (me!=0) PedestalsMissing[
i]=HcalUtilsClient::getHisto<TH2F*>(me,
cloneME_, PedestalsMissing[
i],
debug_);
111 std::cout <<
"<HcalDetDiagPedestalClient::calcluateProblems> could not get histogram '"<<s<<
"'"<<std::endl;
114 s=
subdir_+name[
i]+
" Problem Unstable Channels";
116 if (me!=0) PedestalsUnstable[
i]=HcalUtilsClient::getHisto<TH2F*>(me,
cloneME_, PedestalsUnstable[
i],
debug_);
117 else if (
debug_>0)
std::cout <<
"<HcalDetDiagPedestalClient::calculateProblems> could not get histogram '"<<s<<
"'"<<std::endl;
118 s=
subdir_+name[
i]+
" Problem Bad Pedestal Value";
120 if (me!=0) PedestalsBadMean[
i]=HcalUtilsClient::getHisto<TH2F*>(me,
cloneME_, PedestalsBadMean[
i],
debug_);
121 else if (
debug_>0)
std::cout <<
"<HcalDetDiagPedestalClient::calculateProblems> could not get histogram '"<<s<<
"'"<<std::endl;
122 s=
subdir_+name[
i]+
" Problem Bad Rms Value";
124 if (me!=0) PedestalsBadRMS[
i]=HcalUtilsClient::getHisto<TH2F*>(me,
cloneME_, PedestalsBadRMS[
i],
debug_);
125 else if (
debug_>0)
std::cout <<
"<HcalDetDiagPedestalClient::calculateProblems> could not get histogram '"<<s<<
"'"<<std::endl;
138 if (PedestalsMissing[d]!=0) totalevents = PedestalsMissing[d]->GetBinContent(0);
139 else if (PedestalsUnstable[d]!=0) totalevents = PedestalsUnstable[d]->GetBinContent(0);
140 else if (PedestalsBadMean[d]!=0) totalevents = PedestalsBadMean[d]->GetBinContent(0);
141 else if (PedestalsBadRMS[d]!=0) totalevents = PedestalsBadRMS[d]->GetBinContent(0);
150 if (ieta==-9999)
continue;
154 if (PedestalsMissing[d]!=0) problemvalue += PedestalsMissing[d]->GetBinContent(
eta+1,
phi+1)*1./totalevents;
155 if (PedestalsUnstable[d]!=0) problemvalue += PedestalsUnstable[d]->GetBinContent(
eta+1,
phi+1)*1./totalevents;
156 if (PedestalsBadMean[d]!=0) problemvalue += PedestalsBadMean[d]->GetBinContent(
eta+1,
phi+1)*1./totalevents;
157 if (PedestalsBadRMS[d]!=0) problemvalue += PedestalsBadRMS[d]->GetBinContent(
eta+1,
phi+1)*1./totalevents;
159 if (problemvalue==0)
continue;
161 problemvalue =
std::min(1.,problemvalue);
165 ieta<0 ?
zside = -1 : zside = 1;
189 if (
debug_>0)
std::cout <<
"<HcalDetDiagPedestalClient::analyze> ProblemCells histogram does not exist!"<<std::endl;
215 std::cout <<
"<HcalDetDiagPedestalClient::beginJob()> Displaying dqmStore directory structure:"<<std::endl;
226 if (
debug_>0)
std::cout <<
"<HcalDetDiagPedestalClient::beginRun> dqmStore does not exist!"<<std::endl;
234 " Problem DetDiagPedestal Rate for all HCAL;ieta;iphi",
260 if (
debug_>1)
std::cout <<
"<HcalDetDiagPedestalClient::hasErrors_Temp> ProblemCells histogram does not exist!"<<std::endl;
266 for (
int depth=0;depth<4; ++depth)
270 for (
int hist_eta=0;hist_eta<etabins;++hist_eta)
272 for (
int hist_phi=0; hist_phi<phibins;++hist_phi)
275 if (ieta==-9999)
continue;
285 if (problemcount>0)
return true;
306 file <<
"</html><html xmlns=\"http://www.w3.org/1999/xhtml\">"<< std::endl;
307 file <<
"<head>"<< std::endl;
308 file <<
"<meta http-equiv=\"Content-Type\" content=\"text/html\"/>"<< std::endl;
309 file <<
"<title>"<< header <<
"</title>"<< std::endl;
310 file <<
"<style type=\"text/css\">"<< std::endl;
311 file <<
" body,td{ background-color: #FFFFCC; font-family: arial, arial ce, helvetica; font-size: 12px; }"<< std::endl;
312 file <<
" td.s0 { font-family: arial, arial ce, helvetica; }"<< std::endl;
313 file <<
" td.s1 { font-family: arial, arial ce, helvetica; font-weight: bold; background-color: #FFC169; text-align: center;}"<< std::endl;
314 file <<
" td.s2 { font-family: arial, arial ce, helvetica; background-color: #eeeeee; }"<< std::endl;
315 file <<
" td.s3 { font-family: arial, arial ce, helvetica; background-color: #d0d0d0; }"<< std::endl;
316 file <<
" td.s4 { font-family: arial, arial ce, helvetica; background-color: #FFC169; }"<< std::endl;
317 file <<
"</style>"<< std::endl;
318 file <<
"<body>"<< std::endl;
319 file <<
"<table>"<< std::endl;
325 file <<
"<td class=\"s4\" align=\"center\">#</td>" << std::endl;
326 file <<
"<td class=\"s1\" align=\"center\">ETA</td>" << std::endl;
327 file <<
"<td class=\"s1\" align=\"center\">PHI</td>" << std::endl;
328 file <<
"<td class=\"s1\" align=\"center\">DEPTH</td>"<< std::endl;
329 file <<
"<td class=\"s1\" align=\"center\">RBX</td>" << std::endl;
330 file <<
"<td class=\"s1\" align=\"center\">RM</td>" << std::endl;
331 file <<
"<td class=\"s1\" align=\"center\">PIXEL</td>" << std::endl;
332 file <<
"<td class=\"s1\" align=\"center\">RM_FIBER</td>" << std::endl;
333 file <<
"<td class=\"s1\" align=\"center\">FIBER_CH</td>" << std::endl;
334 file <<
"<td class=\"s1\" align=\"center\">QIE</td>" << std::endl;
335 file <<
"<td class=\"s1\" align=\"center\">ADC</td>" << std::endl;
336 file <<
"<td class=\"s1\" align=\"center\">CRATE</td>" << std::endl;
337 file <<
"<td class=\"s1\" align=\"center\">DCC</td>" << std::endl;
338 file <<
"<td class=\"s1\" align=\"center\">SPIGOT</td>" << std::endl;
339 file <<
"<td class=\"s1\" align=\"center\">HTR_FIBER</td>" << std::endl;
340 file <<
"<td class=\"s1\" align=\"center\">HTR_SLOT</td>" << std::endl;
341 file <<
"<td class=\"s1\" align=\"center\">HTR_FPGA</td>" << std::endl;
342 if(
comment[0]!=0) file <<
"<td class=\"s1\" align=\"center\">Comment</td>" << std::endl;
343 file <<
"</tr>" << std::endl;
346 file <<
"<tr>"<< std::endl;
348 raw_class=
"<td class=\"s2\" align=\"center\">";
350 raw_class=
"<td class=\"s3\" align=\"center\">";
352 file <<
"<td class=\"s4\" align=\"center\">" << ind+1 <<
"</td>"<< std::endl;
353 file << raw_class<< detid.
ieta()<<
"</td>"<< std::endl;
354 file << raw_class<< detid.
iphi()<<
"</td>"<< std::endl;
355 file << raw_class<< detid.
depth() <<
"</td>"<< std::endl;
356 file << raw_class<< lmap_entry.
rbx()<<
"</td>"<< std::endl;
357 file << raw_class<< lmap_entry.
rm() <<
"</td>"<< std::endl;
358 file << raw_class<< lmap_entry.
pixel()<<
"</td>"<< std::endl;
359 file << raw_class<< lmap_entry.
rmFiber() <<
"</td>"<< std::endl;
360 file << raw_class<< lmap_entry.
fiberChannel()<<
"</td>"<< std::endl;
361 file << raw_class<< lmap_entry.
qieCard() <<
"</td>"<< std::endl;
362 file << raw_class<< lmap_entry.
adc()<<
"</td>"<< std::endl;
364 file << raw_class<< emap_entry.
dccid()<<
"</td>"<< std::endl;
365 file << raw_class<< emap_entry.
spigot()<<
"</td>"<< std::endl;
366 file << raw_class<< emap_entry.
fiberIndex()<<
"</td>"<< std::endl;
367 file << raw_class<< emap_entry.
htrSlot()<<
"</td>"<< std::endl;
368 file << raw_class<< emap_entry.
htrTopBottom()<<
"</td>"<< std::endl;
369 if(
comment[0]!=0) file << raw_class<<
comment<<
"</td>"<< std::endl;
372 file <<
"</table>"<< std::endl;
373 file <<
"</body>"<< std::endl;
374 file <<
"</html>"<< std::endl;
383 sscanf((s.substr(2,s.length()-2)).c_str(),
"%d", &
n);
385 if(n<100)
return false;
390 int MissingCnt=0,UnstableCnt=0,BadCnt=0;
391 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};
392 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};
393 int newHFP[4]={0,0,0,0},newHFM[4]={0,0,0,0},newHO[4] ={0,0,0,0};
394 if (
debug_>0)
std::cout <<
"<HcalDetDiagPedestalClient::htmlOutput> Preparing html output ..." << std::endl;
398 TH2F *Missing_val[4],*Unstable_val[4],*BadPed_val[4],*BadRMS_val[4];
402 TH1F *PedestalsAve4HB=0;
403 TH1F *PedestalsAve4HE=0;
404 TH1F *PedestalsAve4HO=0;
405 TH1F *PedestalsAve4HF=0;
406 TH1F *PedestalsAve4Simp=0;
408 TH1F *PedestalsAve4HBref=0;
409 TH1F *PedestalsAve4HEref=0;
410 TH1F *PedestalsAve4HOref=0;
411 TH1F *PedestalsAve4HFref=0;
412 TH1F *PedestalsRmsHB=0;
413 TH1F *PedestalsRmsHE=0;
414 TH1F *PedestalsRmsHO=0;
415 TH1F *PedestalsRmsHF=0;
416 TH1F *PedestalsRmsSimp=0;
418 TH1F *PedestalsRmsHBref=0;
419 TH1F *PedestalsRmsHEref=0;
420 TH1F *PedestalsRmsHOref=0;
421 TH1F *PedestalsRmsHFref=0;
423 TH2F *Pedestals2DRmsHBHEHF=0;
424 TH2F *Pedestals2DRmsHO=0;
425 TH2F *Pedestals2DHBHEHF=0;
426 TH2F *Pedestals2DHO=0;
427 TH2F *Pedestals2DErrorHBHEHF=0;
428 TH2F *Pedestals2DErrorHO=0;
431 if(me!=0) PedestalsAve4HB=HcalUtilsClient::getHisto<TH1F*>(me,
cloneME_, PedestalsAve4HB,
debug_);
else return;
432 s=
subdir_+
"Summary Plots/HE Pedestal Distribution (average over 4 caps)"; me=
dqmStore_->
get(s.c_str());
433 if(me!=0) PedestalsAve4HE=HcalUtilsClient::getHisto<TH1F*>(me,
cloneME_, PedestalsAve4HE,
debug_);
else return;
434 s=
subdir_+
"Summary Plots/HO Pedestal Distribution (average over 4 caps)"; me=
dqmStore_->
get(s.c_str());
435 if(me!=0) PedestalsAve4HO=HcalUtilsClient::getHisto<TH1F*>(me,
cloneME_, PedestalsAve4HO,
debug_);
else return;
436 s=
subdir_+
"Summary Plots/HF Pedestal Distribution (average over 4 caps)"; me=
dqmStore_->
get(s.c_str());
437 if(me!=0) PedestalsAve4HF=HcalUtilsClient::getHisto<TH1F*>(me,
cloneME_, PedestalsAve4HF,
debug_);
else return;
438 s=
subdir_+
"Summary Plots/SIPM Pedestal Distribution (average over 4 caps)"; me=
dqmStore_->
get(s.c_str());
439 if(me!=0) PedestalsAve4Simp=HcalUtilsClient::getHisto<TH1F*>(me,
cloneME_, PedestalsAve4Simp,
debug_);
else return;
441 s=
subdir_+
"Summary Plots/HB Pedestal-Reference Distribution (average over 4 caps)"; me=
dqmStore_->
get(s.c_str());
442 if(me!=0) PedestalsAve4HBref=HcalUtilsClient::getHisto<TH1F*>(me,
cloneME_, PedestalsAve4HBref,
debug_);
else return;
443 s=
subdir_+
"Summary Plots/HE Pedestal-Reference Distribution (average over 4 caps)"; me=
dqmStore_->
get(s.c_str());
444 if(me!=0) PedestalsAve4HEref=HcalUtilsClient::getHisto<TH1F*>(me,
cloneME_, PedestalsAve4HEref,
debug_);
else return;
445 s=
subdir_+
"Summary Plots/HO Pedestal-Reference Distribution (average over 4 caps)"; me=
dqmStore_->
get(s.c_str());
446 if(me!=0) PedestalsAve4HOref=HcalUtilsClient::getHisto<TH1F*>(me,
cloneME_, PedestalsAve4HOref,
debug_);
else return;
447 s=
subdir_+
"Summary Plots/HF Pedestal-Reference Distribution (average over 4 caps)"; me=
dqmStore_->
get(s.c_str());
448 if(me!=0) PedestalsAve4HFref=HcalUtilsClient::getHisto<TH1F*>(me,
cloneME_, PedestalsAve4HFref,
debug_);
else return;
450 s=
subdir_+
"Summary Plots/HB Pedestal RMS Distribution (individual cap)"; me=
dqmStore_->
get(s.c_str());
451 if(me!=0) PedestalsRmsHB=HcalUtilsClient::getHisto<TH1F*>(me,
cloneME_, PedestalsRmsHB,
debug_);
else return;
452 s=
subdir_+
"Summary Plots/HE Pedestal RMS Distribution (individual cap)"; me=
dqmStore_->
get(s.c_str());
453 if(me!=0) PedestalsRmsHE=HcalUtilsClient::getHisto<TH1F*>(me,
cloneME_, PedestalsRmsHE,
debug_);
else return;
454 s=
subdir_+
"Summary Plots/HO Pedestal RMS Distribution (individual cap)"; me=
dqmStore_->
get(s.c_str());
455 if(me!=0) PedestalsRmsHO=HcalUtilsClient::getHisto<TH1F*>(me,
cloneME_, PedestalsRmsHO,
debug_);
else return;
456 s=
subdir_+
"Summary Plots/HF Pedestal RMS Distribution (individual cap)"; me=
dqmStore_->
get(s.c_str());
457 if(me!=0) PedestalsRmsHF=HcalUtilsClient::getHisto<TH1F*>(me,
cloneME_, PedestalsRmsHF,
debug_);
else return;
458 s=
subdir_+
"Summary Plots/SIPM Pedestal RMS Distribution (individual cap)"; me=
dqmStore_->
get(s.c_str());
459 if(me!=0) PedestalsRmsSimp=HcalUtilsClient::getHisto<TH1F*>(me,
cloneME_, PedestalsRmsSimp,
debug_);
else return;
461 s=
subdir_+
"Summary Plots/HB Pedestal_rms-Reference_rms Distribution"; me=
dqmStore_->
get(s.c_str());
462 if(me!=0) PedestalsRmsHBref=HcalUtilsClient::getHisto<TH1F*>(me,
cloneME_, PedestalsRmsHBref,
debug_);
else return;
463 s=
subdir_+
"Summary Plots/HE Pedestal_rms-Reference_rms Distribution"; me=
dqmStore_->
get(s.c_str());
464 if(me!=0) PedestalsRmsHEref=HcalUtilsClient::getHisto<TH1F*>(me,
cloneME_, PedestalsRmsHEref,
debug_);
else return;
465 s=
subdir_+
"Summary Plots/HO Pedestal_rms-Reference_rms Distribution"; me=
dqmStore_->
get(s.c_str());
466 if(me!=0) PedestalsRmsHOref=HcalUtilsClient::getHisto<TH1F*>(me,
cloneME_, PedestalsRmsHOref,
debug_);
else return;
467 s=
subdir_+
"Summary Plots/HF Pedestal_rms-Reference_rms Distribution"; me=
dqmStore_->
get(s.c_str());
468 if(me!=0) PedestalsRmsHFref=HcalUtilsClient::getHisto<TH1F*>(me,
cloneME_, PedestalsRmsHFref,
debug_);
else return;
471 if(me!=0) Pedestals2DHBHEHF=HcalUtilsClient::getHisto<TH2F*>(me,
cloneME_, Pedestals2DHBHEHF,
debug_);
else return;
473 if(me!=0) Pedestals2DHO=HcalUtilsClient::getHisto<TH2F*>(me,
cloneME_, Pedestals2DHO,
debug_);
else return;
475 if(me!=0) Pedestals2DRmsHBHEHF=HcalUtilsClient::getHisto<TH2F*>(me,
cloneME_, Pedestals2DRmsHBHEHF,
debug_);
else return;
477 if(me!=0) Pedestals2DRmsHO=HcalUtilsClient::getHisto<TH2F*>(me,
cloneME_, Pedestals2DRmsHO,
debug_);
else return;
479 if(me!=0) Pedestals2DErrorHBHEHF=HcalUtilsClient::getHisto<TH2F*>(me,
cloneME_, Pedestals2DErrorHBHEHF,
debug_);
else return;
481 if(me!=0) Pedestals2DErrorHO=HcalUtilsClient::getHisto<TH2F*>(me,
cloneME_, Pedestals2DErrorHO,
debug_);
else return;
485 for(
int i=0;
i<4;++
i){
486 Missing_val[
i]=Unstable_val[
i]=BadPed_val[
i]=BadRMS_val[
i]=0;
489 if (me!=0) Missing_val[
i]=HcalUtilsClient::getHisto<TH2F*>(me,
cloneME_, Missing_val[
i],
debug_);
else return;
490 s=
subdir_+
"Plots for client/"+name[
i]+
" Channel instability value";
492 if (me!=0) Unstable_val[
i]=HcalUtilsClient::getHisto<TH2F*>(me,
cloneME_, Unstable_val[
i],
debug_);
else return;
493 s=
subdir_+
"Plots for client/"+name[
i]+
" Bad Pedestal-Ref Value";
495 if (me!=0) BadPed_val[
i]=HcalUtilsClient::getHisto<TH2F*>(me,
cloneME_, BadPed_val[
i],
debug_);
else return;
496 s=
subdir_+
"Plots for client/"+name[
i]+
" Bad Rms-ref Value";
498 if (me!=0) BadRMS_val[
i]=HcalUtilsClient::getHisto<TH2F*>(me,
cloneME_, BadRMS_val[
i],
debug_);
else return;
501 for(
int d=0;d<4;++d){
502 int etabins=Missing_val[d]->GetNbinsX();
503 int phibins=Missing_val[d]->GetNbinsY();
506 if(ieta==-9999)
continue;
513 float val=Missing_val[d]->GetBinContent(
eta+1,
phi+1);
516 if(ieta>0){ HBP[0]++;}
else{ HBM[0]++;} MissingCnt++;
520 if(ieta>0){ HEP[0]++;}
else{ HEM[0]++;} MissingCnt++;
524 if(ieta>0){ HFP[0]++;}
else{ HFM[0]++;} MissingCnt++;
528 HO[0]++;MissingCnt++;
532 val=Unstable_val[d]->GetBinContent(
eta+1,
phi+1);
535 if(ieta>0){ HBP[1]++;}
else{ HBM[1]++;} UnstableCnt++;
539 if(ieta>0){ HEP[1]++;}
else{ HEM[1]++;} UnstableCnt++;
543 if(ieta>0){ HFP[1]++;}
else{ HFM[1]++;} UnstableCnt++;
547 HO[1]++;UnstableCnt++;
551 val=BadPed_val[d]->GetBinContent(
eta+1,
phi+1);
554 if(ieta>0){ HBP[2]++;}
else{ HBM[2]++;} BadCnt++;
558 if(ieta>0){ HEP[2]++;}
else{ HEM[2]++;} BadCnt++;
562 if(ieta>0){ HFP[2]++;}
else{ HFM[2]++;} BadCnt++;
570 val=BadRMS_val[d]->GetBinContent(
eta+1,
phi+1);
573 if(ieta>0){ HBP[3]++;}
else{ HBM[3]++;} BadCnt++;
577 if(ieta>0){ HEP[3]++;}
else{ HEM[3]++;} BadCnt++;
581 if(ieta>0){ HFP[3]++;}
else{ HFM[3]++;} BadCnt++;
593 std::ofstream badMissing;
594 badMissing.open((htmlDir+
"bad_missing_table.html").c_str());
596 std::ofstream badUnstable;
597 badUnstable.open((htmlDir+
"bad_unstable_table.html").c_str());
599 std::ofstream badPedRMS;
600 badPedRMS.open((htmlDir+
"bad_badpedrms_table.html").c_str());
604 if((HBP[0]+HBP[0])>0 && (HBM[0]+HBP[0])!=(1296*2)){
605 badMissing <<
"<tr><td align=\"center\"><h3>"<<
"HB" <<
"</h3></td></tr>" << std::endl;
606 for(
int d=0;d<4;++d){
607 int etabins=Missing_val[d]->GetNbinsX();
608 int phibins=Missing_val[d]->GetNbinsY();
611 if(ieta==-9999)
continue;
613 float val=Missing_val[d]->GetBinContent(
eta+1,
phi+1);
625 if((HEP[0]+HEP[0])>0 && (HEM[0]+HEP[0])!=(1296*2)){
626 badMissing <<
"<tr><td align=\"center\"><h3>"<<
"HE" <<
"</h3></td></tr>" << std::endl;
627 for(
int d=0;d<4;++d){
628 int etabins=Missing_val[d]->GetNbinsX();
629 int phibins=Missing_val[d]->GetNbinsY();
632 if(ieta==-9999)
continue;
634 float val=Missing_val[d]->GetBinContent(
eta+1,
phi+1);
646 if(HO[0]>0 && HO[0]!=2160){
647 badMissing <<
"<tr><td align=\"center\"><h3>"<<
"HO" <<
"</h3></td></tr>" << std::endl;
648 for(
int d=0;d<4;++d){
649 int etabins=Missing_val[d]->GetNbinsX();
650 int phibins=Missing_val[d]->GetNbinsY();
653 if(ieta==-9999)
continue;
655 float val=Missing_val[d]->GetBinContent(
eta+1,
phi+1);
667 if((HFP[0]+HFP[0])>0 && (HFM[0]+HFP[0])!=(864*2)){
668 badMissing <<
"<tr><td align=\"center\"><h3>"<<
"HF" <<
"</h3></td></tr>" << std::endl;
669 for(
int d=0;d<4;++d){
670 int etabins=Missing_val[d]->GetNbinsX();
671 int phibins=Missing_val[d]->GetNbinsY();
674 if(ieta==-9999)
continue;
676 float val=Missing_val[d]->GetBinContent(
eta+1,
phi+1);
689 if((HBP[1]+HBP[1])>0){
690 badUnstable <<
"<tr><td align=\"center\"><h3>"<<
"HB" <<
"</h3></td></tr>" << std::endl;
691 for(
int d=0;d<4;++d){
692 int etabins=Unstable_val[d]->GetNbinsX();
693 int phibins=Unstable_val[d]->GetNbinsY();
696 if(ieta==-9999)
continue;
698 float val=Unstable_val[d]->GetBinContent(
eta+1,
phi+1);
701 char comment[100]; sprintf(comment,
"Missing in %.3f%% of events\n",(1.0-val)*100.0);
711 if((HEP[1]+HEP[1])>0){
712 badUnstable <<
"<tr><td align=\"center\"><h3>"<<
"HE" <<
"</h3></td></tr>" << std::endl;
713 for(
int d=0;d<4;++d){
714 int etabins=Unstable_val[d]->GetNbinsX();
715 int phibins=Unstable_val[d]->GetNbinsY();
718 if(ieta==-9999)
continue;
720 float val=Unstable_val[d]->GetBinContent(
eta+1,
phi+1);
723 char comment[100]; sprintf(comment,
"Missing in %.3f%% of events\n",(1.0-val)*100.0);
734 badUnstable <<
"<tr><td align=\"center\"><h3>"<<
"HO" <<
"</h3></td></tr>" << std::endl;
735 for(
int d=0;d<4;++d){
736 int etabins=Unstable_val[d]->GetNbinsX();
737 int phibins=Unstable_val[d]->GetNbinsY();
740 if(ieta==-9999)
continue;
742 float val=Unstable_val[d]->GetBinContent(
eta+1,
phi+1);
745 char comment[100]; sprintf(comment,
"Missing in %.3f%% of events\n",(1.0-val)*100.0);
755 if((HFP[1]+HFP[1])>0){
756 badUnstable <<
"<tr><td align=\"center\"><h3>"<<
"HF" <<
"</h3></td></tr>" << std::endl;
757 for(
int d=0;d<4;++d){
758 int etabins=Unstable_val[d]->GetNbinsX();
759 int phibins=Unstable_val[d]->GetNbinsY();
762 if(ieta==-9999)
continue;
764 float val=Unstable_val[d]->GetBinContent(
eta+1,
phi+1);
767 char comment[100]; sprintf(comment,
"Missing in %.3f%% of events\n",(1.0-val)*100.0);
778 if((HBP[2]+HBP[2]+HBP[3]+HBP[3])>0){
779 badPedRMS <<
"<tr><td align=\"center\"><h3>"<<
"HB" <<
"</h3></td></tr>" << std::endl;
780 for(
int d=0;d<4;++d){
781 int etabins=BadPed_val[d]->GetNbinsX();
782 int phibins=BadPed_val[d]->GetNbinsY();
785 if(ieta==-9999)
continue;
787 float val1=BadPed_val[d]->GetBinContent(
eta+1,
phi+1);
788 float val2=BadRMS_val[d]->GetBinContent(
eta+1,
phi+1);
789 if(val1==0 && val2==0)
continue;
792 if(val1!=0) sprintf(comment,
"Ped-Ref=%.2f",val1);
793 if(val2!=0) sprintf(comment,
"Rms-Ref=%.2f",val2);
794 if(val1!=0 && val2!=0) sprintf(comment,
"Ped-Ref=%.2f,Rms-Ref=%.2f",val1,val2);
804 if((HEP[2]+HEP[2]+HEP[3]+HEP[3])>0){
805 badPedRMS <<
"<tr><td align=\"center\"><h3>"<<
"HE" <<
"</h3></td></tr>" << std::endl;
806 for(
int d=0;d<4;++d){
807 int etabins=BadPed_val[d]->GetNbinsX();
808 int phibins=BadPed_val[d]->GetNbinsY();
811 if(ieta==-9999)
continue;
813 float val1=BadPed_val[d]->GetBinContent(
eta+1,
phi+1);
814 float val2=BadRMS_val[d]->GetBinContent(
eta+1,
phi+1);
815 if(val1==0 && val2==0)
continue;
818 if(val1!=0) sprintf(comment,
"Ped-Ref=%.2f",val1);
819 if(val2!=0) sprintf(comment,
"Rms-Ref=%.2f",val2);
820 if(val1!=0 && val2!=0) sprintf(comment,
"Ped-Ref=%.2f,Rms-Ref=%.2f",val1,val2);
831 badPedRMS <<
"<tr><td align=\"center\"><h3>"<<
"HO" <<
"</h3></td></tr>" << std::endl;
832 for(
int d=0;d<4;++d){
833 int etabins=BadPed_val[d]->GetNbinsX();
834 int phibins=BadPed_val[d]->GetNbinsY();
837 if(ieta==-9999)
continue;
839 float val1=BadPed_val[d]->GetBinContent(
eta+1,
phi+1);
840 float val2=BadRMS_val[d]->GetBinContent(
eta+1,
phi+1);
841 if(val1==0 && val2==0)
continue;
844 if(val1!=0) sprintf(comment,
"Ped-Ref=%.2f",val1);
845 if(val2!=0) sprintf(comment,
"Rms-Ref=%.2f",val2);
846 if(val1!=0 && val2!=0) sprintf(comment,
"Ped-Ref=%.2f,Rms-Ref=%.2f",val1,val2);
856 if((HFP[2]+HFP[2]+HFP[3]+HFP[3])>0){
857 badPedRMS <<
"<tr><td align=\"center\"><h3>"<<
"HF" <<
"</h3></td></tr>" << std::endl;
858 for(
int d=0;d<4;++d){
859 int etabins=BadPed_val[d]->GetNbinsX();
860 int phibins=BadPed_val[d]->GetNbinsY();
863 if(ieta==-9999)
continue;
865 float val1=BadPed_val[d]->GetBinContent(
eta+1,
phi+1);
866 float val2=BadRMS_val[d]->GetBinContent(
eta+1,
phi+1);
867 if(val1==0 && val2==0)
continue;
870 if(val1!=0) sprintf(comment,
"Ped-Ref=%.2f",val1);
871 if(val2!=0) sprintf(comment,
"Rms-Ref=%.2f",val2);
872 if(val1!=0 && val2!=0) sprintf(comment,
"Ped-Ref=%.2f,Rms-Ref=%.2f",val1,val2);
889 int ievt_ = -1,runNo=-1;
891 s=
subdir_+
"HcalDetDiagPedestalMonitor Event Number";
895 sscanf((s.substr(2,s.length()-2)).c_str(),
"%d", &ievt_);
897 s=
subdir_+
"HcalDetDiagPedestalMonitor Run Number";
901 sscanf((s.substr(2,s.length()-2)).c_str(),
"%d", &runNo);
903 s=
subdir_+
"HcalDetDiagLaserMonitor Reference Run";
908 sscanf((s.substr(2,s.length()-2)).c_str(),
"%s", str);
912 gROOT->SetBatch(
true);
913 gStyle->SetCanvasColor(0);
914 gStyle->SetPadColor(0);
915 gStyle->SetOptStat(111110);
916 gStyle->SetPalette(1);
918 TCanvas *
can=
new TCanvas(
"HcalDetDiagPedestalClient",
"HcalDetDiagPedestalClient",0,0,500,350);
921 std::ofstream htmlFile;
923 htmlFile.open(outfile.c_str());
925 htmlFile <<
"<!DOCTYPE html PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\"> " << std::endl;
926 htmlFile <<
"<html> " << std::endl;
927 htmlFile <<
"<head> " << std::endl;
928 htmlFile <<
" <meta content=\"text/html; charset=ISO-8859-1\" " << std::endl;
929 htmlFile <<
" http-equiv=\"content-type\"> " << std::endl;
930 htmlFile <<
" <title>Detector Diagnostics Pedestal Monitor</title> " << std::endl;
931 htmlFile <<
"</head> " << std::endl;
932 htmlFile <<
"<style type=\"text/css\"> td { font-weight: bold } </style>" << std::endl;
933 htmlFile <<
"<style type=\"text/css\">"<< std::endl;
934 htmlFile <<
" td.s0 { font-family: arial, arial ce, helvetica; font-weight: bold; background-color: #FF7700; text-align: center;}"<< std::endl;
935 htmlFile <<
" td.s1 { font-family: arial, arial ce, helvetica; font-weight: bold; background-color: #FFC169; text-align: center;}"<< std::endl;
936 htmlFile <<
" td.s2 { font-family: arial, arial ce, helvetica; background-color: red; }"<< std::endl;
937 htmlFile <<
" td.s3 { font-family: arial, arial ce, helvetica; background-color: yellow; }"<< std::endl;
938 htmlFile <<
" td.s4 { font-family: arial, arial ce, helvetica; background-color: green; }"<< std::endl;
939 htmlFile <<
" td.s5 { font-family: arial, arial ce, helvetica; background-color: silver; }"<< std::endl;
940 std::string state[4]={
"<td class=\"s2\" align=\"center\">",
941 "<td class=\"s3\" align=\"center\">",
942 "<td class=\"s4\" align=\"center\">",
943 "<td class=\"s5\" align=\"center\">"};
944 htmlFile <<
"</style>"<< std::endl;
945 htmlFile <<
"<body> " << std::endl;
946 htmlFile <<
"<br> " << std::endl;
947 htmlFile <<
"<h2>Run: " << std::endl;
948 htmlFile <<
" <span " << std::endl;
949 htmlFile <<
" style=\"color: rgb(0, 0, 153);\">" << runNo <<
"</span></h2>" << std::endl;
950 htmlFile <<
"<h2>Monitoring task: <span " << std::endl;
951 htmlFile <<
" style=\"color: rgb(0, 0, 153);\">Detector Diagnostics Pedestal Monitor</span></h2> " << std::endl;
952 htmlFile <<
"<h2>Events processed: <span " << std::endl;
953 htmlFile <<
" style=\"color: rgb(0, 0, 153);\">" << ievt_ <<
"</span></h2>" << std::endl;
954 htmlFile <<
"<hr>" << std::endl;
956 htmlFile <<
"<table width=100% border=1>" << std::endl;
957 htmlFile <<
"<tr>" << std::endl;
958 htmlFile <<
"<td class=\"s0\" width=20% align=\"center\">SebDet</td>" << std::endl;
959 htmlFile <<
"<td class=\"s0\" width=20% align=\"center\">Missing</td>" << std::endl;
960 htmlFile <<
"<td class=\"s0\" width=20% align=\"center\">Unstable</td>" << std::endl;
961 htmlFile <<
"<td class=\"s0\" width=20% align=\"center\">Bad |Ped-Ref|</td>" << std::endl;
962 htmlFile <<
"<td class=\"s0\" width=20% align=\"center\">Bad |Rms-Ref|</td>" << std::endl;
963 htmlFile <<
"</tr><tr>" << std::endl;
964 int ind1=0,ind2=0,ind3=0,ind4=0;
965 htmlFile <<
"<td class=\"s1\" align=\"center\">HB+</td>" << std::endl;
966 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;
967 ind2=3;
if(newHBP[1]==0) ind2=2;
if(newHBP[1]>0) ind2=1;
if(newHBP[1]>21) ind2=0;
968 ind3=3;
if(newHBP[2]==0) ind3=2;
if(newHBP[2]>0) ind3=1;
if(newHBP[2]>21) ind3=0;
969 ind4=3;
if(newHBP[3]==0) ind4=2;
if(newHBP[3]>0) ind4=1;
if(newHBP[3]>21) ind4=0;
970 if(ind1==3) ind2=ind3=ind4=3;
971 if(ind1==0 || ind2==0 || ind3==0 || ind4==0)
status|=2;
else if(ind1==1 || ind2==1 || ind3==1 || ind4==1)
status|=1;
972 htmlFile << state[ind1] << HBP[0] <<
" (1296)</td>" << std::endl;
973 htmlFile << state[ind2] << HBP[1] <<
"</td>" << std::endl;
974 htmlFile << state[ind3] << HBP[2] <<
"</td>" << std::endl;
975 htmlFile << state[ind4] << HBP[3] <<
"</td>" << std::endl;
977 htmlFile <<
"</tr><tr>" << std::endl;
978 htmlFile <<
"<td class=\"s1\" align=\"center\">HB-</td>" << std::endl;
979 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;
980 ind2=3;
if(newHBM[1]==0) ind2=2;
if(newHBM[1]>0) ind2=1;
if(newHBM[1]>21) ind2=0;
981 ind3=3;
if(newHBM[2]==0) ind3=2;
if(newHBM[2]>0) ind3=1;
if(newHBM[2]>21) ind3=0;
982 ind4=3;
if(newHBM[3]==0) ind4=2;
if(newHBM[3]>0) ind4=1;
if(newHBM[3]>21) ind4=0;
983 if(ind1==3) ind2=ind3=ind4=3;
984 if(ind1==0 || ind2==0 || ind3==0 || ind4==0)
status|=2;
else if(ind1==1 || ind2==1 || ind3==1 || ind4==1)
status|=1;
985 htmlFile << state[ind1] << HBM[0] <<
" (1296)</td>" << std::endl;
986 htmlFile << state[ind2] << HBM[1] <<
"</td>" << std::endl;
987 htmlFile << state[ind3] << HBM[2] <<
"</td>" << std::endl;
988 htmlFile << state[ind4] << HBM[3] <<
"</td>" << std::endl;
990 htmlFile <<
"</tr><tr>" << std::endl;
991 htmlFile <<
"<td class=\"s1\" align=\"center\">HE+</td>" << std::endl;
992 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;
993 ind2=3;
if(newHEP[1]==0) ind2=2;
if(newHEP[1]>0) ind2=1;
if(newHEP[1]>21) ind2=0;
994 ind3=3;
if(newHEP[2]==0) ind3=2;
if(newHEP[2]>0) ind3=1;
if(newHEP[2]>21) ind3=0;
995 ind4=3;
if(newHEP[3]==0) ind4=2;
if(newHEP[3]>0) ind4=1;
if(newHEP[3]>21) ind4=0;
996 if(ind1==3) ind2=ind3=ind4=3;
997 if(ind1==0 || ind2==0 || ind3==0 || ind4==0)
status|=2;
else if(ind1==1 || ind2==1 || ind3==1 || ind4==1)
status|=1;
998 htmlFile << state[ind1] << HEP[0] <<
" (1296)</td>" << std::endl;
999 htmlFile << state[ind2] << HEP[1] <<
"</td>" << std::endl;
1000 htmlFile << state[ind3] << HEP[2] <<
"</td>" << std::endl;
1001 htmlFile << state[ind4] << HEP[3] <<
"</td>" << std::endl;
1003 htmlFile <<
"</tr><tr>" << std::endl;
1004 htmlFile <<
"<td class=\"s1\" align=\"center\">HE-</td>" << std::endl;
1005 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;
1006 ind2=3;
if(newHEM[1]==0) ind2=2;
if(newHEM[1]>0) ind2=1;
if(newHEM[1]>21) ind2=0;
1007 ind3=3;
if(newHEM[2]==0) ind3=2;
if(newHEM[2]>0) ind3=1;
if(newHEM[2]>21) ind3=0;
1008 ind4=3;
if(newHEM[3]==0) ind4=2;
if(newHEM[3]>0) ind4=1;
if(newHEM[3]>21) ind4=0;
1009 if(ind1==3) ind2=ind3=ind4=3;
1010 if(ind1==0 || ind2==0 || ind3==0 || ind4==0)
status|=2;
else if(ind1==1 || ind2==1 || ind3==1 || ind4==1)
status|=1;
1011 htmlFile << state[ind1] << HEM[0] <<
" (1296)</td>" << std::endl;
1012 htmlFile << state[ind2] << HEM[1] <<
"</td>" << std::endl;
1013 htmlFile << state[ind3] << HEM[2] <<
"</td>" << std::endl;
1014 htmlFile << state[ind4] << HEM[3] <<
"</td>" << std::endl;
1016 htmlFile <<
"</tr><tr>" << std::endl;
1017 htmlFile <<
"<td class=\"s1\" align=\"center\">HF+</td>" << std::endl;
1018 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;
1019 ind2=3;
if(newHFP[1]==0) ind2=2;
if(newHFP[1]>0) ind2=1;
if(newHFP[1]>21) ind2=0;
1020 ind3=3;
if(newHFP[2]==0) ind3=2;
if(newHFP[2]>0) ind3=1;
if(newHFP[2]>21) ind3=0;
1021 ind4=3;
if(newHFP[3]==0) ind4=2;
if(newHFP[3]>0) ind4=1;
if(newHFP[3]>21) ind4=0;
1022 if(ind1==3) ind2=ind3=ind4=3;
1023 if(ind1==0 || ind2==0 || ind3==0 || ind4==0)
status|=2;
else if(ind1==1 || ind2==1 || ind3==1 || ind4==1)
status|=1;
1024 htmlFile << state[ind1] << HFP[0] <<
" (864)</td>" << std::endl;
1025 htmlFile << state[ind2] << HFP[1] <<
"</td>" << std::endl;
1026 htmlFile << state[ind3] << HFP[2] <<
"</td>" << std::endl;
1027 htmlFile << state[ind4] << HFP[3] <<
"</td>" << std::endl;
1029 htmlFile <<
"</tr><tr>" << std::endl;
1030 htmlFile <<
"<td class=\"s1\" align=\"center\">HF-</td>" << std::endl;
1031 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;
1032 ind2=3;
if(newHFM[1]==0) ind2=2;
if(newHFM[1]>0) ind2=1;
if(newHFM[1]>21) ind2=0;
1033 ind3=3;
if(newHFM[2]==0) ind3=2;
if(newHFM[2]>0) ind3=1;
if(newHFM[2]>21) ind3=0;
1034 ind4=3;
if(newHFM[3]==0) ind4=2;
if(newHFM[3]>0) ind4=1;
if(newHFM[3]>21) ind4=0;
1035 if(ind1==3) ind2=ind3=ind4=3;
1036 if(ind1==0 || ind2==0 || ind3==0 || ind4==0)
status|=2;
else if(ind1==1 || ind2==1 || ind3==1 || ind4==1)
status|=1;
1037 htmlFile << state[ind1] << HFM[0] <<
" (864)</td>" << std::endl;
1038 htmlFile << state[ind2] << HFM[1] <<
"</td>" << std::endl;
1039 htmlFile << state[ind3] << HFM[2] <<
"</td>" << std::endl;
1040 htmlFile << state[ind4] << HFM[3] <<
"</td>" << std::endl;
1042 htmlFile <<
"</tr><tr>" << std::endl;
1043 htmlFile <<
"<td class=\"s1\" align=\"center\">HO</td>" << std::endl;
1044 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;
1045 ind2=3;
if(newHO[1]==0) ind2=2;
if(newHO[1]>0) ind2=1;
if(newHO[1]>21) ind2=0;
1046 ind3=3;
if(newHO[2]==0) ind3=2;
if(newHO[2]>0) ind3=1;
if(newHO[2]>21) ind3=0;
1047 ind4=3;
if(newHO[3]==0) ind4=2;
if(newHO[3]>0) ind4=1;
if(newHO[3]>21) ind4=0;
1048 if(ind1==3) ind2=ind3=ind4=3;
1049 if(ind1==0 || ind2==0 || ind3==0 || ind4==0)
status|=2;
else if(ind1==1 || ind2==1 || ind3==1 || ind4==1)
status|=1;
1050 htmlFile << state[ind1] << HO[0] <<
" (2160)</td>" << std::endl;
1051 htmlFile << state[ind2] << HO[1] <<
"</td>" << std::endl;
1052 htmlFile << state[ind3] << HO[2] <<
"</td>" << std::endl;
1053 htmlFile << state[ind4] << HO[3] <<
"</td>" << std::endl;
1055 htmlFile <<
"</tr></table>" << std::endl;
1056 htmlFile <<
"<hr>" << std::endl;
1058 if((MissingCnt+UnstableCnt+BadCnt)>0){
1059 htmlFile <<
"<table width=100% border=1><tr>" << std::endl;
1060 if(MissingCnt>0) htmlFile <<
"<td><a href=\"" <<
"bad_missing_table.html" <<
"\">list of missing channels</a></td>";
1061 if(UnstableCnt>0) htmlFile <<
"<td><a href=\"" <<
"bad_unstable_table.html" <<
"\">list of unstable channels</a></td>";
1062 if(BadCnt>0) htmlFile <<
"<td><a href=\"" <<
"bad_badpedrms_table.html" <<
"\">list of bad pedestal/rms channels</a></td>";
1063 htmlFile <<
"</tr></table>" << std::endl;
1072 htmlFile <<
"<h2 align=\"center\">Summary plots</h2>" << std::endl;
1073 htmlFile <<
"<table width=100% border=0><tr>" << std::endl;
1074 htmlFile <<
"<tr align=\"left\">" << std::endl;
1075 Pedestals2DHBHEHF->SetStats(0);
1076 Pedestals2DHBHEHF->SetMaximum(5);
1077 Pedestals2DHBHEHF->SetNdivisions(36,
"Y");
1078 Pedestals2DHBHEHF->Draw(
"COLZ");
1079 can->SaveAs((htmlDir +
"hbhehf_pedestal_map.gif").c_str());
1080 htmlFile <<
"<td><img src=\"hbhehf_pedestal_map.gif\" alt=\"hbhehf pedestal mean map\"> </td>" << std::endl;
1081 Pedestals2DHO->SetStats(0);
1082 Pedestals2DHO->SetMaximum(5);
1083 Pedestals2DHO->SetNdivisions(36,
"Y");
1084 Pedestals2DHO->Draw(
"COLZ");
1085 can->SaveAs((htmlDir +
"ho_pedestal_map.gif").c_str());
1086 htmlFile <<
"<td><img src=\"ho_pedestal_map.gif\" alt=\"ho pedestal mean map\"> </td>" << std::endl;
1087 htmlFile <<
"</tr>" << std::endl;
1089 htmlFile <<
"<tr align=\"left\">" << std::endl;
1090 Pedestals2DRmsHBHEHF->SetStats(0);
1091 Pedestals2DRmsHBHEHF->SetMaximum(2);
1092 Pedestals2DRmsHBHEHF->SetNdivisions(36,
"Y");
1093 Pedestals2DRmsHBHEHF->Draw(
"COLZ");
1094 can->SaveAs((htmlDir +
"hbhehf_rms_map.gif").c_str());
1095 htmlFile <<
"<td><img src=\"hbhehf_rms_map.gif\" alt=\"hbhehf pedestal rms map\"> </td>" << std::endl;
1096 Pedestals2DRmsHO->SetStats(0);
1097 Pedestals2DRmsHO->SetMaximum(2);
1098 Pedestals2DRmsHO->SetNdivisions(36,
"Y");
1099 Pedestals2DRmsHO->Draw(
"COLZ");
1100 can->SaveAs((htmlDir +
"ho_rms_map.gif").c_str());
1101 htmlFile <<
"<td><img src=\"ho_rms_map.gif\" alt=\"ho pedestal rms map\"> </td>" << std::endl;
1102 htmlFile <<
"</tr>" << std::endl;
1104 htmlFile <<
"<tr align=\"left\">" << std::endl;
1105 Pedestals2DErrorHBHEHF->SetStats(0);
1106 Pedestals2DErrorHBHEHF->SetNdivisions(36,
"Y");
1107 Pedestals2DErrorHBHEHF->Draw(
"COLZ");
1108 can->SaveAs((htmlDir +
"hbhehf_error_map.gif").c_str());
1109 htmlFile <<
"<td><img src=\"hbhehf_error_map.gif\" alt=\"hbhehf pedestal error map\"> </td>" << std::endl;
1110 Pedestals2DErrorHO->SetStats(0);
1111 Pedestals2DErrorHO->SetNdivisions(36,
"Y");
1112 Pedestals2DErrorHO->Draw(
"COLZ");
1113 can->SaveAs((htmlDir +
"ho_error_map.gif").c_str());
1114 htmlFile <<
"<td><img src=\"ho_error_map.gif\" alt=\"ho pedestal error map\"> </td>" << std::endl;
1115 htmlFile <<
"</tr>" << std::endl;
1116 htmlFile <<
"</table>" << std::endl;
1117 htmlFile <<
"<hr>" << std::endl;
1120 htmlFile <<
"<h2 align=\"center\">HB Pedestal plots (Reference run "<<ref_run<<
")</h2>" << std::endl;
1121 htmlFile <<
"<table width=100% border=0><tr>" << std::endl;
1122 htmlFile <<
"<tr align=\"left\">" << std::endl;
1123 if(PedestalsAve4HB->GetMaximum()>0) can->SetLogy(1);
else can->SetLogy(0);
1124 PedestalsAve4HB->Draw();
1125 can->SaveAs((htmlDir +
"hb_pedestal_distribution.gif").c_str());
1126 htmlFile <<
"<td><img src=\"hb_pedestal_distribution.gif\" alt=\"hb pedestal mean\"> </td>" << std::endl;
1127 if(PedestalsRmsHB->GetMaximum()>0) can->SetLogy(1);
else can->SetLogy(0);
1128 PedestalsRmsHB->Draw();
1129 can->SaveAs((htmlDir +
"hb_pedestal_rms_distribution.gif").c_str());
1130 htmlFile <<
"<td><img src=\"hb_pedestal_rms_distribution.gif\" alt=\"hb pedestal rms mean\"> </td>" << std::endl;
1131 htmlFile <<
"</tr>" << std::endl;
1133 htmlFile <<
"<tr align=\"left\">" << std::endl;
1134 if(PedestalsAve4HBref->GetMaximum()>0) can->SetLogy(1);
else can->SetLogy(0);
1135 PedestalsAve4HBref->Draw();
1136 can->SaveAs((htmlDir +
"hb_pedestal_ref_distribution.gif").c_str());
1137 htmlFile <<
"<td><img src=\"hb_pedestal_ref_distribution.gif\" alt=\"hb pedestal-reference mean\"> </td>" << std::endl;
1138 if(PedestalsRmsHBref->GetMaximum()>0) can->SetLogy(1);
else can->SetLogy(0);
1139 PedestalsRmsHBref->Draw();
1140 can->SaveAs((htmlDir +
"hb_pedestal_rms_ref_distribution.gif").c_str());
1141 htmlFile <<
"<td><img src=\"hb_pedestal_rms_ref_distribution.gif\" alt=\"hb pedestal rms-reference mean\"> </td>" << std::endl;
1142 htmlFile <<
"</tr>" << std::endl;
1143 htmlFile <<
"</table>" << std::endl;
1145 htmlFile <<
"<h2 align=\"center\">HE Pedestal plots (Reference run "<<ref_run<<
")</h2>" << std::endl;
1146 htmlFile <<
"<table width=100% border=0><tr>" << std::endl;
1147 htmlFile <<
"<tr align=\"left\">" << std::endl;
1148 if(PedestalsAve4HE->GetMaximum()>0) can->SetLogy(1);
else can->SetLogy(0);
1149 PedestalsAve4HE->Draw();
1150 can->SaveAs((htmlDir +
"he_pedestal_distribution.gif").c_str());
1151 htmlFile <<
"<td><img src=\"he_pedestal_distribution.gif\" alt=\"he pedestal mean\"> </td>" << std::endl;
1152 if(PedestalsRmsHE->GetMaximum()>0) can->SetLogy(1);
else can->SetLogy(0);
1153 PedestalsRmsHE->Draw();
1154 can->SaveAs((htmlDir +
"he_pedestal_rms_distribution.gif").c_str());
1155 htmlFile <<
"<td><img src=\"he_pedestal_rms_distribution.gif\" alt=\"he pedestal rms mean\"> </td>" << std::endl;
1156 htmlFile <<
"</tr>" << std::endl;
1158 htmlFile <<
"<tr align=\"left\">" << std::endl;
1159 if(PedestalsAve4HEref->GetMaximum()>0) can->SetLogy(1);
else can->SetLogy(0);
1160 PedestalsAve4HEref->Draw();
1161 can->SaveAs((htmlDir +
"he_pedestal_ref_distribution.gif").c_str());
1162 htmlFile <<
"<td><img src=\"he_pedestal_ref_distribution.gif\" alt=\"he pedestal-reference mean\"> </td>" << std::endl;
1163 if(PedestalsRmsHEref->GetMaximum()>0) can->SetLogy(1);
else can->SetLogy(0);
1164 PedestalsRmsHEref->Draw();
1165 can->SaveAs((htmlDir +
"he_pedestal_rms_ref_distribution.gif").c_str());
1166 htmlFile <<
"<td><img src=\"he_pedestal_rms_ref_distribution.gif\" alt=\"he pedestal rms-reference mean\"> </td>" << std::endl;
1167 htmlFile <<
"</tr>" << std::endl;
1168 htmlFile <<
"</table>" << std::endl;
1170 htmlFile <<
"<h2 align=\"center\">HO Pedestal plots (Reference run "<<ref_run<<
")</h2>" << std::endl;
1171 htmlFile <<
"<table width=100% border=0><tr>" << std::endl;
1172 htmlFile <<
"<tr align=\"left\">" << std::endl;
1173 if(PedestalsAve4HO->GetMaximum()>0) can->SetLogy(1);
else can->SetLogy(0);
1174 PedestalsAve4HO->Draw();
1175 can->SaveAs((htmlDir +
"ho_pedestal_distribution.gif").c_str());
1176 htmlFile <<
"<td><img src=\"ho_pedestal_distribution.gif\" alt=\"ho pedestal mean\"> </td>" << std::endl;
1177 if(PedestalsRmsHO->GetMaximum()>0) can->SetLogy(1);
else can->SetLogy(0);
1178 PedestalsRmsHO->Draw();
1179 can->SaveAs((htmlDir +
"ho_pedestal_rms_distribution.gif").c_str());
1180 htmlFile <<
"<td><img src=\"ho_pedestal_rms_distribution.gif\" alt=\"ho pedestal rms mean\"> </td>" << std::endl;
1181 htmlFile <<
"</tr>" << std::endl;
1183 htmlFile <<
"<tr align=\"left\">" << std::endl;
1184 if(PedestalsAve4Simp->GetMaximum()>0) can->SetLogy(1);
else can->SetLogy(0);
1185 PedestalsAve4Simp->Draw();
1186 can->SaveAs((htmlDir +
"sipm_pedestal_distribution.gif").c_str());
1187 htmlFile <<
"<td><img src=\"sipm_pedestal_distribution.gif\" alt=\"sipm pedestal mean\"> </td>" << std::endl;
1188 if(PedestalsRmsSimp->GetMaximum()>0) can->SetLogy(1);
else can->SetLogy(0);
1189 PedestalsRmsSimp->Draw();
1190 can->SaveAs((htmlDir +
"simp_pedestal_rms_distribution.gif").c_str());
1191 htmlFile <<
"<td><img src=\"simp_pedestal_rms_distribution.gif\" alt=\"sipm pedestal rms mean\"> </td>" << std::endl;
1192 htmlFile <<
"</tr>" << std::endl;
1194 htmlFile <<
"<tr align=\"left\">" << std::endl;
1195 if(PedestalsAve4HOref->GetMaximum()>0) can->SetLogy(1);
else can->SetLogy(0);
1196 PedestalsAve4HOref->Draw();
1197 can->SaveAs((htmlDir +
"ho_pedestal_ref_distribution.gif").c_str());
1198 htmlFile <<
"<td><img src=\"ho_pedestal_ref_distribution.gif\" alt=\"ho pedestal-reference mean\"> </td>" << std::endl;
1199 if(PedestalsRmsHOref->GetMaximum()>0) can->SetLogy(1);
else can->SetLogy(0);
1200 PedestalsRmsHOref->Draw();
1201 can->SaveAs((htmlDir +
"ho_pedestal_rms_ref_distribution.gif").c_str());
1202 htmlFile <<
"<td><img src=\"ho_pedestal_rms_ref_distribution.gif\" alt=\"ho pedestal rms-reference mean\"> </td>" << std::endl;
1203 htmlFile <<
"</tr>" << std::endl;
1204 htmlFile <<
"</table>" << std::endl;
1207 htmlFile <<
"<h2 align=\"center\">HF Pedestal plots (Reference run "<<ref_run<<
")</h2>" << std::endl;
1208 htmlFile <<
"<table width=100% border=0><tr>" << std::endl;
1209 htmlFile <<
"<tr align=\"left\">" << std::endl;
1210 if(PedestalsAve4HF->GetMaximum()>0) can->SetLogy(1);
else can->SetLogy(0);
1211 PedestalsAve4HF->Draw();
1212 can->SaveAs((htmlDir +
"hf_pedestal_distribution.gif").c_str());
1213 htmlFile <<
"<td><img src=\"hf_pedestal_distribution.gif\" alt=\"hf pedestal mean\"> </td>" << std::endl;
1214 if(PedestalsRmsHF->GetMaximum()>0) can->SetLogy(1);
else can->SetLogy(0);
1215 PedestalsRmsHF->Draw();
1216 can->SaveAs((htmlDir +
"hf_pedestal_rms_distribution.gif").c_str());
1217 htmlFile <<
"<td><img src=\"hf_pedestal_rms_distribution.gif\" alt=\"hf pedestal rms mean\"> </td>" << std::endl;
1218 htmlFile <<
"</tr>" << std::endl;
1220 htmlFile <<
"<tr align=\"left\">" << std::endl;
1221 if(PedestalsAve4HFref->GetMaximum()>0) can->SetLogy(1);
else can->SetLogy(0);
1222 PedestalsAve4HFref->Draw();
1223 can->SaveAs((htmlDir +
"hf_pedestal_ref_distribution.gif").c_str());
1224 htmlFile <<
"<td><img src=\"hf_pedestal_ref_distribution.gif\" alt=\"hf pedestal-reference mean\"> </td>" << std::endl;
1225 if(PedestalsRmsHFref->GetMaximum()>0) can->SetLogy(1);
else can->SetLogy(0);
1226 PedestalsRmsHFref->Draw();
1227 can->SaveAs((htmlDir +
"hf_pedestal_rms_ref_distribution.gif").c_str());
1228 htmlFile <<
"<td><img src=\"hf_pedestal_rms_ref_distribution.gif\" alt=\"hf pedestal rms-reference mean\"> </td>" << std::endl;
1229 htmlFile <<
"</tr>" << std::endl;
1230 htmlFile <<
"</table>" << std::endl;
1233 htmlFile <<
"</body> " << std::endl;
1234 htmlFile <<
"</html> " << std::endl;
bool isHO(int etabin, int depth)
T getUntrackedParameter(std::string const &, T const &) const
const std::string & getName(void) const
get name of ME
MonitorElement * ProblemCells
int fiberIndex() const
get the fiber index. For VME 1-8 (which of eight fibers carried by a spigot), for uTCA fibers are zer...
void setBinContent(int binx, double content)
set content of bin (1-D)
bool hasErrors_Temp(void)
static void printTableHeader(std::ofstream &file, std::string header)
void calculateProblems(void)
std::vector< std::string > HcalEtaPhiHistNames()
int htrSlot() const
get the htr slot
void setup(DQMStore *&m_dbe, std::string Name, std::string Units="")
bool isHE(int etabin, int depth)
int readoutVMECrateId() const
get the readout VME crate number
int depth() const
get the tower depth
HcalElectronicsMap generateHcalElectronicsMap()
std::vector< MonitorElement * > depth
int CalcIeta(int subdet, int eta, int depth)
int htrTopBottom() const
get the htr top/bottom (1=top/0=bottom), valid for VME
std::vector< std::string > problemnames_
EtaPhiHists * ProblemCellsByDepth
int ieta() const
get the cell ieta
int dccid() const
get the (Hcal local) DCC id for VME, crate number for uTCA
static void printTableLine(std::ofstream &file, int ind, HcalDetId &detid, HcalFrontEndId &lmap_entry, HcalElectronicsId &emap_entry, std::string comment="")
static void printTableTail(std::ofstream &file)
MonitorElement * get(const std::string &path) const
get ME from full pathname (e.g. "my/long/dir/my_histo")
bool isHB(int etabin, int depth)
int spigot() const
get the spigot (input number on DCC, AMC card number for uTCA)
std::string valueString(void) const
const HcalFrontEndId getHcalFrontEndId(const DetId &)
int iphi() const
get the cell iphi
HcalDetDiagPedestalClient()
Constructors.
bool isHF(int etabin, int depth)
std::map< HcalDetId, unsigned int > badstatusmap
void FillUnphysicalHEHFBins(std::vector< TH2F > &hh)
double getBinContent(int binx) const
get content of bin (1-D)
~HcalDetDiagPedestalClient()
Destructor.
HcalLogicalMap * logicalMap_
void showDirStructure(void) const
int badChannelStatusMask_
bool hasWarnings_Temp(void)
TH2F * getTH2F(void) const
void updateChannelStatus(std::map< HcalDetId, unsigned int > &myqual)
MonitorElement * book2D(const char *name, const char *title, int nchX, double lowX, double highX, int nchY, double lowY, double highY)
Book 2D histogram.
void htmlOutput(std::string)
void Reset(void)
reset ME (ie. contents, errors, etc)
Readout chain identification for Hcal.
const DetId lookup(HcalElectronicsId fId) const
lookup the logical detid associated with the given electronics id
void setCurrentFolder(const std::string &fullpath)