221 int UnstableLEDCnt=0;
223 int HBP[7]={0,0,0,0,0,0,0},newHBP[7]={0,0,0,0,0,0,0};
224 int HBM[7]={0,0,0,0,0,0,0},newHBM[7]={0,0,0,0,0,0,0};
225 int HEP[7]={0,0,0,0,0,0,0},newHEP[7]={0,0,0,0,0,0,0};
226 int HEM[7]={0,0,0,0,0,0,0},newHEM[7]={0,0,0,0,0,0,0};
227 int HFP[7]={0,0,0,0,0,0,0},newHFP[7]={0,0,0,0,0,0,0};
228 int HFM[7]={0,0,0,0,0,0,0},newHFM[7]={0,0,0,0,0,0,0};
229 int HO[7] ={0,0,0,0,0,0,0},newHO[7] ={0,0,0,0,0,0,0};
232 if (
debug_>0)
std::cout <<
"<HcalDetDiagLEDClient::htmlOutput> Preparing html output ..." << std::endl;
237 for(
int i=0;
i<4;++
i){
242 s=
subdir_+
"channel status/"+name[
i]+
" Missing Channels";
245 s=
subdir_+
"channel status/"+name[
i]+
" Unstable Channels";
248 s=
subdir_+
"channel status/"+name[
i]+
" Unstable LED";
251 s=
subdir_+
"channel status/"+name[
i]+
" LED Mean";
254 s=
subdir_+
"channel status/"+name[
i]+
" LED RMS";
257 s=
subdir_+
"channel status/"+name[
i]+
" Time Mean";
260 s=
subdir_+
"channel status/"+name[
i]+
" Time RMS";
263 s=
subdir_+
"Summary Plots/"+name[
i]+
" Channel LED Energy";
266 s=
subdir_+
"Summary Plots/"+name[
i]+
" Channel LED Energy Reference";
273 int feta=0,teta=0,fdepth=0,tdepth=0;
274 if(
sd==0){ feta=-16; teta=16 ;fdepth=1; tdepth=2; }
275 if(
sd==1){ feta=-29; teta=29 ;fdepth=1; tdepth=3; }
276 if(
sd==2){ feta=-15; teta=15 ;fdepth=4; tdepth=4; }
277 if(
sd==3){ feta=-42; teta=42 ;fdepth=1; tdepth=2; }
278 for(
int phi=1;
phi<=72;
phi++)
for(
int depth=fdepth;depth<=tdepth;depth++)
for(
int eta=feta;
eta<=teta;
eta++){
279 if(
sd==3 &&
eta>-29 &&
eta<29)
continue;
280 double problem[7]={0,0,0,0,0,0,0};
281 for(
int i=0;
i<6;
i++){
290 if(
sd==0){
if(
eta>0){
297 if(
sd==1){
if(
eta>0){
308 if(
sd==3){
if(
eta>0){
321 Missing.open((htmlDir +
"Missing.html").c_str());
325 BadTiming.open((htmlDir +
"BadTiming.html").c_str());
329 Unstable.open((htmlDir +
"Unstable.html").c_str());
333 BadLED.open((htmlDir +
"UnstableLED.html").c_str());
338 if(
sd==0 && ((HBM[0]+HBP[0])==0 || (HBM[0]+HBP[0])==(1296*2)))
continue;
339 if(
sd==1 && ((HEM[0]+HEP[0])==0 || (HEM[0]+HEP[0])==(1296*2)))
continue;
340 if(
sd==2 && ((HO[0])==0 || HO[0]==2160))
continue;
341 if(
sd==3 && ((HFM[0]+HFP[0])==0 || (HFM[0]+HFP[0])==(864*2)))
continue;
342 Missing <<
"<tr><td align=\"center\"><h3>"<< subdet[
sd] <<
"</h3></td></tr>" << std::endl;
343 int feta=0,teta=0,fdepth=0,tdepth=0;
344 if(
sd==0){ feta=-16; teta=16 ;fdepth=1; tdepth=2;
if(HBM[0]==1296) feta=0;
if(HBP[0]==1296) teta=0;}
345 if(
sd==1){ feta=-29; teta=29 ;fdepth=1; tdepth=3;
if(HEM[0]==1296) feta=0;
if(HEP[0]==1296) teta=0;}
346 if(
sd==2){ feta=-15; teta=15 ;fdepth=4; tdepth=4;
if(HO[0] ==2160) {feta=0; teta=0; }}
347 if(
sd==3){ feta=-42; teta=42 ;fdepth=1; tdepth=2;
if(HFM[0]==864) feta=0;
if(HFP[0]==864) teta=0; }
348 for(
int phi=1;
phi<=72;
phi++)
for(
int depth=fdepth;depth<=tdepth;depth++)
for(
int eta=feta;
eta<=teta;
eta++){
349 if(
sd==3 &&
eta>-29 &&
eta<29)
continue;
361 printTableLine(Missing,cnt++,*detid,lmap_entry,emap_entry,s); MissingCnt++;
369 if(
sd==0 && (HBM[5]+HBP[5])==0)
continue;
370 if(
sd==1 && (HEM[5]+HEP[5])==0)
continue;
371 if(
sd==2 && (HO[5])==0)
continue;
372 if(
sd==3 && (HFM[5]+HFP[5])==0)
continue;
373 BadTiming <<
"<tr><td align=\"center\"><h3>"<< subdet[
sd] <<
"</h3></td></tr>" << std::endl;
374 int feta=0,teta=0,fdepth=0,tdepth=0;
375 if(
sd==0){ feta=-16; teta=16 ;fdepth=1; tdepth=2;
if(HBM[0]==1296) feta=0;
if(HBP[0]==1296) teta=0;}
376 if(
sd==1){ feta=-29; teta=29 ;fdepth=1; tdepth=3;
if(HEM[0]==1296) feta=0;
if(HEP[0]==1296) teta=0;}
377 if(
sd==2){ feta=-15; teta=15 ;fdepth=4; tdepth=4;
if(HO[0] ==2160) {feta=0; teta=0; }}
378 if(
sd==3){ feta=-42; teta=42 ;fdepth=1; tdepth=2;
if(HFM[0]==864) feta=0;
if(HFP[0]==864) teta=0; }
379 for(
int phi=1;
phi<=72;
phi++)
for(
int depth=fdepth;depth<=tdepth;depth++)
for(
int eta=feta;
eta<=teta;
eta++){
380 if(
sd==3 &&
eta>-29 &&
eta<29)
continue;
384 char comment[100]; sprintf(comment,
"Time-mean=%.1f\n",badtiming);
392 printTableLine(BadTiming,cnt++,*detid,lmap_entry,emap_entry,comment); BadTimingCnt++;
401 if(
sd==0 && (HBM[1]+HBP[1])==0)
continue;
402 if(
sd==1 && (HEM[1]+HEP[1])==0)
continue;
403 if(
sd==2 && (HO[1])==0)
continue;
404 if(
sd==3 && (HFM[1]+HFP[1])==0)
continue;
405 Unstable <<
"<tr><td align=\"center\"><h3>"<< subdet[
sd] <<
"</h3></td></tr>" << std::endl;
406 int feta=0,teta=0,fdepth=0,tdepth=0;
407 if(
sd==0){ feta=-16; teta=16 ;fdepth=1; tdepth=2;}
408 if(
sd==1){ feta=-29; teta=29 ;fdepth=1; tdepth=3;}
409 if(
sd==2){ feta=-15; teta=15 ;fdepth=4; tdepth=4;}
410 if(
sd==3){ feta=-42; teta=42 ;fdepth=1; tdepth=2;}
411 for(
int phi=1;
phi<=72;
phi++)
for(
int depth=fdepth;depth<=tdepth;depth++)
for(
int eta=feta;
eta<=teta;
eta++){
412 if(
sd==3 &&
eta>-29 &&
eta<29)
continue;
416 char comment[100]; sprintf(comment,
"%.3f%%\n",(1.0-unstable)*100.0);
424 printTableLine(Unstable,cnt++,*detid,lmap_entry,emap_entry,comment); UnstableCnt++;
433 if(
sd==0 && (HBM[2]+HBP[2])==0)
continue;
434 if(
sd==1 && (HEM[2]+HEP[2])==0)
continue;
435 if(
sd==2 && (HO[2])==0)
continue;
436 if(
sd==3 && (HFM[2]+HFP[2])==0)
continue;
437 BadLED <<
"<tr><td align=\"center\"><h3>"<< subdet[
sd] <<
"</h3></td></tr>" << std::endl;
438 int feta=0,teta=0,fdepth=0,tdepth=0;
439 if(
sd==0){ feta=-16; teta=16 ;fdepth=1; tdepth=2;}
440 if(
sd==1){ feta=-29; teta=29 ;fdepth=1; tdepth=3;}
441 if(
sd==2){ feta=-15; teta=15 ;fdepth=4; tdepth=4;}
442 if(
sd==3){ feta=-42; teta=42 ;fdepth=1; tdepth=2;}
443 for(
int phi=1;
phi<=72;
phi++)
for(
int depth=fdepth;depth<=tdepth;depth++)
for(
int eta=feta;
eta<=teta;
eta++){
444 if(
sd==3 &&
eta>-29 &&
eta<29)
continue;
448 char comment[100]; sprintf(comment,
"%.3f%%\n",(badled)*100.0);
458 printTableLine(BadLED,cnt++,*detid,lmap_entry,emap_entry,s); UnstableLEDCnt++;
473 int ievt_ = -1,runNo=-1;
479 sscanf((s.substr(2,s.length()-2)).c_str(),
"%d", &ievt_);
481 s=
subdir_+
"HcalDetDiagLEDMonitor Run Number";
485 sscanf((s.substr(2,s.length()-2)).c_str(),
"%d", &runNo);
487 s=
subdir_+
"HcalDetDiagLEDMonitor Reference Run";
492 sscanf((s.substr(2,s.length()-2)).c_str(),
"%s", str);
495 TH1F *Energy=0,*Timing=0,*EnergyHF=0,*TimingHF=0,*EnergyRMS=0,*TimingRMS=0,*EnergyRMSHF=0,*TimingRMSHF=0;
496 TH2F *Time2Dhbhehf=0,*Time2Dho=0,*Energy2Dhbhehf=0,*Energy2Dho=0;
497 TH2F *HBPphi=0,*HBMphi=0,*HEPphi=0,*HEMphi=0,*HFPphi=0,*HFMphi=0,*HO0phi=0,*HO1Pphi=0,*HO2Pphi=0,*HO1Mphi=0,*HO2Mphi=0;
500 if(me!=0) Energy=HcalUtilsClient::getHisto<TH1F*>(me,
cloneME_, Energy,
debug_);
else return;
502 if(me!=0) Timing=HcalUtilsClient::getHisto<TH1F*>(me,
cloneME_, Timing,
debug_);
else return;
503 s=
subdir_+
"Summary Plots/HBHEHO LED Energy RMS_div_Energy Distribution"; me=
dqmStore_->
get(s.c_str());
504 if(me!=0) EnergyRMS=HcalUtilsClient::getHisto<TH1F*>(me,
cloneME_, EnergyRMS,
debug_);
else return;
505 s=
subdir_+
"Summary Plots/HBHEHO LED Timing RMS Distribution"; me=
dqmStore_->
get(s.c_str());
506 if(me!=0) TimingRMS=HcalUtilsClient::getHisto<TH1F*>(me,
cloneME_, TimingRMS,
debug_);
else return;
508 if(me!=0) EnergyHF=HcalUtilsClient::getHisto<TH1F*>(me,
cloneME_, EnergyHF,
debug_);
else return;
510 if(me!=0) TimingHF=HcalUtilsClient::getHisto<TH1F*>(me,
cloneME_, TimingHF,
debug_);
else return;
511 s=
subdir_+
"Summary Plots/HF LED Energy RMS_div_Energy Distribution"; me=
dqmStore_->
get(s.c_str());
512 if(me!=0) EnergyRMSHF=HcalUtilsClient::getHisto<TH1F*>(me,
cloneME_, EnergyRMSHF,
debug_);
else return;
514 if(me!=0) TimingRMSHF=HcalUtilsClient::getHisto<TH1F*>(me,
cloneME_, TimingRMSHF,
debug_);
else return;
517 if(me!=0) Time2Dhbhehf=HcalUtilsClient::getHisto<TH2F*>(me,
cloneME_, Time2Dhbhehf,
debug_);
else return;
519 if(me!=0) Time2Dho=HcalUtilsClient::getHisto<TH2F*>(me,
cloneME_, Time2Dho,
debug_);
else return;
521 if(me!=0) Energy2Dhbhehf=HcalUtilsClient::getHisto<TH2F*>(me,
cloneME_, Energy2Dhbhehf,
debug_);
else return;
523 if(me!=0) Energy2Dho=HcalUtilsClient::getHisto<TH2F*>(me,
cloneME_, Energy2Dho,
debug_);
else return;
526 if(me!=0) HBPphi=HcalUtilsClient::getHisto<TH2F*>(me,
cloneME_, HBPphi,
debug_);
else return;
528 if(me!=0) HBMphi=HcalUtilsClient::getHisto<TH2F*>(me,
cloneME_, HBMphi,
debug_);
else return;
530 if(me!=0) HEPphi=HcalUtilsClient::getHisto<TH2F*>(me,
cloneME_, HEPphi,
debug_);
else return;
532 if(me!=0) HEMphi=HcalUtilsClient::getHisto<TH2F*>(me,
cloneME_, HEMphi,
debug_);
else return;
534 if(me!=0) HFPphi=HcalUtilsClient::getHisto<TH2F*>(me,
cloneME_, HFPphi,
debug_);
else return;
536 if(me!=0) HFMphi=HcalUtilsClient::getHisto<TH2F*>(me,
cloneME_, HFMphi,
debug_);
else return;
539 if(me!=0) HO0phi=HcalUtilsClient::getHisto<TH2F*>(me,
cloneME_, HO0phi,
debug_);
else return;
541 if(me!=0) HO1Pphi=HcalUtilsClient::getHisto<TH2F*>(me,
cloneME_, HO1Pphi,
debug_);
else return;
543 if(me!=0) HO2Pphi=HcalUtilsClient::getHisto<TH2F*>(me,
cloneME_, HO2Pphi,
debug_);
else return;
545 if(me!=0) HO1Mphi=HcalUtilsClient::getHisto<TH2F*>(me,
cloneME_, HO1Mphi,
debug_);
else return;
547 if(me!=0) HO2Mphi=HcalUtilsClient::getHisto<TH2F*>(me,
cloneME_, HO2Mphi,
debug_);
else return;
549 gROOT->SetBatch(
true);
550 gStyle->SetCanvasColor(0);
551 gStyle->SetPadColor(0);
552 gStyle->SetOptStat(111110);
553 gStyle->SetPalette(1);
555 TCanvas *
can=
new TCanvas(
"HcalDetDiagLEDClient",
"HcalDetDiagLEDClient",0,0,500,350);
562 htmlFile.open(outfile.c_str());
564 htmlFile <<
"<!DOCTYPE html PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\"> " << std::endl;
565 htmlFile <<
"<html> " << std::endl;
566 htmlFile <<
"<head> " << std::endl;
567 htmlFile <<
" <meta content=\"text/html; charset=ISO-8859-1\" " << std::endl;
568 htmlFile <<
" http-equiv=\"content-type\"> " << std::endl;
569 htmlFile <<
" <title>Detector Diagnostics LED Monitor</title> " << std::endl;
570 htmlFile <<
"</head> " << std::endl;
571 htmlFile <<
"<style type=\"text/css\"> td { font-weight: bold } </style>" << std::endl;
572 htmlFile <<
"<style type=\"text/css\">"<< std::endl;
573 htmlFile <<
" td.s0 { font-family: arial, arial ce, helvetica; font-weight: bold; background-color: #FF7700; text-align: center;}"<< std::endl;
574 htmlFile <<
" td.s1 { font-family: arial, arial ce, helvetica; font-weight: bold; background-color: #FFC169; text-align: center;}"<< std::endl;
575 htmlFile <<
" td.s2 { font-family: arial, arial ce, helvetica; background-color: red; }"<< std::endl;
576 htmlFile <<
" td.s3 { font-family: arial, arial ce, helvetica; background-color: yellow; }"<< std::endl;
577 htmlFile <<
" td.s4 { font-family: arial, arial ce, helvetica; background-color: green; }"<< std::endl;
578 htmlFile <<
" td.s5 { font-family: arial, arial ce, helvetica; background-color: silver; }"<< std::endl;
580 "<td class=\"s3\" align=\"center\">",
581 "<td class=\"s4\" align=\"center\">",
582 "<td class=\"s5\" align=\"center\">"};
583 htmlFile <<
"</style>"<< std::endl;
584 htmlFile <<
"<body> " << std::endl;
585 htmlFile <<
"<br> " << std::endl;
586 htmlFile <<
"<h2>Run: " << std::endl;
587 htmlFile <<
" <span " << std::endl;
588 htmlFile <<
" style=\"color: rgb(0, 0, 153);\">" << runNo <<
"</span></h2>" << std::endl;
589 htmlFile <<
"<h2>Monitoring task: <span " << std::endl;
590 htmlFile <<
" style=\"color: rgb(0, 0, 153);\">Detector Diagnostics LED Monitor</span></h2> " << std::endl;
591 htmlFile <<
"<h2>Events processed: <span " << std::endl;
592 htmlFile <<
" style=\"color: rgb(0, 0, 153);\">" << ievt_ <<
"</span></h2>" << std::endl;
593 htmlFile <<
"<hr>" << std::endl;
595 htmlFile <<
"<table width=100% border=1>" << std::endl;
596 htmlFile <<
"<tr>" << std::endl;
597 htmlFile <<
"<td class=\"s0\" width=15% align=\"center\">SebDet</td>" << std::endl;
598 htmlFile <<
"<td class=\"s0\" width=17% align=\"center\">Missing</td>" << std::endl;
599 htmlFile <<
"<td class=\"s0\" width=17% align=\"center\">Unstable</td>" << std::endl;
600 htmlFile <<
"<td class=\"s0\" width=17% align=\"center\">low/no LED signal</td>" << std::endl;
601 htmlFile <<
"<td class=\"s0\" width=17% align=\"center\">Bad Timing</td>" << std::endl;
602 htmlFile <<
"<td class=\"s0\" width=17% align=\"center\">Bad LED signal</td>" << std::endl;
603 htmlFile <<
"</tr><tr>" << std::endl;
604 int ind1=0,ind2=0,ind3=0,ind4=0,ind5=0;
605 htmlFile <<
"<td class=\"s1\" align=\"center\">HB+</td>" << std::endl;
606 ind1=3;
if(newHBP[0]==0) ind1=2;
if(newHBP[0]>0 && newHBP[0]<=12) ind1=1;
if(newHBP[0]>=12 && HBP[0]<1296) ind1=0;
607 ind2=3;
if(newHBP[1]==0) ind2=2;
if(newHBP[1]>0) ind2=1;
if(newHBP[1]>21) ind2=0;
608 ind3=3;
if(newHBP[2]==0) ind3=2;
if(newHBP[2]>0) ind3=1;
if(newHBP[2]>21) ind3=0;
609 ind4=3;
if((newHBP[3]+newHBP[4])==0) ind4=2;
if((newHBP[3]+newHBP[4])>0) ind4=1;
if((newHBP[3]+newHBP[4])>21) ind4=0;
610 ind5=3;
if((newHBP[5]+newHBP[6])==0) ind5=2;
if((newHBP[5]+newHBP[6])>0) ind5=1;
if((newHBP[5]+newHBP[6])>21) ind5=0;
611 if(ind1==3) ind2=ind3=ind4=ind5=3;
612 if(ind1==0 || ind2==0 || ind3==0 || ind4==0)
status|=2;
else if(ind1==1 || ind2==1 || ind3==1 || ind4==1)
status|=1;
613 htmlFile << state[ind1] << HBP[0] <<
" (1296)</td>" << std::endl;
614 htmlFile << state[ind2] << HBP[1] <<
"</td>" << std::endl;
615 htmlFile << state[ind3] << HBP[2] <<
"</td>" << std::endl;
616 htmlFile << state[ind5] << HBP[5]+HBP[6] <<
"</td>" << std::endl;
617 htmlFile << state[ind4] << HBP[3]+HBP[4] <<
"</td>" << std::endl;
619 htmlFile <<
"</tr><tr>" << std::endl;
620 htmlFile <<
"<td class=\"s1\" align=\"center\">HB-</td>" << std::endl;
621 ind1=3;
if(newHBM[0]==0) ind1=2;
if(newHBM[0]>0 && newHBM[0]<=12) ind1=1;
if(newHBM[0]>=12 && HBM[0]<1296) ind1=0;
622 ind2=3;
if(newHBM[1]==0) ind2=2;
if(newHBM[1]>0) ind2=1;
if(newHBM[1]>21) ind2=0;
623 ind3=3;
if(newHBM[2]==0) ind3=2;
if(newHBM[2]>0) ind3=1;
if(newHBM[2]>21) ind3=0;
624 ind4=3;
if((newHBM[3]+newHBM[4])==0) ind4=2;
if((newHBM[3]+newHBM[4])>0) ind4=1;
if((newHBM[3]+newHBM[4])>21) ind4=0;
625 ind5=3;
if((newHBM[5]+newHBM[6])==0) ind5=2;
if((newHBM[5]+newHBM[6])>0) ind5=1;
if((newHBM[5]+newHBM[6])>21) ind5=0;
626 if(ind1==3) ind2=ind3=ind4=ind5=3;
627 if(ind1==0 || ind2==0 || ind3==0 || ind4==0)
status|=2;
else if(ind1==1 || ind2==1 || ind3==1 || ind4==1)
status|=1;
628 htmlFile << state[ind1] << HBM[0] <<
" (1296)</td>" << std::endl;
629 htmlFile << state[ind2] << HBM[1] <<
"</td>" << std::endl;
630 htmlFile << state[ind3] << HBM[2] <<
"</td>" << std::endl;
631 htmlFile << state[ind5] << HBM[5]+HBM[6] <<
"</td>" << std::endl;
632 htmlFile << state[ind4] << HBM[3]+HBM[4] <<
"</td>" << std::endl;
634 htmlFile <<
"</tr><tr>" << std::endl;
635 htmlFile <<
"<td class=\"s1\" align=\"center\">HE+</td>" << std::endl;
636 ind1=3;
if(newHEP[0]==0) ind1=2;
if(newHEP[0]>0 && newHEP[0]<=12) ind1=1;
if(newHEP[0]>=12 && HEP[0]<1296) ind1=0;
637 ind2=3;
if(newHEP[1]==0) ind2=2;
if(newHEP[1]>0) ind2=1;
if(newHEP[1]>21) ind2=0;
638 ind3=3;
if(newHEP[2]==0) ind3=2;
if(newHEP[2]>0) ind3=1;
if(newHEP[2]>21) ind3=0;
639 ind4=3;
if((newHEP[3]+newHEP[4])==0) ind4=2;
if((newHEP[3]+newHEP[4])>0) ind4=1;
if((newHEP[3]+newHEP[4])>21) ind4=0;
640 ind5=3;
if((newHEP[5]+newHEP[6])==0) ind5=2;
if((newHEP[5]+newHEP[6])>0) ind5=1;
if((newHEP[5]+newHEP[6])>21) ind5=0;
641 if(ind1==3) ind2=ind3=ind4=ind5=3;
642 if(ind1==0 || ind2==0 || ind3==0 || ind4==0)
status|=2;
else if(ind1==1 || ind2==1 || ind3==1 || ind4==1)
status|=1;
643 htmlFile << state[ind1] << HEP[0] <<
" (1296)</td>" << std::endl;
644 htmlFile << state[ind2] << HEP[1] <<
"</td>" << std::endl;
645 htmlFile << state[ind3] << HEP[2] <<
"</td>" << std::endl;
646 htmlFile << state[ind5] << HEP[5]+HEP[6] <<
"</td>" << std::endl;
647 htmlFile << state[ind4] << HEP[3]+HEP[4] <<
"</td>" << std::endl;
649 htmlFile <<
"</tr><tr>" << std::endl;
650 htmlFile <<
"<td class=\"s1\" align=\"center\">HE-</td>" << std::endl;
651 ind1=3;
if(newHEM[0]==0) ind1=2;
if(newHEM[0]>0 && newHEM[0]<=12) ind1=1;
if(newHEM[0]>=12 && HEM[0]<1296) ind1=0;
652 ind2=3;
if(newHEM[1]==0) ind2=2;
if(newHEM[1]>0) ind2=1;
if(newHEM[1]>21) ind2=0;
653 ind3=3;
if(newHEM[2]==0) ind3=2;
if(newHEM[2]>0) ind3=1;
if(newHEM[2]>21) ind3=0;
654 ind4=3;
if((newHEM[3]+newHEM[4])==0) ind4=2;
if((newHEM[3]+newHEM[4])>0) ind4=1;
if((newHEM[3]+newHEM[4])>21) ind4=0;
655 ind5=3;
if((newHEM[5]+newHEM[6])==0) ind5=2;
if((newHEM[5]+newHEM[6])>0) ind5=1;
if((newHEM[5]+newHEM[6])>21) ind5=0;
656 if(ind1==3) ind2=ind3=ind4=ind5=3;
657 if(ind1==0 || ind2==0 || ind3==0 || ind4==0)
status|=2;
else if(ind1==1 || ind2==1 || ind3==1 || ind4==1)
status|=1;
658 htmlFile << state[ind1] << HEM[0] <<
" (1296)</td>" << std::endl;
659 htmlFile << state[ind2] << HEM[1] <<
"</td>" << std::endl;
660 htmlFile << state[ind3] << HEM[2] <<
"</td>" << std::endl;
661 htmlFile << state[ind5] << HEM[5]+HEM[6] <<
"</td>" << std::endl;
662 htmlFile << state[ind4] << HEM[3]+HEM[4] <<
"</td>" << std::endl;
664 htmlFile <<
"</tr><tr>" << std::endl;
665 htmlFile <<
"<td class=\"s1\" align=\"center\">HF+</td>" << std::endl;
666 ind1=3;
if(newHFP[0]==0) ind1=2;
if(newHFP[0]>0 && newHFP[0]<=12) ind1=1;
if(newHFP[0]>=12 && HFP[0]<864) ind1=0;
667 ind2=3;
if(newHFP[1]==0) ind2=2;
if(newHFP[1]>0) ind2=1;
if(newHFP[1]>21) ind2=0;
668 ind3=3;
if(newHFP[2]==0) ind3=2;
if(newHFP[2]>0) ind3=1;
if(newHFP[2]>21) ind3=0;
669 ind4=3;
if((newHFP[3]+newHFP[4])==0) ind4=2;
if((newHFP[3]+newHFP[4])>0) ind4=1;
if((newHFP[3]+newHFP[4])>21) ind4=0;
670 ind5=3;
if((newHFP[5]+newHFP[6])==0) ind5=2;
if((newHFP[5]+newHFP[6])>0) ind5=1;
if((newHFP[5]+newHFP[6])>21) ind5=0;
671 if(ind1==3) ind2=ind3=ind4=ind5=3;
672 if(ind1==0 || ind2==0 || ind3==0 || ind4==0)
status|=2;
else if(ind1==1 || ind2==1 || ind3==1 || ind4==1)
status|=1;
673 htmlFile << state[ind1] << HFP[0] <<
" (864)</td>" << std::endl;
674 htmlFile << state[ind2] << HFP[1] <<
"</td>" << std::endl;
675 htmlFile << state[ind3] << HFP[2] <<
"</td>" << std::endl;
676 htmlFile << state[ind5] << HFP[5]+HFP[6] <<
"</td>" << std::endl;
677 htmlFile << state[ind4] << HFP[3]+HFP[4] <<
"</td>" << std::endl;
679 htmlFile <<
"</tr><tr>" << std::endl;
680 htmlFile <<
"<td class=\"s1\" align=\"center\">HF-</td>" << std::endl;
681 ind1=3;
if(newHFM[0]==0) ind1=2;
if(newHFM[0]>0 && newHFM[0]<=12) ind1=1;
if(newHFM[0]>=12 && HFM[0]<864) ind1=0;
682 ind2=3;
if(newHFM[1]==0) ind2=2;
if(newHFM[1]>0) ind2=1;
if(newHFM[1]>21) ind2=0;
683 ind3=3;
if(newHFM[2]==0) ind3=2;
if(newHFM[2]>0) ind3=1;
if(newHFM[2]>21) ind3=0;
684 ind4=3;
if((HFM[3]+HFM[4])==0) ind4=2;
if((HFM[3]+HFM[4])>0) ind4=1;
if((HFM[3]+HFM[4])>21) ind4=0;
685 ind5=3;
if((HFM[5]+HFM[6])==0) ind5=2;
if((HFM[5]+HFM[6])>0) ind5=1;
if((HFM[5]+HFM[6])>21) ind5=0;
686 if(ind1==3) ind2=ind3=ind4=ind5=3;
687 if(ind1==0 || ind2==0 || ind3==0 || ind4==0)
status|=2;
else if(ind1==1 || ind2==1 || ind3==1 || ind4==1)
status|=1;
688 htmlFile << state[ind1] << HFM[0] <<
" (864)</td>" << std::endl;
689 htmlFile << state[ind2] << HFM[1] <<
"</td>" << std::endl;
690 htmlFile << state[ind3] << HFM[2] <<
"</td>" << std::endl;
691 htmlFile << state[ind5] << HFM[5]+HFM[6] <<
"</td>" << std::endl;
692 htmlFile << state[ind4] << HFM[3]+HFM[4] <<
"</td>" << std::endl;
694 htmlFile <<
"</tr><tr>" << std::endl;
695 htmlFile <<
"<td class=\"s1\" align=\"center\">HO</td>" << std::endl;
696 ind1=3;
if(newHO[0]==0) ind1=2;
if(newHO[0]>0 && newHO[0]<=12) ind1=1;
if(newHO[0]>=12 && HO[0]<2160) ind1=0;
697 ind2=3;
if(newHO[1]==0) ind2=2;
if(newHO[1]>0) ind2=1;
if(newHO[1]>21) ind2=0;
698 ind3=3;
if(newHO[2]==0) ind3=2;
if(newHO[2]>0) ind3=1;
if(newHO[2]>21) ind3=0;
699 ind4=3;
if((newHO[3]+newHO[4])==0) ind4=2;
if((newHO[3]+newHO[4])>0) ind4=1;
if((newHO[3]+newHO[4])>21) ind4=0;
700 ind5=3;
if((newHO[5]+newHO[6])==0) ind5=2;
if((newHO[5]+newHO[6])>0) ind5=1;
if((newHO[5]+newHO[6])>21) ind5=0;
701 if(ind1==3) ind2=ind3=ind4=ind5=3;
702 if(ind1==0 || ind2==0 || ind3==0 || ind4==0)
status|=2;
else if(ind1==1 || ind2==1 || ind3==1 || ind4==1)
status|=1;
704 htmlFile << state[ind1] << HO[0] <<
" (2160)</td>" << std::endl;
705 htmlFile << state[ind2] << HO[1] <<
"</td>" << std::endl;
706 htmlFile << state[ind3] << HO[2] <<
"</td>" << std::endl;
707 htmlFile << state[ind5] << HO[5]+HO[6] <<
"</td>" << std::endl;
708 htmlFile << state[ind4] << HO[3]+HO[4] <<
"</td>" << std::endl;
710 htmlFile <<
"</tr></table>" << std::endl;
711 htmlFile <<
"<hr>" << std::endl;
713 if((MissingCnt+UnstableCnt+UnstableLEDCnt+BadTimingCnt)>0){
714 htmlFile <<
"<table width=100% border=1><tr>" << std::endl;
715 if(MissingCnt>0) htmlFile <<
"<td><a href=\"" <<
"Missing.html" <<
"\">list of missing channels</a></td>";
716 if(UnstableCnt>0) htmlFile <<
"<td><a href=\"" <<
"Unstable.html" <<
"\">list of unstable channels</a></td>";
717 if(UnstableLEDCnt>0)htmlFile <<
"<td><a href=\"" <<
"UnstableLED.html" <<
"\">list of low LED signal channels</a></td>";
718 if(BadTimingCnt>0)htmlFile <<
"<td><a href=\"" <<
"BadTiming.html" <<
"\">list of Bad Timing channels</a></td>";
719 htmlFile <<
"</tr></table>" << std::endl;
724 htmlFile <<
"<h2 align=\"center\">Summary LED plots</h2>" << std::endl;
725 htmlFile <<
"<table width=100% border=0><tr>" << std::endl;
726 htmlFile <<
"<tr align=\"left\">" << std::endl;
727 Time2Dhbhehf->SetMaximum(6);
728 Time2Dho->SetMaximum(6);
729 Time2Dhbhehf->SetNdivisions(36,
"Y");
730 Time2Dho->SetNdivisions(36,
"Y");
731 Time2Dhbhehf->SetStats(0);
732 Time2Dho->SetStats(0);
733 Time2Dhbhehf->Draw(
"COLZ"); can->SaveAs((htmlDir +
"led_timing_hbhehf.gif").c_str());
734 Time2Dho->Draw(
"COLZ"); can->SaveAs((htmlDir +
"led_timing_ho.gif").c_str());
735 htmlFile <<
"<td align=\"center\"><img src=\"led_timing_hbhehf.gif\" alt=\"led timing distribution\"> </td>" << std::endl;
736 htmlFile <<
"<td align=\"center\"><img src=\"led_timing_ho.gif\" alt=\"led timing distribution\"> </td>" << std::endl;
737 htmlFile <<
"</tr>" << std::endl;
739 htmlFile <<
"<tr align=\"left\">" << std::endl;
740 Energy2Dhbhehf->SetStats(0);
741 Energy2Dho->SetStats(0);
742 Energy2Dhbhehf->SetNdivisions(36,
"Y");
743 Energy2Dho->SetNdivisions(36,
"Y");
744 Energy2Dhbhehf->Draw(
"COLZ"); can->SaveAs((htmlDir +
"led_energy_hbhehf.gif").c_str());
745 Energy2Dho->Draw(
"COLZ"); can->SaveAs((htmlDir +
"led_energy_ho.gif").c_str());
746 htmlFile <<
"<td align=\"center\"><img src=\"led_energy_hbhehf.gif\" alt=\"led energy distribution\"> </td>" << std::endl;
747 htmlFile <<
"<td align=\"center\"><img src=\"led_energy_ho.gif\" alt=\"led energy distribution\"> </td>" << std::endl;
748 htmlFile <<
"</tr>" << std::endl;
750 can->SetGridy(
false);
751 htmlFile <<
"<tr align=\"left\">" << std::endl;
752 Energy->Draw(); can->SaveAs((htmlDir +
"led_energy_distribution.gif").c_str());
753 EnergyRMS->Draw(); can->SaveAs((htmlDir +
"led_energy_rms_distribution.gif").c_str());
754 htmlFile <<
"<td align=\"center\"><img src=\"led_energy_distribution.gif\" alt=\"led energy distribution\"> </td>" << std::endl;
755 htmlFile <<
"<td align=\"center\"><img src=\"led_energy_rms_distribution.gif\" alt=\"led energy rms distribution\"> </td>" << std::endl;
756 htmlFile <<
"</tr>" << std::endl;
757 htmlFile <<
"<tr align=\"left\">" << std::endl;
758 Timing->Draw(); can->SaveAs((htmlDir +
"led_timing_distribution.gif").c_str());
759 TimingRMS->Draw(); can->SaveAs((htmlDir +
"led_timing_rms_distribution.gif").c_str());
760 htmlFile <<
"<td align=\"center\"><img src=\"led_timing_distribution.gif\" alt=\"led timing distribution\"> </td>" << std::endl;
761 htmlFile <<
"<td align=\"center\"><img src=\"led_timing_rms_distribution.gif\" alt=\"led timing rms distribution\"> </td>" << std::endl;
762 htmlFile <<
"</tr>" << std::endl;
763 htmlFile <<
"<tr align=\"left\">" << std::endl;
764 EnergyHF->Draw(); can->SaveAs((htmlDir +
"led_energyhf_distribution.gif").c_str());
765 EnergyRMSHF->Draw(); can->SaveAs((htmlDir +
"led_energyhf_rms_distribution.gif").c_str());
766 htmlFile <<
"<td align=\"center\"><img src=\"led_energyhf_distribution.gif\" alt=\"hf led energy distribution\"> </td>" << std::endl;
767 htmlFile <<
"<td align=\"center\"><img src=\"led_energyhf_rms_distribution.gif\" alt=\"hf led energy rms distribution\"> </td>" << std::endl;
768 htmlFile <<
"</tr>" << std::endl;
769 htmlFile <<
"<tr align=\"left\">" << std::endl;
770 TimingHF->Draw(); can->SaveAs((htmlDir +
"led_timinghf_distribution.gif").c_str());
771 TimingRMSHF->Draw(); can->SaveAs((htmlDir +
"led_timinghf_rms_distribution.gif").c_str());
772 htmlFile <<
"<td align=\"center\"><img src=\"led_timinghf_distribution.gif\" alt=\"hf led timing distribution\"> </td>" << std::endl;
773 htmlFile <<
"<td align=\"center\"><img src=\"led_timinghf_rms_distribution.gif\" alt=\"hf led timing rms distribution\"> </td>" << std::endl;
774 htmlFile <<
"</tr>" << std::endl;
775 htmlFile <<
"</table>" << std::endl;
778 htmlFile <<
"<h2 align=\"center\">Stability LED plots (Reference run "<<ref_run<<
")</h2>" << std::endl;
779 htmlFile <<
"<table width=100% border=0><tr>" << std::endl;
780 htmlFile <<
"<tr align=\"left\">" << std::endl;
781 HBPphi->GetXaxis()->SetNdivisions(418,kFALSE);
782 HBMphi->GetXaxis()->SetNdivisions(418,kFALSE);
783 HEPphi->GetXaxis()->SetNdivisions(418,kFALSE);
784 HEMphi->GetXaxis()->SetNdivisions(418,kFALSE);
786 HBPphi->SetMarkerColor(kRed);
787 HBPphi->SetMarkerStyle(23);
788 HBPphi->SetXTitle(
"HPD Index = RBX*4+RM");
789 HBMphi->SetMarkerColor(kRed);
790 HBMphi->SetMarkerStyle(23);
791 HBMphi->SetXTitle(
"HPD Index = RBX*4+RM");
792 HBPphi->Draw(); can->SaveAs((htmlDir +
"led_hbp_distribution.gif").c_str());
793 HBMphi->Draw(); can->SaveAs((htmlDir +
"led_hbm_distribution.gif").c_str());
794 htmlFile <<
"<td align=\"center\"><img src=\"led_hbp_distribution.gif\" alt=\"led hbp distribution\"> </td>" << std::endl;
795 htmlFile <<
"<td align=\"center\"><img src=\"led_hbm_distribution.gif\" alt=\"led hbm distribution\"> </td>" << std::endl;
796 htmlFile <<
"</tr>" << std::endl;
798 htmlFile <<
"<tr align=\"left\">" << std::endl;
799 HEPphi->SetMarkerColor(kRed);
800 HEPphi->SetMarkerStyle(23);
801 HEPphi->SetXTitle(
"HPD Index = RBX*4+RM");
802 HEMphi->SetMarkerColor(kRed);
803 HEMphi->SetMarkerStyle(23);
804 HEMphi->SetXTitle(
"HPD Index = RBX*4+RM");
805 HEPphi->Draw(); can->SaveAs((htmlDir +
"led_hep_distribution.gif").c_str());
806 HEMphi->Draw(); can->SaveAs((htmlDir +
"led_hem_distribution.gif").c_str());
807 htmlFile <<
"<td align=\"center\"><img src=\"led_hep_distribution.gif\" alt=\"led hep distribution\"> </td>" << std::endl;
808 htmlFile <<
"<td align=\"center\"><img src=\"led_hem_distribution.gif\" alt=\"led hem distribution\"> </td>" << std::endl;
809 htmlFile <<
"</tr>" << std::endl;
811 htmlFile <<
"<tr align=\"left\">" << std::endl;
812 HFPphi->SetMarkerColor(kRed);
813 HFPphi->SetMarkerStyle(23);
814 HFPphi->SetXTitle(
"RM Index = RoBox*3+RM");
815 HFMphi->SetMarkerColor(kRed);
816 HFMphi->SetMarkerStyle(23);
817 HFPphi->GetXaxis()->SetNdivisions(312,kFALSE);
818 HFMphi->GetXaxis()->SetNdivisions(312,kFALSE);
820 HFMphi->SetXTitle(
"RM Index = RoBox*3+RM");
821 HFPphi->Draw(); can->SaveAs((htmlDir +
"led_hfp_distribution.gif").c_str());
822 HFMphi->Draw(); can->SaveAs((htmlDir +
"led_hfm_distribution.gif").c_str());
823 htmlFile <<
"<td align=\"center\"><img src=\"led_hfp_distribution.gif\" alt=\"led hfp distribution\"> </td>" << std::endl;
824 htmlFile <<
"<td align=\"center\"><img src=\"led_hfm_distribution.gif\" alt=\"led hfm distribution\"> </td>" << std::endl;
825 htmlFile <<
"</tr>" << std::endl;
827 htmlFile <<
"<tr align=\"left\">" << std::endl;
828 HO1Pphi->SetMarkerColor(kRed);
829 HO1Pphi->SetMarkerStyle(23);
830 HO1Pphi->SetXTitle(
"HPD Index = RBX*4+RM");
831 HO1Mphi->SetMarkerColor(kRed);
832 HO1Mphi->SetMarkerStyle(23);
833 HO1Mphi->GetXaxis()->SetNdivisions(412,kFALSE);
834 HO1Pphi->GetXaxis()->SetNdivisions(412,kFALSE);
836 HO1Mphi->SetXTitle(
"HPD Index = RBX*4+RM");
837 HO1Pphi->Draw(); can->SaveAs((htmlDir +
"led_ho1p_distribution.gif").c_str());
838 HO1Mphi->Draw(); can->SaveAs((htmlDir +
"led_ho1m_distribution.gif").c_str());
839 htmlFile <<
"<td align=\"center\"><img src=\"led_ho1p_distribution.gif\" alt=\"led ho1p distribution\"> </td>" << std::endl;
840 htmlFile <<
"<td align=\"center\"><img src=\"led_ho1m_distribution.gif\" alt=\"led ho1m distribution\"> </td>" << std::endl;
841 htmlFile <<
"</tr>" << std::endl;
843 htmlFile <<
"<tr align=\"left\">" << std::endl;
844 HO2Pphi->SetMarkerColor(kRed);
845 HO2Pphi->SetMarkerStyle(23);
846 HO2Pphi->SetXTitle(
"HPD Index = RBX*4+RM");
847 HO2Mphi->SetMarkerColor(kRed);
848 HO2Mphi->SetMarkerStyle(23);
849 HO2Mphi->GetXaxis()->SetNdivisions(412,kFALSE);
850 HO2Pphi->GetXaxis()->SetNdivisions(412,kFALSE);
852 HO2Mphi->SetXTitle(
"HPD Index = RBX*4+RM");
853 HO2Pphi->Draw(); can->SaveAs((htmlDir +
"led_ho2p_distribution.gif").c_str());
854 HO2Mphi->Draw(); can->SaveAs((htmlDir +
"led_ho2m_distribution.gif").c_str());
855 htmlFile <<
"<td align=\"center\"><img src=\"led_ho2p_distribution.gif\" alt=\"led ho2p distribution\"> </td>" << std::endl;
856 htmlFile <<
"<td align=\"center\"><img src=\"led_ho2m_distribution.gif\" alt=\"led ho2m distribution\"> </td>" << std::endl;
857 htmlFile <<
"</tr>" << std::endl;
859 htmlFile <<
"<tr align=\"left\">" << std::endl;
860 HO0phi->SetMarkerColor(kRed);
861 HO0phi->SetMarkerStyle(23);
862 HO0phi->SetXTitle(
"HPD Index = RBX*4+RM");
863 HO0phi->GetXaxis()->SetNdivisions(412,kFALSE);
864 HO0phi->Draw(); can->SaveAs((htmlDir +
"led_ho0_distribution.gif").c_str());
865 htmlFile <<
"<td align=\"center\"><img src=\"led_ho0_distribution.gif\" alt=\"led ho0 distribution\"> </td>" << std::endl;
866 htmlFile <<
"</tr>" << std::endl;
868 htmlFile <<
"</table>" << std::endl;
870 htmlFile <<
"</body> " << std::endl;
871 htmlFile <<
"</html> " << std::endl;
TH2F * ChannelStatusUnstableChannels[4]
static void printTableTail(ofstream &file)
TH2F * ChannelStatusTimeRMS[4]
std::vector< std::string > HcalEtaPhiHistNames()
HcalElectronicsMap generateHcalElectronicsMap()
TH2F * ChannelStatusLEDMean[4]
TH2F * ChannelsLEDEnergy[4]
TH2F * ChannelStatusMissingChannels[4]
MonitorElement * get(const std::string &path) const
get ME from full pathname (e.g. "my/long/dir/my_histo")
TH2F * ChannelsLEDEnergyRef[4]
double get_channel_status(std::string subdet, int eta, int phi, int depth, int type)
std::string valueString(void) const
const HcalFrontEndId getHcalFrontEndId(const DetId &)
static void printTableLine(ofstream &file, int ind, HcalDetId &detid, HcalFrontEndId &lmap_entry, HcalElectronicsId &emap_entry, std::string comment="")
std::map< HcalDetId, unsigned int > badstatusmap
HcalLogicalMap * logicalMap_
TH2F * ChannelStatusLEDRMS[4]
static void printTableHeader(ofstream &file, std::string header)
TH2F * ChannelStatusTimeMean[4]
TH2F * ChannelStatusUnstableLEDsignal[4]
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