35 if (prefixME_.substr(prefixME_.size()-1,prefixME_.size())!=
"/")
36 prefixME_.append(
"/");
57 if (
debug_>2)
std::cout <<
"\tHcalDetDiagPedestalClient::analyze()"<<std::endl;
63 if (
debug_>2)
std::cout <<
"\t\tHcalDetDiagPedestalClient::calculateProblems()"<<std::endl;
66 int etabins=0, phibins=0, zside=0;
67 double problemvalue=0;
92 TH2F* PedestalsMissing[4];
93 TH2F* PedestalsUnstable[4];
94 TH2F* PedestalsBadMean[4];
95 TH2F* PedestalsBadRMS[4];
100 PedestalsMissing[
i]=0;
101 PedestalsUnstable[
i]=0;
102 PedestalsBadMean[
i]=0;
103 PedestalsBadRMS[
i]=0;
104 std::string
s=
subdir_+name[
i]+
" Problem Missing Channels";
106 if (me!=0) PedestalsMissing[
i]=HcalUtilsClient::getHisto<TH2F*>(me,
cloneME_, PedestalsMissing[
i],
debug_);
110 std::cout <<
"<HcalDetDiagPedestalClient::calcluateProblems> could not get histogram '"<<s<<
"'"<<std::endl;
113 s=
subdir_+name[
i]+
" Problem Unstable Channels";
115 if (me!=0) PedestalsUnstable[
i]=HcalUtilsClient::getHisto<TH2F*>(me,
cloneME_, PedestalsUnstable[
i],
debug_);
116 else if (
debug_>0)
std::cout <<
"<HcalDetDiagPedestalClient::calculateProblems> could not get histogram '"<<s<<
"'"<<std::endl;
117 s=
subdir_+name[
i]+
" Problem Bad Pedestal Value";
119 if (me!=0) PedestalsBadMean[
i]=HcalUtilsClient::getHisto<TH2F*>(me,
cloneME_, PedestalsBadMean[
i],
debug_);
120 else if (
debug_>0)
std::cout <<
"<HcalDetDiagPedestalClient::calculateProblems> could not get histogram '"<<s<<
"'"<<std::endl;
121 s=
subdir_+name[
i]+
" Problem Bad Rms Value";
123 if (me!=0) PedestalsBadRMS[
i]=HcalUtilsClient::getHisto<TH2F*>(me,
cloneME_, PedestalsBadRMS[
i],
debug_);
124 else if (
debug_>0)
std::cout <<
"<HcalDetDiagPedestalClient::calculateProblems> could not get histogram '"<<s<<
"'"<<std::endl;
137 if (PedestalsMissing[d]!=0) totalevents = PedestalsMissing[d]->GetBinContent(0);
138 else if (PedestalsUnstable[d]!=0) totalevents = PedestalsUnstable[d]->GetBinContent(0);
139 else if (PedestalsBadMean[d]!=0) totalevents = PedestalsBadMean[d]->GetBinContent(0);
140 else if (PedestalsBadRMS[d]!=0) totalevents = PedestalsBadRMS[d]->GetBinContent(0);
149 if (ieta==-9999)
continue;
153 if (PedestalsMissing[d]!=0) problemvalue += PedestalsMissing[d]->GetBinContent(
eta+1,
phi+1)*1./totalevents;
154 if (PedestalsUnstable[d]!=0) problemvalue += PedestalsUnstable[d]->GetBinContent(
eta+1,
phi+1)*1./totalevents;
155 if (PedestalsBadMean[d]!=0) problemvalue += PedestalsBadMean[d]->GetBinContent(
eta+1,
phi+1)*1./totalevents;
156 if (PedestalsBadRMS[d]!=0) problemvalue += PedestalsBadRMS[d]->GetBinContent(
eta+1,
phi+1)*1./totalevents;
158 if (problemvalue==0)
continue;
160 problemvalue =
std::min(1.,problemvalue);
164 ieta<0 ? zside = -1 : zside = 1;
188 if (
debug_>0)
std::cout <<
"<HcalDetDiagPedestalClient::analyze> ProblemCells histogram does not exist!"<<std::endl;
214 std::cout <<
"<HcalDetDiagPedestalClient::beginJob()> Displaying dqmStore directory structure:"<<std::endl;
225 if (
debug_>0)
std::cout <<
"<HcalDetDiagPedestalClient::beginRun> dqmStore does not exist!"<<std::endl;
233 " Problem DetDiagPedestal Rate for all HCAL;ieta;iphi",
259 if (
debug_>1)
std::cout <<
"<HcalDetDiagPedestalClient::hasErrors_Temp> ProblemCells histogram does not exist!"<<std::endl;
265 for (
int depth=0;depth<4; ++depth)
269 for (
int hist_eta=0;hist_eta<etabins;++hist_eta)
271 for (
int hist_phi=0; hist_phi<phibins;++hist_phi)
274 if (ieta==-9999)
continue;
284 if (problemcount>0)
return true;
305 file <<
"</html><html xmlns=\"http://www.w3.org/1999/xhtml\">"<< std::endl;
306 file <<
"<head>"<< std::endl;
307 file <<
"<meta http-equiv=\"Content-Type\" content=\"text/html\"/>"<< std::endl;
308 file <<
"<title>"<< header <<
"</title>"<< std::endl;
309 file <<
"<style type=\"text/css\">"<< std::endl;
310 file <<
" body,td{ background-color: #FFFFCC; font-family: arial, arial ce, helvetica; font-size: 12px; }"<< std::endl;
311 file <<
" td.s0 { font-family: arial, arial ce, helvetica; }"<< std::endl;
312 file <<
" td.s1 { font-family: arial, arial ce, helvetica; font-weight: bold; background-color: #FFC169; text-align: center;}"<< std::endl;
313 file <<
" td.s2 { font-family: arial, arial ce, helvetica; background-color: #eeeeee; }"<< std::endl;
314 file <<
" td.s3 { font-family: arial, arial ce, helvetica; background-color: #d0d0d0; }"<< std::endl;
315 file <<
" td.s4 { font-family: arial, arial ce, helvetica; background-color: #FFC169; }"<< std::endl;
316 file <<
"</style>"<< std::endl;
317 file <<
"<body>"<< std::endl;
318 file <<
"<table>"<< std::endl;
324 file <<
"<td class=\"s4\" align=\"center\">#</td>" << std::endl;
325 file <<
"<td class=\"s1\" align=\"center\">ETA</td>" << std::endl;
326 file <<
"<td class=\"s1\" align=\"center\">PHI</td>" << std::endl;
327 file <<
"<td class=\"s1\" align=\"center\">DEPTH</td>"<< std::endl;
328 file <<
"<td class=\"s1\" align=\"center\">RBX</td>" << std::endl;
329 file <<
"<td class=\"s1\" align=\"center\">RM</td>" << std::endl;
330 file <<
"<td class=\"s1\" align=\"center\">PIXEL</td>" << std::endl;
331 file <<
"<td class=\"s1\" align=\"center\">RM_FIBER</td>" << std::endl;
332 file <<
"<td class=\"s1\" align=\"center\">FIBER_CH</td>" << std::endl;
333 file <<
"<td class=\"s1\" align=\"center\">QIE</td>" << std::endl;
334 file <<
"<td class=\"s1\" align=\"center\">ADC</td>" << std::endl;
335 file <<
"<td class=\"s1\" align=\"center\">CRATE</td>" << std::endl;
336 file <<
"<td class=\"s1\" align=\"center\">DCC</td>" << std::endl;
337 file <<
"<td class=\"s1\" align=\"center\">SPIGOT</td>" << std::endl;
338 file <<
"<td class=\"s1\" align=\"center\">HTR_FIBER</td>" << std::endl;
339 file <<
"<td class=\"s1\" align=\"center\">HTR_SLOT</td>" << std::endl;
340 file <<
"<td class=\"s1\" align=\"center\">HTR_FPGA</td>" << std::endl;
341 if(
comment[0]!=0) file <<
"<td class=\"s1\" align=\"center\">Comment</td>" << std::endl;
342 file <<
"</tr>" << std::endl;
344 std::string raw_class;
345 file <<
"<tr>"<< std::endl;
347 raw_class=
"<td class=\"s2\" align=\"center\">";
349 raw_class=
"<td class=\"s3\" align=\"center\">";
351 file <<
"<td class=\"s4\" align=\"center\">" << ind+1 <<
"</td>"<< std::endl;
352 file << raw_class<< detid.
ieta()<<
"</td>"<< std::endl;
353 file << raw_class<< detid.
iphi()<<
"</td>"<< std::endl;
354 file << raw_class<< detid.
depth() <<
"</td>"<< std::endl;
355 file << raw_class<< lmap_entry.
rbx()<<
"</td>"<< std::endl;
356 file << raw_class<< lmap_entry.
rm() <<
"</td>"<< std::endl;
357 file << raw_class<< lmap_entry.
pixel()<<
"</td>"<< std::endl;
358 file << raw_class<< lmap_entry.
rmFiber() <<
"</td>"<< std::endl;
359 file << raw_class<< lmap_entry.
fiberChannel()<<
"</td>"<< std::endl;
360 file << raw_class<< lmap_entry.
qieCard() <<
"</td>"<< std::endl;
361 file << raw_class<< lmap_entry.
adc()<<
"</td>"<< std::endl;
363 file << raw_class<< emap_entry.
dccid()<<
"</td>"<< std::endl;
364 file << raw_class<< emap_entry.
spigot()<<
"</td>"<< std::endl;
365 file << raw_class<< emap_entry.
fiberIndex()<<
"</td>"<< std::endl;
366 file << raw_class<< emap_entry.
htrSlot()<<
"</td>"<< std::endl;
367 file << raw_class<< emap_entry.
htrTopBottom()<<
"</td>"<< std::endl;
368 if(
comment[0]!=0) file << raw_class<<
comment<<
"</td>"<< std::endl;
371 file <<
"</table>"<< std::endl;
372 file <<
"</body>"<< std::endl;
373 file <<
"</html>"<< std::endl;
377 std::string
s=
subdir_+
"HcalDetDiagPedestalMonitor Event Number";
382 sscanf((s.substr(2,s.length()-2)).c_str(),
"%d", &
n);
384 if(n<100)
return false;
389 int MissingCnt=0,UnstableCnt=0,BadCnt=0;
390 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};
391 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};
392 int newHFP[4]={0,0,0,0},newHFM[4]={0,0,0,0},newHO[4] ={0,0,0,0};
393 if (
debug_>0)
std::cout <<
"<HcalDetDiagPedestalClient::htmlOutput> Preparing html output ..." << std::endl;
399 TH2F *Missing_val[4],*Unstable_val[4],*BadPed_val[4],*BadRMS_val[4];
403 TH1F *PedestalsAve4HB=0;
404 TH1F *PedestalsAve4HE=0;
405 TH1F *PedestalsAve4HO=0;
406 TH1F *PedestalsAve4HF=0;
407 TH1F *PedestalsAve4Simp=0;
409 TH1F *PedestalsAve4HBref=0;
410 TH1F *PedestalsAve4HEref=0;
411 TH1F *PedestalsAve4HOref=0;
412 TH1F *PedestalsAve4HFref=0;
413 TH1F *PedestalsRmsHB=0;
414 TH1F *PedestalsRmsHE=0;
415 TH1F *PedestalsRmsHO=0;
416 TH1F *PedestalsRmsHF=0;
417 TH1F *PedestalsRmsSimp=0;
419 TH1F *PedestalsRmsHBref=0;
420 TH1F *PedestalsRmsHEref=0;
421 TH1F *PedestalsRmsHOref=0;
422 TH1F *PedestalsRmsHFref=0;
424 TH2F *Pedestals2DRmsHBHEHF=0;
425 TH2F *Pedestals2DRmsHO=0;
426 TH2F *Pedestals2DHBHEHF=0;
427 TH2F *Pedestals2DHO=0;
428 TH2F *Pedestals2DErrorHBHEHF=0;
429 TH2F *Pedestals2DErrorHO=0;
431 std::string
s=
subdir_+
"Summary Plots/HB Pedestal Distribution (average over 4 caps)"; me=
dqmStore_->
get(s.c_str());
432 if(me!=0) PedestalsAve4HB=HcalUtilsClient::getHisto<TH1F*>(me,
cloneME_, PedestalsAve4HB,
debug_);
else return;
433 s=
subdir_+
"Summary Plots/HE Pedestal Distribution (average over 4 caps)"; me=
dqmStore_->
get(s.c_str());
434 if(me!=0) PedestalsAve4HE=HcalUtilsClient::getHisto<TH1F*>(me,
cloneME_, PedestalsAve4HE,
debug_);
else return;
435 s=
subdir_+
"Summary Plots/HO Pedestal Distribution (average over 4 caps)"; me=
dqmStore_->
get(s.c_str());
436 if(me!=0) PedestalsAve4HO=HcalUtilsClient::getHisto<TH1F*>(me,
cloneME_, PedestalsAve4HO,
debug_);
else return;
437 s=
subdir_+
"Summary Plots/HF Pedestal Distribution (average over 4 caps)"; me=
dqmStore_->
get(s.c_str());
438 if(me!=0) PedestalsAve4HF=HcalUtilsClient::getHisto<TH1F*>(me,
cloneME_, PedestalsAve4HF,
debug_);
else return;
439 s=
subdir_+
"Summary Plots/SIPM Pedestal Distribution (average over 4 caps)"; me=
dqmStore_->
get(s.c_str());
440 if(me!=0) PedestalsAve4Simp=HcalUtilsClient::getHisto<TH1F*>(me,
cloneME_, PedestalsAve4Simp,
debug_);
else return;
442 s=
subdir_+
"Summary Plots/HB Pedestal-Reference Distribution (average over 4 caps)"; me=
dqmStore_->
get(s.c_str());
443 if(me!=0) PedestalsAve4HBref=HcalUtilsClient::getHisto<TH1F*>(me,
cloneME_, PedestalsAve4HBref,
debug_);
else return;
444 s=
subdir_+
"Summary Plots/HE Pedestal-Reference Distribution (average over 4 caps)"; me=
dqmStore_->
get(s.c_str());
445 if(me!=0) PedestalsAve4HEref=HcalUtilsClient::getHisto<TH1F*>(me,
cloneME_, PedestalsAve4HEref,
debug_);
else return;
446 s=
subdir_+
"Summary Plots/HO Pedestal-Reference Distribution (average over 4 caps)"; me=
dqmStore_->
get(s.c_str());
447 if(me!=0) PedestalsAve4HOref=HcalUtilsClient::getHisto<TH1F*>(me,
cloneME_, PedestalsAve4HOref,
debug_);
else return;
448 s=
subdir_+
"Summary Plots/HF Pedestal-Reference Distribution (average over 4 caps)"; me=
dqmStore_->
get(s.c_str());
449 if(me!=0) PedestalsAve4HFref=HcalUtilsClient::getHisto<TH1F*>(me,
cloneME_, PedestalsAve4HFref,
debug_);
else return;
451 s=
subdir_+
"Summary Plots/HB Pedestal RMS Distribution (individual cap)"; me=
dqmStore_->
get(s.c_str());
452 if(me!=0) PedestalsRmsHB=HcalUtilsClient::getHisto<TH1F*>(me,
cloneME_, PedestalsRmsHB,
debug_);
else return;
453 s=
subdir_+
"Summary Plots/HE Pedestal RMS Distribution (individual cap)"; me=
dqmStore_->
get(s.c_str());
454 if(me!=0) PedestalsRmsHE=HcalUtilsClient::getHisto<TH1F*>(me,
cloneME_, PedestalsRmsHE,
debug_);
else return;
455 s=
subdir_+
"Summary Plots/HO Pedestal RMS Distribution (individual cap)"; me=
dqmStore_->
get(s.c_str());
456 if(me!=0) PedestalsRmsHO=HcalUtilsClient::getHisto<TH1F*>(me,
cloneME_, PedestalsRmsHO,
debug_);
else return;
457 s=
subdir_+
"Summary Plots/HF Pedestal RMS Distribution (individual cap)"; me=
dqmStore_->
get(s.c_str());
458 if(me!=0) PedestalsRmsHF=HcalUtilsClient::getHisto<TH1F*>(me,
cloneME_, PedestalsRmsHF,
debug_);
else return;
459 s=
subdir_+
"Summary Plots/SIPM Pedestal RMS Distribution (individual cap)"; me=
dqmStore_->
get(s.c_str());
460 if(me!=0) PedestalsRmsSimp=HcalUtilsClient::getHisto<TH1F*>(me,
cloneME_, PedestalsRmsSimp,
debug_);
else return;
462 s=
subdir_+
"Summary Plots/HB Pedestal_rms-Reference_rms Distribution"; me=
dqmStore_->
get(s.c_str());
463 if(me!=0) PedestalsRmsHBref=HcalUtilsClient::getHisto<TH1F*>(me,
cloneME_, PedestalsRmsHBref,
debug_);
else return;
464 s=
subdir_+
"Summary Plots/HE Pedestal_rms-Reference_rms Distribution"; me=
dqmStore_->
get(s.c_str());
465 if(me!=0) PedestalsRmsHEref=HcalUtilsClient::getHisto<TH1F*>(me,
cloneME_, PedestalsRmsHEref,
debug_);
else return;
466 s=
subdir_+
"Summary Plots/HO Pedestal_rms-Reference_rms Distribution"; me=
dqmStore_->
get(s.c_str());
467 if(me!=0) PedestalsRmsHOref=HcalUtilsClient::getHisto<TH1F*>(me,
cloneME_, PedestalsRmsHOref,
debug_);
else return;
468 s=
subdir_+
"Summary Plots/HF Pedestal_rms-Reference_rms Distribution"; me=
dqmStore_->
get(s.c_str());
469 if(me!=0) PedestalsRmsHFref=HcalUtilsClient::getHisto<TH1F*>(me,
cloneME_, PedestalsRmsHFref,
debug_);
else return;
472 if(me!=0) Pedestals2DHBHEHF=HcalUtilsClient::getHisto<TH2F*>(me,
cloneME_, Pedestals2DHBHEHF,
debug_);
else return;
474 if(me!=0) Pedestals2DHO=HcalUtilsClient::getHisto<TH2F*>(me,
cloneME_, Pedestals2DHO,
debug_);
else return;
476 if(me!=0) Pedestals2DRmsHBHEHF=HcalUtilsClient::getHisto<TH2F*>(me,
cloneME_, Pedestals2DRmsHBHEHF,
debug_);
else return;
478 if(me!=0) Pedestals2DRmsHO=HcalUtilsClient::getHisto<TH2F*>(me,
cloneME_, Pedestals2DRmsHO,
debug_);
else return;
480 if(me!=0) Pedestals2DErrorHBHEHF=HcalUtilsClient::getHisto<TH2F*>(me,
cloneME_, Pedestals2DErrorHBHEHF,
debug_);
else return;
482 if(me!=0) Pedestals2DErrorHO=HcalUtilsClient::getHisto<TH2F*>(me,
cloneME_, Pedestals2DErrorHO,
debug_);
else return;
486 for(
int i=0;
i<4;++
i){
487 Missing_val[
i]=Unstable_val[
i]=BadPed_val[
i]=BadRMS_val[
i]=0;
488 std::string s=
subdir_+
"Plots for client/"+name[
i]+
" Missing channels";
490 if (me!=0) Missing_val[
i]=HcalUtilsClient::getHisto<TH2F*>(me,
cloneME_, Missing_val[
i],
debug_);
else return;
491 s=
subdir_+
"Plots for client/"+name[
i]+
" Channel instability value";
493 if (me!=0) Unstable_val[
i]=HcalUtilsClient::getHisto<TH2F*>(me,
cloneME_, Unstable_val[
i],
debug_);
else return;
494 s=
subdir_+
"Plots for client/"+name[
i]+
" Bad Pedestal-Ref Value";
496 if (me!=0) BadPed_val[
i]=HcalUtilsClient::getHisto<TH2F*>(me,
cloneME_, BadPed_val[
i],
debug_);
else return;
497 s=
subdir_+
"Plots for client/"+name[
i]+
" Bad Rms-ref Value";
499 if (me!=0) BadRMS_val[
i]=HcalUtilsClient::getHisto<TH2F*>(me,
cloneME_, BadRMS_val[
i],
debug_);
else return;
502 for(
int d=0;d<4;++d){
503 int etabins=Missing_val[d]->GetNbinsX();
504 int phibins=Missing_val[d]->GetNbinsY();
507 if(ieta==-9999)
continue;
514 float val=Missing_val[d]->GetBinContent(
eta+1,
phi+1);
517 if(ieta>0){ HBP[0]++;}
else{ HBM[0]++;} MissingCnt++;
521 if(ieta>0){ HEP[0]++;}
else{ HEM[0]++;} MissingCnt++;
525 if(ieta>0){ HFP[0]++;}
else{ HFM[0]++;} MissingCnt++;
529 HO[0]++;MissingCnt++;
533 val=Unstable_val[d]->GetBinContent(
eta+1,
phi+1);
536 if(ieta>0){ HBP[1]++;}
else{ HBM[1]++;} UnstableCnt++;
540 if(ieta>0){ HEP[1]++;}
else{ HEM[1]++;} UnstableCnt++;
544 if(ieta>0){ HFP[1]++;}
else{ HFM[1]++;} UnstableCnt++;
548 HO[1]++;UnstableCnt++;
552 val=BadPed_val[d]->GetBinContent(
eta+1,
phi+1);
555 if(ieta>0){ HBP[2]++;}
else{ HBM[2]++;} BadCnt++;
559 if(ieta>0){ HEP[2]++;}
else{ HEM[2]++;} BadCnt++;
563 if(ieta>0){ HFP[2]++;}
else{ HFM[2]++;} BadCnt++;
571 val=BadRMS_val[d]->GetBinContent(
eta+1,
phi+1);
574 if(ieta>0){ HBP[3]++;}
else{ HBM[3]++;} BadCnt++;
578 if(ieta>0){ HEP[3]++;}
else{ HEM[3]++;} BadCnt++;
582 if(ieta>0){ HFP[3]++;}
else{ HFM[3]++;} BadCnt++;
595 badMissing.open((htmlDir+
"bad_missing_table.html").c_str());
597 ofstream badUnstable;
598 badUnstable.open((htmlDir+
"bad_unstable_table.html").c_str());
601 badPedRMS.open((htmlDir+
"bad_badpedrms_table.html").c_str());
605 if((HBP[0]+HBP[0])>0 && (HBM[0]+HBP[0])!=(1296*2)){
606 badMissing <<
"<tr><td align=\"center\"><h3>"<<
"HB" <<
"</h3></td></tr>" << std::endl;
607 for(
int d=0;d<4;++d){
608 int etabins=Missing_val[d]->GetNbinsX();
609 int phibins=Missing_val[d]->GetNbinsY();
612 if(ieta==-9999)
continue;
614 float val=Missing_val[d]->GetBinContent(
eta+1,
phi+1);
626 if((HEP[0]+HEP[0])>0 && (HEM[0]+HEP[0])!=(1296*2)){
627 badMissing <<
"<tr><td align=\"center\"><h3>"<<
"HE" <<
"</h3></td></tr>" << std::endl;
628 for(
int d=0;d<4;++d){
629 int etabins=Missing_val[d]->GetNbinsX();
630 int phibins=Missing_val[d]->GetNbinsY();
633 if(ieta==-9999)
continue;
635 float val=Missing_val[d]->GetBinContent(
eta+1,
phi+1);
647 if(HO[0]>0 && HO[0]!=2160){
648 badMissing <<
"<tr><td align=\"center\"><h3>"<<
"HO" <<
"</h3></td></tr>" << std::endl;
649 for(
int d=0;d<4;++d){
650 int etabins=Missing_val[d]->GetNbinsX();
651 int phibins=Missing_val[d]->GetNbinsY();
654 if(ieta==-9999)
continue;
656 float val=Missing_val[d]->GetBinContent(
eta+1,
phi+1);
668 if((HFP[0]+HFP[0])>0 && (HFM[0]+HFP[0])!=(864*2)){
669 badMissing <<
"<tr><td align=\"center\"><h3>"<<
"HF" <<
"</h3></td></tr>" << std::endl;
670 for(
int d=0;d<4;++d){
671 int etabins=Missing_val[d]->GetNbinsX();
672 int phibins=Missing_val[d]->GetNbinsY();
675 if(ieta==-9999)
continue;
677 float val=Missing_val[d]->GetBinContent(
eta+1,
phi+1);
690 if((HBP[1]+HBP[1])>0){
691 badUnstable <<
"<tr><td align=\"center\"><h3>"<<
"HB" <<
"</h3></td></tr>" << std::endl;
692 for(
int d=0;d<4;++d){
693 int etabins=Unstable_val[d]->GetNbinsX();
694 int phibins=Unstable_val[d]->GetNbinsY();
697 if(ieta==-9999)
continue;
699 float val=Unstable_val[d]->GetBinContent(
eta+1,
phi+1);
702 char comment[100]; sprintf(comment,
"Missing in %.3f%% of events\n",(1.0-val)*100.0);
712 if((HEP[1]+HEP[1])>0){
713 badUnstable <<
"<tr><td align=\"center\"><h3>"<<
"HE" <<
"</h3></td></tr>" << std::endl;
714 for(
int d=0;d<4;++d){
715 int etabins=Unstable_val[d]->GetNbinsX();
716 int phibins=Unstable_val[d]->GetNbinsY();
719 if(ieta==-9999)
continue;
721 float val=Unstable_val[d]->GetBinContent(
eta+1,
phi+1);
724 char comment[100]; sprintf(comment,
"Missing in %.3f%% of events\n",(1.0-val)*100.0);
735 badUnstable <<
"<tr><td align=\"center\"><h3>"<<
"HO" <<
"</h3></td></tr>" << std::endl;
736 for(
int d=0;d<4;++d){
737 int etabins=Unstable_val[d]->GetNbinsX();
738 int phibins=Unstable_val[d]->GetNbinsY();
741 if(ieta==-9999)
continue;
743 float val=Unstable_val[d]->GetBinContent(
eta+1,
phi+1);
746 char comment[100]; sprintf(comment,
"Missing in %.3f%% of events\n",(1.0-val)*100.0);
756 if((HFP[1]+HFP[1])>0){
757 badUnstable <<
"<tr><td align=\"center\"><h3>"<<
"HF" <<
"</h3></td></tr>" << std::endl;
758 for(
int d=0;d<4;++d){
759 int etabins=Unstable_val[d]->GetNbinsX();
760 int phibins=Unstable_val[d]->GetNbinsY();
763 if(ieta==-9999)
continue;
765 float val=Unstable_val[d]->GetBinContent(
eta+1,
phi+1);
768 char comment[100]; sprintf(comment,
"Missing in %.3f%% of events\n",(1.0-val)*100.0);
779 if((HBP[2]+HBP[2]+HBP[3]+HBP[3])>0){
780 badPedRMS <<
"<tr><td align=\"center\"><h3>"<<
"HB" <<
"</h3></td></tr>" << std::endl;
781 for(
int d=0;d<4;++d){
782 int etabins=BadPed_val[d]->GetNbinsX();
783 int phibins=BadPed_val[d]->GetNbinsY();
786 if(ieta==-9999)
continue;
788 float val1=BadPed_val[d]->GetBinContent(
eta+1,
phi+1);
789 float val2=BadRMS_val[d]->GetBinContent(
eta+1,
phi+1);
790 if(val1==0 && val2==0)
continue;
793 if(val1!=0) sprintf(comment,
"Ped-Ref=%.2f",val1);
794 if(val2!=0) sprintf(comment,
"Rms-Ref=%.2f",val2);
795 if(val1!=0 && val2!=0) sprintf(comment,
"Ped-Ref=%.2f,Rms-Ref=%.2f",val1,val2);
805 if((HEP[2]+HEP[2]+HEP[3]+HEP[3])>0){
806 badPedRMS <<
"<tr><td align=\"center\"><h3>"<<
"HE" <<
"</h3></td></tr>" << std::endl;
807 for(
int d=0;d<4;++d){
808 int etabins=BadPed_val[d]->GetNbinsX();
809 int phibins=BadPed_val[d]->GetNbinsY();
812 if(ieta==-9999)
continue;
814 float val1=BadPed_val[d]->GetBinContent(
eta+1,
phi+1);
815 float val2=BadRMS_val[d]->GetBinContent(
eta+1,
phi+1);
816 if(val1==0 && val2==0)
continue;
819 if(val1!=0) sprintf(comment,
"Ped-Ref=%.2f",val1);
820 if(val2!=0) sprintf(comment,
"Rms-Ref=%.2f",val2);
821 if(val1!=0 && val2!=0) sprintf(comment,
"Ped-Ref=%.2f,Rms-Ref=%.2f",val1,val2);
832 badPedRMS <<
"<tr><td align=\"center\"><h3>"<<
"HO" <<
"</h3></td></tr>" << std::endl;
833 for(
int d=0;d<4;++d){
834 int etabins=BadPed_val[d]->GetNbinsX();
835 int phibins=BadPed_val[d]->GetNbinsY();
838 if(ieta==-9999)
continue;
840 float val1=BadPed_val[d]->GetBinContent(
eta+1,
phi+1);
841 float val2=BadRMS_val[d]->GetBinContent(
eta+1,
phi+1);
842 if(val1==0 && val2==0)
continue;
845 if(val1!=0) sprintf(comment,
"Ped-Ref=%.2f",val1);
846 if(val2!=0) sprintf(comment,
"Rms-Ref=%.2f",val2);
847 if(val1!=0 && val2!=0) sprintf(comment,
"Ped-Ref=%.2f,Rms-Ref=%.2f",val1,val2);
857 if((HFP[2]+HFP[2]+HFP[3]+HFP[3])>0){
858 badPedRMS <<
"<tr><td align=\"center\"><h3>"<<
"HF" <<
"</h3></td></tr>" << std::endl;
859 for(
int d=0;d<4;++d){
860 int etabins=BadPed_val[d]->GetNbinsX();
861 int phibins=BadPed_val[d]->GetNbinsY();
864 if(ieta==-9999)
continue;
866 float val1=BadPed_val[d]->GetBinContent(
eta+1,
phi+1);
867 float val2=BadRMS_val[d]->GetBinContent(
eta+1,
phi+1);
868 if(val1==0 && val2==0)
continue;
871 if(val1!=0) sprintf(comment,
"Ped-Ref=%.2f",val1);
872 if(val2!=0) sprintf(comment,
"Rms-Ref=%.2f",val2);
873 if(val1!=0 && val2!=0) sprintf(comment,
"Ped-Ref=%.2f,Rms-Ref=%.2f",val1,val2);
890 int ievt_ = -1,runNo=-1;
892 s=
subdir_+
"HcalDetDiagPedestalMonitor Event Number";
896 sscanf((s.substr(2,s.length()-2)).c_str(),
"%d", &ievt_);
898 s=
subdir_+
"HcalDetDiagPedestalMonitor Run Number";
902 sscanf((s.substr(2,s.length()-2)).c_str(),
"%d", &runNo);
904 s=
subdir_+
"HcalDetDiagLaserMonitor Reference Run";
909 sscanf((s.substr(2,s.length()-2)).c_str(),
"%s", str);
913 gROOT->SetBatch(
true);
914 gStyle->SetCanvasColor(0);
915 gStyle->SetPadColor(0);
916 gStyle->SetOptStat(111110);
917 gStyle->SetPalette(1);
919 TCanvas *can=
new TCanvas(
"HcalDetDiagPedestalClient",
"HcalDetDiagPedestalClient",0,0,500,350);
924 htmlFile.open(outfile.c_str());
926 htmlFile <<
"<!DOCTYPE html PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\"> " << std::endl;
927 htmlFile <<
"<html> " << std::endl;
928 htmlFile <<
"<head> " << std::endl;
929 htmlFile <<
" <meta content=\"text/html; charset=ISO-8859-1\" " << std::endl;
930 htmlFile <<
" http-equiv=\"content-type\"> " << std::endl;
931 htmlFile <<
" <title>Detector Diagnostics Pedestal Monitor</title> " << std::endl;
932 htmlFile <<
"</head> " << std::endl;
933 htmlFile <<
"<style type=\"text/css\"> td { font-weight: bold } </style>" << std::endl;
934 htmlFile <<
"<style type=\"text/css\">"<< std::endl;
935 htmlFile <<
" td.s0 { font-family: arial, arial ce, helvetica; font-weight: bold; background-color: #FF7700; text-align: center;}"<< std::endl;
936 htmlFile <<
" td.s1 { font-family: arial, arial ce, helvetica; font-weight: bold; background-color: #FFC169; text-align: center;}"<< std::endl;
937 htmlFile <<
" td.s2 { font-family: arial, arial ce, helvetica; background-color: red; }"<< std::endl;
938 htmlFile <<
" td.s3 { font-family: arial, arial ce, helvetica; background-color: yellow; }"<< std::endl;
939 htmlFile <<
" td.s4 { font-family: arial, arial ce, helvetica; background-color: green; }"<< std::endl;
940 htmlFile <<
" td.s5 { font-family: arial, arial ce, helvetica; background-color: silver; }"<< std::endl;
941 std::string
state[4]={
"<td class=\"s2\" align=\"center\">",
942 "<td class=\"s3\" align=\"center\">",
943 "<td class=\"s4\" align=\"center\">",
944 "<td class=\"s5\" align=\"center\">"};
945 htmlFile <<
"</style>"<< std::endl;
946 htmlFile <<
"<body> " << std::endl;
947 htmlFile <<
"<br> " << std::endl;
948 htmlFile <<
"<h2>Run: " << std::endl;
949 htmlFile <<
" <span " << std::endl;
950 htmlFile <<
" style=\"color: rgb(0, 0, 153);\">" << runNo <<
"</span></h2>" << std::endl;
951 htmlFile <<
"<h2>Monitoring task: <span " << std::endl;
952 htmlFile <<
" style=\"color: rgb(0, 0, 153);\">Detector Diagnostics Pedestal Monitor</span></h2> " << std::endl;
953 htmlFile <<
"<h2>Events processed: <span " << std::endl;
954 htmlFile <<
" style=\"color: rgb(0, 0, 153);\">" << ievt_ <<
"</span></h2>" << std::endl;
955 htmlFile <<
"<hr>" << std::endl;
957 htmlFile <<
"<table width=100% border=1>" << std::endl;
958 htmlFile <<
"<tr>" << std::endl;
959 htmlFile <<
"<td class=\"s0\" width=20% align=\"center\">SebDet</td>" << std::endl;
960 htmlFile <<
"<td class=\"s0\" width=20% align=\"center\">Missing</td>" << std::endl;
961 htmlFile <<
"<td class=\"s0\" width=20% align=\"center\">Unstable</td>" << std::endl;
962 htmlFile <<
"<td class=\"s0\" width=20% align=\"center\">Bad |Ped-Ref|</td>" << std::endl;
963 htmlFile <<
"<td class=\"s0\" width=20% align=\"center\">Bad |Rms-Ref|</td>" << std::endl;
964 htmlFile <<
"</tr><tr>" << std::endl;
965 int ind1=0,ind2=0,ind3=0,ind4=0;
966 htmlFile <<
"<td class=\"s1\" align=\"center\">HB+</td>" << std::endl;
967 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;
968 ind2=3;
if(newHBP[1]==0) ind2=2;
if(newHBP[1]>0) ind2=1;
if(newHBP[1]>21) ind2=0;
969 ind3=3;
if(newHBP[2]==0) ind3=2;
if(newHBP[2]>0) ind3=1;
if(newHBP[2]>21) ind3=0;
970 ind4=3;
if(newHBP[3]==0) ind4=2;
if(newHBP[3]>0) ind4=1;
if(newHBP[3]>21) ind4=0;
971 if(ind1==3) ind2=ind3=ind4=3;
972 if(ind1==0 || ind2==0 || ind3==0 || ind4==0)
status|=2;
else if(ind1==1 || ind2==1 || ind3==1 || ind4==1)
status|=1;
973 htmlFile << state[ind1] << HBP[0] <<
" (1296)</td>" << std::endl;
974 htmlFile << state[ind2] << HBP[1] <<
"</td>" << std::endl;
975 htmlFile << state[ind3] << HBP[2] <<
"</td>" << std::endl;
976 htmlFile << state[ind4] << HBP[3] <<
"</td>" << std::endl;
978 htmlFile <<
"</tr><tr>" << std::endl;
979 htmlFile <<
"<td class=\"s1\" align=\"center\">HB-</td>" << std::endl;
980 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;
981 ind2=3;
if(newHBM[1]==0) ind2=2;
if(newHBM[1]>0) ind2=1;
if(newHBM[1]>21) ind2=0;
982 ind3=3;
if(newHBM[2]==0) ind3=2;
if(newHBM[2]>0) ind3=1;
if(newHBM[2]>21) ind3=0;
983 ind4=3;
if(newHBM[3]==0) ind4=2;
if(newHBM[3]>0) ind4=1;
if(newHBM[3]>21) ind4=0;
984 if(ind1==3) ind2=ind3=ind4=3;
985 if(ind1==0 || ind2==0 || ind3==0 || ind4==0)
status|=2;
else if(ind1==1 || ind2==1 || ind3==1 || ind4==1)
status|=1;
986 htmlFile << state[ind1] << HBM[0] <<
" (1296)</td>" << std::endl;
987 htmlFile << state[ind2] << HBM[1] <<
"</td>" << std::endl;
988 htmlFile << state[ind3] << HBM[2] <<
"</td>" << std::endl;
989 htmlFile << state[ind4] << HBM[3] <<
"</td>" << std::endl;
991 htmlFile <<
"</tr><tr>" << std::endl;
992 htmlFile <<
"<td class=\"s1\" align=\"center\">HE+</td>" << std::endl;
993 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;
994 ind2=3;
if(newHEP[1]==0) ind2=2;
if(newHEP[1]>0) ind2=1;
if(newHEP[1]>21) ind2=0;
995 ind3=3;
if(newHEP[2]==0) ind3=2;
if(newHEP[2]>0) ind3=1;
if(newHEP[2]>21) ind3=0;
996 ind4=3;
if(newHEP[3]==0) ind4=2;
if(newHEP[3]>0) ind4=1;
if(newHEP[3]>21) ind4=0;
997 if(ind1==3) ind2=ind3=ind4=3;
998 if(ind1==0 || ind2==0 || ind3==0 || ind4==0)
status|=2;
else if(ind1==1 || ind2==1 || ind3==1 || ind4==1)
status|=1;
999 htmlFile << state[ind1] << HEP[0] <<
" (1296)</td>" << std::endl;
1000 htmlFile << state[ind2] << HEP[1] <<
"</td>" << std::endl;
1001 htmlFile << state[ind3] << HEP[2] <<
"</td>" << std::endl;
1002 htmlFile << state[ind4] << HEP[3] <<
"</td>" << std::endl;
1004 htmlFile <<
"</tr><tr>" << std::endl;
1005 htmlFile <<
"<td class=\"s1\" align=\"center\">HE-</td>" << std::endl;
1006 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;
1007 ind2=3;
if(newHEM[1]==0) ind2=2;
if(newHEM[1]>0) ind2=1;
if(newHEM[1]>21) ind2=0;
1008 ind3=3;
if(newHEM[2]==0) ind3=2;
if(newHEM[2]>0) ind3=1;
if(newHEM[2]>21) ind3=0;
1009 ind4=3;
if(newHEM[3]==0) ind4=2;
if(newHEM[3]>0) ind4=1;
if(newHEM[3]>21) ind4=0;
1010 if(ind1==3) ind2=ind3=ind4=3;
1011 if(ind1==0 || ind2==0 || ind3==0 || ind4==0)
status|=2;
else if(ind1==1 || ind2==1 || ind3==1 || ind4==1)
status|=1;
1012 htmlFile << state[ind1] << HEM[0] <<
" (1296)</td>" << std::endl;
1013 htmlFile << state[ind2] << HEM[1] <<
"</td>" << std::endl;
1014 htmlFile << state[ind3] << HEM[2] <<
"</td>" << std::endl;
1015 htmlFile << state[ind4] << HEM[3] <<
"</td>" << std::endl;
1017 htmlFile <<
"</tr><tr>" << std::endl;
1018 htmlFile <<
"<td class=\"s1\" align=\"center\">HF+</td>" << std::endl;
1019 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;
1020 ind2=3;
if(newHFP[1]==0) ind2=2;
if(newHFP[1]>0) ind2=1;
if(newHFP[1]>21) ind2=0;
1021 ind3=3;
if(newHFP[2]==0) ind3=2;
if(newHFP[2]>0) ind3=1;
if(newHFP[2]>21) ind3=0;
1022 ind4=3;
if(newHFP[3]==0) ind4=2;
if(newHFP[3]>0) ind4=1;
if(newHFP[3]>21) ind4=0;
1023 if(ind1==3) ind2=ind3=ind4=3;
1024 if(ind1==0 || ind2==0 || ind3==0 || ind4==0)
status|=2;
else if(ind1==1 || ind2==1 || ind3==1 || ind4==1)
status|=1;
1025 htmlFile << state[ind1] << HFP[0] <<
" (864)</td>" << std::endl;
1026 htmlFile << state[ind2] << HFP[1] <<
"</td>" << std::endl;
1027 htmlFile << state[ind3] << HFP[2] <<
"</td>" << std::endl;
1028 htmlFile << state[ind4] << HFP[3] <<
"</td>" << std::endl;
1030 htmlFile <<
"</tr><tr>" << std::endl;
1031 htmlFile <<
"<td class=\"s1\" align=\"center\">HF-</td>" << std::endl;
1032 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;
1033 ind2=3;
if(newHFM[1]==0) ind2=2;
if(newHFM[1]>0) ind2=1;
if(newHFM[1]>21) ind2=0;
1034 ind3=3;
if(newHFM[2]==0) ind3=2;
if(newHFM[2]>0) ind3=1;
if(newHFM[2]>21) ind3=0;
1035 ind4=3;
if(newHFM[3]==0) ind4=2;
if(newHFM[3]>0) ind4=1;
if(newHFM[3]>21) ind4=0;
1036 if(ind1==3) ind2=ind3=ind4=3;
1037 if(ind1==0 || ind2==0 || ind3==0 || ind4==0)
status|=2;
else if(ind1==1 || ind2==1 || ind3==1 || ind4==1)
status|=1;
1038 htmlFile << state[ind1] << HFM[0] <<
" (864)</td>" << std::endl;
1039 htmlFile << state[ind2] << HFM[1] <<
"</td>" << std::endl;
1040 htmlFile << state[ind3] << HFM[2] <<
"</td>" << std::endl;
1041 htmlFile << state[ind4] << HFM[3] <<
"</td>" << std::endl;
1043 htmlFile <<
"</tr><tr>" << std::endl;
1044 htmlFile <<
"<td class=\"s1\" align=\"center\">HO</td>" << std::endl;
1045 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;
1046 ind2=3;
if(newHO[1]==0) ind2=2;
if(newHO[1]>0) ind2=1;
if(newHO[1]>21) ind2=0;
1047 ind3=3;
if(newHO[2]==0) ind3=2;
if(newHO[2]>0) ind3=1;
if(newHO[2]>21) ind3=0;
1048 ind4=3;
if(newHO[3]==0) ind4=2;
if(newHO[3]>0) ind4=1;
if(newHO[3]>21) ind4=0;
1049 if(ind1==3) ind2=ind3=ind4=3;
1050 if(ind1==0 || ind2==0 || ind3==0 || ind4==0)
status|=2;
else if(ind1==1 || ind2==1 || ind3==1 || ind4==1)
status|=1;
1051 htmlFile << state[ind1] << HO[0] <<
" (2160)</td>" << std::endl;
1052 htmlFile << state[ind2] << HO[1] <<
"</td>" << std::endl;
1053 htmlFile << state[ind3] << HO[2] <<
"</td>" << std::endl;
1054 htmlFile << state[ind4] << HO[3] <<
"</td>" << std::endl;
1056 htmlFile <<
"</tr></table>" << std::endl;
1057 htmlFile <<
"<hr>" << std::endl;
1059 if((MissingCnt+UnstableCnt+BadCnt)>0){
1060 htmlFile <<
"<table width=100% border=1><tr>" << std::endl;
1061 if(MissingCnt>0) htmlFile <<
"<td><a href=\"" <<
"bad_missing_table.html" <<
"\">list of missing channels</a></td>";
1062 if(UnstableCnt>0) htmlFile <<
"<td><a href=\"" <<
"bad_unstable_table.html" <<
"\">list of unstable channels</a></td>";
1063 if(BadCnt>0) htmlFile <<
"<td><a href=\"" <<
"bad_badpedrms_table.html" <<
"\">list of bad pedestal/rms channels</a></td>";
1064 htmlFile <<
"</tr></table>" << std::endl;
1073 htmlFile <<
"<h2 align=\"center\">Summary plots</h2>" << std::endl;
1074 htmlFile <<
"<table width=100% border=0><tr>" << std::endl;
1075 htmlFile <<
"<tr align=\"left\">" << std::endl;
1076 Pedestals2DHBHEHF->SetStats(0);
1077 Pedestals2DHBHEHF->SetMaximum(5);
1078 Pedestals2DHBHEHF->SetNdivisions(36,
"Y");
1079 Pedestals2DHBHEHF->Draw(
"COLZ");
1080 can->SaveAs((htmlDir +
"hbhehf_pedestal_map.gif").c_str());
1081 htmlFile <<
"<td><img src=\"hbhehf_pedestal_map.gif\" alt=\"hbhehf pedestal mean map\"> </td>" << std::endl;
1082 Pedestals2DHO->SetStats(0);
1083 Pedestals2DHO->SetMaximum(5);
1084 Pedestals2DHO->SetNdivisions(36,
"Y");
1085 Pedestals2DHO->Draw(
"COLZ");
1086 can->SaveAs((htmlDir +
"ho_pedestal_map.gif").c_str());
1087 htmlFile <<
"<td><img src=\"ho_pedestal_map.gif\" alt=\"ho pedestal mean map\"> </td>" << std::endl;
1088 htmlFile <<
"</tr>" << std::endl;
1090 htmlFile <<
"<tr align=\"left\">" << std::endl;
1091 Pedestals2DRmsHBHEHF->SetStats(0);
1092 Pedestals2DRmsHBHEHF->SetMaximum(2);
1093 Pedestals2DRmsHBHEHF->SetNdivisions(36,
"Y");
1094 Pedestals2DRmsHBHEHF->Draw(
"COLZ");
1095 can->SaveAs((htmlDir +
"hbhehf_rms_map.gif").c_str());
1096 htmlFile <<
"<td><img src=\"hbhehf_rms_map.gif\" alt=\"hbhehf pedestal rms map\"> </td>" << std::endl;
1097 Pedestals2DRmsHO->SetStats(0);
1098 Pedestals2DRmsHO->SetMaximum(2);
1099 Pedestals2DRmsHO->SetNdivisions(36,
"Y");
1100 Pedestals2DRmsHO->Draw(
"COLZ");
1101 can->SaveAs((htmlDir +
"ho_rms_map.gif").c_str());
1102 htmlFile <<
"<td><img src=\"ho_rms_map.gif\" alt=\"ho pedestal rms map\"> </td>" << std::endl;
1103 htmlFile <<
"</tr>" << std::endl;
1105 htmlFile <<
"<tr align=\"left\">" << std::endl;
1106 Pedestals2DErrorHBHEHF->SetStats(0);
1107 Pedestals2DErrorHBHEHF->SetNdivisions(36,
"Y");
1108 Pedestals2DErrorHBHEHF->Draw(
"COLZ");
1109 can->SaveAs((htmlDir +
"hbhehf_error_map.gif").c_str());
1110 htmlFile <<
"<td><img src=\"hbhehf_error_map.gif\" alt=\"hbhehf pedestal error map\"> </td>" << std::endl;
1111 Pedestals2DErrorHO->SetStats(0);
1112 Pedestals2DErrorHO->SetNdivisions(36,
"Y");
1113 Pedestals2DErrorHO->Draw(
"COLZ");
1114 can->SaveAs((htmlDir +
"ho_error_map.gif").c_str());
1115 htmlFile <<
"<td><img src=\"ho_error_map.gif\" alt=\"ho pedestal error map\"> </td>" << std::endl;
1116 htmlFile <<
"</tr>" << std::endl;
1117 htmlFile <<
"</table>" << std::endl;
1118 htmlFile <<
"<hr>" << std::endl;
1121 htmlFile <<
"<h2 align=\"center\">HB Pedestal plots (Reference run "<<ref_run<<
")</h2>" << std::endl;
1122 htmlFile <<
"<table width=100% border=0><tr>" << std::endl;
1123 htmlFile <<
"<tr align=\"left\">" << std::endl;
1124 if(PedestalsAve4HB->GetMaximum()>0) can->SetLogy(1);
else can->SetLogy(0);
1125 PedestalsAve4HB->Draw();
1126 can->SaveAs((htmlDir +
"hb_pedestal_distribution.gif").c_str());
1127 htmlFile <<
"<td><img src=\"hb_pedestal_distribution.gif\" alt=\"hb pedestal mean\"> </td>" << std::endl;
1128 if(PedestalsRmsHB->GetMaximum()>0) can->SetLogy(1);
else can->SetLogy(0);
1129 PedestalsRmsHB->Draw();
1130 can->SaveAs((htmlDir +
"hb_pedestal_rms_distribution.gif").c_str());
1131 htmlFile <<
"<td><img src=\"hb_pedestal_rms_distribution.gif\" alt=\"hb pedestal rms mean\"> </td>" << std::endl;
1132 htmlFile <<
"</tr>" << std::endl;
1134 htmlFile <<
"<tr align=\"left\">" << std::endl;
1135 if(PedestalsAve4HBref->GetMaximum()>0) can->SetLogy(1);
else can->SetLogy(0);
1136 PedestalsAve4HBref->Draw();
1137 can->SaveAs((htmlDir +
"hb_pedestal_ref_distribution.gif").c_str());
1138 htmlFile <<
"<td><img src=\"hb_pedestal_ref_distribution.gif\" alt=\"hb pedestal-reference mean\"> </td>" << std::endl;
1139 if(PedestalsRmsHBref->GetMaximum()>0) can->SetLogy(1);
else can->SetLogy(0);
1140 PedestalsRmsHBref->Draw();
1141 can->SaveAs((htmlDir +
"hb_pedestal_rms_ref_distribution.gif").c_str());
1142 htmlFile <<
"<td><img src=\"hb_pedestal_rms_ref_distribution.gif\" alt=\"hb pedestal rms-reference mean\"> </td>" << std::endl;
1143 htmlFile <<
"</tr>" << std::endl;
1144 htmlFile <<
"</table>" << std::endl;
1146 htmlFile <<
"<h2 align=\"center\">HE Pedestal plots (Reference run "<<ref_run<<
")</h2>" << std::endl;
1147 htmlFile <<
"<table width=100% border=0><tr>" << std::endl;
1148 htmlFile <<
"<tr align=\"left\">" << std::endl;
1149 if(PedestalsAve4HE->GetMaximum()>0) can->SetLogy(1);
else can->SetLogy(0);
1150 PedestalsAve4HE->Draw();
1151 can->SaveAs((htmlDir +
"he_pedestal_distribution.gif").c_str());
1152 htmlFile <<
"<td><img src=\"he_pedestal_distribution.gif\" alt=\"he pedestal mean\"> </td>" << std::endl;
1153 if(PedestalsRmsHE->GetMaximum()>0) can->SetLogy(1);
else can->SetLogy(0);
1154 PedestalsRmsHE->Draw();
1155 can->SaveAs((htmlDir +
"he_pedestal_rms_distribution.gif").c_str());
1156 htmlFile <<
"<td><img src=\"he_pedestal_rms_distribution.gif\" alt=\"he pedestal rms mean\"> </td>" << std::endl;
1157 htmlFile <<
"</tr>" << std::endl;
1159 htmlFile <<
"<tr align=\"left\">" << std::endl;
1160 if(PedestalsAve4HEref->GetMaximum()>0) can->SetLogy(1);
else can->SetLogy(0);
1161 PedestalsAve4HEref->Draw();
1162 can->SaveAs((htmlDir +
"he_pedestal_ref_distribution.gif").c_str());
1163 htmlFile <<
"<td><img src=\"he_pedestal_ref_distribution.gif\" alt=\"he pedestal-reference mean\"> </td>" << std::endl;
1164 if(PedestalsRmsHEref->GetMaximum()>0) can->SetLogy(1);
else can->SetLogy(0);
1165 PedestalsRmsHEref->Draw();
1166 can->SaveAs((htmlDir +
"he_pedestal_rms_ref_distribution.gif").c_str());
1167 htmlFile <<
"<td><img src=\"he_pedestal_rms_ref_distribution.gif\" alt=\"he pedestal rms-reference mean\"> </td>" << std::endl;
1168 htmlFile <<
"</tr>" << std::endl;
1169 htmlFile <<
"</table>" << std::endl;
1171 htmlFile <<
"<h2 align=\"center\">HO Pedestal plots (Reference run "<<ref_run<<
")</h2>" << std::endl;
1172 htmlFile <<
"<table width=100% border=0><tr>" << std::endl;
1173 htmlFile <<
"<tr align=\"left\">" << std::endl;
1174 if(PedestalsAve4HO->GetMaximum()>0) can->SetLogy(1);
else can->SetLogy(0);
1175 PedestalsAve4HO->Draw();
1176 can->SaveAs((htmlDir +
"ho_pedestal_distribution.gif").c_str());
1177 htmlFile <<
"<td><img src=\"ho_pedestal_distribution.gif\" alt=\"ho pedestal mean\"> </td>" << std::endl;
1178 if(PedestalsRmsHO->GetMaximum()>0) can->SetLogy(1);
else can->SetLogy(0);
1179 PedestalsRmsHO->Draw();
1180 can->SaveAs((htmlDir +
"ho_pedestal_rms_distribution.gif").c_str());
1181 htmlFile <<
"<td><img src=\"ho_pedestal_rms_distribution.gif\" alt=\"ho pedestal rms mean\"> </td>" << std::endl;
1182 htmlFile <<
"</tr>" << std::endl;
1184 htmlFile <<
"<tr align=\"left\">" << std::endl;
1185 if(PedestalsAve4Simp->GetMaximum()>0) can->SetLogy(1);
else can->SetLogy(0);
1186 PedestalsAve4Simp->Draw();
1187 can->SaveAs((htmlDir +
"sipm_pedestal_distribution.gif").c_str());
1188 htmlFile <<
"<td><img src=\"sipm_pedestal_distribution.gif\" alt=\"sipm pedestal mean\"> </td>" << std::endl;
1189 if(PedestalsRmsSimp->GetMaximum()>0) can->SetLogy(1);
else can->SetLogy(0);
1190 PedestalsRmsSimp->Draw();
1191 can->SaveAs((htmlDir +
"simp_pedestal_rms_distribution.gif").c_str());
1192 htmlFile <<
"<td><img src=\"simp_pedestal_rms_distribution.gif\" alt=\"sipm pedestal rms mean\"> </td>" << std::endl;
1193 htmlFile <<
"</tr>" << std::endl;
1195 htmlFile <<
"<tr align=\"left\">" << std::endl;
1196 if(PedestalsAve4HOref->GetMaximum()>0) can->SetLogy(1);
else can->SetLogy(0);
1197 PedestalsAve4HOref->Draw();
1198 can->SaveAs((htmlDir +
"ho_pedestal_ref_distribution.gif").c_str());
1199 htmlFile <<
"<td><img src=\"ho_pedestal_ref_distribution.gif\" alt=\"ho pedestal-reference mean\"> </td>" << std::endl;
1200 if(PedestalsRmsHOref->GetMaximum()>0) can->SetLogy(1);
else can->SetLogy(0);
1201 PedestalsRmsHOref->Draw();
1202 can->SaveAs((htmlDir +
"ho_pedestal_rms_ref_distribution.gif").c_str());
1203 htmlFile <<
"<td><img src=\"ho_pedestal_rms_ref_distribution.gif\" alt=\"ho pedestal rms-reference mean\"> </td>" << std::endl;
1204 htmlFile <<
"</tr>" << std::endl;
1205 htmlFile <<
"</table>" << std::endl;
1208 htmlFile <<
"<h2 align=\"center\">HF Pedestal plots (Reference run "<<ref_run<<
")</h2>" << std::endl;
1209 htmlFile <<
"<table width=100% border=0><tr>" << std::endl;
1210 htmlFile <<
"<tr align=\"left\">" << std::endl;
1211 if(PedestalsAve4HF->GetMaximum()>0) can->SetLogy(1);
else can->SetLogy(0);
1212 PedestalsAve4HF->Draw();
1213 can->SaveAs((htmlDir +
"hf_pedestal_distribution.gif").c_str());
1214 htmlFile <<
"<td><img src=\"hf_pedestal_distribution.gif\" alt=\"hf pedestal mean\"> </td>" << std::endl;
1215 if(PedestalsRmsHF->GetMaximum()>0) can->SetLogy(1);
else can->SetLogy(0);
1216 PedestalsRmsHF->Draw();
1217 can->SaveAs((htmlDir +
"hf_pedestal_rms_distribution.gif").c_str());
1218 htmlFile <<
"<td><img src=\"hf_pedestal_rms_distribution.gif\" alt=\"hf pedestal rms mean\"> </td>" << std::endl;
1219 htmlFile <<
"</tr>" << std::endl;
1221 htmlFile <<
"<tr align=\"left\">" << std::endl;
1222 if(PedestalsAve4HFref->GetMaximum()>0) can->SetLogy(1);
else can->SetLogy(0);
1223 PedestalsAve4HFref->Draw();
1224 can->SaveAs((htmlDir +
"hf_pedestal_ref_distribution.gif").c_str());
1225 htmlFile <<
"<td><img src=\"hf_pedestal_ref_distribution.gif\" alt=\"hf pedestal-reference mean\"> </td>" << std::endl;
1226 if(PedestalsRmsHFref->GetMaximum()>0) can->SetLogy(1);
else can->SetLogy(0);
1227 PedestalsRmsHFref->Draw();
1228 can->SaveAs((htmlDir +
"hf_pedestal_rms_ref_distribution.gif").c_str());
1229 htmlFile <<
"<td><img src=\"hf_pedestal_rms_ref_distribution.gif\" alt=\"hf pedestal rms-reference mean\"> </td>" << std::endl;
1230 htmlFile <<
"</tr>" << std::endl;
1231 htmlFile <<
"</table>" << std::endl;
1234 htmlFile <<
"</body> " << std::endl;
1235 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
HcalLogicalMap createMap(unsigned int mapIOV=4)
int depth() const
get the tower depth
std::vector< MonitorElement * > 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 CalcIeta(int subdet, int eta, int depth)
int spigot() const
get the spigot (input number on DCC)
std::string valueString(void) const
int iphi() const
get the cell iphi
HcalDetDiagPedestalClient()
Constructors.
bool isHF(int etabin, int depth)
void FillUnphysicalHEHFBins(EtaPhiHists &hh)
std::map< HcalDetId, unsigned int > badstatusmap
double getBinContent(int binx) const
get content of bin (1-D)
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...
void setCurrentFolder(const std::string &fullpath)