23 Raddam_ch RADDAM_CH[56]={{-30,15},{-32,15},{-34,15},{-36,15},{-38,15},{-40,15},{-41,15},
24 {-30,35},{-32,35},{-34,35},{-36,35},{-38,35},{-40,35},{-41,35},
25 {-30,51},{-32,51},{-34,51},{-36,51},{-38,51},{-40,51},{-41,51},
26 {-30,71},{-32,71},{-34,71},{-36,71},{-38,71},{-40,71},{-41,71},
27 {30, 01},{32, 01},{34, 01},{36, 01},{38, 01},{40, 71},{41, 71},
28 {30, 21},{32, 21},{34, 21},{36, 21},{38, 21},{40, 19},{41, 19},
29 {30, 37},{32, 37},{34, 37},{36, 37},{38, 37},{40, 35},{41, 35},
30 {30, 57},{32, 57},{34, 57},{36, 57},{38, 57},{40, 55},{41, 55}};
46 if (prefixME_.substr(prefixME_.size()-1,prefixME_.size())!=
"/")
47 prefixME_.append(
"/");
49 if (subdir_.size()>0 && subdir_.substr(subdir_.size()-1,subdir_.size())!=
"/")
51 subdir_=prefixME_+subdir_;
65 ProblemCellsByDepth=0;
71 if (debug_>2)
std::cout <<
"\tHcalDetDiagLaserClient::analyze()"<<std::endl;
77 if (debug_>2)
std::cout <<
"\t\tHcalDetDiagLaserClient::calculateProblems()"<<std::endl;
78 if(!dqmStore_)
return;
80 int etabins=0, phibins=0,
zside=0;
81 double problemvalue=0;
86 ProblemCells->Reset();
87 (ProblemCells->getTH2F())->SetMaximum(1.05);
88 (ProblemCells->getTH2F())->SetMinimum(0.);
90 for (
unsigned int d=0;d<ProblemCellsByDepth->depth.size();++d)
92 if (ProblemCellsByDepth->depth[d]!=0)
94 ProblemCellsByDepth->depth[d]->Reset();
95 (ProblemCellsByDepth->depth[d]->getTH2F())->SetMaximum(1.05);
96 (ProblemCellsByDepth->depth[d]->getTH2F())->SetMinimum(0.);
109 for (
int i=0;
i<4;++
i)
113 string s=subdir_+name[
i]+
" Problem Bad Laser Timing";
114 me=dqmStore_->get(s.c_str());
115 if (me!=0) BadTiming[
i]=HcalUtilsClient::getHisto<TH2F*>(me, cloneME_, BadTiming[
i], debug_);
116 else if (debug_>0)
std::cout <<
"<HcalDetDiagLaserClient::calculateProblems> could not get histogram '"<<s<<
"'"<<std::endl;
117 s=subdir_+name[
i]+
" Problem Bad Laser Energy";
118 me=dqmStore_->get(s.c_str());
119 if (me!=0) BadEnergy[
i]=HcalUtilsClient::getHisto<TH2F*>(me, cloneME_, BadEnergy[
i], debug_);
120 else if (debug_>0)
std::cout <<
"<HcalDetDiagLaserClient::calculateProblems> could not get histogram '"<<s<<
"'"<<std::endl;
126 for (
unsigned int d=0;d<ProblemCellsByDepth->depth.size();++d)
128 if (ProblemCellsByDepth->depth[d]==0)
continue;
133 if (BadTiming[d]!=0) totalevents += BadTiming[d]->GetBinContent(0);
134 if (BadEnergy[d]!=0) totalevents += BadEnergy[d]->GetBinContent(0);
139 etabins=(ProblemCellsByDepth->depth[d]->getTH2F())->GetNbinsX();
140 phibins=(ProblemCellsByDepth->depth[d]->getTH2F())->GetNbinsY();
144 if (ieta==-9999)
continue;
148 if (BadTiming[d]!=0) problemvalue += BadTiming[d]->GetBinContent(
eta+1,
phi+1)*1./totalevents;
149 if (BadEnergy[d]!=0) problemvalue += BadEnergy[d]->GetBinContent(
eta+1,
phi+1)*1./totalevents;
150 if (problemvalue==0)
continue;
152 problemvalue =
min(1.,problemvalue);
156 ieta<0 ?
zside = -1 : zside = 1;
160 if (problemvalue>minerrorrate_)
168 if (badstatusmap.find(hcalid)!=badstatusmap.end())
172 ProblemCellsByDepth->depth[d]->setBinContent(
eta+1,
phi+1,problemvalue);
173 if (ProblemCells!=0) ProblemCells->Fill(ieta+zside,
phi+1,problemvalue);
180 if (debug_>0)
std::cout <<
"<HcalDetDiagLaserClient::calculateProblems> ProblemCells histogram does not exist!"<<endl;
185 etabins=(ProblemCells->getTH2F())->GetNbinsX();
186 phibins=(ProblemCells->getTH2F())->GetNbinsY();
191 if (ProblemCells->getBinContent(
eta+1,
phi+1)>1. && ProblemCells->getBinContent(
eta+1,
phi+1)<999)
192 ProblemCells->setBinContent(
eta+1,
phi+1,1.);
206 std::cout <<
"<HcalDetDiagLaserClient::beginJob()> Displaying dqmStore directory structure:"<<std::endl;
207 dqmStore_->showDirStructure();
217 if (debug_>0)
std::cout <<
"<HcalDetDiagLaserClient::beginRun> dqmStore does not exist!"<<std::endl;
220 dqmStore_->setCurrentFolder(subdir_);
221 problemnames_.clear();
224 ProblemCells=dqmStore_->book2D(
" ProblemDetDiagLaser",
225 " Problem DetDiagLaser Rate for all HCAL;ieta;iphi",
228 problemnames_.push_back(ProblemCells->getName());
230 std::cout <<
"Tried to create ProblemCells Monitor Element in directory "<<subdir_<<
" \t Failed? "<<(ProblemCells==0)<<std::endl;
231 dqmStore_->setCurrentFolder(subdir_+
"problem_DetDiagLaser");
233 ProblemCellsByDepth->setup(dqmStore_,
" Problem DetDiagLaser Rate");
234 for (
unsigned int i=0;
i<ProblemCellsByDepth->depth.size();++
i)
235 problemnames_.push_back(ProblemCellsByDepth->depth[
i]->getName());
251 if (debug_>1)
std::cout <<
"<HcalDetDiagLaserClient::hasErrors_Temp> ProblemCells histogram does not exist!"<<std::endl;
257 for (
int depth=0;depth<4; ++depth)
259 int etabins = (ProblemCells->getTH2F())->GetNbinsX();
260 int phibins = (ProblemCells->getTH2F())->GetNbinsY();
261 for (
int hist_eta=0;hist_eta<etabins;++hist_eta)
263 for (
int hist_phi=0; hist_phi<phibins;++hist_phi)
266 if (ieta==-9999)
continue;
267 if (ProblemCellsByDepth->depth[depth]==0)
269 if (ProblemCellsByDepth->depth[depth]->getBinContent(hist_eta,hist_phi)>minerrorrate_)
276 if (problemcount>0)
return true;
296 file <<
"</html><html xmlns=\"http://www.w3.org/1999/xhtml\">"<< endl;
297 file <<
"<head>"<< endl;
298 file <<
"<meta http-equiv=\"Content-Type\" content=\"text/html\"/>"<< endl;
299 file <<
"<title>"<< header <<
"</title>"<< endl;
300 file <<
"<style type=\"text/css\">"<< endl;
301 file <<
" body,td{ background-color: #FFFFCC; font-family: arial, arial ce, helvetica; font-size: 12px; }"<< endl;
302 file <<
" td.s0 { font-family: arial, arial ce, helvetica; }"<< endl;
303 file <<
" td.s1 { font-family: arial, arial ce, helvetica; font-weight: bold; background-color: #FFC169; text-align: center;}"<< endl;
304 file <<
" td.s2 { font-family: arial, arial ce, helvetica; background-color: #eeeeee; }"<< endl;
305 file <<
" td.s3 { font-family: arial, arial ce, helvetica; background-color: #d0d0d0; }"<< endl;
306 file <<
" td.s4 { font-family: arial, arial ce, helvetica; background-color: #FFC169; }"<< endl;
307 file <<
"</style>"<< endl;
308 file <<
"<body>"<< endl;
309 file <<
"<table>"<< endl;
314 file <<
"<td class=\"s4\" align=\"center\">#</td>" << endl;
315 file <<
"<td class=\"s1\" align=\"center\">ETA</td>" << endl;
316 file <<
"<td class=\"s1\" align=\"center\">PHI</td>" << endl;
317 file <<
"<td class=\"s1\" align=\"center\">DEPTH</td>"<< endl;
318 file <<
"<td class=\"s1\" align=\"center\">RBX</td>" << endl;
319 file <<
"<td class=\"s1\" align=\"center\">RM</td>" << endl;
320 file <<
"<td class=\"s1\" align=\"center\">PIXEL</td>" << endl;
321 file <<
"<td class=\"s1\" align=\"center\">RM_FIBER</td>" << endl;
322 file <<
"<td class=\"s1\" align=\"center\">FIBER_CH</td>" << endl;
323 file <<
"<td class=\"s1\" align=\"center\">QIE</td>" << endl;
324 file <<
"<td class=\"s1\" align=\"center\">ADC</td>" << endl;
325 file <<
"<td class=\"s1\" align=\"center\">CRATE</td>" << endl;
326 file <<
"<td class=\"s1\" align=\"center\">DCC</td>" << endl;
327 file <<
"<td class=\"s1\" align=\"center\">SPIGOT</td>" << endl;
328 file <<
"<td class=\"s1\" align=\"center\">HTR_FIBER</td>" << endl;
329 file <<
"<td class=\"s1\" align=\"center\">HTR_SLOT</td>" << endl;
330 file <<
"<td class=\"s1\" align=\"center\">HTR_FPGA</td>" << endl;
331 if(
comment[0]!=0) file <<
"<td class=\"s1\" align=\"center\">Comment</td>" << endl;
332 file <<
"</tr>" << endl;
335 file <<
"<tr>"<< endl;
337 raw_class=
"<td class=\"s2\" align=\"center\">";
339 raw_class=
"<td class=\"s3\" align=\"center\">";
341 file <<
"<td class=\"s4\" align=\"center\">" << ind+1 <<
"</td>"<< endl;
342 file << raw_class<< detid.
ieta()<<
"</td>"<< endl;
343 file << raw_class<< detid.
iphi()<<
"</td>"<< endl;
344 file << raw_class<< detid.
depth() <<
"</td>"<< endl;
345 file << raw_class<< lmap_entry.
rbx()<<
"</td>"<< endl;
346 file << raw_class<< lmap_entry.
rm() <<
"</td>"<< endl;
347 file << raw_class<< lmap_entry.
pixel()<<
"</td>"<< endl;
348 file << raw_class<< lmap_entry.
rmFiber() <<
"</td>"<< endl;
349 file << raw_class<< lmap_entry.
fiberChannel()<<
"</td>"<< endl;
350 file << raw_class<< lmap_entry.
qieCard() <<
"</td>"<< endl;
351 file << raw_class<< lmap_entry.
adc()<<
"</td>"<< endl;
353 file << raw_class<< emap_entry.
dccid()<<
"</td>"<< endl;
354 file << raw_class<< emap_entry.
spigot()<<
"</td>"<< endl;
355 file << raw_class<< emap_entry.
fiberIndex()<<
"</td>"<< endl;
356 file << raw_class<< emap_entry.
htrSlot()<<
"</td>"<< endl;
357 file << raw_class<< emap_entry.
htrTopBottom()<<
"</td>"<< endl;
361 file <<
"</table>"<< endl;
362 file <<
"</body>"<< endl;
363 file <<
"</html>"<< endl;
367 string s=subdir_+
"HcalDetDiagLaserMonitor Event Number";
372 sscanf((s.substr(2,s.length()-2)).c_str(),
"%d", &
n);
374 if(n<100)
return false;
379 if (debug_>0)
std::cout <<
"<HcalDetDiagLaserClient::htmlOutput> dqmStore object does not exist!"<<std::endl;
382 if(debug_>2)
std::cout <<
"\t<HcalDetDiagLaserClient::htmlOutput> Preparing html for task: "<<name_<<std::endl;
392 TH1F *hbheEnergyRMS=0;
393 TH1F *hbheTimingRMS=0;
406 TH2F *Time2Dhbhehf=0;
408 TH2F *Energy2Dhbhehf=0;
410 TH2F *refTime2Dhbhehf=0;
412 TH2F *refEnergy2Dhbhehf=0;
413 TH2F *refEnergy2Dho=0;
414 int HBpresent_=0,HEpresent_=0,HOpresent_=0,HFpresent_=0;
417 me=dqmStore_->get(prefixME_+
"HcalInfo/HBpresent");
419 me=dqmStore_->get(prefixME_+
"HcalInfo/HEpresent");
421 me=dqmStore_->get(prefixME_+
"HcalInfo/HOpresent");
423 me=dqmStore_->get(prefixME_+
"HcalInfo/HFpresent");
426 s=subdir_+
"Summary Plots/HBHE Laser Energy Distribution"; me=dqmStore_->get(s.c_str());
427 if(me!=0) hbheEnergy=HcalUtilsClient::getHisto<TH1F*>(me, cloneME_, hbheEnergy, debug_);
else return;
428 s=subdir_+
"Summary Plots/HBHE Laser Timing Distribution"; me=dqmStore_->get(s.c_str());
429 if(me!=0) hbheTiming=HcalUtilsClient::getHisto<TH1F*>(me, cloneME_, hbheTiming, debug_);
else return;
430 s=subdir_+
"Summary Plots/HBHE Laser Energy RMS_div_Energy Distribution"; me=dqmStore_->get(s.c_str());
431 if(me!=0) hbheEnergyRMS= HcalUtilsClient::getHisto<TH1F*>(me, cloneME_, hbheEnergyRMS, debug_);
else return;
432 s=subdir_+
"Summary Plots/HBHE Laser Timing RMS Distribution"; me=dqmStore_->get(s.c_str());
433 if(me!=0) hbheTimingRMS= HcalUtilsClient::getHisto<TH1F*>(me, cloneME_, hbheTimingRMS, debug_);
else return;
434 s=subdir_+
"Summary Plots/HO Laser Energy Distribution"; me=dqmStore_->get(s.c_str());
435 if(me!=0) hoEnergy = HcalUtilsClient::getHisto<TH1F*>(me, cloneME_, hoEnergy, debug_);
else return;
436 s=subdir_+
"Summary Plots/HO Laser Timing Distribution"; me=dqmStore_->get(s.c_str());
437 if(me!=0) hoTiming = HcalUtilsClient::getHisto<TH1F*>(me, cloneME_, hoTiming, debug_);
else return;
438 s=subdir_+
"Summary Plots/HO Laser Energy RMS_div_Energy Distribution"; me=dqmStore_->get(s.c_str());
439 if(me!=0) hoEnergyRMS = HcalUtilsClient::getHisto<TH1F*>(me, cloneME_, hoEnergyRMS, debug_);
else return;
440 s=subdir_+
"Summary Plots/HO Laser Timing RMS Distribution"; me=dqmStore_->get(s.c_str());
441 if(me!=0) hoTimingRMS = HcalUtilsClient::getHisto<TH1F*>(me, cloneME_, hoTimingRMS, debug_);
else return;
442 s=subdir_+
"Summary Plots/HF Laser Energy Distribution"; me=dqmStore_->get(s.c_str());
443 if(me!=0) hfEnergy = HcalUtilsClient::getHisto<TH1F*>(me, cloneME_, hfEnergy, debug_);
else return;
444 s=subdir_+
"Summary Plots/HF Laser Timing Distribution"; me=dqmStore_->get(s.c_str());
445 if(me!=0) hfTiming = HcalUtilsClient::getHisto<TH1F*>(me, cloneME_, hfTiming, debug_);
else return;
446 s=subdir_+
"Summary Plots/HF Laser Energy RMS_div_Energy Distribution"; me=dqmStore_->get(s.c_str());
447 if(me!=0) hfEnergyRMS = HcalUtilsClient::getHisto<TH1F*>(me, cloneME_, hfEnergyRMS, debug_);
else return;
448 s=subdir_+
"Summary Plots/HF Laser Timing RMS Distribution"; me=dqmStore_->get(s.c_str());
449 if(me!=0) hfTimingRMS = HcalUtilsClient::getHisto<TH1F*>(me, cloneME_, hfTimingRMS, debug_);
else return;
451 s=subdir_+
"Summary Plots/HB RBX average Time-Ref"; me=dqmStore_->get(s.c_str());
452 if(me!=0) hb = HcalUtilsClient::getHisto<TH1F*>(me, cloneME_, hb, debug_);
else return;
453 s=subdir_+
"Summary Plots/HE RBX average Time-Ref"; me=dqmStore_->get(s.c_str());
454 if(me!=0) he = HcalUtilsClient::getHisto<TH1F*>(me, cloneME_, he, debug_);
else return;
455 s=subdir_+
"Summary Plots/HO RBX average Time-Ref"; me=dqmStore_->get(s.c_str());
456 if(me!=0) ho = HcalUtilsClient::getHisto<TH1F*>(me, cloneME_, ho, debug_);
else return;
457 s=subdir_+
"Summary Plots/HF RoBox average Time-Ref"; me=dqmStore_->get(s.c_str());
458 if(me!=0) hf = HcalUtilsClient::getHisto<TH1F*>(me, cloneME_, hf, debug_);
else return;
460 s=subdir_+
"Summary Plots/Laser Timing HBHEHF"; me=dqmStore_->get(s.c_str());
461 if(me!=0) Time2Dhbhehf = HcalUtilsClient::getHisto<TH2F*>(me, cloneME_, Time2Dhbhehf, debug_);
else return;
462 s=subdir_+
"Summary Plots/Laser Timing HO"; me=dqmStore_->get(s.c_str());
463 if(me!=0) Time2Dho = HcalUtilsClient::getHisto<TH2F*>(me, cloneME_, Time2Dho, debug_);
else return;
464 s=subdir_+
"Summary Plots/Laser Energy HBHEHF"; me=dqmStore_->get(s.c_str());
465 if(me!=0) Energy2Dhbhehf= HcalUtilsClient::getHisto<TH2F*>(me, cloneME_, Energy2Dhbhehf, debug_);
else return;
466 s=subdir_+
"Summary Plots/Laser Energy HO"; me=dqmStore_->get(s.c_str());
467 if(me!=0) Energy2Dho = HcalUtilsClient::getHisto<TH2F*>(me, cloneME_, Energy2Dho, debug_);
else return;
468 s=subdir_+
"Summary Plots/HBHEHF Laser (Timing-Ref)+1"; me=dqmStore_->get(s.c_str());
469 if(me!=0) refTime2Dhbhehf = HcalUtilsClient::getHisto<TH2F*>(me, cloneME_, refTime2Dhbhehf, debug_);
else return;
470 s=subdir_+
"Summary Plots/HO Laser (Timing-Ref)+1"; me=dqmStore_->get(s.c_str());
471 if(me!=0) refTime2Dho = HcalUtilsClient::getHisto<TH2F*>(me, cloneME_, refTime2Dho, debug_);
else return;
472 s=subdir_+
"Summary Plots/HBHEHF Laser Energy_div_Ref"; me=dqmStore_->get(s.c_str());
473 if(me!=0) refEnergy2Dhbhehf= HcalUtilsClient::getHisto<TH2F*>(me, cloneME_, refEnergy2Dhbhehf, debug_);
else return;
474 s=subdir_+
"Summary Plots/HO Laser Energy_div_Ref"; me=dqmStore_->get(s.c_str());
475 if(me!=0) refEnergy2Dho = HcalUtilsClient::getHisto<TH2F*>(me, cloneME_, refEnergy2Dho, debug_);
else return;
479 for(
int i=0;
i<56;
i++){
480 sprintf(str,
"RADDAM (%i %i)",RADDAM_CH[
i].
eta,RADDAM_CH[
i].
phi);
481 s=subdir_+
"Raddam Plots/"+str; me=dqmStore_->get(s.c_str());
482 if(me!=0) Raddam[
i] = HcalUtilsClient::getHisto<TH1F*>(me, cloneME_, Raddam[
i], debug_);
483 Raddam[
i]->SetXTitle(
"TS");
484 Raddam[
i]->SetTitle(str);
487 int ievt_ = -1,runNo=-1;
488 s=subdir_+
"HcalDetDiagLaserMonitor Event Number";
489 me = dqmStore_->get(s.c_str());
491 s = me->valueString();
492 sscanf((s.substr(2,s.length()-2)).c_str(),
"%d", &ievt_);
494 s=subdir_+
"HcalDetDiagLaserMonitor Run Number";
495 me = dqmStore_->get(s.c_str());
497 s = me->valueString();
498 sscanf((s.substr(2,s.length()-2)).c_str(),
"%d", &runNo);
500 s=subdir_+
"HcalDetDiagLaserMonitor Reference Run";
501 me = dqmStore_->get(s.c_str());
503 string s=me->valueString();
505 sscanf((s.substr(2,s.length()-2)).c_str(),
"%s", str);
526 TH2F* BadTiming_val[4];
527 TH2F* BadEnergy_val[4];
529 for(
int i=0;
i<4;++
i){
532 string s=subdir_+
"Plots for client/"+name[
i]+
" Laser Timing difference";
533 me=dqmStore_->get(s.c_str());
534 if (me!=0) BadTiming_val[
i]=HcalUtilsClient::getHisto<TH2F*>(me, cloneME_, BadTiming_val[
i], debug_);
else return;
535 s=subdir_+
"Plots for client/"+name[
i]+
" Laser Energy difference";
536 me=dqmStore_->get(s.c_str());
537 if (me!=0) BadEnergy_val[
i]=HcalUtilsClient::getHisto<TH2F*>(me, cloneME_, BadEnergy_val[
i], debug_);
else return;
541 std::ofstream badTiming;
542 badTiming.open((htmlDir+
"bad_timing_table.html").c_str());
544 std::ofstream badEnergy;
545 badEnergy.open((htmlDir+
"bad_energy_table.html").c_str());
548 for(
int d=0;d<4;++d){
549 int etabins=BadTiming_val[d]->GetNbinsX();
550 int phibins=BadTiming_val[d]->GetNbinsY();
553 if(ieta==-9999)
continue;
560 float val=BadTiming_val[d]->GetBinContent(
eta+1,
phi+1);
563 if(ieta>0){ HBP[0]++;}
else{ HBM[0]++;} badT++;
564 if(badstatusmap.find(hcalid)==badstatusmap.end()){
if(ieta>0){ newHBP[0]++;}
else{ newHBM[0]++;}}
567 if(ieta>0){ HEP[0]++;}
else{ HEM[0]++;} badT++;
568 if(badstatusmap.find(hcalid)==badstatusmap.end()){
if(ieta>0){ newHEP[0]++;}
else{ newHEM[0]++;}}
571 if(ieta>0){ HFP[0]++;}
else{ HFM[0]++;} badT++;
572 if(badstatusmap.find(hcalid)==badstatusmap.end()){
if(ieta>0){ newHFP[0]++;}
else{ newHFM[0]++;}}
576 if(badstatusmap.find(hcalid)==badstatusmap.end()){newHO[0]++;}
579 val=BadEnergy_val[d]->GetBinContent(
eta+1,
phi+1);
582 if(ieta>0){ HBP[1]++;}
else{ HBM[1]++;} badE++;
583 if(badstatusmap.find(hcalid)==badstatusmap.end()){
if(ieta>0){ newHBP[1]++;}
else{ newHBM[1]++;}}
586 if(ieta>0){ HEP[1]++;}
else{ HEM[1]++;} badE++;
587 if(badstatusmap.find(hcalid)==badstatusmap.end()){
if(ieta>0){ newHEP[1]++;}
else{ newHEM[1]++;}}
590 if(ieta>0){ HFP[1]++;}
else{ HFM[1]++;} badE++;
591 if(badstatusmap.find(hcalid)==badstatusmap.end()){
if(ieta>0){ newHFP[1]++;}
else{ newHFM[1]++;}}
595 if(badstatusmap.find(hcalid)==badstatusmap.end()){newHO[1]++;}
603 if((HBP[0]+HBM[0])>0){
604 badTiming <<
"<tr><td align=\"center\"><h3>"<<
"HB" <<
"</h3></td></tr>" << endl;
605 for(
int d=0;d<4;++d){
606 int etabins=BadTiming_val[d]->GetNbinsX();
607 int phibins=BadTiming_val[d]->GetNbinsY();
610 if(ieta==-9999)
continue;
612 float val=BadTiming_val[d]->GetBinContent(
eta+1,
phi+1);
617 sprintf(str,
"Time-Ref=%.2f",val);
623 if((HEP[0]+HEM[0])>0){
624 badTiming <<
"<tr><td align=\"center\"><h3>"<<
"HE" <<
"</h3></td></tr>" << endl;
625 for(
int d=0;d<4;++d){
626 int etabins=BadTiming_val[d]->GetNbinsX();
627 int phibins=BadTiming_val[d]->GetNbinsY();
630 if(ieta==-9999)
continue;
632 float val=BadTiming_val[d]->GetBinContent(
eta+1,
phi+1);
637 sprintf(str,
"Time-Ref=%.2f",val);
644 badTiming <<
"<tr><td align=\"center\"><h3>"<<
"HO" <<
"</h3></td></tr>" << endl;
645 for(
int d=0;d<4;++d){
646 int etabins=BadTiming_val[d]->GetNbinsX();
647 int phibins=BadTiming_val[d]->GetNbinsY();
650 if(ieta==-9999)
continue;
652 float val=BadTiming_val[d]->GetBinContent(
eta+1,
phi+1);
657 sprintf(str,
"Time-Ref=%.2f",val);
663 if((HFP[0]+HFM[0])>0){
664 badTiming <<
"<tr><td align=\"center\"><h3>"<<
"HF" <<
"</h3></td></tr>" << endl;
665 for(
int d=0;d<4;++d){
666 int etabins=BadTiming_val[d]->GetNbinsX();
667 int phibins=BadTiming_val[d]->GetNbinsY();
670 if(ieta==-9999)
continue;
672 float val=BadTiming_val[d]->GetBinContent(
eta+1,
phi+1);
677 sprintf(str,
"Time-Ref=%.2f",val);
684 if((HBP[1]+HBM[1])>0){
685 badEnergy <<
"<tr><td align=\"center\"><h3>"<<
"HB" <<
"</h3></td></tr>" << endl;
686 for(
int d=0;d<4;++d){
687 int etabins=BadEnergy_val[d]->GetNbinsX();
688 int phibins=BadEnergy_val[d]->GetNbinsY();
691 if(ieta==-9999)
continue;
693 float val=BadEnergy_val[d]->GetBinContent(
eta+1,
phi+1);
698 sprintf(str,
"Energy/Ref=%.2f",val);
704 if((HEP[1]+HEM[1])>0){
705 badEnergy <<
"<tr><td align=\"center\"><h3>"<<
"HE" <<
"</h3></td></tr>" << endl;
706 for(
int d=0;d<4;++d){
707 int etabins=BadEnergy_val[d]->GetNbinsX();
708 int phibins=BadEnergy_val[d]->GetNbinsY();
711 if(ieta==-9999)
continue;
713 float val=BadEnergy_val[d]->GetBinContent(
eta+1,
phi+1);
718 sprintf(str,
"Energy/Ref=%.2f",val);
725 badEnergy <<
"<tr><td align=\"center\"><h3>"<<
"HO" <<
"</h3></td></tr>" << endl;
726 for(
int d=0;d<4;++d){
727 int etabins=BadEnergy_val[d]->GetNbinsX();
728 int phibins=BadEnergy_val[d]->GetNbinsY();
731 if(ieta==-9999)
continue;
733 float val=BadEnergy_val[d]->GetBinContent(
eta+1,
phi+1);
738 sprintf(str,
"Energy/Ref=%.2f",val);
744 if((HFP[1]+HFM[1])>0){
745 badEnergy <<
"<tr><td align=\"center\"><h3>"<<
"HF" <<
"</h3></td></tr>" << endl;
746 for(
int d=0;d<4;++d){
747 int etabins=BadEnergy_val[d]->GetNbinsX();
748 int phibins=BadEnergy_val[d]->GetNbinsY();
751 if(ieta==-9999)
continue;
753 float val=BadEnergy_val[d]->GetBinContent(
eta+1,
phi+1);
758 sprintf(str,
"Energy/Ref=%.2f",val);
770 std::ofstream htmlFile;
771 string outfile=htmlDir+name_+
".html";
772 htmlFile.open(outfile.c_str());
774 gROOT->SetBatch(
true);
775 gStyle->SetCanvasColor(0);
776 gStyle->SetPadColor(0);
777 gStyle->SetOptStat(111110);
778 gStyle->SetPalette(1);
779 TCanvas *
can=
new TCanvas(
"HcalDetDiagLaserClient",
"HcalDetDiagLaserClient",0,0,500,350);
782 if(Raddam[0]->GetEntries()>0){
783 std::ofstream RADDAM;
784 RADDAM.open((htmlDir +
"RADDAM_"+name_).c_str());
785 RADDAM <<
"</html><html xmlns=\"http://www.w3.org/1999/xhtml\">"<< endl;
786 RADDAM <<
"<head>"<< endl;
787 RADDAM <<
"<meta http-equiv=\"Content-Type\" content=\"text/html\"/>"<< endl;
788 RADDAM <<
"<title>"<<
"RADDAM channels" <<
"</title>"<< endl;
789 RADDAM <<
"<style type=\"text/css\">"<< endl;
790 RADDAM <<
" body,td{ background-color: #FFFFCC; font-family: arial, arial ce, helvetica; font-size: 12px; }"<< endl;
791 RADDAM <<
" td.s0 { font-family: arial, arial ce, helvetica; }"<< endl;
792 RADDAM <<
" td.s1 { font-family: arial, arial ce, helvetica; font-weight: bold; background-color: #FFC169; text-align: center;}"<< endl;
793 RADDAM <<
" td.s2 { font-family: arial, arial ce, helvetica; background-color: #eeeeee; }"<< endl;
794 RADDAM <<
" td.s3 { font-family: arial, arial ce, helvetica; background-color: #d0d0d0; }"<< endl;
795 RADDAM <<
" td.s4 { font-family: arial, arial ce, helvetica; background-color: #FFC169; }"<< endl;
796 RADDAM <<
"</style>"<< endl;
797 RADDAM <<
"<body>"<< endl;
798 RADDAM <<
"<h2>Run "<< runNo<<
": RADDAM channels event shape </h2>" << endl;
799 RADDAM <<
"<table>"<< endl;
802 for(
int i=0;
i<28;
i++){
803 RADDAM <<
"<tr align=\"left\">" << endl;
806 Raddam[2*
i]->Draw(); sprintf(str,
"%02d",2*
i); can->SaveAs((htmlDir +
"raddam_ch"+str+
".gif").c_str());
807 Raddam[2*
i+1]->Draw(); sprintf(str,
"%02d",2*
i+1); can->SaveAs((htmlDir +
"raddam_ch"+str+
".gif").c_str());
808 sprintf(str,
"raddam_ch%02d.gif",2*
i);
809 RADDAM <<
"<td align=\"center\"><img src=\""<<str<<
"\" alt=\"raddam channel\"> </td>" << endl;
810 sprintf(str,
"raddam_ch%02d.gif",2*
i+1);
811 RADDAM <<
"<td align=\"center\"><img src=\""<<str<<
"\" alt=\"raddam channel\"> </td>" << endl;
812 RADDAM <<
"</tr>" << endl;
815 RADDAM <<
"</table>"<< endl;
816 RADDAM <<
"</body>"<< endl;
817 RADDAM <<
"</html>"<< endl;
821 Time2Dhbhehf->SetXTitle(
"i#eta");
822 Time2Dhbhehf->SetYTitle(
"i#phi");
823 Time2Dho->SetXTitle(
"i#eta");
824 Time2Dho->SetYTitle(
"i#phi");
825 Energy2Dhbhehf->SetXTitle(
"i#eta");
826 Energy2Dhbhehf->SetYTitle(
"i#phi");
827 Energy2Dho->SetXTitle(
"i#eta");
828 Energy2Dho->SetYTitle(
"i#phi");
829 refTime2Dhbhehf->SetXTitle(
"i#eta");
830 refTime2Dhbhehf->SetYTitle(
"i#phi");
831 refTime2Dho->SetXTitle(
"i#eta");
832 refTime2Dho->SetYTitle(
"i#phi");
833 refEnergy2Dhbhehf->SetXTitle(
"i#eta");
834 refEnergy2Dhbhehf->SetYTitle(
"i#phi");
835 refEnergy2Dho->SetXTitle(
"i#eta");
836 refEnergy2Dho->SetYTitle(
"i#phi");
837 refTime2Dhbhehf->SetMinimum(0);
838 refTime2Dhbhehf->SetMaximum(2);
839 refTime2Dho->SetMinimum(0);
840 refTime2Dho->SetMaximum(2);
841 refEnergy2Dhbhehf->SetMinimum(0.5);
842 refEnergy2Dhbhehf->SetMaximum(1.5);
843 refEnergy2Dho->SetMinimum(0.5);
844 refEnergy2Dho->SetMaximum(1.5);
846 Time2Dhbhehf->SetNdivisions(36,
"Y");
847 Time2Dho->SetNdivisions(36,
"Y");
848 Energy2Dhbhehf->SetNdivisions(36,
"Y");
849 Energy2Dho->SetNdivisions(36,
"Y");
850 refTime2Dhbhehf->SetNdivisions(36,
"Y");
851 refTime2Dho->SetNdivisions(36,
"Y");
852 refEnergy2Dhbhehf->SetNdivisions(36,
"Y");
853 refEnergy2Dho->SetNdivisions(36,
"Y");
856 htmlFile <<
"<!DOCTYPE html PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\"> " << endl;
857 htmlFile <<
"<html> " << endl;
858 htmlFile <<
"<head> " << endl;
859 htmlFile <<
" <meta content=\"text/html; charset=ISO-8859-1\" " << endl;
860 htmlFile <<
" http-equiv=\"content-type\"> " << endl;
861 htmlFile <<
" <title>Detector Diagnostics Laser Monitor</title> " << endl;
862 htmlFile <<
"</head> " << endl;
863 htmlFile <<
"<style type=\"text/css\"> td { font-weight: bold } </style>" << endl;
865 htmlFile <<
"<style type=\"text/css\">"<< endl;
866 htmlFile <<
" td.s0 { font-family: arial, arial ce, helvetica; font-weight: bold; background-color: #FF7700; text-align: center;}"<< endl;
867 htmlFile <<
" td.s1 { font-family: arial, arial ce, helvetica; font-weight: bold; background-color: #FFC169; text-align: center;}"<< endl;
868 htmlFile <<
" td.s2 { font-family: arial, arial ce, helvetica; background-color: red; }"<< endl;
869 htmlFile <<
" td.s3 { font-family: arial, arial ce, helvetica; background-color: yellow; }"<< endl;
870 htmlFile <<
" td.s4 { font-family: arial, arial ce, helvetica; background-color: green; }"<< endl;
871 htmlFile <<
" td.s5 { font-family: arial, arial ce, helvetica; background-color: silver; }"<< endl;
872 std::string state[4]={
"<td class=\"s2\" align=\"center\">",
873 "<td class=\"s3\" align=\"center\">",
874 "<td class=\"s4\" align=\"center\">",
875 "<td class=\"s5\" align=\"center\">"};
876 htmlFile <<
"</style>"<< endl;
878 htmlFile <<
"<body> " << endl;
879 htmlFile <<
"<br> " << endl;
880 htmlFile <<
"<h2>Run: " << endl;
881 htmlFile <<
" <span " << endl;
882 htmlFile <<
" style=\"color: rgb(0, 0, 153);\">" << runNo <<
"</span></h2>" << endl;
883 htmlFile <<
"<h2>Monitoring task: <span " << endl;
884 htmlFile <<
" style=\"color: rgb(0, 0, 153);\">Detector Diagnostics Laser Monitor</span></h2> " << endl;
885 htmlFile <<
"<h2>Events processed: <span " << endl;
886 htmlFile <<
" style=\"color: rgb(0, 0, 153);\">" << ievt_ <<
"</span></h2>" << endl;
887 htmlFile <<
"<hr>" << endl;
889 htmlFile <<
"<table width=100% border=1>" << endl;
890 htmlFile <<
"<tr>" << endl;
891 htmlFile <<
"<td class=\"s0\" width=20% align=\"center\">SebDet</td>" << endl;
892 htmlFile <<
"<td class=\"s0\" width=20% align=\"center\">Bad Timing</td>" << endl;
893 htmlFile <<
"<td class=\"s0\" width=20% align=\"center\">Bad Energy</td>" << endl;
894 htmlFile <<
"</tr><tr>" << endl;
896 htmlFile <<
"<td class=\"s1\" align=\"center\">HB+</td>" << endl;
897 if(HBP[0]==0) ind1=2;
if(HBP[0]>0 && HBP[0]<=12) ind1=1;
if(HBP[0]>12) ind1=0;
898 if(HBP[1]==0) ind2=2;
if(HBP[1]>0 && HBP[1]<=12) ind2=1;
if(HBP[1]>12) ind2=0;
899 if(!HBpresent_) ind1=ind2=3;
900 htmlFile << state[ind1] << HBP[0] <<
"</td>" << endl;
901 htmlFile << state[ind2] << HBP[1] <<
"</td>" << endl;
902 htmlFile <<
"</tr><tr>" << endl;
903 htmlFile <<
"<td class=\"s1\" align=\"center\">HB-</td>" << endl;
904 if(HBM[0]==0) ind1=2;
if(HBM[0]>0 && HBP[0]<=12) ind1=1;
if(HBM[0]>12) ind1=0;
905 if(HBM[1]==0) ind2=2;
if(HBM[1]>0 && HBP[1]<=12) ind2=1;
if(HBM[1]>12) ind2=0;
906 if(!HBpresent_) ind1=ind2=3;
907 htmlFile << state[ind1] << HBM[0] <<
"</td>" << endl;
908 htmlFile << state[ind2] << HBM[1] <<
"</td>" << endl;
909 htmlFile <<
"</tr><tr>" << endl;
910 htmlFile <<
"<td class=\"s1\" align=\"center\">HE+</td>" << endl;
911 if(HEP[0]==0) ind1=2;
if(HEP[0]>0 && HEP[0]<=12) ind1=1;
if(HEP[0]>12) ind1=0;
912 if(HEP[1]==0) ind2=2;
if(HEP[1]>0 && HEP[1]<=12) ind2=1;
if(HEP[1]>12) ind2=0;
913 if(!HEpresent_) ind1=ind2=3;
914 if(ind1==0 || ind2==0)
status|=2;
else if(ind1==1 || ind2==1)
status|=1;
915 htmlFile << state[ind1] << HEP[0] <<
"</td>" << endl;
916 htmlFile << state[ind2] << HEP[1] <<
"</td>" << endl;
917 htmlFile <<
"</tr><tr>" << endl;
918 htmlFile <<
"<td class=\"s1\" align=\"center\">HE-</td>" << endl;
919 if(HEM[0]==0) ind1=2;
if(HEM[0]>0 && HEM[0]<=12) ind1=1;
if(HEM[0]>12) ind1=0;
920 if(HEM[1]==0) ind2=2;
if(HEM[1]>0 && HEM[1]<=12) ind2=1;
if(HEM[1]>12) ind2=0;
921 if(!HEpresent_) ind1=ind2=3;
922 if(ind1==0 || ind2==0)
status|=2;
else if(ind1==1 || ind2==1)
status|=1;
923 htmlFile << state[ind1] << HEM[0] <<
"</td>" << endl;
924 htmlFile << state[ind2] << HEM[1] <<
"</td>" << endl;
925 htmlFile <<
"</tr><tr>" << endl;
926 htmlFile <<
"<td class=\"s1\" align=\"center\">HF+</td>" << endl;
927 if(HFP[0]==0) ind1=2;
if(HFP[0]>0 && HFP[0]<=12) ind1=1;
if(HFP[0]>12) ind1=0;
928 if(HFP[1]==0) ind2=2;
if(HFP[1]>0 && HFP[1]<=12) ind2=1;
if(HFP[1]>12) ind2=0;
929 if(!HOpresent_) ind1=ind2=3;
930 if(ind1==0 || ind2==0)
status|=2;
else if(ind1==1 || ind2==1)
status|=1;
931 htmlFile << state[ind1] << HFP[0] <<
"</td>" << endl;
932 htmlFile << state[ind2] << HFP[1] <<
"</td>" << endl;
933 htmlFile <<
"</tr><tr>" << endl;
934 htmlFile <<
"<td class=\"s1\" align=\"center\">HF-</td>" << endl;
935 if(HFM[0]==0) ind1=2;
if(HFM[0]>0 && HFM[0]<=12) ind1=1;
if(HFM[0]>12) ind1=0;
936 if(HFM[1]==0) ind2=2;
if(HFM[1]>0 && HFM[1]<=12) ind2=1;
if(HFM[1]>12) ind2=0;
937 if(!HFpresent_) ind1=ind2=3;
938 if(ind1==0 || ind2==0)
status|=2;
else if(ind1==1 || ind2==1)
status|=1;
939 htmlFile << state[ind1] << HFM[0] <<
"</td>" << endl;
940 htmlFile << state[ind2] << HFM[1] <<
"</td>" << endl;
941 htmlFile <<
"</tr><tr>" << endl;
942 htmlFile <<
"<td class=\"s1\" align=\"center\">HO</td>" << endl;
943 if(HO[0]==0) ind1=2;
if(HO[0]>0 && HO[0]<=12) ind1=1;
if(HO[0]>12) ind1=0;
944 if(HO[1]==0) ind2=2;
if(HO[1]>0 && HO[1]<=12) ind2=1;
if(HO[1]>12) ind2=0;
945 if(!HFpresent_) ind1=ind2=3;
946 if(ind1==0 || ind2==0)
status|=2;
else if(ind1==1 || ind2==1)
status|=1;
947 htmlFile << state[ind1] << HO[0] <<
"</td>" << endl;
948 htmlFile << state[ind2] << HO[1] <<
"</td>" << endl;
950 htmlFile <<
"</tr></table>" << endl;
951 htmlFile <<
"<hr>" << endl;
954 htmlFile <<
"<table width=100% border=1><tr>" << endl;
955 if(badT>0) htmlFile <<
"<td><a href=\"" <<
"bad_timing_table.html" <<
"\">list of bad timing channels</a></td>";
956 if(badE>0) htmlFile <<
"<td><a href=\"" <<
"bad_energy_table.html" <<
"\">list of bad energy channels</a></td>";
957 htmlFile <<
"</tr></table>" << endl;
962 if(Raddam[0]->GetEntries()>0){
963 htmlFile <<
"<h2 align=\"center\"><a href=\"" << (
"RADDAM_"+name_).c_str() <<
"\">RADDAM channels</a><h2>";
964 htmlFile <<
"<hr>" << endl;
967 htmlFile <<
"<h2 align=\"center\">Stability Laser plots (Reference run "<<ref_run<<
")</h2>" << endl;
968 htmlFile <<
"<table width=100% border=0><tr>" << endl;
973 htmlFile <<
"<tr align=\"left\">" << endl;
974 refTime2Dhbhehf->SetStats(0);
975 refTime2Dho->SetStats(0);
976 refTime2Dhbhehf->Draw(
"COLZ"); can->SaveAs((htmlDir +
"ref_laser_timing_hbhehf.gif").c_str());
977 refTime2Dho->Draw(
"COLZ"); can->SaveAs((htmlDir +
"ref_laser_timing_ho.gif").c_str());
978 htmlFile <<
"<td align=\"center\"><img src=\"ref_laser_timing_hbhehf.gif\" alt=\"ref laser timing distribution\"> </td>" << endl;
979 htmlFile <<
"<td align=\"center\"><img src=\"ref_laser_timing_ho.gif\" alt=\"ref laser timing distribution\"> </td>" << endl;
980 htmlFile <<
"</tr>" << endl;
983 if(hb!=0 && he!=0 && ho!=0 && hf!=0){
984 hb->SetMarkerStyle(22);
985 hb->SetMarkerColor(kRed);
986 hb->GetYaxis()->SetRangeUser(hb->GetMinimum()-1,hb->GetMaximum()+1);
987 hb->GetXaxis()->SetNdivisions(520);
989 he->SetMarkerStyle(22);
990 he->SetMarkerColor(kRed);
991 he->GetYaxis()->SetRangeUser(he->GetMinimum()-1,he->GetMaximum()+1);
992 he->GetXaxis()->SetNdivisions(520);
994 ho->SetMarkerStyle(22);
995 ho->SetMarkerColor(kRed);
996 ho->GetYaxis()->SetRangeUser(ho->GetMinimum()-1,ho->GetMaximum()+1);
997 ho->GetXaxis()->SetNdivisions(520);
999 hf->SetMarkerStyle(22);
1000 hf->SetMarkerColor(kRed);
1001 hf->GetYaxis()->SetRangeUser(hf->GetMinimum()-1,hf->GetMaximum()+1);
1002 hf->GetXaxis()->SetNdivisions(520);
1009 hb->GetXaxis()->SetBit(TAxis::kLabelsVert);
1010 he->GetXaxis()->SetBit(TAxis::kLabelsVert);
1011 ho->GetXaxis()->SetBit(TAxis::kLabelsVert);
1012 hf->GetXaxis()->SetBit(TAxis::kLabelsVert);
1013 hb->GetXaxis()->SetLabelSize(0.05);
1014 he->GetXaxis()->SetLabelSize(0.05);
1015 ho->GetXaxis()->SetLabelSize(0.05);
1016 hf->GetXaxis()->SetLabelSize(0.05);
1019 htmlFile <<
"<tr align=\"left\">" << endl;
1020 htmlFile <<
"<td align=\"center\"><img src=\"hb_rbx_timing1D.gif\" alt=\"rbx timing\"> </td>" << endl;
1021 htmlFile <<
"<td align=\"center\"><img src=\"he_rbx_timing1D.gif\" alt=\"rbx timing\"> </td>" << endl;
1022 htmlFile <<
"</tr>" << endl;
1023 htmlFile <<
"<tr align=\"left\">" << endl;
1024 htmlFile <<
"<td align=\"center\"><img src=\"ho_rbx_timing1D.gif\" alt=\"rbx timing\"> </td>" << endl;
1025 htmlFile <<
"<td align=\"center\"><img src=\"hf_rbx_timing1D.gif\" alt=\"rbx timing\"> </td>" << endl;
1026 htmlFile <<
"</tr>" << endl;
1027 }
else printf(
"Error\n");
1031 htmlFile <<
"<tr align=\"left\">" << endl;
1032 refEnergy2Dhbhehf->SetStats(0);
1033 refEnergy2Dho->SetStats(0);
1034 refEnergy2Dhbhehf->Draw(
"COLZ"); can->SaveAs((htmlDir +
"ref_laser_energy_hbhehf.gif").c_str());
1035 refEnergy2Dho->Draw(
"COLZ"); can->SaveAs((htmlDir +
"ref_laser_energy_ho.gif").c_str());
1036 htmlFile <<
"<td align=\"center\"><img src=\"ref_laser_energy_hbhehf.gif\" alt=\"ref laser energy distribution\"> </td>" << endl;
1037 htmlFile <<
"<td align=\"center\"><img src=\"ref_laser_energy_ho.gif\" alt=\"ref laser energy distribution\"> </td>" << endl;
1038 htmlFile <<
"</tr>" << endl;
1040 htmlFile <<
"</table>" << endl;
1043 htmlFile <<
"<h2 align=\"center\">Summary Laser plots</h2>" << endl;
1044 htmlFile <<
"<table width=100% border=0><tr>" << endl;
1045 htmlFile <<
"<tr align=\"left\">" << endl;
1046 Time2Dhbhehf->SetStats(0);
1047 Time2Dho->SetStats(0);
1048 Time2Dhbhehf->Draw(
"COLZ"); can->SaveAs((htmlDir +
"laser_timing_hbhehf.gif").c_str());
1049 Time2Dho->Draw(
"COLZ"); can->SaveAs((htmlDir +
"laser_timing_ho.gif").c_str());
1050 htmlFile <<
"<td align=\"center\"><img src=\"laser_timing_hbhehf.gif\" alt=\"laser timing distribution\"> </td>" << endl;
1051 htmlFile <<
"<td align=\"center\"><img src=\"laser_timing_ho.gif\" alt=\"laser timing distribution\"> </td>" << endl;
1052 htmlFile <<
"</tr>" << endl;
1054 htmlFile <<
"<tr align=\"left\">" << endl;
1055 Energy2Dhbhehf->SetStats(0);
1056 Energy2Dho->SetStats(0);
1057 Energy2Dhbhehf->Draw(
"COLZ"); can->SaveAs((htmlDir +
"laser_energy_hbhehf.gif").c_str());
1058 Energy2Dho->Draw(
"COLZ"); can->SaveAs((htmlDir +
"laser_energy_ho.gif").c_str());
1059 htmlFile <<
"<td align=\"center\"><img src=\"laser_energy_hbhehf.gif\" alt=\"laser energy distribution\"> </td>" << endl;
1060 htmlFile <<
"<td align=\"center\"><img src=\"laser_energy_ho.gif\" alt=\"laser energy distribution\"> </td>" << endl;
1061 htmlFile <<
"</tr>" << endl;
1064 htmlFile <<
"<tr align=\"left\">" << endl;
1065 hbheEnergy->Draw(); can->SaveAs((htmlDir +
"hbhe_laser_energy_distribution.gif").c_str());
1066 hbheEnergyRMS->Draw(); can->SaveAs((htmlDir +
"hbhe_laser_energy_rms_distribution.gif").c_str());
1067 htmlFile <<
"<td align=\"center\"><img src=\"hbhe_laser_energy_distribution.gif\" alt=\"hbhe laser energy distribution\"> </td>" << endl;
1068 htmlFile <<
"<td align=\"center\"><img src=\"hbhe_laser_energy_rms_distribution.gif\" alt=\"hbhelaser energy rms distribution\"> </td>" << endl;
1069 htmlFile <<
"</tr>" << endl;
1070 htmlFile <<
"<tr align=\"left\">" << endl;
1071 hbheTiming->Draw(); can->SaveAs((htmlDir +
"hbhe_laser_timing_distribution.gif").c_str());
1072 hbheTimingRMS->Draw(); can->SaveAs((htmlDir +
"hbhe_laser_timing_rms_distribution.gif").c_str());
1073 htmlFile <<
"<td align=\"center\"><img src=\"hbhe_laser_timing_distribution.gif\" alt=\"hbhe laser timing distribution\"> </td>" << endl;
1074 htmlFile <<
"<td align=\"center\"><img src=\"hbhe_laser_timing_rms_distribution.gif\" alt=\"hbhe laser timing rms distribution\"> </td>" << endl;
1075 htmlFile <<
"</tr>" << endl;
1077 htmlFile <<
"<tr align=\"left\">" << endl;
1078 hoEnergy->Draw(); can->SaveAs((htmlDir +
"ho_laser_energy_distribution.gif").c_str());
1079 hoEnergyRMS->Draw(); can->SaveAs((htmlDir +
"ho_laser_energy_rms_distribution.gif").c_str());
1080 htmlFile <<
"<td align=\"center\"><img src=\"ho_laser_energy_distribution.gif\" alt=\"ho laser energy distribution\"> </td>" << endl;
1081 htmlFile <<
"<td align=\"center\"><img src=\"ho_laser_energy_rms_distribution.gif\" alt=\"ho laser energy rms distribution\"> </td>" << endl;
1082 htmlFile <<
"</tr>" << endl;
1083 htmlFile <<
"<tr align=\"left\">" << endl;
1084 hoTiming->Draw(); can->SaveAs((htmlDir +
"ho_laser_timing_distribution.gif").c_str());
1085 hoTimingRMS->Draw(); can->SaveAs((htmlDir +
"ho_laser_timing_rms_distribution.gif").c_str());
1086 htmlFile <<
"<td align=\"center\"><img src=\"ho_laser_timing_distribution.gif\" alt=\"ho laser timing distribution\"> </td>" << endl;
1087 htmlFile <<
"<td align=\"center\"><img src=\"ho_laser_timing_rms_distribution.gif\" alt=\"ho laser timing rms distribution\"> </td>" << endl;
1089 htmlFile <<
"</tr>" << endl;
1090 htmlFile <<
"<tr align=\"left\">" << endl;
1091 hfEnergy->Draw(); can->SaveAs((htmlDir +
"hf_laser_energy_distribution.gif").c_str());
1092 hfEnergyRMS->Draw(); can->SaveAs((htmlDir +
"hf_laser_energy_rms_distribution.gif").c_str());
1093 htmlFile <<
"<td align=\"center\"><img src=\"hf_laser_energy_distribution.gif\" alt=\"hf laser energy distribution\"> </td>" << endl;
1094 htmlFile <<
"<td align=\"center\"><img src=\"hf_laser_energy_rms_distribution.gif\" alt=\"hf laser energy rms distribution\"> </td>" << endl;
1095 htmlFile <<
"</tr>" << endl;
1096 htmlFile <<
"<tr align=\"left\">" << endl;
1097 hfTiming->Draw(); can->SaveAs((htmlDir +
"hf_laser_timing_distribution.gif").c_str());
1098 hfTimingRMS->Draw(); can->SaveAs((htmlDir +
"hf_laser_timing_rms_distribution.gif").c_str());
1099 htmlFile <<
"<td align=\"center\"><img src=\"hf_laser_timing_distribution.gif\" alt=\"hf laser timing distribution\"> </td>" << endl;
1100 htmlFile <<
"<td align=\"center\"><img src=\"hf_laser_timing_rms_distribution.gif\" alt=\"hf laser timing rms distribution\"> </td>" << endl;
1101 htmlFile <<
"</tr>" << endl;
1103 can->SetBottomMargin(0.2);
1104 if(hb->GetEntries()>0)hb->Draw(
"P");
else hb->Draw(); can->SaveAs((htmlDir +
"hb_rbx_timing1D.gif").c_str());
1105 if(he->GetEntries()>0)he->Draw(
"P");
else he->Draw(); can->SaveAs((htmlDir +
"he_rbx_timing1D.gif").c_str());
1106 if(ho->GetEntries()>0)ho->Draw(
"P");
else ho->Draw(); can->SaveAs((htmlDir +
"ho_rbx_timing1D.gif").c_str());
1107 if(hf->GetEntries()>0)hf->Draw(
"P");
else hf->Draw(); can->SaveAs((htmlDir +
"hf_rbx_timing1D.gif").c_str());
1109 htmlFile <<
"</table>" << endl;
1111 htmlFile <<
"</body> " << endl;
1112 htmlFile <<
"</html> " << endl;
bool isHO(int etabin, int depth)
T getUntrackedParameter(std::string const &, T const &) const
int fiberIndex() const
get the fiber index [1-8] (which of eight fibers carried by a spigot) (valid only for non-trigger-cha...
HcalDetDiagLaserClient()
Constructors.
std::vector< std::string > HcalEtaPhiHistNames()
int htrSlot() const
get the htr slot
bool isHE(int etabin, int depth)
int readoutVMECrateId() const
get the readout VME crate number
void htmlOutput(std::string)
void calculateProblems(void)
bool hasErrors_Temp(void)
int depth() const
get the tower depth
bool hasWarnings_Temp(void)
int CalcIeta(int subdet, int eta, int depth)
static void printTableHeader(std::ofstream &file, std::string header)
int htrTopBottom() const
get the htr top/bottom (1=top/0=bottom)
int ieta() const
get the cell ieta
int dccid() const
get the (Hcal local) DCC id
bool isHB(int etabin, int depth)
int spigot() const
get the spigot (input number on DCC)
std::string valueString(void) const
int iphi() const
get the cell iphi
bool isHF(int etabin, int depth)
int64_t getIntValue(void) const
void FillUnphysicalHEHFBins(std::vector< TH2F > &hh)
~HcalDetDiagLaserClient()
Destructor.
void updateChannelStatus(std::map< HcalDetId, unsigned int > &myqual)
static void printTableTail(std::ofstream &file)
Readout chain identification for Hcal [31:26] Unused (so far) [25] Trigger-chain id flag [24:20] Read...
static void printTableLine(std::ofstream &file, int ind, HcalDetId &detid, HcalFrontEndId &lmap_entry, HcalElectronicsId &emap_entry, std::string comment="")
const DetId lookup(HcalElectronicsId fId) const
lookup the logical detid associated with the given electronics id