35 if (prefixME_.substr(prefixME_.size()-1,prefixME_.size())!=
"/")
36 prefixME_.append(
"/");
60 if (
debug_>2)
std::cout <<
"\tHcalDetDiagPedestalClient::analyze()"<<std::endl;
66 if (
debug_>2)
std::cout <<
"\t\tHcalDetDiagPedestalClient::calculateProblems()"<<std::endl;
69 int etabins=0, phibins=0, zside=0;
70 double problemvalue=0;
95 TH2F* PedestalsMissing[4];
96 TH2F* PedestalsUnstable[4];
97 TH2F* PedestalsBadMean[4];
98 TH2F* PedestalsBadRMS[4];
100 for (
int i=0;
i<4;++
i)
103 PedestalsMissing[
i]=0;
104 PedestalsUnstable[
i]=0;
105 PedestalsBadMean[
i]=0;
106 PedestalsBadRMS[
i]=0;
109 if (me!=0) PedestalsMissing[
i]=HcalUtilsClient::getHisto<TH2F*>(me,
cloneME_, PedestalsMissing[
i],
debug_);
113 std::cout <<
"<HcalDetDiagPedestalClient::calcluateProblems> could not get histogram '"<<s<<
"'"<<std::endl;
116 s=
subdir_+name[
i]+
" Problem Unstable Channels";
118 if (me!=0) PedestalsUnstable[
i]=HcalUtilsClient::getHisto<TH2F*>(me,
cloneME_, PedestalsUnstable[
i],
debug_);
119 else if (
debug_>0)
std::cout <<
"<HcalDetDiagPedestalClient::calculateProblems> could not get histogram '"<<s<<
"'"<<std::endl;
120 s=
subdir_+name[
i]+
" Problem Bad Pedestal Value";
122 if (me!=0) PedestalsBadMean[
i]=HcalUtilsClient::getHisto<TH2F*>(me,
cloneME_, PedestalsBadMean[
i],
debug_);
123 else if (
debug_>0)
std::cout <<
"<HcalDetDiagPedestalClient::calculateProblems> could not get histogram '"<<s<<
"'"<<std::endl;
124 s=
subdir_+name[
i]+
" Problem Bad Rms Value";
126 if (me!=0) PedestalsBadRMS[
i]=HcalUtilsClient::getHisto<TH2F*>(me,
cloneME_, PedestalsBadRMS[
i],
debug_);
127 else if (
debug_>0)
std::cout <<
"<HcalDetDiagPedestalClient::calculateProblems> could not get histogram '"<<s<<
"'"<<std::endl;
140 if (PedestalsMissing[d]!=0) totalevents = PedestalsMissing[d]->GetBinContent(0);
141 else if (PedestalsUnstable[d]!=0) totalevents = PedestalsUnstable[d]->GetBinContent(0);
142 else if (PedestalsBadMean[d]!=0) totalevents = PedestalsBadMean[d]->GetBinContent(0);
143 else if (PedestalsBadRMS[d]!=0) totalevents = PedestalsBadRMS[d]->GetBinContent(0);
152 if (ieta==-9999)
continue;
156 if (PedestalsMissing[d]!=0) problemvalue += PedestalsMissing[d]->GetBinContent(
eta+1,
phi+1)*1./totalevents;
157 if (PedestalsUnstable[d]!=0) problemvalue += PedestalsUnstable[d]->GetBinContent(
eta+1,
phi+1)*1./totalevents;
158 if (PedestalsBadMean[d]!=0) problemvalue += PedestalsBadMean[d]->GetBinContent(
eta+1,
phi+1)*1./totalevents;
159 if (PedestalsBadRMS[d]!=0) problemvalue += PedestalsBadRMS[d]->GetBinContent(
eta+1,
phi+1)*1./totalevents;
161 if (problemvalue==0)
continue;
163 problemvalue =
std::min(1.,problemvalue);
167 ieta<0 ? zside = -1 : zside = 1;
191 if (
debug_>0)
std::cout <<
"<HcalDetDiagPedestalClient::analyze> ProblemCells histogram does not exist!"<<std::endl;
217 std::cout <<
"<HcalDetDiagPedestalClient::beginJob()> Displaying dqmStore directory structure:"<<std::endl;
228 if (
debug_>0)
std::cout <<
"<HcalDetDiagPedestalClient::beginRun> dqmStore does not exist!"<<std::endl;
236 " Problem DetDiagPedestal Rate for all HCAL;ieta;iphi",
262 if (
debug_>1)
std::cout <<
"<HcalDetDiagPedestalClient::hasErrors_Temp> ProblemCells histogram does not exist!"<<std::endl;
268 for (
int depth=0;depth<4; ++depth)
272 for (
int hist_eta=0;hist_eta<etabins;++hist_eta)
274 for (
int hist_phi=0; hist_phi<phibins;++hist_phi)
277 if (ieta==-9999)
continue;
287 if (problemcount>0)
return true;
308 file <<
"</html><html xmlns=\"http://www.w3.org/1999/xhtml\">"<< std::endl;
309 file <<
"<head>"<< std::endl;
310 file <<
"<meta http-equiv=\"Content-Type\" content=\"text/html\"/>"<< std::endl;
311 file <<
"<title>"<< header <<
"</title>"<< std::endl;
312 file <<
"<style type=\"text/css\">"<< std::endl;
313 file <<
" body,td{ background-color: #FFFFCC; font-family: arial, arial ce, helvetica; font-size: 12px; }"<< std::endl;
314 file <<
" td.s0 { font-family: arial, arial ce, helvetica; }"<< std::endl;
315 file <<
" td.s1 { font-family: arial, arial ce, helvetica; font-weight: bold; background-color: #FFC169; text-align: center;}"<< std::endl;
316 file <<
" td.s2 { font-family: arial, arial ce, helvetica; background-color: #eeeeee; }"<< std::endl;
317 file <<
" td.s3 { font-family: arial, arial ce, helvetica; background-color: #d0d0d0; }"<< std::endl;
318 file <<
" td.s4 { font-family: arial, arial ce, helvetica; background-color: #FFC169; }"<< std::endl;
319 file <<
"</style>"<< std::endl;
320 file <<
"<body>"<< std::endl;
321 file <<
"<table>"<< std::endl;
327 file <<
"<td class=\"s4\" align=\"center\">#</td>" << std::endl;
328 file <<
"<td class=\"s1\" align=\"center\">ETA</td>" << std::endl;
329 file <<
"<td class=\"s1\" align=\"center\">PHI</td>" << std::endl;
330 file <<
"<td class=\"s1\" align=\"center\">DEPTH</td>"<< std::endl;
331 file <<
"<td class=\"s1\" align=\"center\">RBX</td>" << std::endl;
332 file <<
"<td class=\"s1\" align=\"center\">RM</td>" << std::endl;
333 file <<
"<td class=\"s1\" align=\"center\">PIXEL</td>" << std::endl;
334 file <<
"<td class=\"s1\" align=\"center\">RM_FIBER</td>" << std::endl;
335 file <<
"<td class=\"s1\" align=\"center\">FIBER_CH</td>" << std::endl;
336 file <<
"<td class=\"s1\" align=\"center\">QIE</td>" << std::endl;
337 file <<
"<td class=\"s1\" align=\"center\">ADC</td>" << std::endl;
338 file <<
"<td class=\"s1\" align=\"center\">CRATE</td>" << std::endl;
339 file <<
"<td class=\"s1\" align=\"center\">DCC</td>" << std::endl;
340 file <<
"<td class=\"s1\" align=\"center\">SPIGOT</td>" << std::endl;
341 file <<
"<td class=\"s1\" align=\"center\">HTR_FIBER</td>" << std::endl;
342 file <<
"<td class=\"s1\" align=\"center\">HTR_SLOT</td>" << std::endl;
343 file <<
"<td class=\"s1\" align=\"center\">HTR_FPGA</td>" << std::endl;
344 if(
comment[0]!=0) file <<
"<td class=\"s1\" align=\"center\">Comment</td>" << std::endl;
345 file <<
"</tr>" << std::endl;
348 file <<
"<tr>"<< std::endl;
350 raw_class=
"<td class=\"s2\" align=\"center\">";
352 raw_class=
"<td class=\"s3\" align=\"center\">";
354 file <<
"<td class=\"s4\" align=\"center\">" << ind+1 <<
"</td>"<< std::endl;
355 file << raw_class<< detid.
ieta()<<
"</td>"<< std::endl;
356 file << raw_class<< detid.
iphi()<<
"</td>"<< std::endl;
357 file << raw_class<< detid.
depth() <<
"</td>"<< std::endl;
358 file << raw_class<< lmap_entry.
rbx()<<
"</td>"<< std::endl;
359 file << raw_class<< lmap_entry.
rm() <<
"</td>"<< std::endl;
360 file << raw_class<< lmap_entry.
pixel()<<
"</td>"<< std::endl;
361 file << raw_class<< lmap_entry.
rmFiber() <<
"</td>"<< std::endl;
362 file << raw_class<< lmap_entry.
fiberChannel()<<
"</td>"<< std::endl;
363 file << raw_class<< lmap_entry.
qieCard() <<
"</td>"<< std::endl;
364 file << raw_class<< lmap_entry.
adc()<<
"</td>"<< std::endl;
366 file << raw_class<< emap_entry.
dccid()<<
"</td>"<< std::endl;
367 file << raw_class<< emap_entry.
spigot()<<
"</td>"<< std::endl;
368 file << raw_class<< emap_entry.
fiberIndex()<<
"</td>"<< std::endl;
369 file << raw_class<< emap_entry.
htrSlot()<<
"</td>"<< std::endl;
370 file << raw_class<< emap_entry.
htrTopBottom()<<
"</td>"<< std::endl;
371 if(
comment[0]!=0) file << raw_class<<
comment<<
"</td>"<< std::endl;
374 file <<
"</table>"<< std::endl;
375 file <<
"</body>"<< std::endl;
376 file <<
"</html>"<< std::endl;
385 sscanf((s.substr(2,s.length()-2)).c_str(),
"%d", &
n);
387 if(n<100)
return false;
392 int MissingCnt=0,UnstableCnt=0,BadCnt=0;
393 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};
394 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};
395 int newHFP[4]={0,0,0,0},newHFM[4]={0,0,0,0},newHO[4] ={0,0,0,0};
396 if (
debug_>0)
std::cout <<
"<HcalDetDiagPedestalClient::htmlOutput> Preparing html output ..." << std::endl;
400 TH2F *Missing_val[4],*Unstable_val[4],*BadPed_val[4],*BadRMS_val[4];
404 TH1F *PedestalsAve4HB=0;
405 TH1F *PedestalsAve4HE=0;
406 TH1F *PedestalsAve4HO=0;
407 TH1F *PedestalsAve4HF=0;
408 TH1F *PedestalsAve4Simp=0;
410 TH1F *PedestalsAve4HBref=0;
411 TH1F *PedestalsAve4HEref=0;
412 TH1F *PedestalsAve4HOref=0;
413 TH1F *PedestalsAve4HFref=0;
414 TH1F *PedestalsRmsHB=0;
415 TH1F *PedestalsRmsHE=0;
416 TH1F *PedestalsRmsHO=0;
417 TH1F *PedestalsRmsHF=0;
418 TH1F *PedestalsRmsSimp=0;
420 TH1F *PedestalsRmsHBref=0;
421 TH1F *PedestalsRmsHEref=0;
422 TH1F *PedestalsRmsHOref=0;
423 TH1F *PedestalsRmsHFref=0;
425 TH2F *Pedestals2DRmsHBHEHF=0;
426 TH2F *Pedestals2DRmsHO=0;
427 TH2F *Pedestals2DHBHEHF=0;
428 TH2F *Pedestals2DHO=0;
429 TH2F *Pedestals2DErrorHBHEHF=0;
430 TH2F *Pedestals2DErrorHO=0;
433 if(me!=0) PedestalsAve4HB=HcalUtilsClient::getHisto<TH1F*>(me,
cloneME_, PedestalsAve4HB,
debug_);
else return;
434 s=
subdir_+
"Summary Plots/HE Pedestal Distribution (average over 4 caps)"; me=
dqmStore_->
get(s.c_str());
435 if(me!=0) PedestalsAve4HE=HcalUtilsClient::getHisto<TH1F*>(me,
cloneME_, PedestalsAve4HE,
debug_);
else return;
436 s=
subdir_+
"Summary Plots/HO Pedestal Distribution (average over 4 caps)"; me=
dqmStore_->
get(s.c_str());
437 if(me!=0) PedestalsAve4HO=HcalUtilsClient::getHisto<TH1F*>(me,
cloneME_, PedestalsAve4HO,
debug_);
else return;
438 s=
subdir_+
"Summary Plots/HF Pedestal Distribution (average over 4 caps)"; me=
dqmStore_->
get(s.c_str());
439 if(me!=0) PedestalsAve4HF=HcalUtilsClient::getHisto<TH1F*>(me,
cloneME_, PedestalsAve4HF,
debug_);
else return;
440 s=
subdir_+
"Summary Plots/SIPM Pedestal Distribution (average over 4 caps)"; me=
dqmStore_->
get(s.c_str());
441 if(me!=0) PedestalsAve4Simp=HcalUtilsClient::getHisto<TH1F*>(me,
cloneME_, PedestalsAve4Simp,
debug_);
else return;
443 s=
subdir_+
"Summary Plots/HB Pedestal-Reference Distribution (average over 4 caps)"; me=
dqmStore_->
get(s.c_str());
444 if(me!=0) PedestalsAve4HBref=HcalUtilsClient::getHisto<TH1F*>(me,
cloneME_, PedestalsAve4HBref,
debug_);
else return;
445 s=
subdir_+
"Summary Plots/HE Pedestal-Reference Distribution (average over 4 caps)"; me=
dqmStore_->
get(s.c_str());
446 if(me!=0) PedestalsAve4HEref=HcalUtilsClient::getHisto<TH1F*>(me,
cloneME_, PedestalsAve4HEref,
debug_);
else return;
447 s=
subdir_+
"Summary Plots/HO Pedestal-Reference Distribution (average over 4 caps)"; me=
dqmStore_->
get(s.c_str());
448 if(me!=0) PedestalsAve4HOref=HcalUtilsClient::getHisto<TH1F*>(me,
cloneME_, PedestalsAve4HOref,
debug_);
else return;
449 s=
subdir_+
"Summary Plots/HF Pedestal-Reference Distribution (average over 4 caps)"; me=
dqmStore_->
get(s.c_str());
450 if(me!=0) PedestalsAve4HFref=HcalUtilsClient::getHisto<TH1F*>(me,
cloneME_, PedestalsAve4HFref,
debug_);
else return;
452 s=
subdir_+
"Summary Plots/HB Pedestal RMS Distribution (individual cap)"; me=
dqmStore_->
get(s.c_str());
453 if(me!=0) PedestalsRmsHB=HcalUtilsClient::getHisto<TH1F*>(me,
cloneME_, PedestalsRmsHB,
debug_);
else return;
454 s=
subdir_+
"Summary Plots/HE Pedestal RMS Distribution (individual cap)"; me=
dqmStore_->
get(s.c_str());
455 if(me!=0) PedestalsRmsHE=HcalUtilsClient::getHisto<TH1F*>(me,
cloneME_, PedestalsRmsHE,
debug_);
else return;
456 s=
subdir_+
"Summary Plots/HO Pedestal RMS Distribution (individual cap)"; me=
dqmStore_->
get(s.c_str());
457 if(me!=0) PedestalsRmsHO=HcalUtilsClient::getHisto<TH1F*>(me,
cloneME_, PedestalsRmsHO,
debug_);
else return;
458 s=
subdir_+
"Summary Plots/HF Pedestal RMS Distribution (individual cap)"; me=
dqmStore_->
get(s.c_str());
459 if(me!=0) PedestalsRmsHF=HcalUtilsClient::getHisto<TH1F*>(me,
cloneME_, PedestalsRmsHF,
debug_);
else return;
460 s=
subdir_+
"Summary Plots/SIPM Pedestal RMS Distribution (individual cap)"; me=
dqmStore_->
get(s.c_str());
461 if(me!=0) PedestalsRmsSimp=HcalUtilsClient::getHisto<TH1F*>(me,
cloneME_, PedestalsRmsSimp,
debug_);
else return;
463 s=
subdir_+
"Summary Plots/HB Pedestal_rms-Reference_rms Distribution"; me=
dqmStore_->
get(s.c_str());
464 if(me!=0) PedestalsRmsHBref=HcalUtilsClient::getHisto<TH1F*>(me,
cloneME_, PedestalsRmsHBref,
debug_);
else return;
465 s=
subdir_+
"Summary Plots/HE Pedestal_rms-Reference_rms Distribution"; me=
dqmStore_->
get(s.c_str());
466 if(me!=0) PedestalsRmsHEref=HcalUtilsClient::getHisto<TH1F*>(me,
cloneME_, PedestalsRmsHEref,
debug_);
else return;
467 s=
subdir_+
"Summary Plots/HO Pedestal_rms-Reference_rms Distribution"; me=
dqmStore_->
get(s.c_str());
468 if(me!=0) PedestalsRmsHOref=HcalUtilsClient::getHisto<TH1F*>(me,
cloneME_, PedestalsRmsHOref,
debug_);
else return;
469 s=
subdir_+
"Summary Plots/HF Pedestal_rms-Reference_rms Distribution"; me=
dqmStore_->
get(s.c_str());
470 if(me!=0) PedestalsRmsHFref=HcalUtilsClient::getHisto<TH1F*>(me,
cloneME_, PedestalsRmsHFref,
debug_);
else return;
473 if(me!=0) Pedestals2DHBHEHF=HcalUtilsClient::getHisto<TH2F*>(me,
cloneME_, Pedestals2DHBHEHF,
debug_);
else return;
475 if(me!=0) Pedestals2DHO=HcalUtilsClient::getHisto<TH2F*>(me,
cloneME_, Pedestals2DHO,
debug_);
else return;
477 if(me!=0) Pedestals2DRmsHBHEHF=HcalUtilsClient::getHisto<TH2F*>(me,
cloneME_, Pedestals2DRmsHBHEHF,
debug_);
else return;
479 if(me!=0) Pedestals2DRmsHO=HcalUtilsClient::getHisto<TH2F*>(me,
cloneME_, Pedestals2DRmsHO,
debug_);
else return;
481 if(me!=0) Pedestals2DErrorHBHEHF=HcalUtilsClient::getHisto<TH2F*>(me,
cloneME_, Pedestals2DErrorHBHEHF,
debug_);
else return;
483 if(me!=0) Pedestals2DErrorHO=HcalUtilsClient::getHisto<TH2F*>(me,
cloneME_, Pedestals2DErrorHO,
debug_);
else return;
487 for(
int i=0;
i<4;++
i){
488 Missing_val[
i]=Unstable_val[
i]=BadPed_val[
i]=BadRMS_val[
i]=0;
491 if (me!=0) Missing_val[
i]=HcalUtilsClient::getHisto<TH2F*>(me,
cloneME_, Missing_val[
i],
debug_);
else return;
492 s=
subdir_+
"Plots for client/"+name[
i]+
" Channel instability value";
494 if (me!=0) Unstable_val[
i]=HcalUtilsClient::getHisto<TH2F*>(me,
cloneME_, Unstable_val[
i],
debug_);
else return;
495 s=
subdir_+
"Plots for client/"+name[
i]+
" Bad Pedestal-Ref Value";
497 if (me!=0) BadPed_val[
i]=HcalUtilsClient::getHisto<TH2F*>(me,
cloneME_, BadPed_val[
i],
debug_);
else return;
498 s=
subdir_+
"Plots for client/"+name[
i]+
" Bad Rms-ref Value";
500 if (me!=0) BadRMS_val[
i]=HcalUtilsClient::getHisto<TH2F*>(me,
cloneME_, BadRMS_val[
i],
debug_);
else return;
503 for(
int d=0;d<4;++d){
504 int etabins=Missing_val[d]->GetNbinsX();
505 int phibins=Missing_val[d]->GetNbinsY();
508 if(ieta==-9999)
continue;
515 float val=Missing_val[d]->GetBinContent(
eta+1,
phi+1);
518 if(ieta>0){ HBP[0]++;}
else{ HBM[0]++;} MissingCnt++;
522 if(ieta>0){ HEP[0]++;}
else{ HEM[0]++;} MissingCnt++;
526 if(ieta>0){ HFP[0]++;}
else{ HFM[0]++;} MissingCnt++;
530 HO[0]++;MissingCnt++;
534 val=Unstable_val[d]->GetBinContent(
eta+1,
phi+1);
537 if(ieta>0){ HBP[1]++;}
else{ HBM[1]++;} UnstableCnt++;
541 if(ieta>0){ HEP[1]++;}
else{ HEM[1]++;} UnstableCnt++;
545 if(ieta>0){ HFP[1]++;}
else{ HFM[1]++;} UnstableCnt++;
549 HO[1]++;UnstableCnt++;
553 val=BadPed_val[d]->GetBinContent(
eta+1,
phi+1);
556 if(ieta>0){ HBP[2]++;}
else{ HBM[2]++;} BadCnt++;
560 if(ieta>0){ HEP[2]++;}
else{ HEM[2]++;} BadCnt++;
564 if(ieta>0){ HFP[2]++;}
else{ HFM[2]++;} BadCnt++;
572 val=BadRMS_val[d]->GetBinContent(
eta+1,
phi+1);
575 if(ieta>0){ HBP[3]++;}
else{ HBM[3]++;} BadCnt++;
579 if(ieta>0){ HEP[3]++;}
else{ HEM[3]++;} BadCnt++;
583 if(ieta>0){ HFP[3]++;}
else{ HFM[3]++;} BadCnt++;
596 badMissing.open((htmlDir+
"bad_missing_table.html").c_str());
598 ofstream badUnstable;
599 badUnstable.open((htmlDir+
"bad_unstable_table.html").c_str());
602 badPedRMS.open((htmlDir+
"bad_badpedrms_table.html").c_str());
606 if((HBP[0]+HBP[0])>0 && (HBM[0]+HBP[0])!=(1296*2)){
607 badMissing <<
"<tr><td align=\"center\"><h3>"<<
"HB" <<
"</h3></td></tr>" << std::endl;
608 for(
int d=0;d<4;++d){
609 int etabins=Missing_val[d]->GetNbinsX();
610 int phibins=Missing_val[d]->GetNbinsY();
613 if(ieta==-9999)
continue;
615 float val=Missing_val[d]->GetBinContent(
eta+1,
phi+1);
627 if((HEP[0]+HEP[0])>0 && (HEM[0]+HEP[0])!=(1296*2)){
628 badMissing <<
"<tr><td align=\"center\"><h3>"<<
"HE" <<
"</h3></td></tr>" << std::endl;
629 for(
int d=0;d<4;++d){
630 int etabins=Missing_val[d]->GetNbinsX();
631 int phibins=Missing_val[d]->GetNbinsY();
634 if(ieta==-9999)
continue;
636 float val=Missing_val[d]->GetBinContent(
eta+1,
phi+1);
648 if(HO[0]>0 && HO[0]!=2160){
649 badMissing <<
"<tr><td align=\"center\"><h3>"<<
"HO" <<
"</h3></td></tr>" << std::endl;
650 for(
int d=0;d<4;++d){
651 int etabins=Missing_val[d]->GetNbinsX();
652 int phibins=Missing_val[d]->GetNbinsY();
655 if(ieta==-9999)
continue;
657 float val=Missing_val[d]->GetBinContent(
eta+1,
phi+1);
669 if((HFP[0]+HFP[0])>0 && (HFM[0]+HFP[0])!=(864*2)){
670 badMissing <<
"<tr><td align=\"center\"><h3>"<<
"HF" <<
"</h3></td></tr>" << std::endl;
671 for(
int d=0;d<4;++d){
672 int etabins=Missing_val[d]->GetNbinsX();
673 int phibins=Missing_val[d]->GetNbinsY();
676 if(ieta==-9999)
continue;
678 float val=Missing_val[d]->GetBinContent(
eta+1,
phi+1);
691 if((HBP[1]+HBP[1])>0){
692 badUnstable <<
"<tr><td align=\"center\"><h3>"<<
"HB" <<
"</h3></td></tr>" << std::endl;
693 for(
int d=0;d<4;++d){
694 int etabins=Unstable_val[d]->GetNbinsX();
695 int phibins=Unstable_val[d]->GetNbinsY();
698 if(ieta==-9999)
continue;
700 float val=Unstable_val[d]->GetBinContent(
eta+1,
phi+1);
703 char comment[100]; sprintf(comment,
"Missing in %.3f%% of events\n",(1.0-val)*100.0);
713 if((HEP[1]+HEP[1])>0){
714 badUnstable <<
"<tr><td align=\"center\"><h3>"<<
"HE" <<
"</h3></td></tr>" << std::endl;
715 for(
int d=0;d<4;++d){
716 int etabins=Unstable_val[d]->GetNbinsX();
717 int phibins=Unstable_val[d]->GetNbinsY();
720 if(ieta==-9999)
continue;
722 float val=Unstable_val[d]->GetBinContent(
eta+1,
phi+1);
725 char comment[100]; sprintf(comment,
"Missing in %.3f%% of events\n",(1.0-val)*100.0);
736 badUnstable <<
"<tr><td align=\"center\"><h3>"<<
"HO" <<
"</h3></td></tr>" << std::endl;
737 for(
int d=0;d<4;++d){
738 int etabins=Unstable_val[d]->GetNbinsX();
739 int phibins=Unstable_val[d]->GetNbinsY();
742 if(ieta==-9999)
continue;
744 float val=Unstable_val[d]->GetBinContent(
eta+1,
phi+1);
747 char comment[100]; sprintf(comment,
"Missing in %.3f%% of events\n",(1.0-val)*100.0);
757 if((HFP[1]+HFP[1])>0){
758 badUnstable <<
"<tr><td align=\"center\"><h3>"<<
"HF" <<
"</h3></td></tr>" << std::endl;
759 for(
int d=0;d<4;++d){
760 int etabins=Unstable_val[d]->GetNbinsX();
761 int phibins=Unstable_val[d]->GetNbinsY();
764 if(ieta==-9999)
continue;
766 float val=Unstable_val[d]->GetBinContent(
eta+1,
phi+1);
769 char comment[100]; sprintf(comment,
"Missing in %.3f%% of events\n",(1.0-val)*100.0);
780 if((HBP[2]+HBP[2]+HBP[3]+HBP[3])>0){
781 badPedRMS <<
"<tr><td align=\"center\"><h3>"<<
"HB" <<
"</h3></td></tr>" << std::endl;
782 for(
int d=0;d<4;++d){
783 int etabins=BadPed_val[d]->GetNbinsX();
784 int phibins=BadPed_val[d]->GetNbinsY();
787 if(ieta==-9999)
continue;
789 float val1=BadPed_val[d]->GetBinContent(
eta+1,
phi+1);
790 float val2=BadRMS_val[d]->GetBinContent(
eta+1,
phi+1);
791 if(val1==0 && val2==0)
continue;
794 if(val1!=0) sprintf(comment,
"Ped-Ref=%.2f",val1);
795 if(val2!=0) sprintf(comment,
"Rms-Ref=%.2f",val2);
796 if(val1!=0 && val2!=0) sprintf(comment,
"Ped-Ref=%.2f,Rms-Ref=%.2f",val1,val2);
806 if((HEP[2]+HEP[2]+HEP[3]+HEP[3])>0){
807 badPedRMS <<
"<tr><td align=\"center\"><h3>"<<
"HE" <<
"</h3></td></tr>" << std::endl;
808 for(
int d=0;d<4;++d){
809 int etabins=BadPed_val[d]->GetNbinsX();
810 int phibins=BadPed_val[d]->GetNbinsY();
813 if(ieta==-9999)
continue;
815 float val1=BadPed_val[d]->GetBinContent(
eta+1,
phi+1);
816 float val2=BadRMS_val[d]->GetBinContent(
eta+1,
phi+1);
817 if(val1==0 && val2==0)
continue;
820 if(val1!=0) sprintf(comment,
"Ped-Ref=%.2f",val1);
821 if(val2!=0) sprintf(comment,
"Rms-Ref=%.2f",val2);
822 if(val1!=0 && val2!=0) sprintf(comment,
"Ped-Ref=%.2f,Rms-Ref=%.2f",val1,val2);
833 badPedRMS <<
"<tr><td align=\"center\"><h3>"<<
"HO" <<
"</h3></td></tr>" << std::endl;
834 for(
int d=0;d<4;++d){
835 int etabins=BadPed_val[d]->GetNbinsX();
836 int phibins=BadPed_val[d]->GetNbinsY();
839 if(ieta==-9999)
continue;
841 float val1=BadPed_val[d]->GetBinContent(
eta+1,
phi+1);
842 float val2=BadRMS_val[d]->GetBinContent(
eta+1,
phi+1);
843 if(val1==0 && val2==0)
continue;
846 if(val1!=0) sprintf(comment,
"Ped-Ref=%.2f",val1);
847 if(val2!=0) sprintf(comment,
"Rms-Ref=%.2f",val2);
848 if(val1!=0 && val2!=0) sprintf(comment,
"Ped-Ref=%.2f,Rms-Ref=%.2f",val1,val2);
858 if((HFP[2]+HFP[2]+HFP[3]+HFP[3])>0){
859 badPedRMS <<
"<tr><td align=\"center\"><h3>"<<
"HF" <<
"</h3></td></tr>" << std::endl;
860 for(
int d=0;d<4;++d){
861 int etabins=BadPed_val[d]->GetNbinsX();
862 int phibins=BadPed_val[d]->GetNbinsY();
865 if(ieta==-9999)
continue;
867 float val1=BadPed_val[d]->GetBinContent(
eta+1,
phi+1);
868 float val2=BadRMS_val[d]->GetBinContent(
eta+1,
phi+1);
869 if(val1==0 && val2==0)
continue;
872 if(val1!=0) sprintf(comment,
"Ped-Ref=%.2f",val1);
873 if(val2!=0) sprintf(comment,
"Rms-Ref=%.2f",val2);
874 if(val1!=0 && val2!=0) sprintf(comment,
"Ped-Ref=%.2f,Rms-Ref=%.2f",val1,val2);
891 int ievt_ = -1,runNo=-1;
893 s=
subdir_+
"HcalDetDiagPedestalMonitor Event Number";
897 sscanf((s.substr(2,s.length()-2)).c_str(),
"%d", &ievt_);
899 s=
subdir_+
"HcalDetDiagPedestalMonitor Run Number";
903 sscanf((s.substr(2,s.length()-2)).c_str(),
"%d", &runNo);
905 s=
subdir_+
"HcalDetDiagLaserMonitor Reference Run";
910 sscanf((s.substr(2,s.length()-2)).c_str(),
"%s", str);
914 gROOT->SetBatch(
true);
915 gStyle->SetCanvasColor(0);
916 gStyle->SetPadColor(0);
917 gStyle->SetOptStat(111110);
918 gStyle->SetPalette(1);
920 TCanvas *
can=
new TCanvas(
"HcalDetDiagPedestalClient",
"HcalDetDiagPedestalClient",0,0,500,350);
925 htmlFile.open(outfile.c_str());
927 htmlFile <<
"<!DOCTYPE html PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\"> " << std::endl;
928 htmlFile <<
"<html> " << std::endl;
929 htmlFile <<
"<head> " << std::endl;
930 htmlFile <<
" <meta content=\"text/html; charset=ISO-8859-1\" " << std::endl;
931 htmlFile <<
" http-equiv=\"content-type\"> " << std::endl;
932 htmlFile <<
" <title>Detector Diagnostics Pedestal Monitor</title> " << std::endl;
933 htmlFile <<
"</head> " << std::endl;
934 htmlFile <<
"<style type=\"text/css\"> td { font-weight: bold } </style>" << std::endl;
935 htmlFile <<
"<style type=\"text/css\">"<< std::endl;
936 htmlFile <<
" td.s0 { font-family: arial, arial ce, helvetica; font-weight: bold; background-color: #FF7700; text-align: center;}"<< std::endl;
937 htmlFile <<
" td.s1 { font-family: arial, arial ce, helvetica; font-weight: bold; background-color: #FFC169; text-align: center;}"<< std::endl;
938 htmlFile <<
" td.s2 { font-family: arial, arial ce, helvetica; background-color: red; }"<< std::endl;
939 htmlFile <<
" td.s3 { font-family: arial, arial ce, helvetica; background-color: yellow; }"<< std::endl;
940 htmlFile <<
" td.s4 { font-family: arial, arial ce, helvetica; background-color: green; }"<< std::endl;
941 htmlFile <<
" td.s5 { font-family: arial, arial ce, helvetica; background-color: silver; }"<< std::endl;
943 "<td class=\"s3\" align=\"center\">",
944 "<td class=\"s4\" align=\"center\">",
945 "<td class=\"s5\" align=\"center\">"};
946 htmlFile <<
"</style>"<< std::endl;
947 htmlFile <<
"<body> " << std::endl;
948 htmlFile <<
"<br> " << std::endl;
949 htmlFile <<
"<h2>Run: " << std::endl;
950 htmlFile <<
" <span " << std::endl;
951 htmlFile <<
" style=\"color: rgb(0, 0, 153);\">" << runNo <<
"</span></h2>" << std::endl;
952 htmlFile <<
"<h2>Monitoring task: <span " << std::endl;
953 htmlFile <<
" style=\"color: rgb(0, 0, 153);\">Detector Diagnostics Pedestal Monitor</span></h2> " << std::endl;
954 htmlFile <<
"<h2>Events processed: <span " << std::endl;
955 htmlFile <<
" style=\"color: rgb(0, 0, 153);\">" << ievt_ <<
"</span></h2>" << std::endl;
956 htmlFile <<
"<hr>" << std::endl;
958 htmlFile <<
"<table width=100% border=1>" << std::endl;
959 htmlFile <<
"<tr>" << std::endl;
960 htmlFile <<
"<td class=\"s0\" width=20% align=\"center\">SebDet</td>" << std::endl;
961 htmlFile <<
"<td class=\"s0\" width=20% align=\"center\">Missing</td>" << std::endl;
962 htmlFile <<
"<td class=\"s0\" width=20% align=\"center\">Unstable</td>" << std::endl;
963 htmlFile <<
"<td class=\"s0\" width=20% align=\"center\">Bad |Ped-Ref|</td>" << std::endl;
964 htmlFile <<
"<td class=\"s0\" width=20% align=\"center\">Bad |Rms-Ref|</td>" << std::endl;
965 htmlFile <<
"</tr><tr>" << std::endl;
966 int ind1=0,ind2=0,ind3=0,ind4=0;
967 htmlFile <<
"<td class=\"s1\" align=\"center\">HB+</td>" << std::endl;
968 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;
969 ind2=3;
if(newHBP[1]==0) ind2=2;
if(newHBP[1]>0) ind2=1;
if(newHBP[1]>21) ind2=0;
970 ind3=3;
if(newHBP[2]==0) ind3=2;
if(newHBP[2]>0) ind3=1;
if(newHBP[2]>21) ind3=0;
971 ind4=3;
if(newHBP[3]==0) ind4=2;
if(newHBP[3]>0) ind4=1;
if(newHBP[3]>21) ind4=0;
972 if(ind1==3) ind2=ind3=ind4=3;
973 if(ind1==0 || ind2==0 || ind3==0 || ind4==0)
status|=2;
else if(ind1==1 || ind2==1 || ind3==1 || ind4==1)
status|=1;
974 htmlFile << state[ind1] << HBP[0] <<
" (1296)</td>" << std::endl;
975 htmlFile << state[ind2] << HBP[1] <<
"</td>" << std::endl;
976 htmlFile << state[ind3] << HBP[2] <<
"</td>" << std::endl;
977 htmlFile << state[ind4] << HBP[3] <<
"</td>" << std::endl;
979 htmlFile <<
"</tr><tr>" << std::endl;
980 htmlFile <<
"<td class=\"s1\" align=\"center\">HB-</td>" << std::endl;
981 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;
982 ind2=3;
if(newHBM[1]==0) ind2=2;
if(newHBM[1]>0) ind2=1;
if(newHBM[1]>21) ind2=0;
983 ind3=3;
if(newHBM[2]==0) ind3=2;
if(newHBM[2]>0) ind3=1;
if(newHBM[2]>21) ind3=0;
984 ind4=3;
if(newHBM[3]==0) ind4=2;
if(newHBM[3]>0) ind4=1;
if(newHBM[3]>21) ind4=0;
985 if(ind1==3) ind2=ind3=ind4=3;
986 if(ind1==0 || ind2==0 || ind3==0 || ind4==0)
status|=2;
else if(ind1==1 || ind2==1 || ind3==1 || ind4==1)
status|=1;
987 htmlFile << state[ind1] << HBM[0] <<
" (1296)</td>" << std::endl;
988 htmlFile << state[ind2] << HBM[1] <<
"</td>" << std::endl;
989 htmlFile << state[ind3] << HBM[2] <<
"</td>" << std::endl;
990 htmlFile << state[ind4] << HBM[3] <<
"</td>" << std::endl;
992 htmlFile <<
"</tr><tr>" << std::endl;
993 htmlFile <<
"<td class=\"s1\" align=\"center\">HE+</td>" << std::endl;
994 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;
995 ind2=3;
if(newHEP[1]==0) ind2=2;
if(newHEP[1]>0) ind2=1;
if(newHEP[1]>21) ind2=0;
996 ind3=3;
if(newHEP[2]==0) ind3=2;
if(newHEP[2]>0) ind3=1;
if(newHEP[2]>21) ind3=0;
997 ind4=3;
if(newHEP[3]==0) ind4=2;
if(newHEP[3]>0) ind4=1;
if(newHEP[3]>21) ind4=0;
998 if(ind1==3) ind2=ind3=ind4=3;
999 if(ind1==0 || ind2==0 || ind3==0 || ind4==0)
status|=2;
else if(ind1==1 || ind2==1 || ind3==1 || ind4==1)
status|=1;
1000 htmlFile << state[ind1] << HEP[0] <<
" (1296)</td>" << std::endl;
1001 htmlFile << state[ind2] << HEP[1] <<
"</td>" << std::endl;
1002 htmlFile << state[ind3] << HEP[2] <<
"</td>" << std::endl;
1003 htmlFile << state[ind4] << HEP[3] <<
"</td>" << std::endl;
1005 htmlFile <<
"</tr><tr>" << std::endl;
1006 htmlFile <<
"<td class=\"s1\" align=\"center\">HE-</td>" << std::endl;
1007 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;
1008 ind2=3;
if(newHEM[1]==0) ind2=2;
if(newHEM[1]>0) ind2=1;
if(newHEM[1]>21) ind2=0;
1009 ind3=3;
if(newHEM[2]==0) ind3=2;
if(newHEM[2]>0) ind3=1;
if(newHEM[2]>21) ind3=0;
1010 ind4=3;
if(newHEM[3]==0) ind4=2;
if(newHEM[3]>0) ind4=1;
if(newHEM[3]>21) ind4=0;
1011 if(ind1==3) ind2=ind3=ind4=3;
1012 if(ind1==0 || ind2==0 || ind3==0 || ind4==0)
status|=2;
else if(ind1==1 || ind2==1 || ind3==1 || ind4==1)
status|=1;
1013 htmlFile << state[ind1] << HEM[0] <<
" (1296)</td>" << std::endl;
1014 htmlFile << state[ind2] << HEM[1] <<
"</td>" << std::endl;
1015 htmlFile << state[ind3] << HEM[2] <<
"</td>" << std::endl;
1016 htmlFile << state[ind4] << HEM[3] <<
"</td>" << std::endl;
1018 htmlFile <<
"</tr><tr>" << std::endl;
1019 htmlFile <<
"<td class=\"s1\" align=\"center\">HF+</td>" << std::endl;
1020 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;
1021 ind2=3;
if(newHFP[1]==0) ind2=2;
if(newHFP[1]>0) ind2=1;
if(newHFP[1]>21) ind2=0;
1022 ind3=3;
if(newHFP[2]==0) ind3=2;
if(newHFP[2]>0) ind3=1;
if(newHFP[2]>21) ind3=0;
1023 ind4=3;
if(newHFP[3]==0) ind4=2;
if(newHFP[3]>0) ind4=1;
if(newHFP[3]>21) ind4=0;
1024 if(ind1==3) ind2=ind3=ind4=3;
1025 if(ind1==0 || ind2==0 || ind3==0 || ind4==0)
status|=2;
else if(ind1==1 || ind2==1 || ind3==1 || ind4==1)
status|=1;
1026 htmlFile << state[ind1] << HFP[0] <<
" (864)</td>" << std::endl;
1027 htmlFile << state[ind2] << HFP[1] <<
"</td>" << std::endl;
1028 htmlFile << state[ind3] << HFP[2] <<
"</td>" << std::endl;
1029 htmlFile << state[ind4] << HFP[3] <<
"</td>" << std::endl;
1031 htmlFile <<
"</tr><tr>" << std::endl;
1032 htmlFile <<
"<td class=\"s1\" align=\"center\">HF-</td>" << std::endl;
1033 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;
1034 ind2=3;
if(newHFM[1]==0) ind2=2;
if(newHFM[1]>0) ind2=1;
if(newHFM[1]>21) ind2=0;
1035 ind3=3;
if(newHFM[2]==0) ind3=2;
if(newHFM[2]>0) ind3=1;
if(newHFM[2]>21) ind3=0;
1036 ind4=3;
if(newHFM[3]==0) ind4=2;
if(newHFM[3]>0) ind4=1;
if(newHFM[3]>21) ind4=0;
1037 if(ind1==3) ind2=ind3=ind4=3;
1038 if(ind1==0 || ind2==0 || ind3==0 || ind4==0)
status|=2;
else if(ind1==1 || ind2==1 || ind3==1 || ind4==1)
status|=1;
1039 htmlFile << state[ind1] << HFM[0] <<
" (864)</td>" << std::endl;
1040 htmlFile << state[ind2] << HFM[1] <<
"</td>" << std::endl;
1041 htmlFile << state[ind3] << HFM[2] <<
"</td>" << std::endl;
1042 htmlFile << state[ind4] << HFM[3] <<
"</td>" << std::endl;
1044 htmlFile <<
"</tr><tr>" << std::endl;
1045 htmlFile <<
"<td class=\"s1\" align=\"center\">HO</td>" << std::endl;
1046 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;
1047 ind2=3;
if(newHO[1]==0) ind2=2;
if(newHO[1]>0) ind2=1;
if(newHO[1]>21) ind2=0;
1048 ind3=3;
if(newHO[2]==0) ind3=2;
if(newHO[2]>0) ind3=1;
if(newHO[2]>21) ind3=0;
1049 ind4=3;
if(newHO[3]==0) ind4=2;
if(newHO[3]>0) ind4=1;
if(newHO[3]>21) ind4=0;
1050 if(ind1==3) ind2=ind3=ind4=3;
1051 if(ind1==0 || ind2==0 || ind3==0 || ind4==0)
status|=2;
else if(ind1==1 || ind2==1 || ind3==1 || ind4==1)
status|=1;
1052 htmlFile << state[ind1] << HO[0] <<
" (2160)</td>" << std::endl;
1053 htmlFile << state[ind2] << HO[1] <<
"</td>" << std::endl;
1054 htmlFile << state[ind3] << HO[2] <<
"</td>" << std::endl;
1055 htmlFile << state[ind4] << HO[3] <<
"</td>" << std::endl;
1057 htmlFile <<
"</tr></table>" << std::endl;
1058 htmlFile <<
"<hr>" << std::endl;
1060 if((MissingCnt+UnstableCnt+BadCnt)>0){
1061 htmlFile <<
"<table width=100% border=1><tr>" << std::endl;
1062 if(MissingCnt>0) htmlFile <<
"<td><a href=\"" <<
"bad_missing_table.html" <<
"\">list of missing channels</a></td>";
1063 if(UnstableCnt>0) htmlFile <<
"<td><a href=\"" <<
"bad_unstable_table.html" <<
"\">list of unstable channels</a></td>";
1064 if(BadCnt>0) htmlFile <<
"<td><a href=\"" <<
"bad_badpedrms_table.html" <<
"\">list of bad pedestal/rms channels</a></td>";
1065 htmlFile <<
"</tr></table>" << std::endl;
1074 htmlFile <<
"<h2 align=\"center\">Summary plots</h2>" << std::endl;
1075 htmlFile <<
"<table width=100% border=0><tr>" << std::endl;
1076 htmlFile <<
"<tr align=\"left\">" << std::endl;
1077 Pedestals2DHBHEHF->SetStats(0);
1078 Pedestals2DHBHEHF->SetMaximum(5);
1079 Pedestals2DHBHEHF->SetNdivisions(36,
"Y");
1080 Pedestals2DHBHEHF->Draw(
"COLZ");
1081 can->SaveAs((htmlDir +
"hbhehf_pedestal_map.gif").c_str());
1082 htmlFile <<
"<td><img src=\"hbhehf_pedestal_map.gif\" alt=\"hbhehf pedestal mean map\"> </td>" << std::endl;
1083 Pedestals2DHO->SetStats(0);
1084 Pedestals2DHO->SetMaximum(5);
1085 Pedestals2DHO->SetNdivisions(36,
"Y");
1086 Pedestals2DHO->Draw(
"COLZ");
1087 can->SaveAs((htmlDir +
"ho_pedestal_map.gif").c_str());
1088 htmlFile <<
"<td><img src=\"ho_pedestal_map.gif\" alt=\"ho pedestal mean map\"> </td>" << std::endl;
1089 htmlFile <<
"</tr>" << std::endl;
1091 htmlFile <<
"<tr align=\"left\">" << std::endl;
1092 Pedestals2DRmsHBHEHF->SetStats(0);
1093 Pedestals2DRmsHBHEHF->SetMaximum(2);
1094 Pedestals2DRmsHBHEHF->SetNdivisions(36,
"Y");
1095 Pedestals2DRmsHBHEHF->Draw(
"COLZ");
1096 can->SaveAs((htmlDir +
"hbhehf_rms_map.gif").c_str());
1097 htmlFile <<
"<td><img src=\"hbhehf_rms_map.gif\" alt=\"hbhehf pedestal rms map\"> </td>" << std::endl;
1098 Pedestals2DRmsHO->SetStats(0);
1099 Pedestals2DRmsHO->SetMaximum(2);
1100 Pedestals2DRmsHO->SetNdivisions(36,
"Y");
1101 Pedestals2DRmsHO->Draw(
"COLZ");
1102 can->SaveAs((htmlDir +
"ho_rms_map.gif").c_str());
1103 htmlFile <<
"<td><img src=\"ho_rms_map.gif\" alt=\"ho pedestal rms map\"> </td>" << std::endl;
1104 htmlFile <<
"</tr>" << std::endl;
1106 htmlFile <<
"<tr align=\"left\">" << std::endl;
1107 Pedestals2DErrorHBHEHF->SetStats(0);
1108 Pedestals2DErrorHBHEHF->SetNdivisions(36,
"Y");
1109 Pedestals2DErrorHBHEHF->Draw(
"COLZ");
1110 can->SaveAs((htmlDir +
"hbhehf_error_map.gif").c_str());
1111 htmlFile <<
"<td><img src=\"hbhehf_error_map.gif\" alt=\"hbhehf pedestal error map\"> </td>" << std::endl;
1112 Pedestals2DErrorHO->SetStats(0);
1113 Pedestals2DErrorHO->SetNdivisions(36,
"Y");
1114 Pedestals2DErrorHO->Draw(
"COLZ");
1115 can->SaveAs((htmlDir +
"ho_error_map.gif").c_str());
1116 htmlFile <<
"<td><img src=\"ho_error_map.gif\" alt=\"ho pedestal error map\"> </td>" << std::endl;
1117 htmlFile <<
"</tr>" << std::endl;
1118 htmlFile <<
"</table>" << std::endl;
1119 htmlFile <<
"<hr>" << std::endl;
1122 htmlFile <<
"<h2 align=\"center\">HB Pedestal plots (Reference run "<<ref_run<<
")</h2>" << std::endl;
1123 htmlFile <<
"<table width=100% border=0><tr>" << std::endl;
1124 htmlFile <<
"<tr align=\"left\">" << std::endl;
1125 if(PedestalsAve4HB->GetMaximum()>0) can->SetLogy(1);
else can->SetLogy(0);
1126 PedestalsAve4HB->Draw();
1127 can->SaveAs((htmlDir +
"hb_pedestal_distribution.gif").c_str());
1128 htmlFile <<
"<td><img src=\"hb_pedestal_distribution.gif\" alt=\"hb pedestal mean\"> </td>" << std::endl;
1129 if(PedestalsRmsHB->GetMaximum()>0) can->SetLogy(1);
else can->SetLogy(0);
1130 PedestalsRmsHB->Draw();
1131 can->SaveAs((htmlDir +
"hb_pedestal_rms_distribution.gif").c_str());
1132 htmlFile <<
"<td><img src=\"hb_pedestal_rms_distribution.gif\" alt=\"hb pedestal rms mean\"> </td>" << std::endl;
1133 htmlFile <<
"</tr>" << std::endl;
1135 htmlFile <<
"<tr align=\"left\">" << std::endl;
1136 if(PedestalsAve4HBref->GetMaximum()>0) can->SetLogy(1);
else can->SetLogy(0);
1137 PedestalsAve4HBref->Draw();
1138 can->SaveAs((htmlDir +
"hb_pedestal_ref_distribution.gif").c_str());
1139 htmlFile <<
"<td><img src=\"hb_pedestal_ref_distribution.gif\" alt=\"hb pedestal-reference mean\"> </td>" << std::endl;
1140 if(PedestalsRmsHBref->GetMaximum()>0) can->SetLogy(1);
else can->SetLogy(0);
1141 PedestalsRmsHBref->Draw();
1142 can->SaveAs((htmlDir +
"hb_pedestal_rms_ref_distribution.gif").c_str());
1143 htmlFile <<
"<td><img src=\"hb_pedestal_rms_ref_distribution.gif\" alt=\"hb pedestal rms-reference mean\"> </td>" << std::endl;
1144 htmlFile <<
"</tr>" << std::endl;
1145 htmlFile <<
"</table>" << std::endl;
1147 htmlFile <<
"<h2 align=\"center\">HE Pedestal plots (Reference run "<<ref_run<<
")</h2>" << std::endl;
1148 htmlFile <<
"<table width=100% border=0><tr>" << std::endl;
1149 htmlFile <<
"<tr align=\"left\">" << std::endl;
1150 if(PedestalsAve4HE->GetMaximum()>0) can->SetLogy(1);
else can->SetLogy(0);
1151 PedestalsAve4HE->Draw();
1152 can->SaveAs((htmlDir +
"he_pedestal_distribution.gif").c_str());
1153 htmlFile <<
"<td><img src=\"he_pedestal_distribution.gif\" alt=\"he pedestal mean\"> </td>" << std::endl;
1154 if(PedestalsRmsHE->GetMaximum()>0) can->SetLogy(1);
else can->SetLogy(0);
1155 PedestalsRmsHE->Draw();
1156 can->SaveAs((htmlDir +
"he_pedestal_rms_distribution.gif").c_str());
1157 htmlFile <<
"<td><img src=\"he_pedestal_rms_distribution.gif\" alt=\"he pedestal rms mean\"> </td>" << std::endl;
1158 htmlFile <<
"</tr>" << std::endl;
1160 htmlFile <<
"<tr align=\"left\">" << std::endl;
1161 if(PedestalsAve4HEref->GetMaximum()>0) can->SetLogy(1);
else can->SetLogy(0);
1162 PedestalsAve4HEref->Draw();
1163 can->SaveAs((htmlDir +
"he_pedestal_ref_distribution.gif").c_str());
1164 htmlFile <<
"<td><img src=\"he_pedestal_ref_distribution.gif\" alt=\"he pedestal-reference mean\"> </td>" << std::endl;
1165 if(PedestalsRmsHEref->GetMaximum()>0) can->SetLogy(1);
else can->SetLogy(0);
1166 PedestalsRmsHEref->Draw();
1167 can->SaveAs((htmlDir +
"he_pedestal_rms_ref_distribution.gif").c_str());
1168 htmlFile <<
"<td><img src=\"he_pedestal_rms_ref_distribution.gif\" alt=\"he pedestal rms-reference mean\"> </td>" << std::endl;
1169 htmlFile <<
"</tr>" << std::endl;
1170 htmlFile <<
"</table>" << std::endl;
1172 htmlFile <<
"<h2 align=\"center\">HO Pedestal plots (Reference run "<<ref_run<<
")</h2>" << std::endl;
1173 htmlFile <<
"<table width=100% border=0><tr>" << std::endl;
1174 htmlFile <<
"<tr align=\"left\">" << std::endl;
1175 if(PedestalsAve4HO->GetMaximum()>0) can->SetLogy(1);
else can->SetLogy(0);
1176 PedestalsAve4HO->Draw();
1177 can->SaveAs((htmlDir +
"ho_pedestal_distribution.gif").c_str());
1178 htmlFile <<
"<td><img src=\"ho_pedestal_distribution.gif\" alt=\"ho pedestal mean\"> </td>" << std::endl;
1179 if(PedestalsRmsHO->GetMaximum()>0) can->SetLogy(1);
else can->SetLogy(0);
1180 PedestalsRmsHO->Draw();
1181 can->SaveAs((htmlDir +
"ho_pedestal_rms_distribution.gif").c_str());
1182 htmlFile <<
"<td><img src=\"ho_pedestal_rms_distribution.gif\" alt=\"ho pedestal rms mean\"> </td>" << std::endl;
1183 htmlFile <<
"</tr>" << std::endl;
1185 htmlFile <<
"<tr align=\"left\">" << std::endl;
1186 if(PedestalsAve4Simp->GetMaximum()>0) can->SetLogy(1);
else can->SetLogy(0);
1187 PedestalsAve4Simp->Draw();
1188 can->SaveAs((htmlDir +
"sipm_pedestal_distribution.gif").c_str());
1189 htmlFile <<
"<td><img src=\"sipm_pedestal_distribution.gif\" alt=\"sipm pedestal mean\"> </td>" << std::endl;
1190 if(PedestalsRmsSimp->GetMaximum()>0) can->SetLogy(1);
else can->SetLogy(0);
1191 PedestalsRmsSimp->Draw();
1192 can->SaveAs((htmlDir +
"simp_pedestal_rms_distribution.gif").c_str());
1193 htmlFile <<
"<td><img src=\"simp_pedestal_rms_distribution.gif\" alt=\"sipm pedestal rms mean\"> </td>" << std::endl;
1194 htmlFile <<
"</tr>" << std::endl;
1196 htmlFile <<
"<tr align=\"left\">" << std::endl;
1197 if(PedestalsAve4HOref->GetMaximum()>0) can->SetLogy(1);
else can->SetLogy(0);
1198 PedestalsAve4HOref->Draw();
1199 can->SaveAs((htmlDir +
"ho_pedestal_ref_distribution.gif").c_str());
1200 htmlFile <<
"<td><img src=\"ho_pedestal_ref_distribution.gif\" alt=\"ho pedestal-reference mean\"> </td>" << std::endl;
1201 if(PedestalsRmsHOref->GetMaximum()>0) can->SetLogy(1);
else can->SetLogy(0);
1202 PedestalsRmsHOref->Draw();
1203 can->SaveAs((htmlDir +
"ho_pedestal_rms_ref_distribution.gif").c_str());
1204 htmlFile <<
"<td><img src=\"ho_pedestal_rms_ref_distribution.gif\" alt=\"ho pedestal rms-reference mean\"> </td>" << std::endl;
1205 htmlFile <<
"</tr>" << std::endl;
1206 htmlFile <<
"</table>" << std::endl;
1209 htmlFile <<
"<h2 align=\"center\">HF Pedestal plots (Reference run "<<ref_run<<
")</h2>" << std::endl;
1210 htmlFile <<
"<table width=100% border=0><tr>" << std::endl;
1211 htmlFile <<
"<tr align=\"left\">" << std::endl;
1212 if(PedestalsAve4HF->GetMaximum()>0) can->SetLogy(1);
else can->SetLogy(0);
1213 PedestalsAve4HF->Draw();
1214 can->SaveAs((htmlDir +
"hf_pedestal_distribution.gif").c_str());
1215 htmlFile <<
"<td><img src=\"hf_pedestal_distribution.gif\" alt=\"hf pedestal mean\"> </td>" << std::endl;
1216 if(PedestalsRmsHF->GetMaximum()>0) can->SetLogy(1);
else can->SetLogy(0);
1217 PedestalsRmsHF->Draw();
1218 can->SaveAs((htmlDir +
"hf_pedestal_rms_distribution.gif").c_str());
1219 htmlFile <<
"<td><img src=\"hf_pedestal_rms_distribution.gif\" alt=\"hf pedestal rms mean\"> </td>" << std::endl;
1220 htmlFile <<
"</tr>" << std::endl;
1222 htmlFile <<
"<tr align=\"left\">" << std::endl;
1223 if(PedestalsAve4HFref->GetMaximum()>0) can->SetLogy(1);
else can->SetLogy(0);
1224 PedestalsAve4HFref->Draw();
1225 can->SaveAs((htmlDir +
"hf_pedestal_ref_distribution.gif").c_str());
1226 htmlFile <<
"<td><img src=\"hf_pedestal_ref_distribution.gif\" alt=\"hf pedestal-reference mean\"> </td>" << std::endl;
1227 if(PedestalsRmsHFref->GetMaximum()>0) can->SetLogy(1);
else can->SetLogy(0);
1228 PedestalsRmsHFref->Draw();
1229 can->SaveAs((htmlDir +
"hf_pedestal_rms_ref_distribution.gif").c_str());
1230 htmlFile <<
"<td><img src=\"hf_pedestal_rms_ref_distribution.gif\" alt=\"hf pedestal rms-reference mean\"> </td>" << std::endl;
1231 htmlFile <<
"</tr>" << std::endl;
1232 htmlFile <<
"</table>" << std::endl;
1235 htmlFile <<
"</body> " << std::endl;
1236 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 [1-8] (which of eight fibers carried by a spigot) (valid only for non-trigger-cha...
void setBinContent(int binx, double content)
set content of bin (1-D)
bool hasErrors_Temp(void)
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)
static void printTableTail(ofstream &file)
int htrTopBottom() const
get the htr top/bottom (1=top/0=bottom)
std::vector< std::string > problemnames_
EtaPhiHists * ProblemCellsByDepth
int ieta() const
get the cell ieta
int dccid() const
get the (Hcal local) DCC id
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)
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_
static void printTableHeader(ofstream &file, std::string header)
static void printTableLine(ofstream &file, int ind, HcalDetId &detid, HcalFrontEndId &lmap_entry, HcalElectronicsId &emap_entry, std::string comment="")
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 [31:26] Unused (so far) [25] Trigger-chain id flag [24:20] Read...
const DetId lookup(HcalElectronicsId fId) const
lookup the logical detid associated with the given electronics id
void setCurrentFolder(const std::string &fullpath)