23 static const 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;
68 doProblemCellSetup_ =
true;
73 if (debug_>2)
std::cout <<
"\tHcalDetDiagLaserClient::analyze()"<<std::endl;
74 if ( doProblemCellSetup_ ) setupProblemCells(ib,ig);
75 calculateProblems(ib,ig);
80 if (debug_>2)
std::cout <<
"\t\tHcalDetDiagLaserClient::calculateProblems()"<<std::endl;
82 int etabins=0, phibins=0,
zside=0;
83 double problemvalue=0;
88 ProblemCells->Reset();
89 (ProblemCells->getTH2F())->SetMaximum(1.05);
90 (ProblemCells->getTH2F())->SetMinimum(0.);
92 for (
unsigned int d=0;d<ProblemCellsByDepth->depth.size();++d)
94 if (ProblemCellsByDepth->depth[d]!=0)
96 ProblemCellsByDepth->depth[d]->Reset();
97 (ProblemCellsByDepth->depth[d]->getTH2F())->SetMaximum(1.05);
98 (ProblemCellsByDepth->depth[d]->getTH2F())->SetMinimum(0.);
111 for (
int i=0;
i<4;++
i)
115 string s=subdir_+name[
i]+
" Problem Bad Laser Timing";
116 me=ig.
get(s.c_str());
117 if (me!=0) BadTiming[
i]=HcalUtilsClient::getHisto<TH2F*>(me, cloneME_, BadTiming[
i], debug_);
118 else if (debug_>0)
std::cout <<
"<HcalDetDiagLaserClient::calculateProblems> could not get histogram '"<<s<<
"'"<<std::endl;
119 s=subdir_+name[
i]+
" Problem Bad Laser Energy";
120 me=ig.
get(s.c_str());
121 if (me!=0) BadEnergy[
i]=HcalUtilsClient::getHisto<TH2F*>(me, cloneME_, BadEnergy[
i], debug_);
122 else if (debug_>0)
std::cout <<
"<HcalDetDiagLaserClient::calculateProblems> could not get histogram '"<<s<<
"'"<<std::endl;
128 for (
unsigned int d=0;d<ProblemCellsByDepth->depth.size();++d)
130 if (ProblemCellsByDepth->depth[d]==0)
continue;
135 if (BadTiming[d]!=0) totalevents += BadTiming[d]->GetBinContent(0);
136 if (BadEnergy[d]!=0) totalevents += BadEnergy[d]->GetBinContent(0);
141 etabins=(ProblemCellsByDepth->depth[d]->getTH2F())->GetNbinsX();
142 phibins=(ProblemCellsByDepth->depth[d]->getTH2F())->GetNbinsY();
146 if (ieta==-9999)
continue;
150 if (BadTiming[d]!=0) problemvalue += BadTiming[d]->GetBinContent(
eta+1,
phi+1)*1./totalevents;
151 if (BadEnergy[d]!=0) problemvalue += BadEnergy[d]->GetBinContent(
eta+1,
phi+1)*1./totalevents;
152 if (problemvalue==0)
continue;
154 problemvalue =
min(1.,problemvalue);
158 ieta<0 ?
zside = -1 : zside = 1;
162 if (problemvalue>minerrorrate_)
170 if (badstatusmap.find(hcalid)!=badstatusmap.end())
174 ProblemCellsByDepth->depth[d]->setBinContent(
eta+1,
phi+1,problemvalue);
175 if (ProblemCells!=0) ProblemCells->Fill(ieta+zside,
phi+1,problemvalue);
182 if (debug_>0)
std::cout <<
"<HcalDetDiagLaserClient::calculateProblems> ProblemCells histogram does not exist!"<<endl;
187 etabins=(ProblemCells->getTH2F())->GetNbinsX();
188 phibins=(ProblemCells->getTH2F())->GetNbinsY();
193 if (ProblemCells->getBinContent(
eta+1,
phi+1)>1. && ProblemCells->getBinContent(
eta+1,
phi+1)<999)
194 ProblemCells->setBinContent(
eta+1,
phi+1,1.);
208 problemnames_.clear();
211 ProblemCells=ib.
book2D(
" ProblemDetDiagLaser",
212 " Problem DetDiagLaser Rate for all HCAL;ieta;iphi",
215 problemnames_.push_back(ProblemCells->getName());
217 std::cout <<
"Tried to create ProblemCells Monitor Element in directory "<<subdir_<<
" \t Failed? "<<(ProblemCells==0)<<std::endl;
220 ProblemCellsByDepth->setup(ib,
" Problem DetDiagLaser Rate");
221 for (
unsigned int i=0;
i<ProblemCellsByDepth->depth.size();++
i)
222 problemnames_.push_back(ProblemCellsByDepth->depth[
i]->getName());
224 doProblemCellSetup_ =
false;
246 if (debug_>1)
std::cout <<
"<HcalDetDiagLaserClient::hasErrors_Temp> ProblemCells histogram does not exist!"<<std::endl;
252 for (
int depth=0;depth<4; ++depth)
254 int etabins = (ProblemCells->getTH2F())->GetNbinsX();
255 int phibins = (ProblemCells->getTH2F())->GetNbinsY();
256 for (
int hist_eta=0;hist_eta<etabins;++hist_eta)
258 for (
int hist_phi=0; hist_phi<phibins;++hist_phi)
261 if (ieta==-9999)
continue;
262 if (ProblemCellsByDepth->depth[depth]==0)
264 if (ProblemCellsByDepth->depth[depth]->getBinContent(hist_eta,hist_phi)>minerrorrate_)
271 if (problemcount>0)
return true;
291 file <<
"</html><html xmlns=\"http://www.w3.org/1999/xhtml\">"<< endl;
292 file <<
"<head>"<< endl;
293 file <<
"<meta http-equiv=\"Content-Type\" content=\"text/html\"/>"<< endl;
294 file <<
"<title>"<< header <<
"</title>"<< endl;
295 file <<
"<style type=\"text/css\">"<< endl;
296 file <<
" body,td{ background-color: #FFFFCC; font-family: arial, arial ce, helvetica; font-size: 12px; }"<< endl;
297 file <<
" td.s0 { font-family: arial, arial ce, helvetica; }"<< endl;
298 file <<
" td.s1 { font-family: arial, arial ce, helvetica; font-weight: bold; background-color: #FFC169; text-align: center;}"<< endl;
299 file <<
" td.s2 { font-family: arial, arial ce, helvetica; background-color: #eeeeee; }"<< endl;
300 file <<
" td.s3 { font-family: arial, arial ce, helvetica; background-color: #d0d0d0; }"<< endl;
301 file <<
" td.s4 { font-family: arial, arial ce, helvetica; background-color: #FFC169; }"<< endl;
302 file <<
"</style>"<< endl;
303 file <<
"<body>"<< endl;
304 file <<
"<table>"<< endl;
309 file <<
"<td class=\"s4\" align=\"center\">#</td>" << endl;
310 file <<
"<td class=\"s1\" align=\"center\">ETA</td>" << endl;
311 file <<
"<td class=\"s1\" align=\"center\">PHI</td>" << endl;
312 file <<
"<td class=\"s1\" align=\"center\">DEPTH</td>"<< endl;
313 file <<
"<td class=\"s1\" align=\"center\">RBX</td>" << endl;
314 file <<
"<td class=\"s1\" align=\"center\">RM</td>" << endl;
315 file <<
"<td class=\"s1\" align=\"center\">PIXEL</td>" << endl;
316 file <<
"<td class=\"s1\" align=\"center\">RM_FIBER</td>" << endl;
317 file <<
"<td class=\"s1\" align=\"center\">FIBER_CH</td>" << endl;
318 file <<
"<td class=\"s1\" align=\"center\">QIE</td>" << endl;
319 file <<
"<td class=\"s1\" align=\"center\">ADC</td>" << endl;
320 file <<
"<td class=\"s1\" align=\"center\">CRATE</td>" << endl;
321 file <<
"<td class=\"s1\" align=\"center\">DCC</td>" << endl;
322 file <<
"<td class=\"s1\" align=\"center\">SPIGOT</td>" << endl;
323 file <<
"<td class=\"s1\" align=\"center\">HTR_FIBER</td>" << endl;
324 file <<
"<td class=\"s1\" align=\"center\">HTR_SLOT</td>" << endl;
325 file <<
"<td class=\"s1\" align=\"center\">HTR_FPGA</td>" << endl;
326 if(
comment[0]!=0) file <<
"<td class=\"s1\" align=\"center\">Comment</td>" << endl;
327 file <<
"</tr>" << endl;
330 file <<
"<tr>"<< endl;
332 raw_class=
"<td class=\"s2\" align=\"center\">";
334 raw_class=
"<td class=\"s3\" align=\"center\">";
336 file <<
"<td class=\"s4\" align=\"center\">" << ind+1 <<
"</td>"<< endl;
337 file << raw_class<< detid.
ieta()<<
"</td>"<< endl;
338 file << raw_class<< detid.
iphi()<<
"</td>"<< endl;
339 file << raw_class<< detid.
depth() <<
"</td>"<< endl;
340 file << raw_class<< lmap_entry.
rbx()<<
"</td>"<< endl;
341 file << raw_class<< lmap_entry.
rm() <<
"</td>"<< endl;
342 file << raw_class<< lmap_entry.
pixel()<<
"</td>"<< endl;
343 file << raw_class<< lmap_entry.
rmFiber() <<
"</td>"<< endl;
344 file << raw_class<< lmap_entry.
fiberChannel()<<
"</td>"<< endl;
345 file << raw_class<< lmap_entry.
qieCard() <<
"</td>"<< endl;
346 file << raw_class<< lmap_entry.
adc()<<
"</td>"<< endl;
348 file << raw_class<< emap_entry.
dccid()<<
"</td>"<< endl;
349 file << raw_class<< emap_entry.
spigot()<<
"</td>"<< endl;
350 file << raw_class<< emap_entry.
fiberIndex()<<
"</td>"<< endl;
351 file << raw_class<< emap_entry.
htrSlot()<<
"</td>"<< endl;
352 file << raw_class<< emap_entry.
htrTopBottom()<<
"</td>"<< endl;
356 file <<
"</table>"<< endl;
357 file <<
"</body>"<< endl;
358 file <<
"</html>"<< endl;
362 string s=subdir_+
"HcalDetDiagLaserMonitor Event Number";
367 sscanf((s.substr(2,s.length()-2)).c_str(),
"%d", &
n);
369 if(n<100)
return false;
374 if(debug_>2)
std::cout <<
"\t<HcalDetDiagLaserClient::htmlOutput> Preparing html for task: "<<name_<<std::endl;
384 TH1F *hbheEnergyRMS=0;
385 TH1F *hbheTimingRMS=0;
398 TH2F *Time2Dhbhehf=0;
400 TH2F *Energy2Dhbhehf=0;
402 TH2F *refTime2Dhbhehf=0;
404 TH2F *refEnergy2Dhbhehf=0;
405 TH2F *refEnergy2Dho=0;
406 int HBpresent_=0,HEpresent_=0,HOpresent_=0,HFpresent_=0;
409 me=ig.
get(prefixME_+
"HcalInfo/HBpresent");
411 me=ig.
get(prefixME_+
"HcalInfo/HEpresent");
413 me=ig.
get(prefixME_+
"HcalInfo/HOpresent");
415 me=ig.
get(prefixME_+
"HcalInfo/HFpresent");
418 s=subdir_+
"Summary Plots/HBHE Laser Energy Distribution"; me=ig.
get(s.c_str());
419 if(me!=0) hbheEnergy=HcalUtilsClient::getHisto<TH1F*>(me, cloneME_, hbheEnergy, debug_);
else return;
420 s=subdir_+
"Summary Plots/HBHE Laser Timing Distribution"; me=ig.
get(s.c_str());
421 if(me!=0) hbheTiming=HcalUtilsClient::getHisto<TH1F*>(me, cloneME_, hbheTiming, debug_);
else return;
422 s=subdir_+
"Summary Plots/HBHE Laser Energy RMS_div_Energy Distribution"; me=ig.
get(s.c_str());
423 if(me!=0) hbheEnergyRMS= HcalUtilsClient::getHisto<TH1F*>(me, cloneME_, hbheEnergyRMS, debug_);
else return;
424 s=subdir_+
"Summary Plots/HBHE Laser Timing RMS Distribution"; me=ig.
get(s.c_str());
425 if(me!=0) hbheTimingRMS= HcalUtilsClient::getHisto<TH1F*>(me, cloneME_, hbheTimingRMS, debug_);
else return;
426 s=subdir_+
"Summary Plots/HO Laser Energy Distribution"; me=ig.
get(s.c_str());
427 if(me!=0) hoEnergy = HcalUtilsClient::getHisto<TH1F*>(me, cloneME_, hoEnergy, debug_);
else return;
428 s=subdir_+
"Summary Plots/HO Laser Timing Distribution"; me=ig.
get(s.c_str());
429 if(me!=0) hoTiming = HcalUtilsClient::getHisto<TH1F*>(me, cloneME_, hoTiming, debug_);
else return;
430 s=subdir_+
"Summary Plots/HO Laser Energy RMS_div_Energy Distribution"; me=ig.
get(s.c_str());
431 if(me!=0) hoEnergyRMS = HcalUtilsClient::getHisto<TH1F*>(me, cloneME_, hoEnergyRMS, debug_);
else return;
432 s=subdir_+
"Summary Plots/HO Laser Timing RMS Distribution"; me=ig.
get(s.c_str());
433 if(me!=0) hoTimingRMS = HcalUtilsClient::getHisto<TH1F*>(me, cloneME_, hoTimingRMS, debug_);
else return;
434 s=subdir_+
"Summary Plots/HF Laser Energy Distribution"; me=ig.
get(s.c_str());
435 if(me!=0) hfEnergy = HcalUtilsClient::getHisto<TH1F*>(me, cloneME_, hfEnergy, debug_);
else return;
436 s=subdir_+
"Summary Plots/HF Laser Timing Distribution"; me=ig.
get(s.c_str());
437 if(me!=0) hfTiming = HcalUtilsClient::getHisto<TH1F*>(me, cloneME_, hfTiming, debug_);
else return;
438 s=subdir_+
"Summary Plots/HF Laser Energy RMS_div_Energy Distribution"; me=ig.
get(s.c_str());
439 if(me!=0) hfEnergyRMS = HcalUtilsClient::getHisto<TH1F*>(me, cloneME_, hfEnergyRMS, debug_);
else return;
440 s=subdir_+
"Summary Plots/HF Laser Timing RMS Distribution"; me=ig.
get(s.c_str());
441 if(me!=0) hfTimingRMS = HcalUtilsClient::getHisto<TH1F*>(me, cloneME_, hfTimingRMS, debug_);
else return;
443 s=subdir_+
"Summary Plots/HB RBX average Time-Ref"; me=ig.
get(s.c_str());
444 if(me!=0) hb = HcalUtilsClient::getHisto<TH1F*>(me, cloneME_, hb, debug_);
else return;
445 s=subdir_+
"Summary Plots/HE RBX average Time-Ref"; me=ig.
get(s.c_str());
446 if(me!=0) he = HcalUtilsClient::getHisto<TH1F*>(me, cloneME_, he, debug_);
else return;
447 s=subdir_+
"Summary Plots/HO RBX average Time-Ref"; me=ig.
get(s.c_str());
448 if(me!=0) ho = HcalUtilsClient::getHisto<TH1F*>(me, cloneME_, ho, debug_);
else return;
449 s=subdir_+
"Summary Plots/HF RoBox average Time-Ref"; me=ig.
get(s.c_str());
450 if(me!=0) hf = HcalUtilsClient::getHisto<TH1F*>(me, cloneME_, hf, debug_);
else return;
452 s=subdir_+
"Summary Plots/Laser Timing HBHEHF"; me=ig.
get(s.c_str());
453 if(me!=0) Time2Dhbhehf = HcalUtilsClient::getHisto<TH2F*>(me, cloneME_, Time2Dhbhehf, debug_);
else return;
454 s=subdir_+
"Summary Plots/Laser Timing HO"; me=ig.
get(s.c_str());
455 if(me!=0) Time2Dho = HcalUtilsClient::getHisto<TH2F*>(me, cloneME_, Time2Dho, debug_);
else return;
456 s=subdir_+
"Summary Plots/Laser Energy HBHEHF"; me=ig.
get(s.c_str());
457 if(me!=0) Energy2Dhbhehf= HcalUtilsClient::getHisto<TH2F*>(me, cloneME_, Energy2Dhbhehf, debug_);
else return;
458 s=subdir_+
"Summary Plots/Laser Energy HO"; me=ig.
get(s.c_str());
459 if(me!=0) Energy2Dho = HcalUtilsClient::getHisto<TH2F*>(me, cloneME_, Energy2Dho, debug_);
else return;
460 s=subdir_+
"Summary Plots/HBHEHF Laser (Timing-Ref)+1"; me=ig.
get(s.c_str());
461 if(me!=0) refTime2Dhbhehf = HcalUtilsClient::getHisto<TH2F*>(me, cloneME_, refTime2Dhbhehf, debug_);
else return;
462 s=subdir_+
"Summary Plots/HO Laser (Timing-Ref)+1"; me=ig.
get(s.c_str());
463 if(me!=0) refTime2Dho = HcalUtilsClient::getHisto<TH2F*>(me, cloneME_, refTime2Dho, debug_);
else return;
464 s=subdir_+
"Summary Plots/HBHEHF Laser Energy_div_Ref"; me=ig.
get(s.c_str());
465 if(me!=0) refEnergy2Dhbhehf= HcalUtilsClient::getHisto<TH2F*>(me, cloneME_, refEnergy2Dhbhehf, debug_);
else return;
466 s=subdir_+
"Summary Plots/HO Laser Energy_div_Ref"; me=ig.
get(s.c_str());
467 if(me!=0) refEnergy2Dho = HcalUtilsClient::getHisto<TH2F*>(me, cloneME_, refEnergy2Dho, debug_);
else return;
471 for(
int i=0;
i<56;
i++){
472 sprintf(str,
"RADDAM (%i %i)",RADDAM_CH[
i].
eta,RADDAM_CH[
i].
phi);
473 s=subdir_+
"Raddam Plots/"+str; me=ig.
get(s.c_str());
474 if(me!=0) Raddam[
i] = HcalUtilsClient::getHisto<TH1F*>(me, cloneME_, Raddam[
i], debug_);
475 Raddam[
i]->SetXTitle(
"TS");
476 Raddam[
i]->SetTitle(str);
479 int ievt_ = -1,runNo=-1;
480 s=subdir_+
"HcalDetDiagLaserMonitor Event Number";
481 me = ig.
get(s.c_str());
484 sscanf((s.substr(2,s.length()-2)).c_str(),
"%d", &ievt_);
486 s=subdir_+
"HcalDetDiagLaserMonitor Run Number";
487 me = ig.
get(s.c_str());
490 sscanf((s.substr(2,s.length()-2)).c_str(),
"%d", &runNo);
492 s=subdir_+
"HcalDetDiagLaserMonitor Reference Run";
493 me = ig.
get(s.c_str());
497 sscanf((s.substr(2,s.length()-2)).c_str(),
"%s", str);
518 TH2F* BadTiming_val[4];
519 TH2F* BadEnergy_val[4];
521 for(
int i=0;
i<4;++
i){
524 string s=subdir_+
"Plots for client/"+name[
i]+
" Laser Timing difference";
525 me=ig.
get(s.c_str());
526 if (me!=0) BadTiming_val[
i]=HcalUtilsClient::getHisto<TH2F*>(me, cloneME_, BadTiming_val[
i], debug_);
else return;
527 s=subdir_+
"Plots for client/"+name[
i]+
" Laser Energy difference";
528 me=ig.
get(s.c_str());
529 if (me!=0) BadEnergy_val[
i]=HcalUtilsClient::getHisto<TH2F*>(me, cloneME_, BadEnergy_val[
i], debug_);
else return;
533 std::ofstream badTiming;
534 badTiming.open((htmlDir+
"bad_timing_table.html").c_str());
536 std::ofstream badEnergy;
537 badEnergy.open((htmlDir+
"bad_energy_table.html").c_str());
540 for(
int d=0;d<4;++d){
541 int etabins=BadTiming_val[d]->GetNbinsX();
542 int phibins=BadTiming_val[d]->GetNbinsY();
545 if(ieta==-9999)
continue;
552 float val=BadTiming_val[d]->GetBinContent(
eta+1,
phi+1);
555 if(ieta>0){ HBP[0]++;}
else{ HBM[0]++;} badT++;
556 if(badstatusmap.find(hcalid)==badstatusmap.end()){
if(ieta>0){ newHBP[0]++;}
else{ newHBM[0]++;}}
559 if(ieta>0){ HEP[0]++;}
else{ HEM[0]++;} badT++;
560 if(badstatusmap.find(hcalid)==badstatusmap.end()){
if(ieta>0){ newHEP[0]++;}
else{ newHEM[0]++;}}
563 if(ieta>0){ HFP[0]++;}
else{ HFM[0]++;} badT++;
564 if(badstatusmap.find(hcalid)==badstatusmap.end()){
if(ieta>0){ newHFP[0]++;}
else{ newHFM[0]++;}}
568 if(badstatusmap.find(hcalid)==badstatusmap.end()){newHO[0]++;}
571 val=BadEnergy_val[d]->GetBinContent(
eta+1,
phi+1);
574 if(ieta>0){ HBP[1]++;}
else{ HBM[1]++;} badE++;
575 if(badstatusmap.find(hcalid)==badstatusmap.end()){
if(ieta>0){ newHBP[1]++;}
else{ newHBM[1]++;}}
578 if(ieta>0){ HEP[1]++;}
else{ HEM[1]++;} badE++;
579 if(badstatusmap.find(hcalid)==badstatusmap.end()){
if(ieta>0){ newHEP[1]++;}
else{ newHEM[1]++;}}
582 if(ieta>0){ HFP[1]++;}
else{ HFM[1]++;} badE++;
583 if(badstatusmap.find(hcalid)==badstatusmap.end()){
if(ieta>0){ newHFP[1]++;}
else{ newHFM[1]++;}}
587 if(badstatusmap.find(hcalid)==badstatusmap.end()){newHO[1]++;}
595 if((HBP[0]+HBM[0])>0){
596 badTiming <<
"<tr><td align=\"center\"><h3>"<<
"HB" <<
"</h3></td></tr>" << endl;
597 for(
int d=0;d<4;++d){
598 int etabins=BadTiming_val[d]->GetNbinsX();
599 int phibins=BadTiming_val[d]->GetNbinsY();
602 if(ieta==-9999)
continue;
604 float val=BadTiming_val[d]->GetBinContent(
eta+1,
phi+1);
609 sprintf(str,
"Time-Ref=%.2f",val);
615 if((HEP[0]+HEM[0])>0){
616 badTiming <<
"<tr><td align=\"center\"><h3>"<<
"HE" <<
"</h3></td></tr>" << endl;
617 for(
int d=0;d<4;++d){
618 int etabins=BadTiming_val[d]->GetNbinsX();
619 int phibins=BadTiming_val[d]->GetNbinsY();
622 if(ieta==-9999)
continue;
624 float val=BadTiming_val[d]->GetBinContent(
eta+1,
phi+1);
629 sprintf(str,
"Time-Ref=%.2f",val);
636 badTiming <<
"<tr><td align=\"center\"><h3>"<<
"HO" <<
"</h3></td></tr>" << endl;
637 for(
int d=0;d<4;++d){
638 int etabins=BadTiming_val[d]->GetNbinsX();
639 int phibins=BadTiming_val[d]->GetNbinsY();
642 if(ieta==-9999)
continue;
644 float val=BadTiming_val[d]->GetBinContent(
eta+1,
phi+1);
649 sprintf(str,
"Time-Ref=%.2f",val);
655 if((HFP[0]+HFM[0])>0){
656 badTiming <<
"<tr><td align=\"center\"><h3>"<<
"HF" <<
"</h3></td></tr>" << endl;
657 for(
int d=0;d<4;++d){
658 int etabins=BadTiming_val[d]->GetNbinsX();
659 int phibins=BadTiming_val[d]->GetNbinsY();
662 if(ieta==-9999)
continue;
664 float val=BadTiming_val[d]->GetBinContent(
eta+1,
phi+1);
669 sprintf(str,
"Time-Ref=%.2f",val);
676 if((HBP[1]+HBM[1])>0){
677 badEnergy <<
"<tr><td align=\"center\"><h3>"<<
"HB" <<
"</h3></td></tr>" << endl;
678 for(
int d=0;d<4;++d){
679 int etabins=BadEnergy_val[d]->GetNbinsX();
680 int phibins=BadEnergy_val[d]->GetNbinsY();
683 if(ieta==-9999)
continue;
685 float val=BadEnergy_val[d]->GetBinContent(
eta+1,
phi+1);
690 sprintf(str,
"Energy/Ref=%.2f",val);
696 if((HEP[1]+HEM[1])>0){
697 badEnergy <<
"<tr><td align=\"center\"><h3>"<<
"HE" <<
"</h3></td></tr>" << endl;
698 for(
int d=0;d<4;++d){
699 int etabins=BadEnergy_val[d]->GetNbinsX();
700 int phibins=BadEnergy_val[d]->GetNbinsY();
703 if(ieta==-9999)
continue;
705 float val=BadEnergy_val[d]->GetBinContent(
eta+1,
phi+1);
710 sprintf(str,
"Energy/Ref=%.2f",val);
717 badEnergy <<
"<tr><td align=\"center\"><h3>"<<
"HO" <<
"</h3></td></tr>" << endl;
718 for(
int d=0;d<4;++d){
719 int etabins=BadEnergy_val[d]->GetNbinsX();
720 int phibins=BadEnergy_val[d]->GetNbinsY();
723 if(ieta==-9999)
continue;
725 float val=BadEnergy_val[d]->GetBinContent(
eta+1,
phi+1);
730 sprintf(str,
"Energy/Ref=%.2f",val);
736 if((HFP[1]+HFM[1])>0){
737 badEnergy <<
"<tr><td align=\"center\"><h3>"<<
"HF" <<
"</h3></td></tr>" << endl;
738 for(
int d=0;d<4;++d){
739 int etabins=BadEnergy_val[d]->GetNbinsX();
740 int phibins=BadEnergy_val[d]->GetNbinsY();
743 if(ieta==-9999)
continue;
745 float val=BadEnergy_val[d]->GetBinContent(
eta+1,
phi+1);
750 sprintf(str,
"Energy/Ref=%.2f",val);
762 std::ofstream htmlFile;
763 string outfile=htmlDir+name_+
".html";
764 htmlFile.open(outfile.c_str());
766 gROOT->SetBatch(
true);
767 gStyle->SetCanvasColor(0);
768 gStyle->SetPadColor(0);
769 gStyle->SetOptStat(111110);
770 gStyle->SetPalette(1);
771 TCanvas *
can=
new TCanvas(
"HcalDetDiagLaserClient",
"HcalDetDiagLaserClient",0,0,500,350);
774 if(Raddam[0]->GetEntries()>0){
775 std::ofstream RADDAM;
776 RADDAM.open((htmlDir +
"RADDAM_"+name_).c_str());
777 RADDAM <<
"</html><html xmlns=\"http://www.w3.org/1999/xhtml\">"<< endl;
778 RADDAM <<
"<head>"<< endl;
779 RADDAM <<
"<meta http-equiv=\"Content-Type\" content=\"text/html\"/>"<< endl;
780 RADDAM <<
"<title>"<<
"RADDAM channels" <<
"</title>"<< endl;
781 RADDAM <<
"<style type=\"text/css\">"<< endl;
782 RADDAM <<
" body,td{ background-color: #FFFFCC; font-family: arial, arial ce, helvetica; font-size: 12px; }"<< endl;
783 RADDAM <<
" td.s0 { font-family: arial, arial ce, helvetica; }"<< endl;
784 RADDAM <<
" td.s1 { font-family: arial, arial ce, helvetica; font-weight: bold; background-color: #FFC169; text-align: center;}"<< endl;
785 RADDAM <<
" td.s2 { font-family: arial, arial ce, helvetica; background-color: #eeeeee; }"<< endl;
786 RADDAM <<
" td.s3 { font-family: arial, arial ce, helvetica; background-color: #d0d0d0; }"<< endl;
787 RADDAM <<
" td.s4 { font-family: arial, arial ce, helvetica; background-color: #FFC169; }"<< endl;
788 RADDAM <<
"</style>"<< endl;
789 RADDAM <<
"<body>"<< endl;
790 RADDAM <<
"<h2>Run "<< runNo<<
": RADDAM channels event shape </h2>" << endl;
791 RADDAM <<
"<table>"<< endl;
794 for(
int i=0;
i<28;
i++){
795 RADDAM <<
"<tr align=\"left\">" << endl;
798 Raddam[2*
i]->Draw(); sprintf(str,
"%02d",2*
i); can->SaveAs((htmlDir +
"raddam_ch"+str+
".gif").c_str());
799 Raddam[2*
i+1]->Draw(); sprintf(str,
"%02d",2*
i+1); can->SaveAs((htmlDir +
"raddam_ch"+str+
".gif").c_str());
800 sprintf(str,
"raddam_ch%02d.gif",2*
i);
801 RADDAM <<
"<td align=\"center\"><img src=\""<<str<<
"\" alt=\"raddam channel\"> </td>" << endl;
802 sprintf(str,
"raddam_ch%02d.gif",2*
i+1);
803 RADDAM <<
"<td align=\"center\"><img src=\""<<str<<
"\" alt=\"raddam channel\"> </td>" << endl;
804 RADDAM <<
"</tr>" << endl;
807 RADDAM <<
"</table>"<< endl;
808 RADDAM <<
"</body>"<< endl;
809 RADDAM <<
"</html>"<< endl;
813 Time2Dhbhehf->SetXTitle(
"i#eta");
814 Time2Dhbhehf->SetYTitle(
"i#phi");
815 Time2Dho->SetXTitle(
"i#eta");
816 Time2Dho->SetYTitle(
"i#phi");
817 Energy2Dhbhehf->SetXTitle(
"i#eta");
818 Energy2Dhbhehf->SetYTitle(
"i#phi");
819 Energy2Dho->SetXTitle(
"i#eta");
820 Energy2Dho->SetYTitle(
"i#phi");
821 refTime2Dhbhehf->SetXTitle(
"i#eta");
822 refTime2Dhbhehf->SetYTitle(
"i#phi");
823 refTime2Dho->SetXTitle(
"i#eta");
824 refTime2Dho->SetYTitle(
"i#phi");
825 refEnergy2Dhbhehf->SetXTitle(
"i#eta");
826 refEnergy2Dhbhehf->SetYTitle(
"i#phi");
827 refEnergy2Dho->SetXTitle(
"i#eta");
828 refEnergy2Dho->SetYTitle(
"i#phi");
829 refTime2Dhbhehf->SetMinimum(0);
830 refTime2Dhbhehf->SetMaximum(2);
831 refTime2Dho->SetMinimum(0);
832 refTime2Dho->SetMaximum(2);
833 refEnergy2Dhbhehf->SetMinimum(0.5);
834 refEnergy2Dhbhehf->SetMaximum(1.5);
835 refEnergy2Dho->SetMinimum(0.5);
836 refEnergy2Dho->SetMaximum(1.5);
838 Time2Dhbhehf->SetNdivisions(36,
"Y");
839 Time2Dho->SetNdivisions(36,
"Y");
840 Energy2Dhbhehf->SetNdivisions(36,
"Y");
841 Energy2Dho->SetNdivisions(36,
"Y");
842 refTime2Dhbhehf->SetNdivisions(36,
"Y");
843 refTime2Dho->SetNdivisions(36,
"Y");
844 refEnergy2Dhbhehf->SetNdivisions(36,
"Y");
845 refEnergy2Dho->SetNdivisions(36,
"Y");
848 htmlFile <<
"<!DOCTYPE html PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\"> " << endl;
849 htmlFile <<
"<html> " << endl;
850 htmlFile <<
"<head> " << endl;
851 htmlFile <<
" <meta content=\"text/html; charset=ISO-8859-1\" " << endl;
852 htmlFile <<
" http-equiv=\"content-type\"> " << endl;
853 htmlFile <<
" <title>Detector Diagnostics Laser Monitor</title> " << endl;
854 htmlFile <<
"</head> " << endl;
855 htmlFile <<
"<style type=\"text/css\"> td { font-weight: bold } </style>" << endl;
857 htmlFile <<
"<style type=\"text/css\">"<< endl;
858 htmlFile <<
" td.s0 { font-family: arial, arial ce, helvetica; font-weight: bold; background-color: #FF7700; text-align: center;}"<< endl;
859 htmlFile <<
" td.s1 { font-family: arial, arial ce, helvetica; font-weight: bold; background-color: #FFC169; text-align: center;}"<< endl;
860 htmlFile <<
" td.s2 { font-family: arial, arial ce, helvetica; background-color: red; }"<< endl;
861 htmlFile <<
" td.s3 { font-family: arial, arial ce, helvetica; background-color: yellow; }"<< endl;
862 htmlFile <<
" td.s4 { font-family: arial, arial ce, helvetica; background-color: green; }"<< endl;
863 htmlFile <<
" td.s5 { font-family: arial, arial ce, helvetica; background-color: silver; }"<< endl;
864 std::string state[4]={
"<td class=\"s2\" align=\"center\">",
865 "<td class=\"s3\" align=\"center\">",
866 "<td class=\"s4\" align=\"center\">",
867 "<td class=\"s5\" align=\"center\">"};
868 htmlFile <<
"</style>"<< endl;
870 htmlFile <<
"<body> " << endl;
871 htmlFile <<
"<br> " << endl;
872 htmlFile <<
"<h2>Run: " << endl;
873 htmlFile <<
" <span " << endl;
874 htmlFile <<
" style=\"color: rgb(0, 0, 153);\">" << runNo <<
"</span></h2>" << endl;
875 htmlFile <<
"<h2>Monitoring task: <span " << endl;
876 htmlFile <<
" style=\"color: rgb(0, 0, 153);\">Detector Diagnostics Laser Monitor</span></h2> " << endl;
877 htmlFile <<
"<h2>Events processed: <span " << endl;
878 htmlFile <<
" style=\"color: rgb(0, 0, 153);\">" << ievt_ <<
"</span></h2>" << endl;
879 htmlFile <<
"<hr>" << endl;
881 htmlFile <<
"<table width=100% border=1>" << endl;
882 htmlFile <<
"<tr>" << endl;
883 htmlFile <<
"<td class=\"s0\" width=20% align=\"center\">SebDet</td>" << endl;
884 htmlFile <<
"<td class=\"s0\" width=20% align=\"center\">Bad Timing</td>" << endl;
885 htmlFile <<
"<td class=\"s0\" width=20% align=\"center\">Bad Energy</td>" << endl;
886 htmlFile <<
"</tr><tr>" << endl;
888 htmlFile <<
"<td class=\"s1\" align=\"center\">HB+</td>" << endl;
889 if(HBP[0]==0) ind1=2;
if(HBP[0]>0 && HBP[0]<=12) ind1=1;
if(HBP[0]>12) ind1=0;
890 if(HBP[1]==0) ind2=2;
if(HBP[1]>0 && HBP[1]<=12) ind2=1;
if(HBP[1]>12) ind2=0;
891 if(!HBpresent_) ind1=ind2=3;
892 htmlFile << state[ind1] << HBP[0] <<
"</td>" << endl;
893 htmlFile << state[ind2] << HBP[1] <<
"</td>" << endl;
894 htmlFile <<
"</tr><tr>" << endl;
895 htmlFile <<
"<td class=\"s1\" align=\"center\">HB-</td>" << endl;
896 if(HBM[0]==0) ind1=2;
if(HBM[0]>0 && HBP[0]<=12) ind1=1;
if(HBM[0]>12) ind1=0;
897 if(HBM[1]==0) ind2=2;
if(HBM[1]>0 && HBP[1]<=12) ind2=1;
if(HBM[1]>12) ind2=0;
898 if(!HBpresent_) ind1=ind2=3;
899 htmlFile << state[ind1] << HBM[0] <<
"</td>" << endl;
900 htmlFile << state[ind2] << HBM[1] <<
"</td>" << endl;
901 htmlFile <<
"</tr><tr>" << endl;
902 htmlFile <<
"<td class=\"s1\" align=\"center\">HE+</td>" << endl;
903 if(HEP[0]==0) ind1=2;
if(HEP[0]>0 && HEP[0]<=12) ind1=1;
if(HEP[0]>12) ind1=0;
904 if(HEP[1]==0) ind2=2;
if(HEP[1]>0 && HEP[1]<=12) ind2=1;
if(HEP[1]>12) ind2=0;
905 if(!HEpresent_) ind1=ind2=3;
906 if(ind1==0 || ind2==0)
status|=2;
else if(ind1==1 || ind2==1)
status|=1;
907 htmlFile << state[ind1] << HEP[0] <<
"</td>" << endl;
908 htmlFile << state[ind2] << HEP[1] <<
"</td>" << endl;
909 htmlFile <<
"</tr><tr>" << endl;
910 htmlFile <<
"<td class=\"s1\" align=\"center\">HE-</td>" << endl;
911 if(HEM[0]==0) ind1=2;
if(HEM[0]>0 && HEM[0]<=12) ind1=1;
if(HEM[0]>12) ind1=0;
912 if(HEM[1]==0) ind2=2;
if(HEM[1]>0 && HEM[1]<=12) ind2=1;
if(HEM[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] << HEM[0] <<
"</td>" << endl;
916 htmlFile << state[ind2] << HEM[1] <<
"</td>" << endl;
917 htmlFile <<
"</tr><tr>" << endl;
918 htmlFile <<
"<td class=\"s1\" align=\"center\">HF+</td>" << endl;
919 if(HFP[0]==0) ind1=2;
if(HFP[0]>0 && HFP[0]<=12) ind1=1;
if(HFP[0]>12) ind1=0;
920 if(HFP[1]==0) ind2=2;
if(HFP[1]>0 && HFP[1]<=12) ind2=1;
if(HFP[1]>12) ind2=0;
921 if(!HOpresent_) ind1=ind2=3;
922 if(ind1==0 || ind2==0)
status|=2;
else if(ind1==1 || ind2==1)
status|=1;
923 htmlFile << state[ind1] << HFP[0] <<
"</td>" << endl;
924 htmlFile << state[ind2] << HFP[1] <<
"</td>" << endl;
925 htmlFile <<
"</tr><tr>" << endl;
926 htmlFile <<
"<td class=\"s1\" align=\"center\">HF-</td>" << endl;
927 if(HFM[0]==0) ind1=2;
if(HFM[0]>0 && HFM[0]<=12) ind1=1;
if(HFM[0]>12) ind1=0;
928 if(HFM[1]==0) ind2=2;
if(HFM[1]>0 && HFM[1]<=12) ind2=1;
if(HFM[1]>12) ind2=0;
929 if(!HFpresent_) ind1=ind2=3;
930 if(ind1==0 || ind2==0)
status|=2;
else if(ind1==1 || ind2==1)
status|=1;
931 htmlFile << state[ind1] << HFM[0] <<
"</td>" << endl;
932 htmlFile << state[ind2] << HFM[1] <<
"</td>" << endl;
933 htmlFile <<
"</tr><tr>" << endl;
934 htmlFile <<
"<td class=\"s1\" align=\"center\">HO</td>" << endl;
935 if(HO[0]==0) ind1=2;
if(HO[0]>0 && HO[0]<=12) ind1=1;
if(HO[0]>12) ind1=0;
936 if(HO[1]==0) ind2=2;
if(HO[1]>0 && HO[1]<=12) ind2=1;
if(HO[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] << HO[0] <<
"</td>" << endl;
940 htmlFile << state[ind2] << HO[1] <<
"</td>" << endl;
942 htmlFile <<
"</tr></table>" << endl;
943 htmlFile <<
"<hr>" << endl;
946 htmlFile <<
"<table width=100% border=1><tr>" << endl;
947 if(badT>0) htmlFile <<
"<td><a href=\"" <<
"bad_timing_table.html" <<
"\">list of bad timing channels</a></td>";
948 if(badE>0) htmlFile <<
"<td><a href=\"" <<
"bad_energy_table.html" <<
"\">list of bad energy channels</a></td>";
949 htmlFile <<
"</tr></table>" << endl;
954 if(Raddam[0]->GetEntries()>0){
955 htmlFile <<
"<h2 align=\"center\"><a href=\"" << (
"RADDAM_"+name_).c_str() <<
"\">RADDAM channels</a><h2>";
956 htmlFile <<
"<hr>" << endl;
959 htmlFile <<
"<h2 align=\"center\">Stability Laser plots (Reference run "<<ref_run<<
")</h2>" << endl;
960 htmlFile <<
"<table width=100% border=0><tr>" << endl;
965 htmlFile <<
"<tr align=\"left\">" << endl;
966 refTime2Dhbhehf->SetStats(0);
967 refTime2Dho->SetStats(0);
968 refTime2Dhbhehf->Draw(
"COLZ"); can->SaveAs((htmlDir +
"ref_laser_timing_hbhehf.gif").c_str());
969 refTime2Dho->Draw(
"COLZ"); can->SaveAs((htmlDir +
"ref_laser_timing_ho.gif").c_str());
970 htmlFile <<
"<td align=\"center\"><img src=\"ref_laser_timing_hbhehf.gif\" alt=\"ref laser timing distribution\"> </td>" << endl;
971 htmlFile <<
"<td align=\"center\"><img src=\"ref_laser_timing_ho.gif\" alt=\"ref laser timing distribution\"> </td>" << endl;
972 htmlFile <<
"</tr>" << endl;
975 if(hb!=0 && he!=0 && ho!=0 && hf!=0){
976 hb->SetMarkerStyle(22);
977 hb->SetMarkerColor(kRed);
978 hb->GetYaxis()->SetRangeUser(hb->GetMinimum()-1,hb->GetMaximum()+1);
979 hb->GetXaxis()->SetNdivisions(520);
981 he->SetMarkerStyle(22);
982 he->SetMarkerColor(kRed);
983 he->GetYaxis()->SetRangeUser(he->GetMinimum()-1,he->GetMaximum()+1);
984 he->GetXaxis()->SetNdivisions(520);
986 ho->SetMarkerStyle(22);
987 ho->SetMarkerColor(kRed);
988 ho->GetYaxis()->SetRangeUser(ho->GetMinimum()-1,ho->GetMaximum()+1);
989 ho->GetXaxis()->SetNdivisions(520);
991 hf->SetMarkerStyle(22);
992 hf->SetMarkerColor(kRed);
993 hf->GetYaxis()->SetRangeUser(hf->GetMinimum()-1,hf->GetMaximum()+1);
994 hf->GetXaxis()->SetNdivisions(520);
1001 hb->GetXaxis()->SetBit(TAxis::kLabelsVert);
1002 he->GetXaxis()->SetBit(TAxis::kLabelsVert);
1003 ho->GetXaxis()->SetBit(TAxis::kLabelsVert);
1004 hf->GetXaxis()->SetBit(TAxis::kLabelsVert);
1005 hb->GetXaxis()->SetLabelSize(0.05);
1006 he->GetXaxis()->SetLabelSize(0.05);
1007 ho->GetXaxis()->SetLabelSize(0.05);
1008 hf->GetXaxis()->SetLabelSize(0.05);
1011 htmlFile <<
"<tr align=\"left\">" << endl;
1012 htmlFile <<
"<td align=\"center\"><img src=\"hb_rbx_timing1D.gif\" alt=\"rbx timing\"> </td>" << endl;
1013 htmlFile <<
"<td align=\"center\"><img src=\"he_rbx_timing1D.gif\" alt=\"rbx timing\"> </td>" << endl;
1014 htmlFile <<
"</tr>" << endl;
1015 htmlFile <<
"<tr align=\"left\">" << endl;
1016 htmlFile <<
"<td align=\"center\"><img src=\"ho_rbx_timing1D.gif\" alt=\"rbx timing\"> </td>" << endl;
1017 htmlFile <<
"<td align=\"center\"><img src=\"hf_rbx_timing1D.gif\" alt=\"rbx timing\"> </td>" << endl;
1018 htmlFile <<
"</tr>" << endl;
1019 }
else printf(
"Error\n");
1023 htmlFile <<
"<tr align=\"left\">" << endl;
1024 refEnergy2Dhbhehf->SetStats(0);
1025 refEnergy2Dho->SetStats(0);
1026 refEnergy2Dhbhehf->Draw(
"COLZ"); can->SaveAs((htmlDir +
"ref_laser_energy_hbhehf.gif").c_str());
1027 refEnergy2Dho->Draw(
"COLZ"); can->SaveAs((htmlDir +
"ref_laser_energy_ho.gif").c_str());
1028 htmlFile <<
"<td align=\"center\"><img src=\"ref_laser_energy_hbhehf.gif\" alt=\"ref laser energy distribution\"> </td>" << endl;
1029 htmlFile <<
"<td align=\"center\"><img src=\"ref_laser_energy_ho.gif\" alt=\"ref laser energy distribution\"> </td>" << endl;
1030 htmlFile <<
"</tr>" << endl;
1032 htmlFile <<
"</table>" << endl;
1035 htmlFile <<
"<h2 align=\"center\">Summary Laser plots</h2>" << endl;
1036 htmlFile <<
"<table width=100% border=0><tr>" << endl;
1037 htmlFile <<
"<tr align=\"left\">" << endl;
1038 Time2Dhbhehf->SetStats(0);
1039 Time2Dho->SetStats(0);
1040 Time2Dhbhehf->Draw(
"COLZ"); can->SaveAs((htmlDir +
"laser_timing_hbhehf.gif").c_str());
1041 Time2Dho->Draw(
"COLZ"); can->SaveAs((htmlDir +
"laser_timing_ho.gif").c_str());
1042 htmlFile <<
"<td align=\"center\"><img src=\"laser_timing_hbhehf.gif\" alt=\"laser timing distribution\"> </td>" << endl;
1043 htmlFile <<
"<td align=\"center\"><img src=\"laser_timing_ho.gif\" alt=\"laser timing distribution\"> </td>" << endl;
1044 htmlFile <<
"</tr>" << endl;
1046 htmlFile <<
"<tr align=\"left\">" << endl;
1047 Energy2Dhbhehf->SetStats(0);
1048 Energy2Dho->SetStats(0);
1049 Energy2Dhbhehf->Draw(
"COLZ"); can->SaveAs((htmlDir +
"laser_energy_hbhehf.gif").c_str());
1050 Energy2Dho->Draw(
"COLZ"); can->SaveAs((htmlDir +
"laser_energy_ho.gif").c_str());
1051 htmlFile <<
"<td align=\"center\"><img src=\"laser_energy_hbhehf.gif\" alt=\"laser energy distribution\"> </td>" << endl;
1052 htmlFile <<
"<td align=\"center\"><img src=\"laser_energy_ho.gif\" alt=\"laser energy distribution\"> </td>" << endl;
1053 htmlFile <<
"</tr>" << endl;
1056 htmlFile <<
"<tr align=\"left\">" << endl;
1057 hbheEnergy->Draw(); can->SaveAs((htmlDir +
"hbhe_laser_energy_distribution.gif").c_str());
1058 hbheEnergyRMS->Draw(); can->SaveAs((htmlDir +
"hbhe_laser_energy_rms_distribution.gif").c_str());
1059 htmlFile <<
"<td align=\"center\"><img src=\"hbhe_laser_energy_distribution.gif\" alt=\"hbhe laser energy distribution\"> </td>" << endl;
1060 htmlFile <<
"<td align=\"center\"><img src=\"hbhe_laser_energy_rms_distribution.gif\" alt=\"hbhelaser energy rms distribution\"> </td>" << endl;
1061 htmlFile <<
"</tr>" << endl;
1062 htmlFile <<
"<tr align=\"left\">" << endl;
1063 hbheTiming->Draw(); can->SaveAs((htmlDir +
"hbhe_laser_timing_distribution.gif").c_str());
1064 hbheTimingRMS->Draw(); can->SaveAs((htmlDir +
"hbhe_laser_timing_rms_distribution.gif").c_str());
1065 htmlFile <<
"<td align=\"center\"><img src=\"hbhe_laser_timing_distribution.gif\" alt=\"hbhe laser timing distribution\"> </td>" << endl;
1066 htmlFile <<
"<td align=\"center\"><img src=\"hbhe_laser_timing_rms_distribution.gif\" alt=\"hbhe laser timing rms distribution\"> </td>" << endl;
1067 htmlFile <<
"</tr>" << endl;
1069 htmlFile <<
"<tr align=\"left\">" << endl;
1070 hoEnergy->Draw(); can->SaveAs((htmlDir +
"ho_laser_energy_distribution.gif").c_str());
1071 hoEnergyRMS->Draw(); can->SaveAs((htmlDir +
"ho_laser_energy_rms_distribution.gif").c_str());
1072 htmlFile <<
"<td align=\"center\"><img src=\"ho_laser_energy_distribution.gif\" alt=\"ho laser energy distribution\"> </td>" << endl;
1073 htmlFile <<
"<td align=\"center\"><img src=\"ho_laser_energy_rms_distribution.gif\" alt=\"ho laser energy rms distribution\"> </td>" << endl;
1074 htmlFile <<
"</tr>" << endl;
1075 htmlFile <<
"<tr align=\"left\">" << endl;
1076 hoTiming->Draw(); can->SaveAs((htmlDir +
"ho_laser_timing_distribution.gif").c_str());
1077 hoTimingRMS->Draw(); can->SaveAs((htmlDir +
"ho_laser_timing_rms_distribution.gif").c_str());
1078 htmlFile <<
"<td align=\"center\"><img src=\"ho_laser_timing_distribution.gif\" alt=\"ho laser timing distribution\"> </td>" << endl;
1079 htmlFile <<
"<td align=\"center\"><img src=\"ho_laser_timing_rms_distribution.gif\" alt=\"ho laser timing rms distribution\"> </td>" << endl;
1081 htmlFile <<
"</tr>" << endl;
1082 htmlFile <<
"<tr align=\"left\">" << endl;
1083 hfEnergy->Draw(); can->SaveAs((htmlDir +
"hf_laser_energy_distribution.gif").c_str());
1084 hfEnergyRMS->Draw(); can->SaveAs((htmlDir +
"hf_laser_energy_rms_distribution.gif").c_str());
1085 htmlFile <<
"<td align=\"center\"><img src=\"hf_laser_energy_distribution.gif\" alt=\"hf laser energy distribution\"> </td>" << endl;
1086 htmlFile <<
"<td align=\"center\"><img src=\"hf_laser_energy_rms_distribution.gif\" alt=\"hf laser energy rms distribution\"> </td>" << endl;
1087 htmlFile <<
"</tr>" << endl;
1088 htmlFile <<
"<tr align=\"left\">" << endl;
1089 hfTiming->Draw(); can->SaveAs((htmlDir +
"hf_laser_timing_distribution.gif").c_str());
1090 hfTimingRMS->Draw(); can->SaveAs((htmlDir +
"hf_laser_timing_rms_distribution.gif").c_str());
1091 htmlFile <<
"<td align=\"center\"><img src=\"hf_laser_timing_distribution.gif\" alt=\"hf laser timing distribution\"> </td>" << endl;
1092 htmlFile <<
"<td align=\"center\"><img src=\"hf_laser_timing_rms_distribution.gif\" alt=\"hf laser timing rms distribution\"> </td>" << endl;
1093 htmlFile <<
"</tr>" << endl;
1095 can->SetBottomMargin(0.2);
1096 if(hb->GetEntries()>0)hb->Draw(
"P");
else hb->Draw(); can->SaveAs((htmlDir +
"hb_rbx_timing1D.gif").c_str());
1097 if(he->GetEntries()>0)he->Draw(
"P");
else he->Draw(); can->SaveAs((htmlDir +
"he_rbx_timing1D.gif").c_str());
1098 if(ho->GetEntries()>0)ho->Draw(
"P");
else ho->Draw(); can->SaveAs((htmlDir +
"ho_rbx_timing1D.gif").c_str());
1099 if(hf->GetEntries()>0)hf->Draw(
"P");
else hf->Draw(); can->SaveAs((htmlDir +
"hf_rbx_timing1D.gif").c_str());
1101 htmlFile <<
"</table>" << endl;
1103 htmlFile <<
"</body> " << endl;
1104 htmlFile <<
"</html> " << endl;
1114 if ( ProblemCellsByDepth )
delete ProblemCellsByDepth;
bool isHO(int etabin, int depth)
T getUntrackedParameter(std::string const &, T const &) const
int fiberIndex() const
get the fiber index. For VME 1-8 (which of eight fibers carried by a spigot), for uTCA fibers are zer...
static const Raddam_ch RADDAM_CH[56]
MonitorElement * get(const std::string &path)
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
bool hasErrors_Temp(void)
bool validHtmlOutput(DQMStore::IBooker &, DQMStore::IGetter &)
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), valid for VME
int ieta() const
get the cell ieta
int dccid() const
get the (Hcal local) DCC id for VME, crate number for uTCA
void analyze(DQMStore::IBooker &, DQMStore::IGetter &)
void htmlOutput(DQMStore::IBooker &, DQMStore::IGetter &, std::string)
bool isHB(int etabin, int depth)
int spigot() const
get the spigot (input number on DCC, AMC card number for uTCA)
std::string valueString(void) const
int iphi() const
get the cell iphi
virtual void calculateProblems(void)
bool isHF(int etabin, int depth)
void setCurrentFolder(const std::string &fullpath)
MonitorElement * book2D(Args &&...args)
int64_t getIntValue(void) const
void FillUnphysicalHEHFBins(std::vector< TH2F > &hh)
~HcalDetDiagLaserClient()
Destructor.
void setupProblemCells(DQMStore::IBooker &, DQMStore::IGetter &)
void updateChannelStatus(std::map< HcalDetId, unsigned int > &myqual)
static void printTableTail(std::ofstream &file)
Readout chain identification for Hcal.
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