26 Raddam_ch RADDAM_CH[56]={{-30,15},{-32,15},{-34,15},{-36,15},{-38,15},{-40,15},{-41,15},
27 {-30,35},{-32,35},{-34,35},{-36,35},{-38,35},{-40,35},{-41,35},
28 {-30,51},{-32,51},{-34,51},{-36,51},{-38,51},{-40,51},{-41,51},
29 {-30,71},{-32,71},{-34,71},{-36,71},{-38,71},{-40,71},{-41,71},
30 {30, 01},{32, 01},{34, 01},{36, 01},{38, 01},{40, 71},{41, 71},
31 {30, 21},{32, 21},{34, 21},{36, 21},{38, 21},{40, 19},{41, 19},
32 {30, 37},{32, 37},{34, 37},{36, 37},{38, 37},{40, 35},{41, 35},
33 {30, 57},{32, 57},{34, 57},{36, 57},{38, 57},{40, 55},{41, 55}};
48 if (prefixME_.substr(prefixME_.size()-1,prefixME_.size())!=
"/")
49 prefixME_.append(
"/");
51 if (subdir_.size()>0 && subdir_.substr(subdir_.size()-1,subdir_.size())!=
"/")
53 subdir_=prefixME_+subdir_;
67 ProblemCellsByDepth=0;
72 if (debug_>2)
std::cout <<
"\tHcalDetDiagLaserClient::analyze()"<<std::endl;
78 if (debug_>2)
std::cout <<
"\t\tHcalDetDiagLaserClient::calculateProblems()"<<std::endl;
79 if(!dqmStore_)
return;
81 int etabins=0, phibins=0, zside=0;
82 double problemvalue=0;
87 ProblemCells->Reset();
88 (ProblemCells->getTH2F())->SetMaximum(1.05);
89 (ProblemCells->getTH2F())->SetMinimum(0.);
91 for (
unsigned int d=0;d<ProblemCellsByDepth->depth.size();++d)
93 if (ProblemCellsByDepth->depth[d]!=0)
95 ProblemCellsByDepth->depth[d]->Reset();
96 (ProblemCellsByDepth->depth[d]->getTH2F())->SetMaximum(1.05);
97 (ProblemCellsByDepth->depth[d]->getTH2F())->SetMinimum(0.);
110 for (
int i=0;
i<4;++
i)
114 string s=subdir_+name[
i]+
" Problem Bad Laser Timing";
115 me=dqmStore_->get(s.c_str());
116 if (me!=0) BadTiming[
i]=HcalUtilsClient::getHisto<TH2F*>(me, cloneME_, BadTiming[
i], debug_);
117 else if (debug_>0)
std::cout <<
"<HcalDetDiagLaserClient::calculateProblems> could not get histogram '"<<s<<
"'"<<std::endl;
118 s=subdir_+name[
i]+
" Problem Bad Laser Energy";
119 me=dqmStore_->get(s.c_str());
120 if (me!=0) BadEnergy[
i]=HcalUtilsClient::getHisto<TH2F*>(me, cloneME_, BadEnergy[
i], debug_);
121 else if (debug_>0)
std::cout <<
"<HcalDetDiagLaserClient::calculateProblems> could not get histogram '"<<s<<
"'"<<std::endl;
127 for (
unsigned int d=0;d<ProblemCellsByDepth->depth.size();++d)
129 if (ProblemCellsByDepth->depth[d]==0)
continue;
134 if (BadTiming[d]!=0) totalevents += BadTiming[d]->GetBinContent(0);
135 if (BadEnergy[d]!=0) totalevents += BadEnergy[d]->GetBinContent(0);
140 etabins=(ProblemCellsByDepth->depth[d]->getTH2F())->GetNbinsX();
141 phibins=(ProblemCellsByDepth->depth[d]->getTH2F())->GetNbinsY();
145 if (ieta==-9999)
continue;
149 if (BadTiming[d]!=0) problemvalue += BadTiming[d]->GetBinContent(
eta+1,
phi+1)*1./totalevents;
150 if (BadEnergy[d]!=0) problemvalue += BadEnergy[d]->GetBinContent(
eta+1,
phi+1)*1./totalevents;
151 if (problemvalue==0)
continue;
153 problemvalue =
min(1.,problemvalue);
157 ieta<0 ? zside = -1 : zside = 1;
161 if (problemvalue>minerrorrate_)
169 if (badstatusmap.find(hcalid)!=badstatusmap.end())
173 ProblemCellsByDepth->depth[d]->setBinContent(
eta+1,
phi+1,problemvalue);
174 if (ProblemCells!=0) ProblemCells->Fill(ieta+zside,
phi+1,problemvalue);
181 if (debug_>0)
std::cout <<
"<HcalDetDiagLaserClient::calculateProblems> ProblemCells histogram does not exist!"<<endl;
186 etabins=(ProblemCells->getTH2F())->GetNbinsX();
187 phibins=(ProblemCells->getTH2F())->GetNbinsY();
192 if (ProblemCells->getBinContent(
eta+1,
phi+1)>1. && ProblemCells->getBinContent(
eta+1,
phi+1)<999)
193 ProblemCells->setBinContent(
eta+1,
phi+1,1.);
207 std::cout <<
"<HcalDetDiagLaserClient::beginJob()> Displaying dqmStore directory structure:"<<std::endl;
208 dqmStore_->showDirStructure();
218 if (debug_>0)
std::cout <<
"<HcalDetDiagLaserClient::beginRun> dqmStore does not exist!"<<std::endl;
221 dqmStore_->setCurrentFolder(subdir_);
222 problemnames_.clear();
225 ProblemCells=dqmStore_->book2D(
" ProblemDetDiagLaser",
226 " Problem DetDiagLaser Rate for all HCAL;ieta;iphi",
229 problemnames_.push_back(ProblemCells->getName());
231 std::cout <<
"Tried to create ProblemCells Monitor Element in directory "<<subdir_<<
" \t Failed? "<<(ProblemCells==0)<<std::endl;
232 dqmStore_->setCurrentFolder(subdir_+
"problem_DetDiagLaser");
234 ProblemCellsByDepth->setup(dqmStore_,
" Problem DetDiagLaser Rate");
235 for (
unsigned int i=0;
i<ProblemCellsByDepth->depth.size();++
i)
236 problemnames_.push_back(ProblemCellsByDepth->depth[
i]->getName());
252 if (debug_>1)
std::cout <<
"<HcalDetDiagLaserClient::hasErrors_Temp> ProblemCells histogram does not exist!"<<std::endl;
258 for (
int depth=0;depth<4; ++depth)
260 int etabins = (ProblemCells->getTH2F())->GetNbinsX();
261 int phibins = (ProblemCells->getTH2F())->GetNbinsY();
262 for (
int hist_eta=0;hist_eta<etabins;++hist_eta)
264 for (
int hist_phi=0; hist_phi<phibins;++hist_phi)
267 if (ieta==-9999)
continue;
268 if (ProblemCellsByDepth->depth[depth]==0)
270 if (ProblemCellsByDepth->depth[depth]->getBinContent(hist_eta,hist_phi)>minerrorrate_)
277 if (problemcount>0)
return true;
297 file <<
"</html><html xmlns=\"http://www.w3.org/1999/xhtml\">"<< endl;
298 file <<
"<head>"<< endl;
299 file <<
"<meta http-equiv=\"Content-Type\" content=\"text/html\"/>"<< endl;
300 file <<
"<title>"<< header <<
"</title>"<< endl;
301 file <<
"<style type=\"text/css\">"<< endl;
302 file <<
" body,td{ background-color: #FFFFCC; font-family: arial, arial ce, helvetica; font-size: 12px; }"<< endl;
303 file <<
" td.s0 { font-family: arial, arial ce, helvetica; }"<< endl;
304 file <<
" td.s1 { font-family: arial, arial ce, helvetica; font-weight: bold; background-color: #FFC169; text-align: center;}"<< endl;
305 file <<
" td.s2 { font-family: arial, arial ce, helvetica; background-color: #eeeeee; }"<< endl;
306 file <<
" td.s3 { font-family: arial, arial ce, helvetica; background-color: #d0d0d0; }"<< endl;
307 file <<
" td.s4 { font-family: arial, arial ce, helvetica; background-color: #FFC169; }"<< endl;
308 file <<
"</style>"<< endl;
309 file <<
"<body>"<< endl;
310 file <<
"<table>"<< endl;
315 file <<
"<td class=\"s4\" align=\"center\">#</td>" << endl;
316 file <<
"<td class=\"s1\" align=\"center\">ETA</td>" << endl;
317 file <<
"<td class=\"s1\" align=\"center\">PHI</td>" << endl;
318 file <<
"<td class=\"s1\" align=\"center\">DEPTH</td>"<< endl;
319 file <<
"<td class=\"s1\" align=\"center\">RBX</td>" << endl;
320 file <<
"<td class=\"s1\" align=\"center\">RM</td>" << endl;
321 file <<
"<td class=\"s1\" align=\"center\">PIXEL</td>" << endl;
322 file <<
"<td class=\"s1\" align=\"center\">RM_FIBER</td>" << endl;
323 file <<
"<td class=\"s1\" align=\"center\">FIBER_CH</td>" << endl;
324 file <<
"<td class=\"s1\" align=\"center\">QIE</td>" << endl;
325 file <<
"<td class=\"s1\" align=\"center\">ADC</td>" << endl;
326 file <<
"<td class=\"s1\" align=\"center\">CRATE</td>" << endl;
327 file <<
"<td class=\"s1\" align=\"center\">DCC</td>" << endl;
328 file <<
"<td class=\"s1\" align=\"center\">SPIGOT</td>" << endl;
329 file <<
"<td class=\"s1\" align=\"center\">HTR_FIBER</td>" << endl;
330 file <<
"<td class=\"s1\" align=\"center\">HTR_SLOT</td>" << endl;
331 file <<
"<td class=\"s1\" align=\"center\">HTR_FPGA</td>" << endl;
332 if(
comment[0]!=0) file <<
"<td class=\"s1\" align=\"center\">Comment</td>" << endl;
333 file <<
"</tr>" << endl;
335 std::string raw_class;
336 file <<
"<tr>"<< endl;
338 raw_class=
"<td class=\"s2\" align=\"center\">";
340 raw_class=
"<td class=\"s3\" align=\"center\">";
342 file <<
"<td class=\"s4\" align=\"center\">" << ind+1 <<
"</td>"<< endl;
343 file << raw_class<< detid.
ieta()<<
"</td>"<< endl;
344 file << raw_class<< detid.
iphi()<<
"</td>"<< endl;
345 file << raw_class<< detid.
depth() <<
"</td>"<< endl;
346 file << raw_class<< lmap_entry.
rbx()<<
"</td>"<< endl;
347 file << raw_class<< lmap_entry.
rm() <<
"</td>"<< endl;
348 file << raw_class<< lmap_entry.
pixel()<<
"</td>"<< endl;
349 file << raw_class<< lmap_entry.
rmFiber() <<
"</td>"<< endl;
350 file << raw_class<< lmap_entry.
fiberChannel()<<
"</td>"<< endl;
351 file << raw_class<< lmap_entry.
qieCard() <<
"</td>"<< endl;
352 file << raw_class<< lmap_entry.
adc()<<
"</td>"<< endl;
354 file << raw_class<< emap_entry.
dccid()<<
"</td>"<< endl;
355 file << raw_class<< emap_entry.
spigot()<<
"</td>"<< endl;
356 file << raw_class<< emap_entry.
fiberIndex()<<
"</td>"<< endl;
357 file << raw_class<< emap_entry.
htrSlot()<<
"</td>"<< endl;
358 file << raw_class<< emap_entry.
htrTopBottom()<<
"</td>"<< endl;
362 file <<
"</table>"<< endl;
363 file <<
"</body>"<< endl;
364 file <<
"</html>"<< endl;
368 string s=subdir_+
"HcalDetDiagLaserMonitor Event Number";
373 sscanf((s.substr(2,s.length()-2)).c_str(),
"%d", &
n);
375 if(n<100)
return false;
380 if (debug_>0)
std::cout <<
"<HcalDetDiagLaserClient::htmlOutput> dqmStore object does not exist!"<<std::endl;
383 if(debug_>2)
std::cout <<
"\t<HcalDetDiagLaserClient::htmlOutput> Preparing html for task: "<<name_<<std::endl;
395 TH1F *hbheEnergyRMS=0;
396 TH1F *hbheTimingRMS=0;
409 TH2F *Time2Dhbhehf=0;
411 TH2F *Energy2Dhbhehf=0;
413 TH2F *refTime2Dhbhehf=0;
415 TH2F *refEnergy2Dhbhehf=0;
416 TH2F *refEnergy2Dho=0;
417 int HBpresent_=0,HEpresent_=0,HOpresent_=0,HFpresent_=0;
420 me=dqmStore_->get(prefixME_+
"HcalInfo/HBpresent");
422 me=dqmStore_->get(prefixME_+
"HcalInfo/HEpresent");
424 me=dqmStore_->get(prefixME_+
"HcalInfo/HOpresent");
426 me=dqmStore_->get(prefixME_+
"HcalInfo/HFpresent");
429 s=subdir_+
"Summary Plots/HBHE Laser Energy Distribution"; me=dqmStore_->get(s.c_str());
430 if(me!=0) hbheEnergy=HcalUtilsClient::getHisto<TH1F*>(me, cloneME_, hbheEnergy, debug_);
else return;
431 s=subdir_+
"Summary Plots/HBHE Laser Timing Distribution"; me=dqmStore_->get(s.c_str());
432 if(me!=0) hbheTiming=HcalUtilsClient::getHisto<TH1F*>(me, cloneME_, hbheTiming, debug_);
else return;
433 s=subdir_+
"Summary Plots/HBHE Laser Energy RMS_div_Energy Distribution"; me=dqmStore_->get(s.c_str());
434 if(me!=0) hbheEnergyRMS= HcalUtilsClient::getHisto<TH1F*>(me, cloneME_, hbheEnergyRMS, debug_);
else return;
435 s=subdir_+
"Summary Plots/HBHE Laser Timing RMS Distribution"; me=dqmStore_->get(s.c_str());
436 if(me!=0) hbheTimingRMS= HcalUtilsClient::getHisto<TH1F*>(me, cloneME_, hbheTimingRMS, debug_);
else return;
437 s=subdir_+
"Summary Plots/HO Laser Energy Distribution"; me=dqmStore_->get(s.c_str());
438 if(me!=0) hoEnergy = HcalUtilsClient::getHisto<TH1F*>(me, cloneME_, hoEnergy, debug_);
else return;
439 s=subdir_+
"Summary Plots/HO Laser Timing Distribution"; me=dqmStore_->get(s.c_str());
440 if(me!=0) hoTiming = HcalUtilsClient::getHisto<TH1F*>(me, cloneME_, hoTiming, debug_);
else return;
441 s=subdir_+
"Summary Plots/HO Laser Energy RMS_div_Energy Distribution"; me=dqmStore_->get(s.c_str());
442 if(me!=0) hoEnergyRMS = HcalUtilsClient::getHisto<TH1F*>(me, cloneME_, hoEnergyRMS, debug_);
else return;
443 s=subdir_+
"Summary Plots/HO Laser Timing RMS Distribution"; me=dqmStore_->get(s.c_str());
444 if(me!=0) hoTimingRMS = HcalUtilsClient::getHisto<TH1F*>(me, cloneME_, hoTimingRMS, debug_);
else return;
445 s=subdir_+
"Summary Plots/HF Laser Energy Distribution"; me=dqmStore_->get(s.c_str());
446 if(me!=0) hfEnergy = HcalUtilsClient::getHisto<TH1F*>(me, cloneME_, hfEnergy, debug_);
else return;
447 s=subdir_+
"Summary Plots/HF Laser Timing Distribution"; me=dqmStore_->get(s.c_str());
448 if(me!=0) hfTiming = HcalUtilsClient::getHisto<TH1F*>(me, cloneME_, hfTiming, debug_);
else return;
449 s=subdir_+
"Summary Plots/HF Laser Energy RMS_div_Energy Distribution"; me=dqmStore_->get(s.c_str());
450 if(me!=0) hfEnergyRMS = HcalUtilsClient::getHisto<TH1F*>(me, cloneME_, hfEnergyRMS, debug_);
else return;
451 s=subdir_+
"Summary Plots/HF Laser Timing RMS Distribution"; me=dqmStore_->get(s.c_str());
452 if(me!=0) hfTimingRMS = HcalUtilsClient::getHisto<TH1F*>(me, cloneME_, hfTimingRMS, debug_);
else return;
454 s=subdir_+
"Summary Plots/HB RBX average Time-Ref"; me=dqmStore_->get(s.c_str());
455 if(me!=0) hb = HcalUtilsClient::getHisto<TH1F*>(me, cloneME_, hb, debug_);
else return;
456 s=subdir_+
"Summary Plots/HE RBX average Time-Ref"; me=dqmStore_->get(s.c_str());
457 if(me!=0) he = HcalUtilsClient::getHisto<TH1F*>(me, cloneME_, he, debug_);
else return;
458 s=subdir_+
"Summary Plots/HO RBX average Time-Ref"; me=dqmStore_->get(s.c_str());
459 if(me!=0) ho = HcalUtilsClient::getHisto<TH1F*>(me, cloneME_, ho, debug_);
else return;
460 s=subdir_+
"Summary Plots/HF RoBox average Time-Ref"; me=dqmStore_->get(s.c_str());
461 if(me!=0) hf = HcalUtilsClient::getHisto<TH1F*>(me, cloneME_, hf, debug_);
else return;
463 s=subdir_+
"Summary Plots/Laser Timing HBHEHF"; me=dqmStore_->get(s.c_str());
464 if(me!=0) Time2Dhbhehf = HcalUtilsClient::getHisto<TH2F*>(me, cloneME_, Time2Dhbhehf, debug_);
else return;
465 s=subdir_+
"Summary Plots/Laser Timing HO"; me=dqmStore_->get(s.c_str());
466 if(me!=0) Time2Dho = HcalUtilsClient::getHisto<TH2F*>(me, cloneME_, Time2Dho, debug_);
else return;
467 s=subdir_+
"Summary Plots/Laser Energy HBHEHF"; me=dqmStore_->get(s.c_str());
468 if(me!=0) Energy2Dhbhehf= HcalUtilsClient::getHisto<TH2F*>(me, cloneME_, Energy2Dhbhehf, debug_);
else return;
469 s=subdir_+
"Summary Plots/Laser Energy HO"; me=dqmStore_->get(s.c_str());
470 if(me!=0) Energy2Dho = HcalUtilsClient::getHisto<TH2F*>(me, cloneME_, Energy2Dho, debug_);
else return;
471 s=subdir_+
"Summary Plots/HBHEHF Laser (Timing-Ref)+1"; me=dqmStore_->get(s.c_str());
472 if(me!=0) refTime2Dhbhehf = HcalUtilsClient::getHisto<TH2F*>(me, cloneME_, refTime2Dhbhehf, debug_);
else return;
473 s=subdir_+
"Summary Plots/HO Laser (Timing-Ref)+1"; me=dqmStore_->get(s.c_str());
474 if(me!=0) refTime2Dho = HcalUtilsClient::getHisto<TH2F*>(me, cloneME_, refTime2Dho, debug_);
else return;
475 s=subdir_+
"Summary Plots/HBHEHF Laser Energy_div_Ref"; me=dqmStore_->get(s.c_str());
476 if(me!=0) refEnergy2Dhbhehf= HcalUtilsClient::getHisto<TH2F*>(me, cloneME_, refEnergy2Dhbhehf, debug_);
else return;
477 s=subdir_+
"Summary Plots/HO Laser Energy_div_Ref"; me=dqmStore_->get(s.c_str());
478 if(me!=0) refEnergy2Dho = HcalUtilsClient::getHisto<TH2F*>(me, cloneME_, refEnergy2Dho, debug_);
else return;
482 for(
int i=0;
i<56;
i++){
483 sprintf(str,
"RADDAM (%i %i)",RADDAM_CH[
i].
eta,RADDAM_CH[
i].
phi);
484 s=subdir_+
"Raddam Plots/"+str; me=dqmStore_->get(s.c_str());
485 if(me!=0) Raddam[
i] = HcalUtilsClient::getHisto<TH1F*>(me, cloneME_, Raddam[
i], debug_);
486 Raddam[
i]->SetXTitle(
"TS");
487 Raddam[
i]->SetTitle(str);
490 int ievt_ = -1,runNo=-1;
491 s=subdir_+
"HcalDetDiagLaserMonitor Event Number";
492 me = dqmStore_->get(s.c_str());
494 s = me->valueString();
495 sscanf((s.substr(2,s.length()-2)).c_str(),
"%d", &ievt_);
497 s=subdir_+
"HcalDetDiagLaserMonitor Run Number";
498 me = dqmStore_->get(s.c_str());
500 s = me->valueString();
501 sscanf((s.substr(2,s.length()-2)).c_str(),
"%d", &runNo);
503 s=subdir_+
"HcalDetDiagLaserMonitor Reference Run";
504 me = dqmStore_->get(s.c_str());
506 string s=me->valueString();
508 sscanf((s.substr(2,s.length()-2)).c_str(),
"%s", str);
529 TH2F* BadTiming_val[4];
530 TH2F* BadEnergy_val[4];
532 for(
int i=0;
i<4;++
i){
535 string s=subdir_+
"Plots for client/"+name[
i]+
" Laser Timing difference";
536 me=dqmStore_->get(s.c_str());
537 if (me!=0) BadTiming_val[
i]=HcalUtilsClient::getHisto<TH2F*>(me, cloneME_, BadTiming_val[
i], debug_);
else return;
538 s=subdir_+
"Plots for client/"+name[
i]+
" Laser Energy difference";
539 me=dqmStore_->get(s.c_str());
540 if (me!=0) BadEnergy_val[
i]=HcalUtilsClient::getHisto<TH2F*>(me, cloneME_, BadEnergy_val[
i], debug_);
else return;
545 badTiming.open((htmlDir+
"bad_timing_table.html").c_str());
548 badEnergy.open((htmlDir+
"bad_energy_table.html").c_str());
551 for(
int d=0;d<4;++d){
552 int etabins=BadTiming_val[d]->GetNbinsX();
553 int phibins=BadTiming_val[d]->GetNbinsY();
556 if(ieta==-9999)
continue;
563 float val=BadTiming_val[d]->GetBinContent(
eta+1,
phi+1);
566 if(ieta>0){ HBP[0]++;}
else{ HBM[0]++;} badT++;
567 if(badstatusmap.find(hcalid)==badstatusmap.end()){
if(ieta>0){ newHBP[0]++;}
else{ newHBM[0]++;}}
570 if(ieta>0){ HEP[0]++;}
else{ HEM[0]++;} badT++;
571 if(badstatusmap.find(hcalid)==badstatusmap.end()){
if(ieta>0){ newHEP[0]++;}
else{ newHEM[0]++;}}
574 if(ieta>0){ HFP[0]++;}
else{ HFM[0]++;} badT++;
575 if(badstatusmap.find(hcalid)==badstatusmap.end()){
if(ieta>0){ newHFP[0]++;}
else{ newHFM[0]++;}}
579 if(badstatusmap.find(hcalid)==badstatusmap.end()){newHO[0]++;}
582 val=BadEnergy_val[d]->GetBinContent(
eta+1,
phi+1);
585 if(ieta>0){ HBP[1]++;}
else{ HBM[1]++;} badE++;
586 if(badstatusmap.find(hcalid)==badstatusmap.end()){
if(ieta>0){ newHBP[1]++;}
else{ newHBM[1]++;}}
589 if(ieta>0){ HEP[1]++;}
else{ HEM[1]++;} badE++;
590 if(badstatusmap.find(hcalid)==badstatusmap.end()){
if(ieta>0){ newHEP[1]++;}
else{ newHEM[1]++;}}
593 if(ieta>0){ HFP[1]++;}
else{ HFM[1]++;} badE++;
594 if(badstatusmap.find(hcalid)==badstatusmap.end()){
if(ieta>0){ newHFP[1]++;}
else{ newHFM[1]++;}}
598 if(badstatusmap.find(hcalid)==badstatusmap.end()){newHO[1]++;}
606 if((HBP[0]+HBM[0])>0){
607 badTiming <<
"<tr><td align=\"center\"><h3>"<<
"HB" <<
"</h3></td></tr>" << endl;
608 for(
int d=0;d<4;++d){
609 int etabins=BadTiming_val[d]->GetNbinsX();
610 int phibins=BadTiming_val[d]->GetNbinsY();
613 if(ieta==-9999)
continue;
615 float val=BadTiming_val[d]->GetBinContent(
eta+1,
phi+1);
620 sprintf(str,
"Time-Ref=%.2f",val);
626 if((HEP[0]+HEM[0])>0){
627 badTiming <<
"<tr><td align=\"center\"><h3>"<<
"HE" <<
"</h3></td></tr>" << endl;
628 for(
int d=0;d<4;++d){
629 int etabins=BadTiming_val[d]->GetNbinsX();
630 int phibins=BadTiming_val[d]->GetNbinsY();
633 if(ieta==-9999)
continue;
635 float val=BadTiming_val[d]->GetBinContent(
eta+1,
phi+1);
640 sprintf(str,
"Time-Ref=%.2f",val);
647 badTiming <<
"<tr><td align=\"center\"><h3>"<<
"HO" <<
"</h3></td></tr>" << endl;
648 for(
int d=0;d<4;++d){
649 int etabins=BadTiming_val[d]->GetNbinsX();
650 int phibins=BadTiming_val[d]->GetNbinsY();
653 if(ieta==-9999)
continue;
655 float val=BadTiming_val[d]->GetBinContent(
eta+1,
phi+1);
660 sprintf(str,
"Time-Ref=%.2f",val);
666 if((HFP[0]+HFM[0])>0){
667 badTiming <<
"<tr><td align=\"center\"><h3>"<<
"HF" <<
"</h3></td></tr>" << endl;
668 for(
int d=0;d<4;++d){
669 int etabins=BadTiming_val[d]->GetNbinsX();
670 int phibins=BadTiming_val[d]->GetNbinsY();
673 if(ieta==-9999)
continue;
675 float val=BadTiming_val[d]->GetBinContent(
eta+1,
phi+1);
680 sprintf(str,
"Time-Ref=%.2f",val);
687 if((HBP[1]+HBM[1])>0){
688 badEnergy <<
"<tr><td align=\"center\"><h3>"<<
"HB" <<
"</h3></td></tr>" << endl;
689 for(
int d=0;d<4;++d){
690 int etabins=BadEnergy_val[d]->GetNbinsX();
691 int phibins=BadEnergy_val[d]->GetNbinsY();
694 if(ieta==-9999)
continue;
696 float val=BadEnergy_val[d]->GetBinContent(
eta+1,
phi+1);
701 sprintf(str,
"Energy/Ref=%.2f",val);
707 if((HEP[1]+HEM[1])>0){
708 badEnergy <<
"<tr><td align=\"center\"><h3>"<<
"HE" <<
"</h3></td></tr>" << endl;
709 for(
int d=0;d<4;++d){
710 int etabins=BadEnergy_val[d]->GetNbinsX();
711 int phibins=BadEnergy_val[d]->GetNbinsY();
714 if(ieta==-9999)
continue;
716 float val=BadEnergy_val[d]->GetBinContent(
eta+1,
phi+1);
721 sprintf(str,
"Energy/Ref=%.2f",val);
728 badEnergy <<
"<tr><td align=\"center\"><h3>"<<
"HO" <<
"</h3></td></tr>" << endl;
729 for(
int d=0;d<4;++d){
730 int etabins=BadEnergy_val[d]->GetNbinsX();
731 int phibins=BadEnergy_val[d]->GetNbinsY();
734 if(ieta==-9999)
continue;
736 float val=BadEnergy_val[d]->GetBinContent(
eta+1,
phi+1);
741 sprintf(str,
"Energy/Ref=%.2f",val);
747 if((HFP[1]+HFM[1])>0){
748 badEnergy <<
"<tr><td align=\"center\"><h3>"<<
"HF" <<
"</h3></td></tr>" << endl;
749 for(
int d=0;d<4;++d){
750 int etabins=BadEnergy_val[d]->GetNbinsX();
751 int phibins=BadEnergy_val[d]->GetNbinsY();
754 if(ieta==-9999)
continue;
756 float val=BadEnergy_val[d]->GetBinContent(
eta+1,
phi+1);
761 sprintf(str,
"Energy/Ref=%.2f",val);
774 string outfile=htmlDir+name_+
".html";
775 htmlFile.open(outfile.c_str());
777 gROOT->SetBatch(
true);
778 gStyle->SetCanvasColor(0);
779 gStyle->SetPadColor(0);
780 gStyle->SetOptStat(111110);
781 gStyle->SetPalette(1);
782 TCanvas *
can=
new TCanvas(
"HcalDetDiagLaserClient",
"HcalDetDiagLaserClient",0,0,500,350);
785 if(Raddam[0]->GetEntries()>0){
787 RADDAM.open((htmlDir +
"RADDAM_"+name_).c_str());
788 RADDAM <<
"</html><html xmlns=\"http://www.w3.org/1999/xhtml\">"<< endl;
789 RADDAM <<
"<head>"<< endl;
790 RADDAM <<
"<meta http-equiv=\"Content-Type\" content=\"text/html\"/>"<< endl;
791 RADDAM <<
"<title>"<<
"RADDAM channels" <<
"</title>"<< endl;
792 RADDAM <<
"<style type=\"text/css\">"<< endl;
793 RADDAM <<
" body,td{ background-color: #FFFFCC; font-family: arial, arial ce, helvetica; font-size: 12px; }"<< endl;
794 RADDAM <<
" td.s0 { font-family: arial, arial ce, helvetica; }"<< endl;
795 RADDAM <<
" td.s1 { font-family: arial, arial ce, helvetica; font-weight: bold; background-color: #FFC169; text-align: center;}"<< endl;
796 RADDAM <<
" td.s2 { font-family: arial, arial ce, helvetica; background-color: #eeeeee; }"<< endl;
797 RADDAM <<
" td.s3 { font-family: arial, arial ce, helvetica; background-color: #d0d0d0; }"<< endl;
798 RADDAM <<
" td.s4 { font-family: arial, arial ce, helvetica; background-color: #FFC169; }"<< endl;
799 RADDAM <<
"</style>"<< endl;
800 RADDAM <<
"<body>"<< endl;
801 RADDAM <<
"<h2>Run "<< runNo<<
": RADDAM channels event shape </h2>" << endl;
802 RADDAM <<
"<table>"<< endl;
805 for(
int i=0;
i<28;
i++){
806 RADDAM <<
"<tr align=\"left\">" << endl;
809 Raddam[2*
i]->Draw(); sprintf(str,
"%02d",2*
i); can->SaveAs((htmlDir +
"raddam_ch"+str+
".gif").c_str());
810 Raddam[2*
i+1]->Draw(); sprintf(str,
"%02d",2*
i+1); can->SaveAs((htmlDir +
"raddam_ch"+str+
".gif").c_str());
811 sprintf(str,
"raddam_ch%02d.gif",2*
i);
812 RADDAM <<
"<td align=\"center\"><img src=\""<<str<<
"\" alt=\"raddam channel\"> </td>" << endl;
813 sprintf(str,
"raddam_ch%02d.gif",2*
i+1);
814 RADDAM <<
"<td align=\"center\"><img src=\""<<str<<
"\" alt=\"raddam channel\"> </td>" << endl;
815 RADDAM <<
"</tr>" << endl;
818 RADDAM <<
"</table>"<< endl;
819 RADDAM <<
"</body>"<< endl;
820 RADDAM <<
"</html>"<< endl;
824 Time2Dhbhehf->SetXTitle(
"i#eta");
825 Time2Dhbhehf->SetYTitle(
"i#phi");
826 Time2Dho->SetXTitle(
"i#eta");
827 Time2Dho->SetYTitle(
"i#phi");
828 Energy2Dhbhehf->SetXTitle(
"i#eta");
829 Energy2Dhbhehf->SetYTitle(
"i#phi");
830 Energy2Dho->SetXTitle(
"i#eta");
831 Energy2Dho->SetYTitle(
"i#phi");
832 refTime2Dhbhehf->SetXTitle(
"i#eta");
833 refTime2Dhbhehf->SetYTitle(
"i#phi");
834 refTime2Dho->SetXTitle(
"i#eta");
835 refTime2Dho->SetYTitle(
"i#phi");
836 refEnergy2Dhbhehf->SetXTitle(
"i#eta");
837 refEnergy2Dhbhehf->SetYTitle(
"i#phi");
838 refEnergy2Dho->SetXTitle(
"i#eta");
839 refEnergy2Dho->SetYTitle(
"i#phi");
840 refTime2Dhbhehf->SetMinimum(0);
841 refTime2Dhbhehf->SetMaximum(2);
842 refTime2Dho->SetMinimum(0);
843 refTime2Dho->SetMaximum(2);
844 refEnergy2Dhbhehf->SetMinimum(0.5);
845 refEnergy2Dhbhehf->SetMaximum(1.5);
846 refEnergy2Dho->SetMinimum(0.5);
847 refEnergy2Dho->SetMaximum(1.5);
849 Time2Dhbhehf->SetNdivisions(36,
"Y");
850 Time2Dho->SetNdivisions(36,
"Y");
851 Energy2Dhbhehf->SetNdivisions(36,
"Y");
852 Energy2Dho->SetNdivisions(36,
"Y");
853 refTime2Dhbhehf->SetNdivisions(36,
"Y");
854 refTime2Dho->SetNdivisions(36,
"Y");
855 refEnergy2Dhbhehf->SetNdivisions(36,
"Y");
856 refEnergy2Dho->SetNdivisions(36,
"Y");
859 htmlFile <<
"<!DOCTYPE html PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\"> " << endl;
860 htmlFile <<
"<html> " << endl;
861 htmlFile <<
"<head> " << endl;
862 htmlFile <<
" <meta content=\"text/html; charset=ISO-8859-1\" " << endl;
863 htmlFile <<
" http-equiv=\"content-type\"> " << endl;
864 htmlFile <<
" <title>Detector Diagnostics Laser Monitor</title> " << endl;
865 htmlFile <<
"</head> " << endl;
866 htmlFile <<
"<style type=\"text/css\"> td { font-weight: bold } </style>" << endl;
868 htmlFile <<
"<style type=\"text/css\">"<< endl;
869 htmlFile <<
" td.s0 { font-family: arial, arial ce, helvetica; font-weight: bold; background-color: #FF7700; text-align: center;}"<< endl;
870 htmlFile <<
" td.s1 { font-family: arial, arial ce, helvetica; font-weight: bold; background-color: #FFC169; text-align: center;}"<< endl;
871 htmlFile <<
" td.s2 { font-family: arial, arial ce, helvetica; background-color: red; }"<< endl;
872 htmlFile <<
" td.s3 { font-family: arial, arial ce, helvetica; background-color: yellow; }"<< endl;
873 htmlFile <<
" td.s4 { font-family: arial, arial ce, helvetica; background-color: green; }"<< endl;
874 htmlFile <<
" td.s5 { font-family: arial, arial ce, helvetica; background-color: silver; }"<< endl;
875 std::string
state[4]={
"<td class=\"s2\" align=\"center\">",
876 "<td class=\"s3\" align=\"center\">",
877 "<td class=\"s4\" align=\"center\">",
878 "<td class=\"s5\" align=\"center\">"};
879 htmlFile <<
"</style>"<< endl;
881 htmlFile <<
"<body> " << endl;
882 htmlFile <<
"<br> " << endl;
883 htmlFile <<
"<h2>Run: " << endl;
884 htmlFile <<
" <span " << endl;
885 htmlFile <<
" style=\"color: rgb(0, 0, 153);\">" << runNo <<
"</span></h2>" << endl;
886 htmlFile <<
"<h2>Monitoring task: <span " << endl;
887 htmlFile <<
" style=\"color: rgb(0, 0, 153);\">Detector Diagnostics Laser Monitor</span></h2> " << endl;
888 htmlFile <<
"<h2>Events processed: <span " << endl;
889 htmlFile <<
" style=\"color: rgb(0, 0, 153);\">" << ievt_ <<
"</span></h2>" << endl;
890 htmlFile <<
"<hr>" << endl;
892 htmlFile <<
"<table width=100% border=1>" << endl;
893 htmlFile <<
"<tr>" << endl;
894 htmlFile <<
"<td class=\"s0\" width=20% align=\"center\">SebDet</td>" << endl;
895 htmlFile <<
"<td class=\"s0\" width=20% align=\"center\">Bad Timing</td>" << endl;
896 htmlFile <<
"<td class=\"s0\" width=20% align=\"center\">Bad Energy</td>" << endl;
897 htmlFile <<
"</tr><tr>" << endl;
899 htmlFile <<
"<td class=\"s1\" align=\"center\">HB+</td>" << endl;
900 if(HBP[0]==0) ind1=2;
if(HBP[0]>0 && HBP[0]<=12) ind1=1;
if(HBP[0]>12) ind1=0;
901 if(HBP[1]==0) ind2=2;
if(HBP[1]>0 && HBP[1]<=12) ind2=1;
if(HBP[1]>12) ind2=0;
902 if(!HBpresent_) ind1=ind2=3;
903 htmlFile << state[ind1] << HBP[0] <<
"</td>" << endl;
904 htmlFile << state[ind2] << HBP[1] <<
"</td>" << endl;
905 htmlFile <<
"</tr><tr>" << endl;
906 htmlFile <<
"<td class=\"s1\" align=\"center\">HB-</td>" << endl;
907 if(HBM[0]==0) ind1=2;
if(HBM[0]>0 && HBP[0]<=12) ind1=1;
if(HBM[0]>12) ind1=0;
908 if(HBM[1]==0) ind2=2;
if(HBM[1]>0 && HBP[1]<=12) ind2=1;
if(HBM[1]>12) ind2=0;
909 if(!HBpresent_) ind1=ind2=3;
910 htmlFile << state[ind1] << HBM[0] <<
"</td>" << endl;
911 htmlFile << state[ind2] << HBM[1] <<
"</td>" << endl;
912 htmlFile <<
"</tr><tr>" << endl;
913 htmlFile <<
"<td class=\"s1\" align=\"center\">HE+</td>" << endl;
914 if(HEP[0]==0) ind1=2;
if(HEP[0]>0 && HEP[0]<=12) ind1=1;
if(HEP[0]>12) ind1=0;
915 if(HEP[1]==0) ind2=2;
if(HEP[1]>0 && HEP[1]<=12) ind2=1;
if(HEP[1]>12) ind2=0;
916 if(!HEpresent_) ind1=ind2=3;
917 if(ind1==0 || ind2==0)
status|=2;
else if(ind1==1 || ind2==1)
status|=1;
918 htmlFile << state[ind1] << HEP[0] <<
"</td>" << endl;
919 htmlFile << state[ind2] << HEP[1] <<
"</td>" << endl;
920 htmlFile <<
"</tr><tr>" << endl;
921 htmlFile <<
"<td class=\"s1\" align=\"center\">HE-</td>" << endl;
922 if(HEM[0]==0) ind1=2;
if(HEM[0]>0 && HEM[0]<=12) ind1=1;
if(HEM[0]>12) ind1=0;
923 if(HEM[1]==0) ind2=2;
if(HEM[1]>0 && HEM[1]<=12) ind2=1;
if(HEM[1]>12) ind2=0;
924 if(!HEpresent_) ind1=ind2=3;
925 if(ind1==0 || ind2==0)
status|=2;
else if(ind1==1 || ind2==1)
status|=1;
926 htmlFile << state[ind1] << HEM[0] <<
"</td>" << endl;
927 htmlFile << state[ind2] << HEM[1] <<
"</td>" << endl;
928 htmlFile <<
"</tr><tr>" << endl;
929 htmlFile <<
"<td class=\"s1\" align=\"center\">HF+</td>" << endl;
930 if(HFP[0]==0) ind1=2;
if(HFP[0]>0 && HFP[0]<=12) ind1=1;
if(HFP[0]>12) ind1=0;
931 if(HFP[1]==0) ind2=2;
if(HFP[1]>0 && HFP[1]<=12) ind2=1;
if(HFP[1]>12) ind2=0;
932 if(!HOpresent_) ind1=ind2=3;
933 if(ind1==0 || ind2==0)
status|=2;
else if(ind1==1 || ind2==1)
status|=1;
934 htmlFile << state[ind1] << HFP[0] <<
"</td>" << endl;
935 htmlFile << state[ind2] << HFP[1] <<
"</td>" << endl;
936 htmlFile <<
"</tr><tr>" << endl;
937 htmlFile <<
"<td class=\"s1\" align=\"center\">HF-</td>" << endl;
938 if(HFM[0]==0) ind1=2;
if(HFM[0]>0 && HFM[0]<=12) ind1=1;
if(HFM[0]>12) ind1=0;
939 if(HFM[1]==0) ind2=2;
if(HFM[1]>0 && HFM[1]<=12) ind2=1;
if(HFM[1]>12) ind2=0;
940 if(!HFpresent_) ind1=ind2=3;
941 if(ind1==0 || ind2==0)
status|=2;
else if(ind1==1 || ind2==1)
status|=1;
942 htmlFile << state[ind1] << HFM[0] <<
"</td>" << endl;
943 htmlFile << state[ind2] << HFM[1] <<
"</td>" << endl;
944 htmlFile <<
"</tr><tr>" << endl;
945 htmlFile <<
"<td class=\"s1\" align=\"center\">HO</td>" << endl;
946 if(HO[0]==0) ind1=2;
if(HO[0]>0 && HO[0]<=12) ind1=1;
if(HO[0]>12) ind1=0;
947 if(HO[1]==0) ind2=2;
if(HO[1]>0 && HO[1]<=12) ind2=1;
if(HO[1]>12) ind2=0;
948 if(!HFpresent_) ind1=ind2=3;
949 if(ind1==0 || ind2==0)
status|=2;
else if(ind1==1 || ind2==1)
status|=1;
950 htmlFile << state[ind1] << HO[0] <<
"</td>" << endl;
951 htmlFile << state[ind2] << HO[1] <<
"</td>" << endl;
953 htmlFile <<
"</tr></table>" << endl;
954 htmlFile <<
"<hr>" << endl;
957 htmlFile <<
"<table width=100% border=1><tr>" << endl;
958 if(badT>0) htmlFile <<
"<td><a href=\"" <<
"bad_timing_table.html" <<
"\">list of bad timing channels</a></td>";
959 if(badE>0) htmlFile <<
"<td><a href=\"" <<
"bad_energy_table.html" <<
"\">list of bad energy channels</a></td>";
960 htmlFile <<
"</tr></table>" << endl;
965 if(Raddam[0]->GetEntries()>0){
966 htmlFile <<
"<h2 align=\"center\"><a href=\"" << (
"RADDAM_"+name_).c_str() <<
"\">RADDAM channels</a><h2>";
967 htmlFile <<
"<hr>" << endl;
970 htmlFile <<
"<h2 align=\"center\">Stability Laser plots (Reference run "<<ref_run<<
")</h2>" << endl;
971 htmlFile <<
"<table width=100% border=0><tr>" << endl;
976 htmlFile <<
"<tr align=\"left\">" << endl;
977 refTime2Dhbhehf->SetStats(0);
978 refTime2Dho->SetStats(0);
979 refTime2Dhbhehf->Draw(
"COLZ"); can->SaveAs((htmlDir +
"ref_laser_timing_hbhehf.gif").c_str());
980 refTime2Dho->Draw(
"COLZ"); can->SaveAs((htmlDir +
"ref_laser_timing_ho.gif").c_str());
981 htmlFile <<
"<td align=\"center\"><img src=\"ref_laser_timing_hbhehf.gif\" alt=\"ref laser timing distribution\"> </td>" << endl;
982 htmlFile <<
"<td align=\"center\"><img src=\"ref_laser_timing_ho.gif\" alt=\"ref laser timing distribution\"> </td>" << endl;
983 htmlFile <<
"</tr>" << endl;
986 if(hb!=0 && he!=0 && ho!=0 && hf!=0){
987 hb->SetMarkerStyle(22);
988 hb->SetMarkerColor(kRed);
989 hb->GetYaxis()->SetRangeUser(hb->GetMinimum()-1,hb->GetMaximum()+1);
990 hb->GetXaxis()->SetNdivisions(520);
992 he->SetMarkerStyle(22);
993 he->SetMarkerColor(kRed);
994 he->GetYaxis()->SetRangeUser(he->GetMinimum()-1,he->GetMaximum()+1);
995 he->GetXaxis()->SetNdivisions(520);
997 ho->SetMarkerStyle(22);
998 ho->SetMarkerColor(kRed);
999 ho->GetYaxis()->SetRangeUser(ho->GetMinimum()-1,ho->GetMaximum()+1);
1000 ho->GetXaxis()->SetNdivisions(520);
1002 hf->SetMarkerStyle(22);
1003 hf->SetMarkerColor(kRed);
1004 hf->GetYaxis()->SetRangeUser(hf->GetMinimum()-1,hf->GetMaximum()+1);
1005 hf->GetXaxis()->SetNdivisions(520);
1012 hb->GetXaxis()->SetBit(TAxis::kLabelsVert);
1013 he->GetXaxis()->SetBit(TAxis::kLabelsVert);
1014 ho->GetXaxis()->SetBit(TAxis::kLabelsVert);
1015 hf->GetXaxis()->SetBit(TAxis::kLabelsVert);
1016 hb->GetXaxis()->SetLabelSize(0.05);
1017 he->GetXaxis()->SetLabelSize(0.05);
1018 ho->GetXaxis()->SetLabelSize(0.05);
1019 hf->GetXaxis()->SetLabelSize(0.05);
1022 htmlFile <<
"<tr align=\"left\">" << endl;
1023 htmlFile <<
"<td align=\"center\"><img src=\"hb_rbx_timing1D.gif\" alt=\"rbx timing\"> </td>" << endl;
1024 htmlFile <<
"<td align=\"center\"><img src=\"he_rbx_timing1D.gif\" alt=\"rbx timing\"> </td>" << endl;
1025 htmlFile <<
"</tr>" << endl;
1026 htmlFile <<
"<tr align=\"left\">" << endl;
1027 htmlFile <<
"<td align=\"center\"><img src=\"ho_rbx_timing1D.gif\" alt=\"rbx timing\"> </td>" << endl;
1028 htmlFile <<
"<td align=\"center\"><img src=\"hf_rbx_timing1D.gif\" alt=\"rbx timing\"> </td>" << endl;
1029 htmlFile <<
"</tr>" << endl;
1030 }
else printf(
"Error\n");
1034 htmlFile <<
"<tr align=\"left\">" << endl;
1035 refEnergy2Dhbhehf->SetStats(0);
1036 refEnergy2Dho->SetStats(0);
1037 refEnergy2Dhbhehf->Draw(
"COLZ"); can->SaveAs((htmlDir +
"ref_laser_energy_hbhehf.gif").c_str());
1038 refEnergy2Dho->Draw(
"COLZ"); can->SaveAs((htmlDir +
"ref_laser_energy_ho.gif").c_str());
1039 htmlFile <<
"<td align=\"center\"><img src=\"ref_laser_energy_hbhehf.gif\" alt=\"ref laser energy distribution\"> </td>" << endl;
1040 htmlFile <<
"<td align=\"center\"><img src=\"ref_laser_energy_ho.gif\" alt=\"ref laser energy distribution\"> </td>" << endl;
1041 htmlFile <<
"</tr>" << endl;
1043 htmlFile <<
"</table>" << endl;
1046 htmlFile <<
"<h2 align=\"center\">Summary Laser plots</h2>" << endl;
1047 htmlFile <<
"<table width=100% border=0><tr>" << endl;
1048 htmlFile <<
"<tr align=\"left\">" << endl;
1049 Time2Dhbhehf->SetStats(0);
1050 Time2Dho->SetStats(0);
1051 Time2Dhbhehf->Draw(
"COLZ"); can->SaveAs((htmlDir +
"laser_timing_hbhehf.gif").c_str());
1052 Time2Dho->Draw(
"COLZ"); can->SaveAs((htmlDir +
"laser_timing_ho.gif").c_str());
1053 htmlFile <<
"<td align=\"center\"><img src=\"laser_timing_hbhehf.gif\" alt=\"laser timing distribution\"> </td>" << endl;
1054 htmlFile <<
"<td align=\"center\"><img src=\"laser_timing_ho.gif\" alt=\"laser timing distribution\"> </td>" << endl;
1055 htmlFile <<
"</tr>" << endl;
1057 htmlFile <<
"<tr align=\"left\">" << endl;
1058 Energy2Dhbhehf->SetStats(0);
1059 Energy2Dho->SetStats(0);
1060 Energy2Dhbhehf->Draw(
"COLZ"); can->SaveAs((htmlDir +
"laser_energy_hbhehf.gif").c_str());
1061 Energy2Dho->Draw(
"COLZ"); can->SaveAs((htmlDir +
"laser_energy_ho.gif").c_str());
1062 htmlFile <<
"<td align=\"center\"><img src=\"laser_energy_hbhehf.gif\" alt=\"laser energy distribution\"> </td>" << endl;
1063 htmlFile <<
"<td align=\"center\"><img src=\"laser_energy_ho.gif\" alt=\"laser energy distribution\"> </td>" << endl;
1064 htmlFile <<
"</tr>" << endl;
1067 htmlFile <<
"<tr align=\"left\">" << endl;
1068 hbheEnergy->Draw(); can->SaveAs((htmlDir +
"hbhe_laser_energy_distribution.gif").c_str());
1069 hbheEnergyRMS->Draw(); can->SaveAs((htmlDir +
"hbhe_laser_energy_rms_distribution.gif").c_str());
1070 htmlFile <<
"<td align=\"center\"><img src=\"hbhe_laser_energy_distribution.gif\" alt=\"hbhe laser energy distribution\"> </td>" << endl;
1071 htmlFile <<
"<td align=\"center\"><img src=\"hbhe_laser_energy_rms_distribution.gif\" alt=\"hbhelaser energy rms distribution\"> </td>" << endl;
1072 htmlFile <<
"</tr>" << endl;
1073 htmlFile <<
"<tr align=\"left\">" << endl;
1074 hbheTiming->Draw(); can->SaveAs((htmlDir +
"hbhe_laser_timing_distribution.gif").c_str());
1075 hbheTimingRMS->Draw(); can->SaveAs((htmlDir +
"hbhe_laser_timing_rms_distribution.gif").c_str());
1076 htmlFile <<
"<td align=\"center\"><img src=\"hbhe_laser_timing_distribution.gif\" alt=\"hbhe laser timing distribution\"> </td>" << endl;
1077 htmlFile <<
"<td align=\"center\"><img src=\"hbhe_laser_timing_rms_distribution.gif\" alt=\"hbhe laser timing rms distribution\"> </td>" << endl;
1078 htmlFile <<
"</tr>" << endl;
1080 htmlFile <<
"<tr align=\"left\">" << endl;
1081 hoEnergy->Draw(); can->SaveAs((htmlDir +
"ho_laser_energy_distribution.gif").c_str());
1082 hoEnergyRMS->Draw(); can->SaveAs((htmlDir +
"ho_laser_energy_rms_distribution.gif").c_str());
1083 htmlFile <<
"<td align=\"center\"><img src=\"ho_laser_energy_distribution.gif\" alt=\"ho laser energy distribution\"> </td>" << endl;
1084 htmlFile <<
"<td align=\"center\"><img src=\"ho_laser_energy_rms_distribution.gif\" alt=\"ho laser energy rms distribution\"> </td>" << endl;
1085 htmlFile <<
"</tr>" << endl;
1086 htmlFile <<
"<tr align=\"left\">" << endl;
1087 hoTiming->Draw(); can->SaveAs((htmlDir +
"ho_laser_timing_distribution.gif").c_str());
1088 hoTimingRMS->Draw(); can->SaveAs((htmlDir +
"ho_laser_timing_rms_distribution.gif").c_str());
1089 htmlFile <<
"<td align=\"center\"><img src=\"ho_laser_timing_distribution.gif\" alt=\"ho laser timing distribution\"> </td>" << endl;
1090 htmlFile <<
"<td align=\"center\"><img src=\"ho_laser_timing_rms_distribution.gif\" alt=\"ho laser timing rms distribution\"> </td>" << endl;
1092 htmlFile <<
"</tr>" << endl;
1093 htmlFile <<
"<tr align=\"left\">" << endl;
1094 hfEnergy->Draw(); can->SaveAs((htmlDir +
"hf_laser_energy_distribution.gif").c_str());
1095 hfEnergyRMS->Draw(); can->SaveAs((htmlDir +
"hf_laser_energy_rms_distribution.gif").c_str());
1096 htmlFile <<
"<td align=\"center\"><img src=\"hf_laser_energy_distribution.gif\" alt=\"hf laser energy distribution\"> </td>" << endl;
1097 htmlFile <<
"<td align=\"center\"><img src=\"hf_laser_energy_rms_distribution.gif\" alt=\"hf laser energy rms distribution\"> </td>" << endl;
1098 htmlFile <<
"</tr>" << endl;
1099 htmlFile <<
"<tr align=\"left\">" << endl;
1100 hfTiming->Draw(); can->SaveAs((htmlDir +
"hf_laser_timing_distribution.gif").c_str());
1101 hfTimingRMS->Draw(); can->SaveAs((htmlDir +
"hf_laser_timing_rms_distribution.gif").c_str());
1102 htmlFile <<
"<td align=\"center\"><img src=\"hf_laser_timing_distribution.gif\" alt=\"hf laser timing distribution\"> </td>" << endl;
1103 htmlFile <<
"<td align=\"center\"><img src=\"hf_laser_timing_rms_distribution.gif\" alt=\"hf laser timing rms distribution\"> </td>" << endl;
1104 htmlFile <<
"</tr>" << endl;
1106 can->SetBottomMargin(0.2);
1107 if(hb->GetEntries()>0)hb->Draw(
"P");
else hb->Draw(); can->SaveAs((htmlDir +
"hb_rbx_timing1D.gif").c_str());
1108 if(he->GetEntries()>0)he->Draw(
"P");
else he->Draw(); can->SaveAs((htmlDir +
"he_rbx_timing1D.gif").c_str());
1109 if(ho->GetEntries()>0)ho->Draw(
"P");
else ho->Draw(); can->SaveAs((htmlDir +
"ho_rbx_timing1D.gif").c_str());
1110 if(hf->GetEntries()>0)hf->Draw(
"P");
else hf->Draw(); can->SaveAs((htmlDir +
"hf_rbx_timing1D.gif").c_str());
1112 htmlFile <<
"</table>" << endl;
1114 htmlFile <<
"</body> " << endl;
1115 htmlFile <<
"</html> " << endl;
bool isHO(int etabin, int depth)
T getUntrackedParameter(std::string const &, T const &) const
static void printTableHeader(ofstream &file, std::string header)
int fiberIndex() const
get the fiber index [1-8] (which of eight fibers carried by a spigot) (valid only for non-trigger-cha...
HcalLogicalMap createMap(unsigned int mapIOV=5)
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)
static void printTableLine(ofstream &file, int ind, HcalDetId &detid, HcalFrontEndId &lmap_entry, HcalElectronicsId &emap_entry, std::string comment="")
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)
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(ofstream &file)
Readout chain identification for Hcal [31:26] Unused (so far) [25] Trigger-chain id flag [24:20] Read...