32 if (prefixME_.substr(prefixME_.size()-1,prefixME_.size())!=
"/")
33 prefixME_.append(
"/");
46 if (
debug_>2)
std::cout <<
"\tHcalDetDiagLEDClient::analyze()"<<std::endl;
61 std::cout <<
"<HcalDetDiagLEDClient::beginJob()> Displaying dqmStore directory structure:"<<std::endl;
70 if (
debug_>0)
std::cout <<
"<HcalDetDiagLEDClient::beginRun> dqmStore does not exist!"<<std::endl;
78 " Problem DetDiagLED Rate for all HCAL;ieta;iphi",
107 std::string
s=
subdir_+
"HcalDetDiagLEDMonitor Event Number";
112 sscanf((s.substr(2,s.length()-2)).c_str(),
"%d", &
n);
114 if(n<100)
return false;
118 file <<
"</html><html xmlns=\"http://www.w3.org/1999/xhtml\">"<< std::endl;
119 file <<
"<head>"<< std::endl;
120 file <<
"<meta http-equiv=\"Content-Type\" content=\"text/html\"/>"<< std::endl;
121 file <<
"<title>"<< header <<
"</title>"<< std::endl;
122 file <<
"<style type=\"text/css\">"<< std::endl;
123 file <<
" body,td{ background-color: #FFFFCC; font-family: arial, arial ce, helvetica; font-size: 12px; }"<< std::endl;
124 file <<
" td.s0 { font-family: arial, arial ce, helvetica; }"<< std::endl;
125 file <<
" td.s1 { font-family: arial, arial ce, helvetica; font-weight: bold; background-color: #FFC169; text-align: center;}"<< std::endl;
126 file <<
" td.s2 { font-family: arial, arial ce, helvetica; background-color: #eeeeee; }"<< std::endl;
127 file <<
" td.s3 { font-family: arial, arial ce, helvetica; background-color: #d0d0d0; }"<< std::endl;
128 file <<
" td.s4 { font-family: arial, arial ce, helvetica; background-color: #FFC169; }"<< std::endl;
129 file <<
"</style>"<< std::endl;
130 file <<
"<body>"<< std::endl;
131 file <<
"<table>"<< std::endl;
136 file <<
"<td class=\"s4\" align=\"center\">#</td>" << std::endl;
137 file <<
"<td class=\"s1\" align=\"center\">ETA</td>" << std::endl;
138 file <<
"<td class=\"s1\" align=\"center\">PHI</td>" << std::endl;
139 file <<
"<td class=\"s1\" align=\"center\">DEPTH</td>"<< std::endl;
140 file <<
"<td class=\"s1\" align=\"center\">RBX</td>" << std::endl;
141 file <<
"<td class=\"s1\" align=\"center\">RM</td>" << std::endl;
142 file <<
"<td class=\"s1\" align=\"center\">PIXEL</td>" << std::endl;
143 file <<
"<td class=\"s1\" align=\"center\">RM_FIBER</td>" << std::endl;
144 file <<
"<td class=\"s1\" align=\"center\">FIBER_CH</td>" << std::endl;
145 file <<
"<td class=\"s1\" align=\"center\">QIE</td>" << std::endl;
146 file <<
"<td class=\"s1\" align=\"center\">ADC</td>" << std::endl;
147 file <<
"<td class=\"s1\" align=\"center\">CRATE</td>" << std::endl;
148 file <<
"<td class=\"s1\" align=\"center\">DCC</td>" << std::endl;
149 file <<
"<td class=\"s1\" align=\"center\">SPIGOT</td>" << std::endl;
150 file <<
"<td class=\"s1\" align=\"center\">HTR_FIBER</td>" << std::endl;
151 file <<
"<td class=\"s1\" align=\"center\">HTR_SLOT</td>" << std::endl;
152 file <<
"<td class=\"s1\" align=\"center\">HTR_FPGA</td>" << std::endl;
153 if(
comment[0]!=0) file <<
"<td class=\"s1\" align=\"center\">Comment</td>" << std::endl;
154 file <<
"</tr>" << std::endl;
156 std::string raw_class;
157 file <<
"<tr>"<< std::endl;
159 raw_class=
"<td class=\"s2\" align=\"center\">";
161 raw_class=
"<td class=\"s3\" align=\"center\">";
163 file <<
"<td class=\"s4\" align=\"center\">" << ind+1 <<
"</td>"<< std::endl;
164 file << raw_class<< detid.
ieta()<<
"</td>"<< std::endl;
165 file << raw_class<< detid.
iphi()<<
"</td>"<< std::endl;
166 file << raw_class<< detid.
depth() <<
"</td>"<< std::endl;
167 file << raw_class<< lmap_entry.
rbx()<<
"</td>"<< std::endl;
168 file << raw_class<< lmap_entry.
rm() <<
"</td>"<< std::endl;
169 file << raw_class<< lmap_entry.
pixel()<<
"</td>"<< std::endl;
170 file << raw_class<< lmap_entry.
rmFiber() <<
"</td>"<< std::endl;
171 file << raw_class<< lmap_entry.
fiberChannel()<<
"</td>"<< std::endl;
172 file << raw_class<< lmap_entry.
qieCard() <<
"</td>"<< std::endl;
173 file << raw_class<< lmap_entry.
adc()<<
"</td>"<< std::endl;
175 file << raw_class<< emap_entry.
dccid()<<
"</td>"<< std::endl;
176 file << raw_class<< emap_entry.
spigot()<<
"</td>"<< std::endl;
177 file << raw_class<< emap_entry.
fiberIndex()<<
"</td>"<< std::endl;
178 file << raw_class<< emap_entry.
htrSlot()<<
"</td>"<< std::endl;
179 file << raw_class<< emap_entry.
htrTopBottom()<<
"</td>"<< std::endl;
180 if(
comment[0]!=0) file << raw_class<<
comment<<
"</td>"<< std::endl;
183 file <<
"</table>"<< std::endl;
184 file <<
"</body>"<< std::endl;
185 file <<
"</html>"<< std::endl;
189 if (subdet.compare(
"HB")==0) subdetval=(
int)
HcalBarrel;
190 else if (subdet.compare(
"HE")==0) subdetval=(
int)
HcalEndcap;
191 else if (subdet.compare(
"HO")==0) subdetval=(
int)
HcalOuter;
192 else if (subdet.compare(
"HF")==0) subdetval=(
int)
HcalForward;
194 int ietabin=
CalcEtaBin(subdetval, eta, depth)+1;
206 if (subdet.compare(
"HB")==0) subdetval=(
int)
HcalBarrel;
207 else if (subdet.compare(
"HE")==0) subdetval=(
int)
HcalEndcap;
208 else if (subdet.compare(
"HO")==0) subdetval=(
int)
HcalOuter;
209 else if (subdet.compare(
"HF")==0) subdetval=(
int)
HcalForward;
211 int ietabin=
CalcEtaBin(subdetval, eta, depth)+1;
220 int UnstableLEDCnt=0;
222 int HBP[7]={0,0,0,0,0,0,0},newHBP[7]={0,0,0,0,0,0,0};
223 int HBM[7]={0,0,0,0,0,0,0},newHBM[7]={0,0,0,0,0,0,0};
224 int HEP[7]={0,0,0,0,0,0,0},newHEP[7]={0,0,0,0,0,0,0};
225 int HEM[7]={0,0,0,0,0,0,0},newHEM[7]={0,0,0,0,0,0,0};
226 int HFP[7]={0,0,0,0,0,0,0},newHFP[7]={0,0,0,0,0,0,0};
227 int HFM[7]={0,0,0,0,0,0,0},newHFM[7]={0,0,0,0,0,0,0};
228 int HO[7] ={0,0,0,0,0,0,0},newHO[7] ={0,0,0,0,0,0,0};
229 std::string subdet[4]={
"HB",
"HE",
"HO",
"HF"};
231 if (
debug_>0)
std::cout <<
"<HcalDetDiagLEDClient::htmlOutput> Preparing html output ..." << std::endl;
238 for(
int i=0;
i<4;++
i){
243 s=
subdir_+
"channel status/"+name[
i]+
" Missing Channels";
246 s=
subdir_+
"channel status/"+name[
i]+
" Unstable Channels";
249 s=
subdir_+
"channel status/"+name[
i]+
" Unstable LED";
252 s=
subdir_+
"channel status/"+name[
i]+
" LED Mean";
255 s=
subdir_+
"channel status/"+name[
i]+
" LED RMS";
258 s=
subdir_+
"channel status/"+name[
i]+
" Time Mean";
261 s=
subdir_+
"channel status/"+name[
i]+
" Time RMS";
264 s=
subdir_+
"Summary Plots/"+name[
i]+
" Channel LED Energy";
267 s=
subdir_+
"Summary Plots/"+name[
i]+
" Channel LED Energy Reference";
273 for(
int sd=0;sd<4;sd++){
274 int feta=0,teta=0,fdepth=0,tdepth=0;
275 if(sd==0){ feta=-16; teta=16 ;fdepth=1; tdepth=2; }
276 if(sd==1){ feta=-29; teta=29 ;fdepth=1; tdepth=3; }
277 if(sd==2){ feta=-15; teta=15 ;fdepth=4; tdepth=4; }
278 if(sd==3){ feta=-42; teta=42 ;fdepth=1; tdepth=2; }
279 for(
int phi=1;
phi<=72;
phi++)
for(
int depth=fdepth;depth<=tdepth;depth++)
for(
int eta=feta;
eta<=teta;
eta++){
280 if(sd==3 &&
eta>-29 &&
eta<29)
continue;
281 double problem[7]={0,0,0,0,0,0,0};
282 for(
int i=0;
i<6;
i++){
291 if(sd==0){
if(
eta>0){
298 if(sd==1){
if(
eta>0){
309 if(sd==3){
if(
eta>0){
322 Missing.open((htmlDir +
"Missing.html").c_str());
326 BadTiming.open((htmlDir +
"BadTiming.html").c_str());
330 Unstable.open((htmlDir +
"Unstable.html").c_str());
334 BadLED.open((htmlDir +
"UnstableLED.html").c_str());
337 for(
int sd=0;sd<4;sd++){
339 if(sd==0 && ((HBM[0]+HBP[0])==0 || (HBM[0]+HBP[0])==(1296*2)))
continue;
340 if(sd==1 && ((HEM[0]+HEP[0])==0 || (HEM[0]+HEP[0])==(1296*2)))
continue;
341 if(sd==2 && ((HO[0])==0 || HO[0]==2160))
continue;
342 if(sd==3 && ((HFM[0]+HFP[0])==0 || (HFM[0]+HFP[0])==(864*2)))
continue;
343 Missing <<
"<tr><td align=\"center\"><h3>"<< subdet[sd] <<
"</h3></td></tr>" << std::endl;
344 int feta=0,teta=0,fdepth=0,tdepth=0;
345 if(sd==0){ feta=-16; teta=16 ;fdepth=1; tdepth=2;
if(HBM[0]==1296) feta=0;
if(HBP[0]==1296) teta=0;}
346 if(sd==1){ feta=-29; teta=29 ;fdepth=1; tdepth=3;
if(HEM[0]==1296) feta=0;
if(HEP[0]==1296) teta=0;}
347 if(sd==2){ feta=-15; teta=15 ;fdepth=4; tdepth=4;
if(HO[0] ==2160) {feta=0; teta=0; }}
348 if(sd==3){ feta=-42; teta=42 ;fdepth=1; tdepth=2;
if(HFM[0]==864) feta=0;
if(HFP[0]==864) teta=0; }
349 for(
int phi=1;
phi<=72;
phi++)
for(
int depth=fdepth;depth<=tdepth;depth++)
for(
int eta=feta;
eta<=teta;
eta++){
350 if(sd==3 &&
eta>-29 &&
eta<29)
continue;
362 printTableLine(Missing,cnt++,*detid,lmap_entry,emap_entry,s); MissingCnt++;
368 for(
int sd=0;sd<4;sd++){
370 if(sd==0 && (HBM[5]+HBP[5])==0)
continue;
371 if(sd==1 && (HEM[5]+HEP[5])==0)
continue;
372 if(sd==2 && (HO[5])==0)
continue;
373 if(sd==3 && (HFM[5]+HFP[5])==0)
continue;
374 BadTiming <<
"<tr><td align=\"center\"><h3>"<< subdet[sd] <<
"</h3></td></tr>" << std::endl;
375 int feta=0,teta=0,fdepth=0,tdepth=0;
376 if(sd==0){ feta=-16; teta=16 ;fdepth=1; tdepth=2;
if(HBM[0]==1296) feta=0;
if(HBP[0]==1296) teta=0;}
377 if(sd==1){ feta=-29; teta=29 ;fdepth=1; tdepth=3;
if(HEM[0]==1296) feta=0;
if(HEP[0]==1296) teta=0;}
378 if(sd==2){ feta=-15; teta=15 ;fdepth=4; tdepth=4;
if(HO[0] ==2160) {feta=0; teta=0; }}
379 if(sd==3){ feta=-42; teta=42 ;fdepth=1; tdepth=2;
if(HFM[0]==864) feta=0;
if(HFP[0]==864) teta=0; }
380 for(
int phi=1;
phi<=72;
phi++)
for(
int depth=fdepth;depth<=tdepth;depth++)
for(
int eta=feta;
eta<=teta;
eta++){
381 if(sd==3 &&
eta>-29 &&
eta<29)
continue;
385 char comment[100]; sprintf(comment,
"Time-mean=%.1f\n",badtiming);
393 printTableLine(BadTiming,cnt++,*detid,lmap_entry,emap_entry,comment); BadTimingCnt++;
395 }
catch(...){
continue;}
400 for(
int sd=0;sd<4;sd++){
402 if(sd==0 && (HBM[1]+HBP[1])==0)
continue;
403 if(sd==1 && (HEM[1]+HEP[1])==0)
continue;
404 if(sd==2 && (HO[1])==0)
continue;
405 if(sd==3 && (HFM[1]+HFP[1])==0)
continue;
406 Unstable <<
"<tr><td align=\"center\"><h3>"<< subdet[sd] <<
"</h3></td></tr>" << std::endl;
407 int feta=0,teta=0,fdepth=0,tdepth=0;
408 if(sd==0){ feta=-16; teta=16 ;fdepth=1; tdepth=2;}
409 if(sd==1){ feta=-29; teta=29 ;fdepth=1; tdepth=3;}
410 if(sd==2){ feta=-15; teta=15 ;fdepth=4; tdepth=4;}
411 if(sd==3){ feta=-42; teta=42 ;fdepth=1; tdepth=2;}
412 for(
int phi=1;
phi<=72;
phi++)
for(
int depth=fdepth;depth<=tdepth;depth++)
for(
int eta=feta;
eta<=teta;
eta++){
413 if(sd==3 &&
eta>-29 &&
eta<29)
continue;
417 char comment[100]; sprintf(comment,
"%.3f%%\n",(1.0-unstable)*100.0);
425 printTableLine(Unstable,cnt++,*detid,lmap_entry,emap_entry,comment); UnstableCnt++;
427 }
catch(...){
continue;}
432 for(
int sd=0;sd<4;sd++){
434 if(sd==0 && (HBM[2]+HBP[2])==0)
continue;
435 if(sd==1 && (HEM[2]+HEP[2])==0)
continue;
436 if(sd==2 && (HO[2])==0)
continue;
437 if(sd==3 && (HFM[2]+HFP[2])==0)
continue;
438 BadLED <<
"<tr><td align=\"center\"><h3>"<< subdet[sd] <<
"</h3></td></tr>" << std::endl;
439 int feta=0,teta=0,fdepth=0,tdepth=0;
440 if(sd==0){ feta=-16; teta=16 ;fdepth=1; tdepth=2;}
441 if(sd==1){ feta=-29; teta=29 ;fdepth=1; tdepth=3;}
442 if(sd==2){ feta=-15; teta=15 ;fdepth=4; tdepth=4;}
443 if(sd==3){ feta=-42; teta=42 ;fdepth=1; tdepth=2;}
444 for(
int phi=1;
phi<=72;
phi++)
for(
int depth=fdepth;depth<=tdepth;depth++)
for(
int eta=feta;
eta<=teta;
eta++){
445 if(sd==3 &&
eta>-29 &&
eta<29)
continue;
449 char comment[100]; sprintf(comment,
"%.3f%%\n",(badled)*100.0);
459 printTableLine(BadLED,cnt++,*detid,lmap_entry,emap_entry,s); UnstableLEDCnt++;
461 }
catch(...){
continue;}
474 int ievt_ = -1,runNo=-1;
476 std::string
s=
subdir_+
"HcalDetDiagLEDMonitor Event Number";
480 sscanf((s.substr(2,s.length()-2)).c_str(),
"%d", &ievt_);
482 s=
subdir_+
"HcalDetDiagLEDMonitor Run Number";
486 sscanf((s.substr(2,s.length()-2)).c_str(),
"%d", &runNo);
488 s=
subdir_+
"HcalDetDiagLEDMonitor Reference Run";
493 sscanf((s.substr(2,s.length()-2)).c_str(),
"%s", str);
496 TH1F *Energy=0,*
Timing=0,*EnergyHF=0,*TimingHF=0,*EnergyRMS=0,*TimingRMS=0,*EnergyRMSHF=0,*TimingRMSHF=0;
497 TH2F *Time2Dhbhehf=0,*Time2Dho=0,*Energy2Dhbhehf=0,*Energy2Dho=0;
498 TH2F *HBPphi=0,*HBMphi=0,*HEPphi=0,*HEMphi=0,*HFPphi=0,*HFMphi=0,*HO0phi=0,*HO1Pphi=0,*HO2Pphi=0,*HO1Mphi=0,*HO2Mphi=0;
501 if(me!=0) Energy=HcalUtilsClient::getHisto<TH1F*>(me,
cloneME_, Energy,
debug_);
else return;
504 s=
subdir_+
"Summary Plots/HBHEHO LED Energy RMS_div_Energy Distribution"; me=
dqmStore_->
get(s.c_str());
505 if(me!=0) EnergyRMS=HcalUtilsClient::getHisto<TH1F*>(me,
cloneME_, EnergyRMS,
debug_);
else return;
506 s=
subdir_+
"Summary Plots/HBHEHO LED Timing RMS Distribution"; me=
dqmStore_->
get(s.c_str());
507 if(me!=0) TimingRMS=HcalUtilsClient::getHisto<TH1F*>(me,
cloneME_, TimingRMS,
debug_);
else return;
509 if(me!=0) EnergyHF=HcalUtilsClient::getHisto<TH1F*>(me,
cloneME_, EnergyHF,
debug_);
else return;
511 if(me!=0) TimingHF=HcalUtilsClient::getHisto<TH1F*>(me,
cloneME_, TimingHF,
debug_);
else return;
512 s=
subdir_+
"Summary Plots/HF LED Energy RMS_div_Energy Distribution"; me=
dqmStore_->
get(s.c_str());
513 if(me!=0) EnergyRMSHF=HcalUtilsClient::getHisto<TH1F*>(me,
cloneME_, EnergyRMSHF,
debug_);
else return;
515 if(me!=0) TimingRMSHF=HcalUtilsClient::getHisto<TH1F*>(me,
cloneME_, TimingRMSHF,
debug_);
else return;
518 if(me!=0) Time2Dhbhehf=HcalUtilsClient::getHisto<TH2F*>(me,
cloneME_, Time2Dhbhehf,
debug_);
else return;
520 if(me!=0) Time2Dho=HcalUtilsClient::getHisto<TH2F*>(me,
cloneME_, Time2Dho,
debug_);
else return;
522 if(me!=0) Energy2Dhbhehf=HcalUtilsClient::getHisto<TH2F*>(me,
cloneME_, Energy2Dhbhehf,
debug_);
else return;
524 if(me!=0) Energy2Dho=HcalUtilsClient::getHisto<TH2F*>(me,
cloneME_, Energy2Dho,
debug_);
else return;
527 if(me!=0) HBPphi=HcalUtilsClient::getHisto<TH2F*>(me,
cloneME_, HBPphi,
debug_);
else return;
529 if(me!=0) HBMphi=HcalUtilsClient::getHisto<TH2F*>(me,
cloneME_, HBMphi,
debug_);
else return;
531 if(me!=0) HEPphi=HcalUtilsClient::getHisto<TH2F*>(me,
cloneME_, HEPphi,
debug_);
else return;
533 if(me!=0) HEMphi=HcalUtilsClient::getHisto<TH2F*>(me,
cloneME_, HEMphi,
debug_);
else return;
535 if(me!=0) HFPphi=HcalUtilsClient::getHisto<TH2F*>(me,
cloneME_, HFPphi,
debug_);
else return;
537 if(me!=0) HFMphi=HcalUtilsClient::getHisto<TH2F*>(me,
cloneME_, HFMphi,
debug_);
else return;
540 if(me!=0) HO0phi=HcalUtilsClient::getHisto<TH2F*>(me,
cloneME_, HO0phi,
debug_);
else return;
542 if(me!=0) HO1Pphi=HcalUtilsClient::getHisto<TH2F*>(me,
cloneME_, HO1Pphi,
debug_);
else return;
544 if(me!=0) HO2Pphi=HcalUtilsClient::getHisto<TH2F*>(me,
cloneME_, HO2Pphi,
debug_);
else return;
546 if(me!=0) HO1Mphi=HcalUtilsClient::getHisto<TH2F*>(me,
cloneME_, HO1Mphi,
debug_);
else return;
548 if(me!=0) HO2Mphi=HcalUtilsClient::getHisto<TH2F*>(me,
cloneME_, HO2Mphi,
debug_);
else return;
550 gROOT->SetBatch(
true);
551 gStyle->SetCanvasColor(0);
552 gStyle->SetPadColor(0);
553 gStyle->SetOptStat(111110);
554 gStyle->SetPalette(1);
556 TCanvas *can=
new TCanvas(
"HcalDetDiagLEDClient",
"HcalDetDiagLEDClient",0,0,500,350);
563 htmlFile.open(outfile.c_str());
565 htmlFile <<
"<!DOCTYPE html PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\"> " << std::endl;
566 htmlFile <<
"<html> " << std::endl;
567 htmlFile <<
"<head> " << std::endl;
568 htmlFile <<
" <meta content=\"text/html; charset=ISO-8859-1\" " << std::endl;
569 htmlFile <<
" http-equiv=\"content-type\"> " << std::endl;
570 htmlFile <<
" <title>Detector Diagnostics LED Monitor</title> " << std::endl;
571 htmlFile <<
"</head> " << std::endl;
572 htmlFile <<
"<style type=\"text/css\"> td { font-weight: bold } </style>" << std::endl;
573 htmlFile <<
"<style type=\"text/css\">"<< std::endl;
574 htmlFile <<
" td.s0 { font-family: arial, arial ce, helvetica; font-weight: bold; background-color: #FF7700; text-align: center;}"<< std::endl;
575 htmlFile <<
" td.s1 { font-family: arial, arial ce, helvetica; font-weight: bold; background-color: #FFC169; text-align: center;}"<< std::endl;
576 htmlFile <<
" td.s2 { font-family: arial, arial ce, helvetica; background-color: red; }"<< std::endl;
577 htmlFile <<
" td.s3 { font-family: arial, arial ce, helvetica; background-color: yellow; }"<< std::endl;
578 htmlFile <<
" td.s4 { font-family: arial, arial ce, helvetica; background-color: green; }"<< std::endl;
579 htmlFile <<
" td.s5 { font-family: arial, arial ce, helvetica; background-color: silver; }"<< std::endl;
580 std::string
state[4]={
"<td class=\"s2\" align=\"center\">",
581 "<td class=\"s3\" align=\"center\">",
582 "<td class=\"s4\" align=\"center\">",
583 "<td class=\"s5\" align=\"center\">"};
584 htmlFile <<
"</style>"<< std::endl;
585 htmlFile <<
"<body> " << std::endl;
586 htmlFile <<
"<br> " << std::endl;
587 htmlFile <<
"<h2>Run: " << std::endl;
588 htmlFile <<
" <span " << std::endl;
589 htmlFile <<
" style=\"color: rgb(0, 0, 153);\">" << runNo <<
"</span></h2>" << std::endl;
590 htmlFile <<
"<h2>Monitoring task: <span " << std::endl;
591 htmlFile <<
" style=\"color: rgb(0, 0, 153);\">Detector Diagnostics LED Monitor</span></h2> " << std::endl;
592 htmlFile <<
"<h2>Events processed: <span " << std::endl;
593 htmlFile <<
" style=\"color: rgb(0, 0, 153);\">" << ievt_ <<
"</span></h2>" << std::endl;
594 htmlFile <<
"<hr>" << std::endl;
596 htmlFile <<
"<table width=100% border=1>" << std::endl;
597 htmlFile <<
"<tr>" << std::endl;
598 htmlFile <<
"<td class=\"s0\" width=15% align=\"center\">SebDet</td>" << std::endl;
599 htmlFile <<
"<td class=\"s0\" width=17% align=\"center\">Missing</td>" << std::endl;
600 htmlFile <<
"<td class=\"s0\" width=17% align=\"center\">Unstable</td>" << std::endl;
601 htmlFile <<
"<td class=\"s0\" width=17% align=\"center\">low/no LED signal</td>" << std::endl;
602 htmlFile <<
"<td class=\"s0\" width=17% align=\"center\">Bad Timing</td>" << std::endl;
603 htmlFile <<
"<td class=\"s0\" width=17% align=\"center\">Bad LED signal</td>" << std::endl;
604 htmlFile <<
"</tr><tr>" << std::endl;
605 int ind1=0,ind2=0,ind3=0,ind4=0,ind5=0;
606 htmlFile <<
"<td class=\"s1\" align=\"center\">HB+</td>" << std::endl;
607 ind1=3;
if(newHBP[0]==0) ind1=2;
if(newHBP[0]>0 && newHBP[0]<=12) ind1=1;
if(newHBP[0]>=12 && HBP[0]<1296) ind1=0;
608 ind2=3;
if(newHBP[1]==0) ind2=2;
if(newHBP[1]>0) ind2=1;
if(newHBP[1]>21) ind2=0;
609 ind3=3;
if(newHBP[2]==0) ind3=2;
if(newHBP[2]>0) ind3=1;
if(newHBP[2]>21) ind3=0;
610 ind4=3;
if((newHBP[3]+newHBP[4])==0) ind4=2;
if((newHBP[3]+newHBP[4])>0) ind4=1;
if((newHBP[3]+newHBP[4])>21) ind4=0;
611 ind5=3;
if((newHBP[5]+newHBP[6])==0) ind5=2;
if((newHBP[5]+newHBP[6])>0) ind5=1;
if((newHBP[5]+newHBP[6])>21) ind5=0;
612 if(ind1==3) ind2=ind3=ind4=ind5=3;
613 if(ind1==0 || ind2==0 || ind3==0 || ind4==0)
status|=2;
else if(ind1==1 || ind2==1 || ind3==1 || ind4==1)
status|=1;
614 htmlFile << state[ind1] << HBP[0] <<
" (1296)</td>" << std::endl;
615 htmlFile << state[ind2] << HBP[1] <<
"</td>" << std::endl;
616 htmlFile << state[ind3] << HBP[2] <<
"</td>" << std::endl;
617 htmlFile << state[ind5] << HBP[5]+HBP[6] <<
"</td>" << std::endl;
618 htmlFile << state[ind4] << HBP[3]+HBP[4] <<
"</td>" << std::endl;
620 htmlFile <<
"</tr><tr>" << std::endl;
621 htmlFile <<
"<td class=\"s1\" align=\"center\">HB-</td>" << std::endl;
622 ind1=3;
if(newHBM[0]==0) ind1=2;
if(newHBM[0]>0 && newHBM[0]<=12) ind1=1;
if(newHBM[0]>=12 && HBM[0]<1296) ind1=0;
623 ind2=3;
if(newHBM[1]==0) ind2=2;
if(newHBM[1]>0) ind2=1;
if(newHBM[1]>21) ind2=0;
624 ind3=3;
if(newHBM[2]==0) ind3=2;
if(newHBM[2]>0) ind3=1;
if(newHBM[2]>21) ind3=0;
625 ind4=3;
if((newHBM[3]+newHBM[4])==0) ind4=2;
if((newHBM[3]+newHBM[4])>0) ind4=1;
if((newHBM[3]+newHBM[4])>21) ind4=0;
626 ind5=3;
if((newHBM[5]+newHBM[6])==0) ind5=2;
if((newHBM[5]+newHBM[6])>0) ind5=1;
if((newHBM[5]+newHBM[6])>21) ind5=0;
627 if(ind1==3) ind2=ind3=ind4=ind5=3;
628 if(ind1==0 || ind2==0 || ind3==0 || ind4==0)
status|=2;
else if(ind1==1 || ind2==1 || ind3==1 || ind4==1)
status|=1;
629 htmlFile << state[ind1] << HBM[0] <<
" (1296)</td>" << std::endl;
630 htmlFile << state[ind2] << HBM[1] <<
"</td>" << std::endl;
631 htmlFile << state[ind3] << HBM[2] <<
"</td>" << std::endl;
632 htmlFile << state[ind5] << HBM[5]+HBM[6] <<
"</td>" << std::endl;
633 htmlFile << state[ind4] << HBM[3]+HBM[4] <<
"</td>" << std::endl;
635 htmlFile <<
"</tr><tr>" << std::endl;
636 htmlFile <<
"<td class=\"s1\" align=\"center\">HE+</td>" << std::endl;
637 ind1=3;
if(newHEP[0]==0) ind1=2;
if(newHEP[0]>0 && newHEP[0]<=12) ind1=1;
if(newHEP[0]>=12 && HEP[0]<1296) ind1=0;
638 ind2=3;
if(newHEP[1]==0) ind2=2;
if(newHEP[1]>0) ind2=1;
if(newHEP[1]>21) ind2=0;
639 ind3=3;
if(newHEP[2]==0) ind3=2;
if(newHEP[2]>0) ind3=1;
if(newHEP[2]>21) ind3=0;
640 ind4=3;
if((newHEP[3]+newHEP[4])==0) ind4=2;
if((newHEP[3]+newHEP[4])>0) ind4=1;
if((newHEP[3]+newHEP[4])>21) ind4=0;
641 ind5=3;
if((newHEP[5]+newHEP[6])==0) ind5=2;
if((newHEP[5]+newHEP[6])>0) ind5=1;
if((newHEP[5]+newHEP[6])>21) ind5=0;
642 if(ind1==3) ind2=ind3=ind4=ind5=3;
643 if(ind1==0 || ind2==0 || ind3==0 || ind4==0)
status|=2;
else if(ind1==1 || ind2==1 || ind3==1 || ind4==1)
status|=1;
644 htmlFile << state[ind1] << HEP[0] <<
" (1296)</td>" << std::endl;
645 htmlFile << state[ind2] << HEP[1] <<
"</td>" << std::endl;
646 htmlFile << state[ind3] << HEP[2] <<
"</td>" << std::endl;
647 htmlFile << state[ind5] << HEP[5]+HEP[6] <<
"</td>" << std::endl;
648 htmlFile << state[ind4] << HEP[3]+HEP[4] <<
"</td>" << std::endl;
650 htmlFile <<
"</tr><tr>" << std::endl;
651 htmlFile <<
"<td class=\"s1\" align=\"center\">HE-</td>" << std::endl;
652 ind1=3;
if(newHEM[0]==0) ind1=2;
if(newHEM[0]>0 && newHEM[0]<=12) ind1=1;
if(newHEM[0]>=12 && HEM[0]<1296) ind1=0;
653 ind2=3;
if(newHEM[1]==0) ind2=2;
if(newHEM[1]>0) ind2=1;
if(newHEM[1]>21) ind2=0;
654 ind3=3;
if(newHEM[2]==0) ind3=2;
if(newHEM[2]>0) ind3=1;
if(newHEM[2]>21) ind3=0;
655 ind4=3;
if((newHEM[3]+newHEM[4])==0) ind4=2;
if((newHEM[3]+newHEM[4])>0) ind4=1;
if((newHEM[3]+newHEM[4])>21) ind4=0;
656 ind5=3;
if((newHEM[5]+newHEM[6])==0) ind5=2;
if((newHEM[5]+newHEM[6])>0) ind5=1;
if((newHEM[5]+newHEM[6])>21) ind5=0;
657 if(ind1==3) ind2=ind3=ind4=ind5=3;
658 if(ind1==0 || ind2==0 || ind3==0 || ind4==0)
status|=2;
else if(ind1==1 || ind2==1 || ind3==1 || ind4==1)
status|=1;
659 htmlFile << state[ind1] << HEM[0] <<
" (1296)</td>" << std::endl;
660 htmlFile << state[ind2] << HEM[1] <<
"</td>" << std::endl;
661 htmlFile << state[ind3] << HEM[2] <<
"</td>" << std::endl;
662 htmlFile << state[ind5] << HEM[5]+HEM[6] <<
"</td>" << std::endl;
663 htmlFile << state[ind4] << HEM[3]+HEM[4] <<
"</td>" << std::endl;
665 htmlFile <<
"</tr><tr>" << std::endl;
666 htmlFile <<
"<td class=\"s1\" align=\"center\">HF+</td>" << std::endl;
667 ind1=3;
if(newHFP[0]==0) ind1=2;
if(newHFP[0]>0 && newHFP[0]<=12) ind1=1;
if(newHFP[0]>=12 && HFP[0]<864) ind1=0;
668 ind2=3;
if(newHFP[1]==0) ind2=2;
if(newHFP[1]>0) ind2=1;
if(newHFP[1]>21) ind2=0;
669 ind3=3;
if(newHFP[2]==0) ind3=2;
if(newHFP[2]>0) ind3=1;
if(newHFP[2]>21) ind3=0;
670 ind4=3;
if((newHFP[3]+newHFP[4])==0) ind4=2;
if((newHFP[3]+newHFP[4])>0) ind4=1;
if((newHFP[3]+newHFP[4])>21) ind4=0;
671 ind5=3;
if((newHFP[5]+newHFP[6])==0) ind5=2;
if((newHFP[5]+newHFP[6])>0) ind5=1;
if((newHFP[5]+newHFP[6])>21) ind5=0;
672 if(ind1==3) ind2=ind3=ind4=ind5=3;
673 if(ind1==0 || ind2==0 || ind3==0 || ind4==0)
status|=2;
else if(ind1==1 || ind2==1 || ind3==1 || ind4==1)
status|=1;
674 htmlFile << state[ind1] << HFP[0] <<
" (864)</td>" << std::endl;
675 htmlFile << state[ind2] << HFP[1] <<
"</td>" << std::endl;
676 htmlFile << state[ind3] << HFP[2] <<
"</td>" << std::endl;
677 htmlFile << state[ind5] << HFP[5]+HFP[6] <<
"</td>" << std::endl;
678 htmlFile << state[ind4] << HFP[3]+HFP[4] <<
"</td>" << std::endl;
680 htmlFile <<
"</tr><tr>" << std::endl;
681 htmlFile <<
"<td class=\"s1\" align=\"center\">HF-</td>" << std::endl;
682 ind1=3;
if(newHFM[0]==0) ind1=2;
if(newHFM[0]>0 && newHFM[0]<=12) ind1=1;
if(newHFM[0]>=12 && HFM[0]<864) ind1=0;
683 ind2=3;
if(newHFM[1]==0) ind2=2;
if(newHFM[1]>0) ind2=1;
if(newHFM[1]>21) ind2=0;
684 ind3=3;
if(newHFM[2]==0) ind3=2;
if(newHFM[2]>0) ind3=1;
if(newHFM[2]>21) ind3=0;
685 ind4=3;
if((HFM[3]+HFM[4])==0) ind4=2;
if((HFM[3]+HFM[4])>0) ind4=1;
if((HFM[3]+HFM[4])>21) ind4=0;
686 ind5=3;
if((HFM[5]+HFM[6])==0) ind5=2;
if((HFM[5]+HFM[6])>0) ind5=1;
if((HFM[5]+HFM[6])>21) ind5=0;
687 if(ind1==3) ind2=ind3=ind4=ind5=3;
688 if(ind1==0 || ind2==0 || ind3==0 || ind4==0)
status|=2;
else if(ind1==1 || ind2==1 || ind3==1 || ind4==1)
status|=1;
689 htmlFile << state[ind1] << HFM[0] <<
" (864)</td>" << std::endl;
690 htmlFile << state[ind2] << HFM[1] <<
"</td>" << std::endl;
691 htmlFile << state[ind3] << HFM[2] <<
"</td>" << std::endl;
692 htmlFile << state[ind5] << HFM[5]+HFM[6] <<
"</td>" << std::endl;
693 htmlFile << state[ind4] << HFM[3]+HFM[4] <<
"</td>" << std::endl;
695 htmlFile <<
"</tr><tr>" << std::endl;
696 htmlFile <<
"<td class=\"s1\" align=\"center\">HO</td>" << std::endl;
697 ind1=3;
if(newHO[0]==0) ind1=2;
if(newHO[0]>0 && newHO[0]<=12) ind1=1;
if(newHO[0]>=12 && HO[0]<2160) ind1=0;
698 ind2=3;
if(newHO[1]==0) ind2=2;
if(newHO[1]>0) ind2=1;
if(newHO[1]>21) ind2=0;
699 ind3=3;
if(newHO[2]==0) ind3=2;
if(newHO[2]>0) ind3=1;
if(newHO[2]>21) ind3=0;
700 ind4=3;
if((newHO[3]+newHO[4])==0) ind4=2;
if((newHO[3]+newHO[4])>0) ind4=1;
if((newHO[3]+newHO[4])>21) ind4=0;
701 ind5=3;
if((newHO[5]+newHO[6])==0) ind5=2;
if((newHO[5]+newHO[6])>0) ind5=1;
if((newHO[5]+newHO[6])>21) ind5=0;
702 if(ind1==3) ind2=ind3=ind4=ind5=3;
703 if(ind1==0 || ind2==0 || ind3==0 || ind4==0)
status|=2;
else if(ind1==1 || ind2==1 || ind3==1 || ind4==1)
status|=1;
705 htmlFile << state[ind1] << HO[0] <<
" (2160)</td>" << std::endl;
706 htmlFile << state[ind2] << HO[1] <<
"</td>" << std::endl;
707 htmlFile << state[ind3] << HO[2] <<
"</td>" << std::endl;
708 htmlFile << state[ind5] << HO[5]+HO[6] <<
"</td>" << std::endl;
709 htmlFile << state[ind4] << HO[3]+HO[4] <<
"</td>" << std::endl;
711 htmlFile <<
"</tr></table>" << std::endl;
712 htmlFile <<
"<hr>" << std::endl;
714 if((MissingCnt+UnstableCnt+UnstableLEDCnt+BadTimingCnt)>0){
715 htmlFile <<
"<table width=100% border=1><tr>" << std::endl;
716 if(MissingCnt>0) htmlFile <<
"<td><a href=\"" <<
"Missing.html" <<
"\">list of missing channels</a></td>";
717 if(UnstableCnt>0) htmlFile <<
"<td><a href=\"" <<
"Unstable.html" <<
"\">list of unstable channels</a></td>";
718 if(UnstableLEDCnt>0)htmlFile <<
"<td><a href=\"" <<
"UnstableLED.html" <<
"\">list of low LED signal channels</a></td>";
719 if(BadTimingCnt>0)htmlFile <<
"<td><a href=\"" <<
"BadTiming.html" <<
"\">list of Bad Timing channels</a></td>";
720 htmlFile <<
"</tr></table>" << std::endl;
725 htmlFile <<
"<h2 align=\"center\">Summary LED plots</h2>" << std::endl;
726 htmlFile <<
"<table width=100% border=0><tr>" << std::endl;
727 htmlFile <<
"<tr align=\"left\">" << std::endl;
728 Time2Dhbhehf->SetMaximum(6);
729 Time2Dho->SetMaximum(6);
730 Time2Dhbhehf->SetNdivisions(36,
"Y");
731 Time2Dho->SetNdivisions(36,
"Y");
732 Time2Dhbhehf->SetStats(0);
733 Time2Dho->SetStats(0);
734 Time2Dhbhehf->Draw(
"COLZ"); can->SaveAs((htmlDir +
"led_timing_hbhehf.gif").c_str());
735 Time2Dho->Draw(
"COLZ"); can->SaveAs((htmlDir +
"led_timing_ho.gif").c_str());
736 htmlFile <<
"<td align=\"center\"><img src=\"led_timing_hbhehf.gif\" alt=\"led timing distribution\"> </td>" << std::endl;
737 htmlFile <<
"<td align=\"center\"><img src=\"led_timing_ho.gif\" alt=\"led timing distribution\"> </td>" << std::endl;
738 htmlFile <<
"</tr>" << std::endl;
740 htmlFile <<
"<tr align=\"left\">" << std::endl;
741 Energy2Dhbhehf->SetStats(0);
742 Energy2Dho->SetStats(0);
743 Energy2Dhbhehf->SetNdivisions(36,
"Y");
744 Energy2Dho->SetNdivisions(36,
"Y");
745 Energy2Dhbhehf->Draw(
"COLZ"); can->SaveAs((htmlDir +
"led_energy_hbhehf.gif").c_str());
746 Energy2Dho->Draw(
"COLZ"); can->SaveAs((htmlDir +
"led_energy_ho.gif").c_str());
747 htmlFile <<
"<td align=\"center\"><img src=\"led_energy_hbhehf.gif\" alt=\"led energy distribution\"> </td>" << std::endl;
748 htmlFile <<
"<td align=\"center\"><img src=\"led_energy_ho.gif\" alt=\"led energy distribution\"> </td>" << std::endl;
749 htmlFile <<
"</tr>" << std::endl;
751 can->SetGridy(
false);
752 htmlFile <<
"<tr align=\"left\">" << std::endl;
753 Energy->Draw(); can->SaveAs((htmlDir +
"led_energy_distribution.gif").c_str());
754 EnergyRMS->Draw(); can->SaveAs((htmlDir +
"led_energy_rms_distribution.gif").c_str());
755 htmlFile <<
"<td align=\"center\"><img src=\"led_energy_distribution.gif\" alt=\"led energy distribution\"> </td>" << std::endl;
756 htmlFile <<
"<td align=\"center\"><img src=\"led_energy_rms_distribution.gif\" alt=\"led energy rms distribution\"> </td>" << std::endl;
757 htmlFile <<
"</tr>" << std::endl;
758 htmlFile <<
"<tr align=\"left\">" << std::endl;
759 Timing->Draw(); can->SaveAs((htmlDir +
"led_timing_distribution.gif").c_str());
760 TimingRMS->Draw(); can->SaveAs((htmlDir +
"led_timing_rms_distribution.gif").c_str());
761 htmlFile <<
"<td align=\"center\"><img src=\"led_timing_distribution.gif\" alt=\"led timing distribution\"> </td>" << std::endl;
762 htmlFile <<
"<td align=\"center\"><img src=\"led_timing_rms_distribution.gif\" alt=\"led timing rms distribution\"> </td>" << std::endl;
763 htmlFile <<
"</tr>" << std::endl;
764 htmlFile <<
"<tr align=\"left\">" << std::endl;
765 EnergyHF->Draw(); can->SaveAs((htmlDir +
"led_energyhf_distribution.gif").c_str());
766 EnergyRMSHF->Draw(); can->SaveAs((htmlDir +
"led_energyhf_rms_distribution.gif").c_str());
767 htmlFile <<
"<td align=\"center\"><img src=\"led_energyhf_distribution.gif\" alt=\"hf led energy distribution\"> </td>" << std::endl;
768 htmlFile <<
"<td align=\"center\"><img src=\"led_energyhf_rms_distribution.gif\" alt=\"hf led energy rms distribution\"> </td>" << std::endl;
769 htmlFile <<
"</tr>" << std::endl;
770 htmlFile <<
"<tr align=\"left\">" << std::endl;
771 TimingHF->Draw(); can->SaveAs((htmlDir +
"led_timinghf_distribution.gif").c_str());
772 TimingRMSHF->Draw(); can->SaveAs((htmlDir +
"led_timinghf_rms_distribution.gif").c_str());
773 htmlFile <<
"<td align=\"center\"><img src=\"led_timinghf_distribution.gif\" alt=\"hf led timing distribution\"> </td>" << std::endl;
774 htmlFile <<
"<td align=\"center\"><img src=\"led_timinghf_rms_distribution.gif\" alt=\"hf led timing rms distribution\"> </td>" << std::endl;
775 htmlFile <<
"</tr>" << std::endl;
776 htmlFile <<
"</table>" << std::endl;
779 htmlFile <<
"<h2 align=\"center\">Stability LED plots (Reference run "<<ref_run<<
")</h2>" << std::endl;
780 htmlFile <<
"<table width=100% border=0><tr>" << std::endl;
781 htmlFile <<
"<tr align=\"left\">" << std::endl;
782 HBPphi->GetXaxis()->SetNdivisions(418,kFALSE);
783 HBMphi->GetXaxis()->SetNdivisions(418,kFALSE);
784 HEPphi->GetXaxis()->SetNdivisions(418,kFALSE);
785 HEMphi->GetXaxis()->SetNdivisions(418,kFALSE);
787 HBPphi->SetMarkerColor(kRed);
788 HBPphi->SetMarkerStyle(23);
789 HBPphi->SetXTitle(
"HPD Index = RBX*4+RM");
790 HBMphi->SetMarkerColor(kRed);
791 HBMphi->SetMarkerStyle(23);
792 HBMphi->SetXTitle(
"HPD Index = RBX*4+RM");
793 HBPphi->Draw(); can->SaveAs((htmlDir +
"led_hbp_distribution.gif").c_str());
794 HBMphi->Draw(); can->SaveAs((htmlDir +
"led_hbm_distribution.gif").c_str());
795 htmlFile <<
"<td align=\"center\"><img src=\"led_hbp_distribution.gif\" alt=\"led hbp distribution\"> </td>" << std::endl;
796 htmlFile <<
"<td align=\"center\"><img src=\"led_hbm_distribution.gif\" alt=\"led hbm distribution\"> </td>" << std::endl;
797 htmlFile <<
"</tr>" << std::endl;
799 htmlFile <<
"<tr align=\"left\">" << std::endl;
800 HEPphi->SetMarkerColor(kRed);
801 HEPphi->SetMarkerStyle(23);
802 HEPphi->SetXTitle(
"HPD Index = RBX*4+RM");
803 HEMphi->SetMarkerColor(kRed);
804 HEMphi->SetMarkerStyle(23);
805 HEMphi->SetXTitle(
"HPD Index = RBX*4+RM");
806 HEPphi->Draw(); can->SaveAs((htmlDir +
"led_hep_distribution.gif").c_str());
807 HEMphi->Draw(); can->SaveAs((htmlDir +
"led_hem_distribution.gif").c_str());
808 htmlFile <<
"<td align=\"center\"><img src=\"led_hep_distribution.gif\" alt=\"led hep distribution\"> </td>" << std::endl;
809 htmlFile <<
"<td align=\"center\"><img src=\"led_hem_distribution.gif\" alt=\"led hem distribution\"> </td>" << std::endl;
810 htmlFile <<
"</tr>" << std::endl;
812 htmlFile <<
"<tr align=\"left\">" << std::endl;
813 HFPphi->SetMarkerColor(kRed);
814 HFPphi->SetMarkerStyle(23);
815 HFPphi->SetXTitle(
"RM Index = RoBox*3+RM");
816 HFMphi->SetMarkerColor(kRed);
817 HFMphi->SetMarkerStyle(23);
818 HFPphi->GetXaxis()->SetNdivisions(312,kFALSE);
819 HFMphi->GetXaxis()->SetNdivisions(312,kFALSE);
821 HFMphi->SetXTitle(
"RM Index = RoBox*3+RM");
822 HFPphi->Draw(); can->SaveAs((htmlDir +
"led_hfp_distribution.gif").c_str());
823 HFMphi->Draw(); can->SaveAs((htmlDir +
"led_hfm_distribution.gif").c_str());
824 htmlFile <<
"<td align=\"center\"><img src=\"led_hfp_distribution.gif\" alt=\"led hfp distribution\"> </td>" << std::endl;
825 htmlFile <<
"<td align=\"center\"><img src=\"led_hfm_distribution.gif\" alt=\"led hfm distribution\"> </td>" << std::endl;
826 htmlFile <<
"</tr>" << std::endl;
828 htmlFile <<
"<tr align=\"left\">" << std::endl;
829 HO1Pphi->SetMarkerColor(kRed);
830 HO1Pphi->SetMarkerStyle(23);
831 HO1Pphi->SetXTitle(
"HPD Index = RBX*4+RM");
832 HO1Mphi->SetMarkerColor(kRed);
833 HO1Mphi->SetMarkerStyle(23);
834 HO1Mphi->GetXaxis()->SetNdivisions(412,kFALSE);
835 HO1Pphi->GetXaxis()->SetNdivisions(412,kFALSE);
837 HO1Mphi->SetXTitle(
"HPD Index = RBX*4+RM");
838 HO1Pphi->Draw(); can->SaveAs((htmlDir +
"led_ho1p_distribution.gif").c_str());
839 HO1Mphi->Draw(); can->SaveAs((htmlDir +
"led_ho1m_distribution.gif").c_str());
840 htmlFile <<
"<td align=\"center\"><img src=\"led_ho1p_distribution.gif\" alt=\"led ho1p distribution\"> </td>" << std::endl;
841 htmlFile <<
"<td align=\"center\"><img src=\"led_ho1m_distribution.gif\" alt=\"led ho1m distribution\"> </td>" << std::endl;
842 htmlFile <<
"</tr>" << std::endl;
844 htmlFile <<
"<tr align=\"left\">" << std::endl;
845 HO2Pphi->SetMarkerColor(kRed);
846 HO2Pphi->SetMarkerStyle(23);
847 HO2Pphi->SetXTitle(
"HPD Index = RBX*4+RM");
848 HO2Mphi->SetMarkerColor(kRed);
849 HO2Mphi->SetMarkerStyle(23);
850 HO2Mphi->GetXaxis()->SetNdivisions(412,kFALSE);
851 HO2Pphi->GetXaxis()->SetNdivisions(412,kFALSE);
853 HO2Mphi->SetXTitle(
"HPD Index = RBX*4+RM");
854 HO2Pphi->Draw(); can->SaveAs((htmlDir +
"led_ho2p_distribution.gif").c_str());
855 HO2Mphi->Draw(); can->SaveAs((htmlDir +
"led_ho2m_distribution.gif").c_str());
856 htmlFile <<
"<td align=\"center\"><img src=\"led_ho2p_distribution.gif\" alt=\"led ho2p distribution\"> </td>" << std::endl;
857 htmlFile <<
"<td align=\"center\"><img src=\"led_ho2m_distribution.gif\" alt=\"led ho2m distribution\"> </td>" << std::endl;
858 htmlFile <<
"</tr>" << std::endl;
860 htmlFile <<
"<tr align=\"left\">" << std::endl;
861 HO0phi->SetMarkerColor(kRed);
862 HO0phi->SetMarkerStyle(23);
863 HO0phi->SetXTitle(
"HPD Index = RBX*4+RM");
864 HO0phi->GetXaxis()->SetNdivisions(412,kFALSE);
865 HO0phi->Draw(); can->SaveAs((htmlDir +
"led_ho0_distribution.gif").c_str());
866 htmlFile <<
"<td align=\"center\"><img src=\"led_ho0_distribution.gif\" alt=\"led ho0 distribution\"> </td>" << std::endl;
867 htmlFile <<
"</tr>" << std::endl;
869 htmlFile <<
"</table>" << std::endl;
871 htmlFile <<
"</body> " << std::endl;
872 htmlFile <<
"</html> " << std::endl;
T getUntrackedParameter(std::string const &, T const &) const
const std::string & getName(void) const
get name of ME
MonitorElement * ProblemCells
int fiberIndex() const
get the fiber index [1-8] (which of eight fibers carried by a spigot) (valid only for non-trigger-cha...
TH2F * ChannelStatusUnstableChannels[4]
static void printTableTail(ofstream &file)
TH2F * ChannelStatusTimeRMS[4]
HcalDetDiagLEDClient()
Constructors.
std::vector< std::string > HcalEtaPhiHistNames()
int htrSlot() const
get the htr slot
void setup(DQMStore *&m_dbe, std::string Name, std::string Units="")
void calculateProblems(void)
int readoutVMECrateId() const
get the readout VME crate number
void htmlOutput(std::string)
HcalLogicalMap createMap(unsigned int mapIOV=4)
int depth() const
get the tower depth
std::vector< MonitorElement * > depth
TH2F * ChannelStatusLEDMean[4]
int htrTopBottom() const
get the htr top/bottom (1=top/0=bottom)
std::vector< std::string > problemnames_
TH2F * ChannelsLEDEnergy[4]
EtaPhiHists * ProblemCellsByDepth
int ieta() const
get the cell ieta
int dccid() const
get the (Hcal local) DCC id
void updateChannelStatus(std::map< HcalDetId, unsigned int > &myqual)
double get_energy(std::string subdet, int eta, int phi, int depth, int type)
bool hasErrors_Temp(void)
TH2F * ChannelStatusMissingChannels[4]
MonitorElement * get(const std::string &path) const
get ME from full pathname (e.g. "my/long/dir/my_histo")
TH2F * ChannelsLEDEnergyRef[4]
double get_channel_status(std::string subdet, int eta, int phi, int depth, int type)
int spigot() const
get the spigot (input number on DCC)
std::string valueString(void) const
int iphi() const
get the cell iphi
static void printTableLine(ofstream &file, int ind, HcalDetId &detid, HcalFrontEndId &lmap_entry, HcalElectronicsId &emap_entry, std::string comment="")
std::map< HcalDetId, unsigned int > badstatusmap
int CalcEtaBin(int subdet, int ieta, int depth)
TH2F * ChannelStatusLEDRMS[4]
static void printTableHeader(ofstream &file, std::string header)
void showDirStructure(void) const
TH2F * ChannelStatusTimeMean[4]
int badChannelStatusMask_
TH2F * ChannelStatusUnstableLEDsignal[4]
MonitorElement * book2D(const char *name, const char *title, int nchX, double lowX, double highX, int nchY, double lowY, double highY)
Book 2D histogram.
bool hasWarnings_Temp(void)
Readout chain identification for Hcal [31:26] Unused (so far) [25] Trigger-chain id flag [24:20] Read...
void setCurrentFolder(const std::string &fullpath)