CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
List of all members | Public Member Functions | Private Member Functions | Private Attributes
HcalDetDiagLEDClient Class Reference

#include <HcalDetDiagLEDClient.h>

Inheritance diagram for HcalDetDiagLEDClient:
HcalBaseDQClient

Public Member Functions

void analyze (void)
 
void beginJob (void)
 
void beginRun (void)
 
void calculateProblems (void)
 
void cleanup (void)
 
void endJob (void)
 
void endRun (void)
 
bool hasErrors_Temp (void)
 
bool hasOther_Temp (void)
 
bool hasWarnings_Temp (void)
 
 HcalDetDiagLEDClient ()
 Constructors. More...
 
 HcalDetDiagLEDClient (std::string myname)
 
 HcalDetDiagLEDClient (std::string myname, const edm::ParameterSet &ps)
 
void htmlOutput (std::string)
 
void setup (void)
 
bool test_enabled (void)
 
void updateChannelStatus (std::map< HcalDetId, unsigned int > &myqual)
 
bool validHtmlOutput ()
 
 ~HcalDetDiagLEDClient ()
 Destructor. More...
 
- Public Member Functions inherited from HcalBaseDQClient
void getLogicalMap (const edm::EventSetup &es)
 
 HcalBaseDQClient ()
 
 HcalBaseDQClient (std::string s, const edm::ParameterSet &ps)
 
std::string name ()
 
void setEventSetup (const edm::EventSetup &es)
 
virtual void setStatusMap (std::map< HcalDetId, unsigned int > &map)
 
virtual ~HcalBaseDQClient (void)
 

Private Member Functions

double get_channel_status (std::string subdet, int eta, int phi, int depth, int type)
 
double get_energy (std::string subdet, int eta, int phi, int depth, int type)
 

Private Attributes

TH2F * ChannelsLEDEnergy [4]
 
TH2F * ChannelsLEDEnergyRef [4]
 
TH2F * ChannelStatusLEDMean [4]
 
TH2F * ChannelStatusLEDRMS [4]
 
TH2F * ChannelStatusMissingChannels [4]
 
TH2F * ChannelStatusTimeMean [4]
 
TH2F * ChannelStatusTimeRMS [4]
 
TH2F * ChannelStatusUnstableChannels [4]
 
TH2F * ChannelStatusUnstableLEDsignal [4]
 
int nevts_
 
int status
 

Additional Inherited Members

- Public Attributes inherited from HcalBaseDQClient
int badChannelStatusMask_
 
std::map< HcalDetId, unsigned int > badstatusmap
 
const edm::EventSetupc
 
bool cloneME_
 
int debug_
 
DQMStoredqmStore_
 
bool enableCleanup_
 
bool enoughevents_
 
HcalLogicalMaplogicalMap_
 
double minerrorrate_
 
int minevents_
 
std::string name_
 
bool needLogicalMap_
 
bool Online_
 
std::string prefixME_
 
MonitorElementProblemCells
 
EtaPhiHistsProblemCellsByDepth
 
std::vector< std::string > problemnames_
 
std::string subdir_
 
bool testenabled_
 
bool validHtmlOutput_
 

Detailed Description

Definition at line 8 of file HcalDetDiagLEDClient.h.

Constructor & Destructor Documentation

HcalDetDiagLEDClient::HcalDetDiagLEDClient ( )
inline

Constructors.

Definition at line 13 of file HcalDetDiagLEDClient.h.

References HcalBaseDQClient::name_.

13 {name_="";};
HcalDetDiagLEDClient::HcalDetDiagLEDClient ( std::string  myname)

Definition at line 20 of file HcalDetDiagLEDClient.cc.

References HcalBaseDQClient::name_, HcalBaseDQClient::needLogicalMap_, and status.

20  {
21  name_=myname; status=0;
22  needLogicalMap_=true;
23 }
HcalDetDiagLEDClient::HcalDetDiagLEDClient ( std::string  myname,
const edm::ParameterSet ps 
)

Definition at line 25 of file HcalDetDiagLEDClient.cc.

References HcalBaseDQClient::badChannelStatusMask_, HcalBaseDQClient::cloneME_, HcalBaseDQClient::debug_, HcalBaseDQClient::enableCleanup_, edm::ParameterSet::getUntrackedParameter(), HcalChannelStatus::HcalCellDead, HcalBaseDQClient::name_, HcalBaseDQClient::needLogicalMap_, HcalBaseDQClient::prefixME_, AlCaHLTBitMon_QueryRunRegistry::string, HcalBaseDQClient::subdir_, and HcalBaseDQClient::validHtmlOutput_.

25  {
26  name_=myname;
27  enableCleanup_ = ps.getUntrackedParameter<bool>("enableCleanup",false);
28  debug_ = ps.getUntrackedParameter<int>("debug",0);
29  prefixME_ = ps.getUntrackedParameter<std::string>("subSystemFolder","Hcal/");
30  if (prefixME_.substr(prefixME_.size()-1,prefixME_.size())!="/")
31  prefixME_.append("/");
32  subdir_ = ps.getUntrackedParameter<std::string>("DetDiagLEDFolder","DetDiagLEDMonitor_Hcal/");
33  if (subdir_.size()>0 && subdir_.substr(subdir_.size()-1,subdir_.size())!="/")
34  subdir_.append("/");
35  subdir_=prefixME_+subdir_;
36 
37  validHtmlOutput_ = ps.getUntrackedParameter<bool>("DetDiagLED_validHtmlOutput",true);
38  cloneME_ = ps.getUntrackedParameter<bool>("cloneME", true);
39  badChannelStatusMask_ = ps.getUntrackedParameter<int>("DetDiagLED_BadChannelStatusMask",
40  ps.getUntrackedParameter<int>("BadChannelStatusMask",(1<<HcalChannelStatus::HcalCellDead)));
41  needLogicalMap_=true;
42 }
T getUntrackedParameter(std::string const &, T const &) const
std::string subdir_
std::string prefixME_
HcalDetDiagLEDClient::~HcalDetDiagLEDClient ( )

Destructor.

Definition at line 874 of file HcalDetDiagLEDClient.cc.

875 {}

Member Function Documentation

void HcalDetDiagLEDClient::analyze ( void  )
virtual

Reimplemented from HcalBaseDQClient.

Definition at line 44 of file HcalDetDiagLEDClient.cc.

References calculateProblems(), gather_cfg::cout, and HcalBaseDQClient::debug_.

Referenced by endRun().

44  {
45  if (debug_>2) std::cout <<"\tHcalDetDiagLEDClient::analyze()"<<std::endl;
47 }
tuple cout
Definition: gather_cfg.py:121
void HcalDetDiagLEDClient::beginJob ( void  )
virtual

Reimplemented from HcalBaseDQClient.

Definition at line 57 of file HcalDetDiagLEDClient.cc.

References gather_cfg::cout, HcalBaseDQClient::debug_, HcalBaseDQClient::dqmStore_, cppFunctionSkipper::operator, and DQMStore::showDirStructure().

57  {
59  if (debug_>0){
60  std::cout <<"<HcalDetDiagLEDClient::beginJob()> Displaying dqmStore directory structure:"<<std::endl;
62  }
63 }
tuple cout
Definition: gather_cfg.py:121
void showDirStructure(void) const
Definition: DQMStore.cc:2961
DQMStore * dqmStore_
void HcalDetDiagLEDClient::beginRun ( void  )
virtual

Reimplemented from HcalBaseDQClient.

Definition at line 66 of file HcalDetDiagLEDClient.cc.

References DQMStore::book2D(), gather_cfg::cout, HcalBaseDQClient::debug_, EtaPhiHists::depth, HcalBaseDQClient::dqmStore_, MonitorElement::getName(), i, nevts_, HcalBaseDQClient::ProblemCells, HcalBaseDQClient::ProblemCellsByDepth, HcalBaseDQClient::problemnames_, DQMStore::setCurrentFolder(), EtaPhiHists::setup(), and HcalBaseDQClient::subdir_.

66  {
67  if (!dqmStore_)
68  {
69  if (debug_>0) std::cout <<"<HcalDetDiagLEDClient::beginRun> dqmStore does not exist!"<<std::endl;
70  return;
71  }
73  problemnames_.clear();
74 
75  // Put the appropriate name of your problem summary here
76  ProblemCells=dqmStore_->book2D(" ProblemDetDiagLED",
77  " Problem DetDiagLED Rate for all HCAL;ieta;iphi",
78  85,-42.5,42.5,
79  72,0.5,72.5);
80  problemnames_.push_back(ProblemCells->getName());
81  if (debug_>1)
82  std::cout << "Tried to create ProblemCells Monitor Element in directory "<<subdir_<<" \t Failed? "<<(ProblemCells==0)<<std::endl;
83  dqmStore_->setCurrentFolder(subdir_+"problem_DetDiagLED");
85  ProblemCellsByDepth->setup(dqmStore_," Problem DetDiagLED Rate");
86  for (unsigned int i=0; i<ProblemCellsByDepth->depth.size();++i)
87  problemnames_.push_back(ProblemCellsByDepth->depth[i]->getName());
88  nevts_=0;
89 }
const std::string & getName(void) const
get name of ME
int i
Definition: DBlmapReader.cc:9
MonitorElement * ProblemCells
void setup(DQMStore *&m_dbe, std::string Name, std::string Units="")
std::vector< MonitorElement * > depth
std::vector< std::string > problemnames_
EtaPhiHists * ProblemCellsByDepth
std::string subdir_
tuple cout
Definition: gather_cfg.py:121
MonitorElement * book2D(const char *name, const char *title, int nchX, double lowX, double highX, int nchY, double lowY, double highY)
Book 2D histogram.
Definition: DQMStore.cc:1000
DQMStore * dqmStore_
void setCurrentFolder(const std::string &fullpath)
Definition: DQMStore.cc:584
void HcalDetDiagLEDClient::calculateProblems ( void  )
virtual

Reimplemented from HcalBaseDQClient.

Definition at line 49 of file HcalDetDiagLEDClient.cc.

Referenced by analyze().

49 {}
void HcalDetDiagLEDClient::cleanup ( void  )
virtual

Reimplemented from HcalBaseDQClient.

Definition at line 92 of file HcalDetDiagLEDClient.cc.

92 {}
void HcalDetDiagLEDClient::endJob ( void  )
virtual

Reimplemented from HcalBaseDQClient.

Definition at line 64 of file HcalDetDiagLEDClient.cc.

64 {}
void HcalDetDiagLEDClient::endRun ( void  )
virtual

Reimplemented from HcalBaseDQClient.

Definition at line 90 of file HcalDetDiagLEDClient.cc.

References analyze().

90 {analyze();}
double HcalDetDiagLEDClient::get_channel_status ( std::string  subdet,
int  eta,
int  phi,
int  depth,
int  type 
)
private

Definition at line 186 of file HcalDetDiagLEDClient.cc.

References CalcEtaBin(), ChannelStatusLEDMean, ChannelStatusLEDRMS, ChannelStatusMissingChannels, ChannelStatusTimeMean, ChannelStatusTimeRMS, ChannelStatusUnstableChannels, ChannelStatusUnstableLEDsignal, HcalBarrel, HcalEndcap, HcalForward, and HcalOuter.

Referenced by htmlOutput().

186  {
187  int subdetval=-1;
188  if (subdet.compare("HB")==0) subdetval=(int)HcalBarrel;
189  else if (subdet.compare("HE")==0) subdetval=(int)HcalEndcap;
190  else if (subdet.compare("HO")==0) subdetval=(int)HcalOuter;
191  else if (subdet.compare("HF")==0) subdetval=(int)HcalForward;
192  else return -1.0;
193  int ietabin=CalcEtaBin(subdetval, eta, depth)+1;
194  if(type==1) return ChannelStatusMissingChannels[depth-1]->GetBinContent(ietabin,phi);
195  if(type==2) return ChannelStatusUnstableChannels[depth-1]->GetBinContent(ietabin,phi);
196  if(type==3) return ChannelStatusUnstableLEDsignal[depth-1]->GetBinContent(ietabin,phi);
197  if(type==4) return ChannelStatusLEDMean[depth-1]->GetBinContent(ietabin,phi);
198  if(type==5) return ChannelStatusLEDRMS[depth-1]->GetBinContent(ietabin,phi);
199  if(type==6) return ChannelStatusTimeMean[depth-1]->GetBinContent(ietabin,phi);
200  if(type==7) return ChannelStatusTimeRMS[depth-1]->GetBinContent(ietabin,phi);
201  return -1.0;
202 }
type
Definition: HCALResponse.h:21
TH2F * ChannelStatusUnstableChannels[4]
T eta() const
TH2F * ChannelStatusMissingChannels[4]
int CalcEtaBin(int subdet, int ieta, int depth)
TH2F * ChannelStatusUnstableLEDsignal[4]
Definition: DDAxes.h:10
double HcalDetDiagLEDClient::get_energy ( std::string  subdet,
int  eta,
int  phi,
int  depth,
int  type 
)
private

Definition at line 203 of file HcalDetDiagLEDClient.cc.

References CalcEtaBin(), ChannelsLEDEnergy, ChannelsLEDEnergyRef, HcalBarrel, HcalEndcap, HcalForward, and HcalOuter.

203  {
204  int subdetval=-1;
205  if (subdet.compare("HB")==0) subdetval=(int)HcalBarrel;
206  else if (subdet.compare("HE")==0) subdetval=(int)HcalEndcap;
207  else if (subdet.compare("HO")==0) subdetval=(int)HcalOuter;
208  else if (subdet.compare("HF")==0) subdetval=(int)HcalForward;
209  else return -1.0;
210  int ietabin=CalcEtaBin(subdetval, eta, depth)+1;
211  if(type==1) return ChannelsLEDEnergy[depth-1]->GetBinContent(ietabin,phi);
212  if(type==2) return ChannelsLEDEnergyRef[depth-1]->GetBinContent(ietabin,phi);
213  return -1.0;
214 }
type
Definition: HCALResponse.h:21
T eta() const
int CalcEtaBin(int subdet, int ieta, int depth)
Definition: DDAxes.h:10
bool HcalDetDiagLEDClient::hasErrors_Temp ( void  )
virtual

Reimplemented from HcalBaseDQClient.

Definition at line 94 of file HcalDetDiagLEDClient.cc.

References status.

94  {
95  if(status&2) return true;
96  return false;
97 }
bool HcalDetDiagLEDClient::hasOther_Temp ( void  )
virtual

Reimplemented from HcalBaseDQClient.

Definition at line 102 of file HcalDetDiagLEDClient.cc.

102 {return false;}
bool HcalDetDiagLEDClient::hasWarnings_Temp ( void  )
virtual

Reimplemented from HcalBaseDQClient.

Definition at line 98 of file HcalDetDiagLEDClient.cc.

References status.

98  {
99  if(status&1) return true;
100  return false;
101 }
void HcalDetDiagLEDClient::htmlOutput ( std::string  htmlDir)
virtual

Reimplemented from HcalBaseDQClient.

Definition at line 215 of file HcalDetDiagLEDClient.cc.

References HcalBaseDQClient::badstatusmap, timingPdfMaker::can, ChannelsLEDEnergy, ChannelsLEDEnergyRef, ChannelStatusLEDMean, ChannelStatusLEDRMS, ChannelStatusMissingChannels, ChannelStatusTimeMean, ChannelStatusTimeRMS, ChannelStatusUnstableChannels, ChannelStatusUnstableLEDsignal, HcalBaseDQClient::cloneME_, comment, gather_cfg::cout, HcalBaseDQClient::debug_, cond::rpcobgas::detid, HcalBaseDQClient::dqmStore_, eta(), HcalLogicalMap::generateHcalElectronicsMap(), DQMStore::get(), get_channel_status(), HcalLogicalMap::getHcalFrontEndId(), HcalBarrel, HcalEmpty, HcalEndcap, HcalEtaPhiHistNames(), HcalForward, HcalOuter, i, HcalBaseDQClient::logicalMap_, HcalElectronicsMap::lookup(), combine::missing, HcalBaseDQClient::name(), HcalBaseDQClient::name_, EdgesToViz::outfile, phi, printTableHeader(), printTableLine(), printTableTail(), alignCSCRings::s, SD, sd, status, AlCaHLTBitMon_QueryRunRegistry::string, HcalBaseDQClient::subdir_, and MonitorElement::valueString().

215  {
216 MonitorElement* me;
217 int MissingCnt=0;
218 int UnstableCnt=0;
219 int UnstableLEDCnt=0;
220 int BadTimingCnt=0;
221 int HBP[7]={0,0,0,0,0,0,0},newHBP[7]={0,0,0,0,0,0,0};
222 int HBM[7]={0,0,0,0,0,0,0},newHBM[7]={0,0,0,0,0,0,0};
223 int HEP[7]={0,0,0,0,0,0,0},newHEP[7]={0,0,0,0,0,0,0};
224 int HEM[7]={0,0,0,0,0,0,0},newHEM[7]={0,0,0,0,0,0,0};
225 int HFP[7]={0,0,0,0,0,0,0},newHFP[7]={0,0,0,0,0,0,0};
226 int HFM[7]={0,0,0,0,0,0,0},newHFM[7]={0,0,0,0,0,0,0};
227 int HO[7] ={0,0,0,0,0,0,0},newHO[7] ={0,0,0,0,0,0,0};
228 std::string subdet[4]={"HB","HE","HO","HF"};
229 
230  if (debug_>0) std::cout << "<HcalDetDiagLEDClient::htmlOutput> Preparing html output ..." << std::endl;
231  if(!dqmStore_) return;
233  std::vector<std::string> name = HcalEtaPhiHistNames();
234 
235  for(int i=0;i<4;++i){
239  std::string s;
240  s=subdir_+"channel status/"+name[i]+" Missing Channels";
241  me=dqmStore_->get(s.c_str());
242  if (me!=0) ChannelStatusMissingChannels[i]=HcalUtilsClient::getHisto<TH2F*>(me,cloneME_,ChannelStatusMissingChannels[i],debug_); else return;
243  s=subdir_+"channel status/"+name[i]+" Unstable Channels";
244  me=dqmStore_->get(s.c_str());
245  if (me!=0) ChannelStatusUnstableChannels[i]=HcalUtilsClient::getHisto<TH2F*>(me, cloneME_, ChannelStatusUnstableChannels[i], debug_); else return;
246  s=subdir_+"channel status/"+name[i]+" Unstable LED";
247  me=dqmStore_->get(s.c_str());
248  if (me!=0) ChannelStatusUnstableLEDsignal[i]=HcalUtilsClient::getHisto<TH2F*>(me, cloneME_, ChannelStatusUnstableLEDsignal[i], debug_); else return;
249  s=subdir_+"channel status/"+name[i]+" LED Mean";
250  me=dqmStore_->get(s.c_str());
251  if (me!=0) ChannelStatusLEDMean[i]=HcalUtilsClient::getHisto<TH2F*>(me, cloneME_, ChannelStatusLEDMean[i], debug_); else return;
252  s=subdir_+"channel status/"+name[i]+" LED RMS";
253  me=dqmStore_->get(s.c_str());
254  if (me!=0) ChannelStatusLEDRMS[i]=HcalUtilsClient::getHisto<TH2F*>(me, cloneME_, ChannelStatusLEDRMS[i], debug_); else return;
255  s=subdir_+"channel status/"+name[i]+" Time Mean";
256  me=dqmStore_->get(s.c_str());
257  if (me!=0) ChannelStatusTimeMean[i]=HcalUtilsClient::getHisto<TH2F*>(me, cloneME_, ChannelStatusTimeMean[i], debug_); else return;
258  s=subdir_+"channel status/"+name[i]+" Time RMS";
259  me=dqmStore_->get(s.c_str());
260  if (me!=0) ChannelStatusTimeRMS[i]=HcalUtilsClient::getHisto<TH2F*>(me, cloneME_, ChannelStatusTimeRMS[i], debug_); else return;
261  s=subdir_+"Summary Plots/"+name[i]+" Channel LED Energy";
262  me=dqmStore_->get(s.c_str());
263  if (me!=0) ChannelsLEDEnergy[i]=HcalUtilsClient::getHisto<TH2F*>(me, cloneME_, ChannelsLEDEnergy[i], debug_); else return;
264  s=subdir_+"Summary Plots/"+name[i]+" Channel LED Energy Reference";
265  me=dqmStore_->get(s.c_str());
266  if (me!=0) ChannelsLEDEnergyRef[i]=HcalUtilsClient::getHisto<TH2F*>(me, cloneME_, ChannelsLEDEnergyRef[i], debug_); else return;
267  }
268 
269  // check how many problems we have:
270  for(int sd=0;sd<4;sd++){
271  int feta=0,teta=0,fdepth=0,tdepth=0;
272  if(sd==0){ feta=-16; teta=16 ;fdepth=1; tdepth=2; }
273  if(sd==1){ feta=-29; teta=29 ;fdepth=1; tdepth=3; }
274  if(sd==2){ feta=-15; teta=15 ;fdepth=4; tdepth=4; }
275  if(sd==3){ feta=-42; teta=42 ;fdepth=1; tdepth=2; }
276  for(int phi=1;phi<=72;phi++) for(int depth=fdepth;depth<=tdepth;depth++) for(int eta=feta;eta<=teta;eta++){
277  if(sd==3 && eta>-29 && eta<29) continue;
278  double problem[7]={0,0,0,0,0,0,0};
279  for(int i=0;i<6;i++){
280  problem[i] =get_channel_status(subdet[sd],eta,phi,depth,i+1);
281  if(problem[i]!=0){
283  if(sd==0)SD=HcalBarrel;
284  else if(sd==1) SD=HcalEndcap;
285  else if(sd==2) SD=HcalOuter;
286  else if(sd==3) SD=HcalForward;
287  HcalDetId hcalid(SD, eta, phi, depth);
288  if(sd==0){ if(eta>0){
289  HBP[i]++;
290  if(badstatusmap.find(hcalid)==badstatusmap.end())newHBP[i]++;
291  }else{
292  HBM[i]++;
293  if(badstatusmap.find(hcalid)==badstatusmap.end())newHBM[i]++;
294  }}
295  if(sd==1){ if(eta>0){
296  HEP[i]++;
297  if(badstatusmap.find(hcalid)==badstatusmap.end())newHEP[i]++;
298  }else{
299  HEM[i]++;
300  if(badstatusmap.find(hcalid)==badstatusmap.end())newHEM[i]++;
301  }}
302  if(sd==2){
303  HO[i]++;
304  if(badstatusmap.find(hcalid)==badstatusmap.end())newHO[i]++;
305  }
306  if(sd==3){ if(eta>0){
307  HFP[i]++;
308  if(badstatusmap.find(hcalid)==badstatusmap.end())newHFP[i]++;
309  }else{
310  HFM[i]++;
311  if(badstatusmap.find(hcalid)==badstatusmap.end())newHFM[i]++;
312  }}
313  }
314  }
315  }
316  }
317  // missing channels list
318  std::ofstream Missing;
319  Missing.open((htmlDir + "Missing.html").c_str());
320  printTableHeader(Missing,"Missing Channels list");
321  // Bad timing channels list
322  std::ofstream BadTiming;
323  BadTiming.open((htmlDir + "BadTiming.html").c_str());
324  printTableHeader(BadTiming,"Bad Timing Channels list");
325  // unstable channels list
326  std::ofstream Unstable;
327  Unstable.open((htmlDir + "Unstable.html").c_str());
328  printTableHeader(Unstable,"Low LED signal Channels list");
329  // unstable LED signal list
330  std::ofstream BadLED;
331  BadLED.open((htmlDir + "UnstableLED.html").c_str());
332  printTableHeader(BadLED,"Unstable LED signal channels list");
333 
334  for(int sd=0;sd<4;sd++){
335  int cnt=0;
336  if(sd==0 && ((HBM[0]+HBP[0])==0 || (HBM[0]+HBP[0])==(1296*2))) continue;
337  if(sd==1 && ((HEM[0]+HEP[0])==0 || (HEM[0]+HEP[0])==(1296*2))) continue;
338  if(sd==2 && ((HO[0])==0 || HO[0]==2160)) continue;
339  if(sd==3 && ((HFM[0]+HFP[0])==0 || (HFM[0]+HFP[0])==(864*2))) continue;
340  Missing << "<tr><td align=\"center\"><h3>"<< subdet[sd] <<"</h3></td></tr>" << std::endl;
341  int feta=0,teta=0,fdepth=0,tdepth=0;
342  if(sd==0){ feta=-16; teta=16 ;fdepth=1; tdepth=2; if(HBM[0]==1296) feta=0; if(HBP[0]==1296) teta=0;}
343  if(sd==1){ feta=-29; teta=29 ;fdepth=1; tdepth=3; if(HEM[0]==1296) feta=0; if(HEP[0]==1296) teta=0;}
344  if(sd==2){ feta=-15; teta=15 ;fdepth=4; tdepth=4; if(HO[0] ==2160) {feta=0; teta=0; }}
345  if(sd==3){ feta=-42; teta=42 ;fdepth=1; tdepth=2; if(HFM[0]==864) feta=0; if(HFP[0]==864) teta=0; }
346  for(int phi=1;phi<=72;phi++) for(int depth=fdepth;depth<=tdepth;depth++) for(int eta=feta;eta<=teta;eta++){
347  if(sd==3 && eta>-29 && eta<29) continue;
348  double missing =get_channel_status(subdet[sd],eta,phi,depth,1);
349  if(missing>0){
350  HcalDetId *detid=0;
351  if(sd==0) detid=new HcalDetId(HcalBarrel,eta,phi,depth);
352  if(sd==1) detid=new HcalDetId(HcalEndcap,eta,phi,depth);
353  if(sd==2) detid=new HcalDetId(HcalOuter,eta,phi,depth);
354  if(sd==3) detid=new HcalDetId(HcalForward,eta,phi,depth);
355  HcalFrontEndId lmap_entry=logicalMap_->getHcalFrontEndId(*detid);
356  HcalElectronicsId emap_entry=emap.lookup(*detid);
357  std::string s=" ";
358  if(badstatusmap.find(*detid)!=badstatusmap.end()){ s="Known problem"; }
359  printTableLine(Missing,cnt++,*detid,lmap_entry,emap_entry,s); MissingCnt++;
360  delete detid;
361  }
362  }
363  }
364 
365  for(int sd=0;sd<4;sd++){
366  int cnt=0;
367  if(sd==0 && (HBM[5]+HBP[5])==0) continue;
368  if(sd==1 && (HEM[5]+HEP[5])==0) continue;
369  if(sd==2 && (HO[5])==0) continue;
370  if(sd==3 && (HFM[5]+HFP[5])==0) continue;
371  BadTiming << "<tr><td align=\"center\"><h3>"<< subdet[sd] <<"</h3></td></tr>" << std::endl;
372  int feta=0,teta=0,fdepth=0,tdepth=0;
373  if(sd==0){ feta=-16; teta=16 ;fdepth=1; tdepth=2; if(HBM[0]==1296) feta=0; if(HBP[0]==1296) teta=0;}
374  if(sd==1){ feta=-29; teta=29 ;fdepth=1; tdepth=3; if(HEM[0]==1296) feta=0; if(HEP[0]==1296) teta=0;}
375  if(sd==2){ feta=-15; teta=15 ;fdepth=4; tdepth=4; if(HO[0] ==2160) {feta=0; teta=0; }}
376  if(sd==3){ feta=-42; teta=42 ;fdepth=1; tdepth=2; if(HFM[0]==864) feta=0; if(HFP[0]==864) teta=0; }
377  for(int phi=1;phi<=72;phi++) for(int depth=fdepth;depth<=tdepth;depth++) for(int eta=feta;eta<=teta;eta++){
378  if(sd==3 && eta>-29 && eta<29) continue;
379  double badtiming =get_channel_status(subdet[sd],eta,phi,depth,6);
380  if(badtiming!=0){
381  try{
382  char comment[100]; sprintf(comment,"Time-mean=%.1f\n",badtiming);
383  HcalDetId *detid=0;
384  if(sd==0) detid=new HcalDetId(HcalBarrel,eta,phi,depth);
385  if(sd==1) detid=new HcalDetId(HcalEndcap,eta,phi,depth);
386  if(sd==2) detid=new HcalDetId(HcalOuter,eta,phi,depth);
387  if(sd==3) detid=new HcalDetId(HcalForward,eta,phi,depth);
388  HcalFrontEndId lmap_entry=logicalMap_->getHcalFrontEndId(*detid);
389  HcalElectronicsId emap_entry=emap.lookup(*detid);
390  printTableLine(BadTiming,cnt++,*detid,lmap_entry,emap_entry,comment); BadTimingCnt++;
391  delete detid;
392  }catch(cms::Exception &){ continue;}
393  }
394  }
395  }
396 
397  for(int sd=0;sd<4;sd++){
398  int cnt=0;
399  if(sd==0 && (HBM[1]+HBP[1])==0) continue;
400  if(sd==1 && (HEM[1]+HEP[1])==0) continue;
401  if(sd==2 && (HO[1])==0) continue;
402  if(sd==3 && (HFM[1]+HFP[1])==0) continue;
403  Unstable << "<tr><td align=\"center\"><h3>"<< subdet[sd] <<"</h3></td></tr>" << std::endl;
404  int feta=0,teta=0,fdepth=0,tdepth=0;
405  if(sd==0){ feta=-16; teta=16 ;fdepth=1; tdepth=2;}
406  if(sd==1){ feta=-29; teta=29 ;fdepth=1; tdepth=3;}
407  if(sd==2){ feta=-15; teta=15 ;fdepth=4; tdepth=4;}
408  if(sd==3){ feta=-42; teta=42 ;fdepth=1; tdepth=2;}
409  for(int phi=1;phi<=72;phi++) for(int depth=fdepth;depth<=tdepth;depth++) for(int eta=feta;eta<=teta;eta++){
410  if(sd==3 && eta>-29 && eta<29) continue;
411  double unstable =get_channel_status(subdet[sd],eta,phi,depth,2);
412  if(unstable>0){
413  try{
414  char comment[100]; sprintf(comment,"%.3f%%\n",(1.0-unstable)*100.0);
415  HcalDetId *detid=0;
416  if(sd==0) detid=new HcalDetId(HcalBarrel,eta,phi,depth);
417  if(sd==1) detid=new HcalDetId(HcalEndcap,eta,phi,depth);
418  if(sd==2) detid=new HcalDetId(HcalOuter,eta,phi,depth);
419  if(sd==3) detid=new HcalDetId(HcalForward,eta,phi,depth);
420  HcalFrontEndId lmap_entry=logicalMap_->getHcalFrontEndId(*detid);
421  HcalElectronicsId emap_entry=emap.lookup(*detid);
422  printTableLine(Unstable,cnt++,*detid,lmap_entry,emap_entry,comment); UnstableCnt++;
423  delete detid;
424  }catch(cms::Exception &){ continue;}
425  }
426  }
427  }
428 
429  for(int sd=0;sd<4;sd++){
430  int cnt=0;
431  if(sd==0 && (HBM[2]+HBP[2])==0) continue;
432  if(sd==1 && (HEM[2]+HEP[2])==0) continue;
433  if(sd==2 && (HO[2])==0) continue;
434  if(sd==3 && (HFM[2]+HFP[2])==0) continue;
435  BadLED << "<tr><td align=\"center\"><h3>"<< subdet[sd] <<"</h3></td></tr>" << std::endl;
436  int feta=0,teta=0,fdepth=0,tdepth=0;
437  if(sd==0){ feta=-16; teta=16 ;fdepth=1; tdepth=2;}
438  if(sd==1){ feta=-29; teta=29 ;fdepth=1; tdepth=3;}
439  if(sd==2){ feta=-15; teta=15 ;fdepth=4; tdepth=4;}
440  if(sd==3){ feta=-42; teta=42 ;fdepth=1; tdepth=2;}
441  for(int phi=1;phi<=72;phi++) for(int depth=fdepth;depth<=tdepth;depth++) for(int eta=feta;eta<=teta;eta++){
442  if(sd==3 && eta>-29 && eta<29) continue;
443  double badled =get_channel_status(subdet[sd],eta,phi,depth,3);
444  if(badled>0){
445  try{
446  char comment[100]; sprintf(comment,"%.3f%%\n",(badled)*100.0);
447  HcalDetId *detid=0;
448  if(sd==0) detid=new HcalDetId(HcalBarrel,eta,phi,depth);
449  if(sd==1) detid=new HcalDetId(HcalEndcap,eta,phi,depth);
450  if(sd==2) detid=new HcalDetId(HcalOuter,eta,phi,depth);
451  if(sd==3) detid=new HcalDetId(HcalForward,eta,phi,depth);
452  HcalFrontEndId lmap_entry=logicalMap_->getHcalFrontEndId(*detid);
453  HcalElectronicsId emap_entry=emap.lookup(*detid);
454  std::string s=" ";
455  if(badstatusmap.find(*detid)!=badstatusmap.end()){ s="Known problem"; }
456  printTableLine(BadLED,cnt++,*detid,lmap_entry,emap_entry,s); UnstableLEDCnt++;
457  delete detid;
458  }catch(cms::Exception &){ continue;}
459  }
460  }
461  }
462  printTableTail(Missing);
463  Missing.close();
464  printTableTail(BadTiming);
465  BadTiming.close();
466  printTableTail(Unstable);
467  Unstable.close();
468  printTableTail(BadLED);
469  BadLED.close();
471  int ievt_ = -1,runNo=-1;
472  std::string ref_run;
473  std::string s=subdir_+"HcalDetDiagLEDMonitor Event Number";
474  me = dqmStore_->get(s.c_str());
475  if ( me ) {
476  s = me->valueString();
477  sscanf((s.substr(2,s.length()-2)).c_str(), "%d", &ievt_);
478  }
479  s=subdir_+"HcalDetDiagLEDMonitor Run Number";
480  me = dqmStore_->get(s.c_str());
481  if ( me ) {
482  s = me->valueString();
483  sscanf((s.substr(2,s.length()-2)).c_str(), "%d", &runNo);
484  }
485  s=subdir_+"HcalDetDiagLEDMonitor Reference Run";
486  me = dqmStore_->get(s.c_str());
487  if(me) {
488  std::string s=me->valueString();
489  char str[200];
490  sscanf((s.substr(2,s.length()-2)).c_str(), "%s", str);
491  ref_run=str;
492  }
493  TH1F *Energy=0,*Timing=0,*EnergyHF=0,*TimingHF=0,*EnergyRMS=0,*TimingRMS=0,*EnergyRMSHF=0,*TimingRMSHF=0;
494  TH2F *Time2Dhbhehf=0,*Time2Dho=0,*Energy2Dhbhehf=0,*Energy2Dho=0;
495  TH2F *HBPphi=0,*HBMphi=0,*HEPphi=0,*HEMphi=0,*HFPphi=0,*HFMphi=0,*HO0phi=0,*HO1Pphi=0,*HO2Pphi=0,*HO1Mphi=0,*HO2Mphi=0;
496 
497  s=subdir_+"Summary Plots/HBHEHO LED Energy Distribution"; me=dqmStore_->get(s.c_str());
498  if(me!=0) Energy=HcalUtilsClient::getHisto<TH1F*>(me, cloneME_, Energy, debug_); else return;
499  s=subdir_+"Summary Plots/HBHEHO LED Timing Distribution"; me=dqmStore_->get(s.c_str());
500  if(me!=0) Timing=HcalUtilsClient::getHisto<TH1F*>(me, cloneME_, Timing, debug_); else return;
501  s=subdir_+"Summary Plots/HBHEHO LED Energy RMS_div_Energy Distribution"; me=dqmStore_->get(s.c_str());
502  if(me!=0) EnergyRMS=HcalUtilsClient::getHisto<TH1F*>(me, cloneME_, EnergyRMS, debug_); else return;
503  s=subdir_+"Summary Plots/HBHEHO LED Timing RMS Distribution"; me=dqmStore_->get(s.c_str());
504  if(me!=0) TimingRMS=HcalUtilsClient::getHisto<TH1F*>(me, cloneME_, TimingRMS, debug_); else return;
505  s=subdir_+"Summary Plots/HF LED Energy Distribution"; me=dqmStore_->get(s.c_str());
506  if(me!=0) EnergyHF=HcalUtilsClient::getHisto<TH1F*>(me, cloneME_, EnergyHF, debug_); else return;
507  s=subdir_+"Summary Plots/HF LED Timing Distribution"; me=dqmStore_->get(s.c_str());
508  if(me!=0) TimingHF=HcalUtilsClient::getHisto<TH1F*>(me, cloneME_, TimingHF, debug_); else return;
509  s=subdir_+"Summary Plots/HF LED Energy RMS_div_Energy Distribution"; me=dqmStore_->get(s.c_str());
510  if(me!=0) EnergyRMSHF=HcalUtilsClient::getHisto<TH1F*>(me, cloneME_, EnergyRMSHF, debug_); else return;
511  s=subdir_+"Summary Plots/HF LED Timing RMS Distribution"; me=dqmStore_->get(s.c_str());
512  if(me!=0) TimingRMSHF=HcalUtilsClient::getHisto<TH1F*>(me, cloneME_, TimingRMSHF, debug_); else return;
513 
514  s=subdir_+"Summary Plots/LED Timing HBHEHF"; me=dqmStore_->get(s.c_str());
515  if(me!=0) Time2Dhbhehf=HcalUtilsClient::getHisto<TH2F*>(me, cloneME_, Time2Dhbhehf, debug_); else return;
516  s=subdir_+"Summary Plots/LED Timing HO"; me=dqmStore_->get(s.c_str());
517  if(me!=0) Time2Dho=HcalUtilsClient::getHisto<TH2F*>(me, cloneME_, Time2Dho, debug_); else return;
518  s=subdir_+"Summary Plots/LED Energy HBHEHF"; me=dqmStore_->get(s.c_str());
519  if(me!=0) Energy2Dhbhehf=HcalUtilsClient::getHisto<TH2F*>(me, cloneME_, Energy2Dhbhehf, debug_); else return;
520  s=subdir_+"Summary Plots/LED Energy HO"; me=dqmStore_->get(s.c_str());
521  if(me!=0) Energy2Dho=HcalUtilsClient::getHisto<TH2F*>(me, cloneME_, Energy2Dho, debug_); else return;
522 
523  s=subdir_+"Summary Plots/HBP Average over HPD LED Ref"; me=dqmStore_->get(s.c_str());
524  if(me!=0) HBPphi=HcalUtilsClient::getHisto<TH2F*>(me, cloneME_, HBPphi, debug_); else return;
525  s=subdir_+"Summary Plots/HBM Average over HPD LED Ref"; me=dqmStore_->get(s.c_str());
526  if(me!=0) HBMphi=HcalUtilsClient::getHisto<TH2F*>(me, cloneME_, HBMphi, debug_); else return;
527  s=subdir_+"Summary Plots/HEP Average over HPD LED Ref"; me=dqmStore_->get(s.c_str());
528  if(me!=0) HEPphi=HcalUtilsClient::getHisto<TH2F*>(me, cloneME_, HEPphi, debug_); else return;
529  s=subdir_+"Summary Plots/HEM Average over HPD LED Ref"; me=dqmStore_->get(s.c_str());
530  if(me!=0) HEMphi=HcalUtilsClient::getHisto<TH2F*>(me, cloneME_, HEMphi, debug_); else return;
531  s=subdir_+"Summary Plots/HFP Average over RM LED Ref"; me=dqmStore_->get(s.c_str());
532  if(me!=0) HFPphi=HcalUtilsClient::getHisto<TH2F*>(me, cloneME_, HFPphi, debug_); else return;
533  s=subdir_+"Summary Plots/HFM Average over RM LED Ref"; me=dqmStore_->get(s.c_str());
534  if(me!=0) HFMphi=HcalUtilsClient::getHisto<TH2F*>(me, cloneME_, HFMphi, debug_); else return;
535 
536  s=subdir_+"Summary Plots/HO0 Average over HPD LED Ref"; me=dqmStore_->get(s.c_str());
537  if(me!=0) HO0phi=HcalUtilsClient::getHisto<TH2F*>(me, cloneME_, HO0phi, debug_); else return;
538  s=subdir_+"Summary Plots/HO1P Average over HPD LED Ref"; me=dqmStore_->get(s.c_str());
539  if(me!=0) HO1Pphi=HcalUtilsClient::getHisto<TH2F*>(me, cloneME_, HO1Pphi, debug_); else return;
540  s=subdir_+"Summary Plots/HO2P Average over HPD LED Ref"; me=dqmStore_->get(s.c_str());
541  if(me!=0) HO2Pphi=HcalUtilsClient::getHisto<TH2F*>(me, cloneME_, HO2Pphi, debug_); else return;
542  s=subdir_+"Summary Plots/HO1M Average over HPD LED Ref"; me=dqmStore_->get(s.c_str());
543  if(me!=0) HO1Mphi=HcalUtilsClient::getHisto<TH2F*>(me, cloneME_, HO1Mphi, debug_); else return;
544  s=subdir_+"Summary Plots/HO2M Average over HPD LED Ref"; me=dqmStore_->get(s.c_str());
545  if(me!=0) HO2Mphi=HcalUtilsClient::getHisto<TH2F*>(me, cloneME_, HO2Mphi, debug_); else return;
546 
547  gROOT->SetBatch(true);
548  gStyle->SetCanvasColor(0);
549  gStyle->SetPadColor(0);
550  gStyle->SetOptStat(111110);
551  gStyle->SetPalette(1);
552 
553  TCanvas *can=new TCanvas("HcalDetDiagLEDClient","HcalDetDiagLEDClient",0,0,500,350);
554  can->SetGridy();
555  can->SetGridx();
556  can->cd();
557 
558  std::ofstream htmlFile;
559  std::string outfile=htmlDir+name_+".html";
560  htmlFile.open(outfile.c_str());
561  // html page header
562  htmlFile << "<!DOCTYPE html PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\"> " << std::endl;
563  htmlFile << "<html> " << std::endl;
564  htmlFile << "<head> " << std::endl;
565  htmlFile << " <meta content=\"text/html; charset=ISO-8859-1\" " << std::endl;
566  htmlFile << " http-equiv=\"content-type\"> " << std::endl;
567  htmlFile << " <title>Detector Diagnostics LED Monitor</title> " << std::endl;
568  htmlFile << "</head> " << std::endl;
569  htmlFile << "<style type=\"text/css\"> td { font-weight: bold } </style>" << std::endl;
570  htmlFile << "<style type=\"text/css\">"<< std::endl;
571  htmlFile << " td.s0 { font-family: arial, arial ce, helvetica; font-weight: bold; background-color: #FF7700; text-align: center;}"<< std::endl;
572  htmlFile << " td.s1 { font-family: arial, arial ce, helvetica; font-weight: bold; background-color: #FFC169; text-align: center;}"<< std::endl;
573  htmlFile << " td.s2 { font-family: arial, arial ce, helvetica; background-color: red; }"<< std::endl;
574  htmlFile << " td.s3 { font-family: arial, arial ce, helvetica; background-color: yellow; }"<< std::endl;
575  htmlFile << " td.s4 { font-family: arial, arial ce, helvetica; background-color: green; }"<< std::endl;
576  htmlFile << " td.s5 { font-family: arial, arial ce, helvetica; background-color: silver; }"<< std::endl;
577  std::string state[4]={"<td class=\"s2\" align=\"center\">",
578  "<td class=\"s3\" align=\"center\">",
579  "<td class=\"s4\" align=\"center\">",
580  "<td class=\"s5\" align=\"center\">"};
581  htmlFile << "</style>"<< std::endl;
582  htmlFile << "<body> " << std::endl;
583  htmlFile << "<br> " << std::endl;
584  htmlFile << "<h2>Run:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;" << std::endl;
585  htmlFile << "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span " << std::endl;
586  htmlFile << " style=\"color: rgb(0, 0, 153);\">" << runNo << "</span></h2>" << std::endl;
587  htmlFile << "<h2>Monitoring task:&nbsp;&nbsp;&nbsp;&nbsp; <span " << std::endl;
588  htmlFile << " style=\"color: rgb(0, 0, 153);\">Detector Diagnostics LED Monitor</span></h2> " << std::endl;
589  htmlFile << "<h2>Events processed:&nbsp;&nbsp;&nbsp;&nbsp;<span " << std::endl;
590  htmlFile << " style=\"color: rgb(0, 0, 153);\">" << ievt_ << "</span></h2>" << std::endl;
591  htmlFile << "<hr>" << std::endl;
593  htmlFile << "<table width=100% border=1>" << std::endl;
594  htmlFile << "<tr>" << std::endl;
595  htmlFile << "<td class=\"s0\" width=15% align=\"center\">SebDet</td>" << std::endl;
596  htmlFile << "<td class=\"s0\" width=17% align=\"center\">Missing</td>" << std::endl;
597  htmlFile << "<td class=\"s0\" width=17% align=\"center\">Unstable</td>" << std::endl;
598  htmlFile << "<td class=\"s0\" width=17% align=\"center\">low/no LED signal</td>" << std::endl;
599  htmlFile << "<td class=\"s0\" width=17% align=\"center\">Bad Timing</td>" << std::endl;
600  htmlFile << "<td class=\"s0\" width=17% align=\"center\">Bad LED signal</td>" << std::endl;
601  htmlFile << "</tr><tr>" << std::endl;
602  int ind1=0,ind2=0,ind3=0,ind4=0,ind5=0;
603  htmlFile << "<td class=\"s1\" align=\"center\">HB+</td>" << std::endl;
604  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;
605  ind2=3; if(newHBP[1]==0) ind2=2; if(newHBP[1]>0) ind2=1; if(newHBP[1]>21) ind2=0;
606  ind3=3; if(newHBP[2]==0) ind3=2; if(newHBP[2]>0) ind3=1; if(newHBP[2]>21) ind3=0;
607  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;
608  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;
609  if(ind1==3) ind2=ind3=ind4=ind5=3;
610  if(ind1==0 || ind2==0 || ind3==0 || ind4==0) status|=2; else if(ind1==1 || ind2==1 || ind3==1 || ind4==1) status|=1;
611  htmlFile << state[ind1] << HBP[0] <<" (1296)</td>" << std::endl;
612  htmlFile << state[ind2] << HBP[1] <<"</td>" << std::endl;
613  htmlFile << state[ind3] << HBP[2] <<"</td>" << std::endl;
614  htmlFile << state[ind5] << HBP[5]+HBP[6] <<"</td>" << std::endl;
615  htmlFile << state[ind4] << HBP[3]+HBP[4] <<"</td>" << std::endl;
616 
617  htmlFile << "</tr><tr>" << std::endl;
618  htmlFile << "<td class=\"s1\" align=\"center\">HB-</td>" << std::endl;
619  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;
620  ind2=3; if(newHBM[1]==0) ind2=2; if(newHBM[1]>0) ind2=1; if(newHBM[1]>21) ind2=0;
621  ind3=3; if(newHBM[2]==0) ind3=2; if(newHBM[2]>0) ind3=1; if(newHBM[2]>21) ind3=0;
622  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;
623  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;
624  if(ind1==3) ind2=ind3=ind4=ind5=3;
625  if(ind1==0 || ind2==0 || ind3==0 || ind4==0) status|=2; else if(ind1==1 || ind2==1 || ind3==1 || ind4==1)status|=1;
626  htmlFile << state[ind1] << HBM[0] <<" (1296)</td>" << std::endl;
627  htmlFile << state[ind2] << HBM[1] <<"</td>" << std::endl;
628  htmlFile << state[ind3] << HBM[2] <<"</td>" << std::endl;
629  htmlFile << state[ind5] << HBM[5]+HBM[6] <<"</td>" << std::endl;
630  htmlFile << state[ind4] << HBM[3]+HBM[4] <<"</td>" << std::endl;
631 
632  htmlFile << "</tr><tr>" << std::endl;
633  htmlFile << "<td class=\"s1\" align=\"center\">HE+</td>" << std::endl;
634  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;
635  ind2=3; if(newHEP[1]==0) ind2=2; if(newHEP[1]>0) ind2=1; if(newHEP[1]>21) ind2=0;
636  ind3=3; if(newHEP[2]==0) ind3=2; if(newHEP[2]>0) ind3=1; if(newHEP[2]>21) ind3=0;
637  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;
638  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;
639  if(ind1==3) ind2=ind3=ind4=ind5=3;
640  if(ind1==0 || ind2==0 || ind3==0 || ind4==0) status|=2; else if(ind1==1 || ind2==1 || ind3==1 || ind4==1)status|=1;
641  htmlFile << state[ind1] << HEP[0] <<" (1296)</td>" << std::endl;
642  htmlFile << state[ind2] << HEP[1] <<"</td>" << std::endl;
643  htmlFile << state[ind3] << HEP[2] <<"</td>" << std::endl;
644  htmlFile << state[ind5] << HEP[5]+HEP[6] <<"</td>" << std::endl;
645  htmlFile << state[ind4] << HEP[3]+HEP[4] <<"</td>" << std::endl;
646 
647  htmlFile << "</tr><tr>" << std::endl;
648  htmlFile << "<td class=\"s1\" align=\"center\">HE-</td>" << std::endl;
649  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;
650  ind2=3; if(newHEM[1]==0) ind2=2; if(newHEM[1]>0) ind2=1; if(newHEM[1]>21) ind2=0;
651  ind3=3; if(newHEM[2]==0) ind3=2; if(newHEM[2]>0) ind3=1; if(newHEM[2]>21) ind3=0;
652  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;
653  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;
654  if(ind1==3) ind2=ind3=ind4=ind5=3;
655  if(ind1==0 || ind2==0 || ind3==0 || ind4==0) status|=2; else if(ind1==1 || ind2==1 || ind3==1 || ind4==1)status|=1;
656  htmlFile << state[ind1] << HEM[0] <<" (1296)</td>" << std::endl;
657  htmlFile << state[ind2] << HEM[1] <<"</td>" << std::endl;
658  htmlFile << state[ind3] << HEM[2] <<"</td>" << std::endl;
659  htmlFile << state[ind5] << HEM[5]+HEM[6] <<"</td>" << std::endl;
660  htmlFile << state[ind4] << HEM[3]+HEM[4] <<"</td>" << std::endl;
661 
662  htmlFile << "</tr><tr>" << std::endl;
663  htmlFile << "<td class=\"s1\" align=\"center\">HF+</td>" << std::endl;
664  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;
665  ind2=3; if(newHFP[1]==0) ind2=2; if(newHFP[1]>0) ind2=1; if(newHFP[1]>21) ind2=0;
666  ind3=3; if(newHFP[2]==0) ind3=2; if(newHFP[2]>0) ind3=1; if(newHFP[2]>21) ind3=0;
667  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;
668  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;
669  if(ind1==3) ind2=ind3=ind4=ind5=3;
670  if(ind1==0 || ind2==0 || ind3==0 || ind4==0) status|=2; else if(ind1==1 || ind2==1 || ind3==1 || ind4==1)status|=1;
671  htmlFile << state[ind1] << HFP[0] <<" (864)</td>" << std::endl;
672  htmlFile << state[ind2] << HFP[1] <<"</td>" << std::endl;
673  htmlFile << state[ind3] << HFP[2] <<"</td>" << std::endl;
674  htmlFile << state[ind5] << HFP[5]+HFP[6] <<"</td>" << std::endl;
675  htmlFile << state[ind4] << HFP[3]+HFP[4] <<"</td>" << std::endl;
676 
677  htmlFile << "</tr><tr>" << std::endl;
678  htmlFile << "<td class=\"s1\" align=\"center\">HF-</td>" << std::endl;
679  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;
680  ind2=3; if(newHFM[1]==0) ind2=2; if(newHFM[1]>0) ind2=1; if(newHFM[1]>21) ind2=0;
681  ind3=3; if(newHFM[2]==0) ind3=2; if(newHFM[2]>0) ind3=1; if(newHFM[2]>21) ind3=0;
682  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;
683  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;
684  if(ind1==3) ind2=ind3=ind4=ind5=3;
685  if(ind1==0 || ind2==0 || ind3==0 || ind4==0) status|=2; else if(ind1==1 || ind2==1 || ind3==1 || ind4==1)status|=1;
686  htmlFile << state[ind1] << HFM[0] <<" (864)</td>" << std::endl;
687  htmlFile << state[ind2] << HFM[1] <<"</td>" << std::endl;
688  htmlFile << state[ind3] << HFM[2] <<"</td>" << std::endl;
689  htmlFile << state[ind5] << HFM[5]+HFM[6] <<"</td>" << std::endl;
690  htmlFile << state[ind4] << HFM[3]+HFM[4] <<"</td>" << std::endl;
691 
692  htmlFile << "</tr><tr>" << std::endl;
693  htmlFile << "<td class=\"s1\" align=\"center\">HO</td>" << std::endl;
694  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;
695  ind2=3; if(newHO[1]==0) ind2=2; if(newHO[1]>0) ind2=1; if(newHO[1]>21) ind2=0;
696  ind3=3; if(newHO[2]==0) ind3=2; if(newHO[2]>0) ind3=1; if(newHO[2]>21) ind3=0;
697  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;
698  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;
699  if(ind1==3) ind2=ind3=ind4=ind5=3;
700  if(ind1==0 || ind2==0 || ind3==0 || ind4==0) status|=2; else if(ind1==1 || ind2==1 || ind3==1 || ind4==1)status|=1;
701 
702  htmlFile << state[ind1] << HO[0] <<" (2160)</td>" << std::endl;
703  htmlFile << state[ind2] << HO[1] <<"</td>" << std::endl;
704  htmlFile << state[ind3] << HO[2] <<"</td>" << std::endl;
705  htmlFile << state[ind5] << HO[5]+HO[6] <<"</td>" << std::endl;
706  htmlFile << state[ind4] << HO[3]+HO[4] <<"</td>" << std::endl;
707 
708  htmlFile << "</tr></table>" << std::endl;
709  htmlFile << "<hr>" << std::endl;
711  if((MissingCnt+UnstableCnt+UnstableLEDCnt+BadTimingCnt)>0){
712  htmlFile << "<table width=100% border=1><tr>" << std::endl;
713  if(MissingCnt>0) htmlFile << "<td><a href=\"" << "Missing.html" <<"\">list of missing channels</a></td>";
714  if(UnstableCnt>0) htmlFile << "<td><a href=\"" << "Unstable.html" <<"\">list of unstable channels</a></td>";
715  if(UnstableLEDCnt>0)htmlFile << "<td><a href=\"" << "UnstableLED.html" <<"\">list of low LED signal channels</a></td>";
716  if(BadTimingCnt>0)htmlFile << "<td><a href=\"" << "BadTiming.html" <<"\">list of Bad Timing channels</a></td>";
717  htmlFile << "</tr></table>" << std::endl;
718  }
720 
722  htmlFile << "<h2 align=\"center\">Summary LED plots</h2>" << std::endl;
723  htmlFile << "<table width=100% border=0><tr>" << std::endl;
724  htmlFile << "<tr align=\"left\">" << std::endl;
725  Time2Dhbhehf->SetMaximum(6);
726  Time2Dho->SetMaximum(6);
727  Time2Dhbhehf->SetNdivisions(36,"Y");
728  Time2Dho->SetNdivisions(36,"Y");
729  Time2Dhbhehf->SetStats(0);
730  Time2Dho->SetStats(0);
731  Time2Dhbhehf->Draw("COLZ"); can->SaveAs((htmlDir + "led_timing_hbhehf.gif").c_str());
732  Time2Dho->Draw("COLZ"); can->SaveAs((htmlDir + "led_timing_ho.gif").c_str());
733  htmlFile << "<td align=\"center\"><img src=\"led_timing_hbhehf.gif\" alt=\"led timing distribution\"> </td>" << std::endl;
734  htmlFile << "<td align=\"center\"><img src=\"led_timing_ho.gif\" alt=\"led timing distribution\"> </td>" << std::endl;
735  htmlFile << "</tr>" << std::endl;
736 
737  htmlFile << "<tr align=\"left\">" << std::endl;
738  Energy2Dhbhehf->SetStats(0);
739  Energy2Dho->SetStats(0);
740  Energy2Dhbhehf->SetNdivisions(36,"Y");
741  Energy2Dho->SetNdivisions(36,"Y");
742  Energy2Dhbhehf->Draw("COLZ"); can->SaveAs((htmlDir + "led_energy_hbhehf.gif").c_str());
743  Energy2Dho->Draw("COLZ"); can->SaveAs((htmlDir + "led_energy_ho.gif").c_str());
744  htmlFile << "<td align=\"center\"><img src=\"led_energy_hbhehf.gif\" alt=\"led energy distribution\"> </td>" << std::endl;
745  htmlFile << "<td align=\"center\"><img src=\"led_energy_ho.gif\" alt=\"led energy distribution\"> </td>" << std::endl;
746  htmlFile << "</tr>" << std::endl;
747 
748  can->SetGridy(false);
749  htmlFile << "<tr align=\"left\">" << std::endl;
750  Energy->Draw(); can->SaveAs((htmlDir + "led_energy_distribution.gif").c_str());
751  EnergyRMS->Draw(); can->SaveAs((htmlDir + "led_energy_rms_distribution.gif").c_str());
752  htmlFile << "<td align=\"center\"><img src=\"led_energy_distribution.gif\" alt=\"led energy distribution\"> </td>" << std::endl;
753  htmlFile << "<td align=\"center\"><img src=\"led_energy_rms_distribution.gif\" alt=\"led energy rms distribution\"> </td>" << std::endl;
754  htmlFile << "</tr>" << std::endl;
755  htmlFile << "<tr align=\"left\">" << std::endl;
756  Timing->Draw(); can->SaveAs((htmlDir + "led_timing_distribution.gif").c_str());
757  TimingRMS->Draw(); can->SaveAs((htmlDir + "led_timing_rms_distribution.gif").c_str());
758  htmlFile << "<td align=\"center\"><img src=\"led_timing_distribution.gif\" alt=\"led timing distribution\"> </td>" << std::endl;
759  htmlFile << "<td align=\"center\"><img src=\"led_timing_rms_distribution.gif\" alt=\"led timing rms distribution\"> </td>" << std::endl;
760  htmlFile << "</tr>" << std::endl;
761  htmlFile << "<tr align=\"left\">" << std::endl;
762  EnergyHF->Draw(); can->SaveAs((htmlDir + "led_energyhf_distribution.gif").c_str());
763  EnergyRMSHF->Draw(); can->SaveAs((htmlDir + "led_energyhf_rms_distribution.gif").c_str());
764  htmlFile << "<td align=\"center\"><img src=\"led_energyhf_distribution.gif\" alt=\"hf led energy distribution\"> </td>" << std::endl;
765  htmlFile << "<td align=\"center\"><img src=\"led_energyhf_rms_distribution.gif\" alt=\"hf led energy rms distribution\"> </td>" << std::endl;
766  htmlFile << "</tr>" << std::endl;
767  htmlFile << "<tr align=\"left\">" << std::endl;
768  TimingHF->Draw(); can->SaveAs((htmlDir + "led_timinghf_distribution.gif").c_str());
769  TimingRMSHF->Draw(); can->SaveAs((htmlDir + "led_timinghf_rms_distribution.gif").c_str());
770  htmlFile << "<td align=\"center\"><img src=\"led_timinghf_distribution.gif\" alt=\"hf led timing distribution\"> </td>" << std::endl;
771  htmlFile << "<td align=\"center\"><img src=\"led_timinghf_rms_distribution.gif\" alt=\"hf led timing rms distribution\"> </td>" << std::endl;
772  htmlFile << "</tr>" << std::endl;
773  htmlFile << "</table>" << std::endl;
774 
776  htmlFile << "<h2 align=\"center\">Stability LED plots (Reference run "<<ref_run<<")</h2>" << std::endl;
777  htmlFile << "<table width=100% border=0><tr>" << std::endl;
778  htmlFile << "<tr align=\"left\">" << std::endl;
779  HBPphi->GetXaxis()->SetNdivisions(418,kFALSE);
780  HBMphi->GetXaxis()->SetNdivisions(418,kFALSE);
781  HEPphi->GetXaxis()->SetNdivisions(418,kFALSE);
782  HEMphi->GetXaxis()->SetNdivisions(418,kFALSE);
783 
784  HBPphi->SetMarkerColor(kRed);
785  HBPphi->SetMarkerStyle(23);
786  HBPphi->SetXTitle("HPD Index = RBX*4+RM");
787  HBMphi->SetMarkerColor(kRed);
788  HBMphi->SetMarkerStyle(23);
789  HBMphi->SetXTitle("HPD Index = RBX*4+RM");
790  HBPphi->Draw(); can->SaveAs((htmlDir + "led_hbp_distribution.gif").c_str());
791  HBMphi->Draw(); can->SaveAs((htmlDir + "led_hbm_distribution.gif").c_str());
792  htmlFile << "<td align=\"center\"><img src=\"led_hbp_distribution.gif\" alt=\"led hbp distribution\"> </td>" << std::endl;
793  htmlFile << "<td align=\"center\"><img src=\"led_hbm_distribution.gif\" alt=\"led hbm distribution\"> </td>" << std::endl;
794  htmlFile << "</tr>" << std::endl;
795 
796  htmlFile << "<tr align=\"left\">" << std::endl;
797  HEPphi->SetMarkerColor(kRed);
798  HEPphi->SetMarkerStyle(23);
799  HEPphi->SetXTitle("HPD Index = RBX*4+RM");
800  HEMphi->SetMarkerColor(kRed);
801  HEMphi->SetMarkerStyle(23);
802  HEMphi->SetXTitle("HPD Index = RBX*4+RM");
803  HEPphi->Draw(); can->SaveAs((htmlDir + "led_hep_distribution.gif").c_str());
804  HEMphi->Draw(); can->SaveAs((htmlDir + "led_hem_distribution.gif").c_str());
805  htmlFile << "<td align=\"center\"><img src=\"led_hep_distribution.gif\" alt=\"led hep distribution\"> </td>" << std::endl;
806  htmlFile << "<td align=\"center\"><img src=\"led_hem_distribution.gif\" alt=\"led hem distribution\"> </td>" << std::endl;
807  htmlFile << "</tr>" << std::endl;
808 
809  htmlFile << "<tr align=\"left\">" << std::endl;
810  HFPphi->SetMarkerColor(kRed);
811  HFPphi->SetMarkerStyle(23);
812  HFPphi->SetXTitle("RM Index = RoBox*3+RM");
813  HFMphi->SetMarkerColor(kRed);
814  HFMphi->SetMarkerStyle(23);
815  HFPphi->GetXaxis()->SetNdivisions(312,kFALSE);
816  HFMphi->GetXaxis()->SetNdivisions(312,kFALSE);
817 
818  HFMphi->SetXTitle("RM Index = RoBox*3+RM");
819  HFPphi->Draw(); can->SaveAs((htmlDir + "led_hfp_distribution.gif").c_str());
820  HFMphi->Draw(); can->SaveAs((htmlDir + "led_hfm_distribution.gif").c_str());
821  htmlFile << "<td align=\"center\"><img src=\"led_hfp_distribution.gif\" alt=\"led hfp distribution\"> </td>" << std::endl;
822  htmlFile << "<td align=\"center\"><img src=\"led_hfm_distribution.gif\" alt=\"led hfm distribution\"> </td>" << std::endl;
823  htmlFile << "</tr>" << std::endl;
824 
825  htmlFile << "<tr align=\"left\">" << std::endl;
826  HO1Pphi->SetMarkerColor(kRed);
827  HO1Pphi->SetMarkerStyle(23);
828  HO1Pphi->SetXTitle("HPD Index = RBX*4+RM");
829  HO1Mphi->SetMarkerColor(kRed);
830  HO1Mphi->SetMarkerStyle(23);
831  HO1Mphi->GetXaxis()->SetNdivisions(412,kFALSE);
832  HO1Pphi->GetXaxis()->SetNdivisions(412,kFALSE);
833 
834  HO1Mphi->SetXTitle("HPD Index = RBX*4+RM");
835  HO1Pphi->Draw(); can->SaveAs((htmlDir + "led_ho1p_distribution.gif").c_str());
836  HO1Mphi->Draw(); can->SaveAs((htmlDir + "led_ho1m_distribution.gif").c_str());
837  htmlFile << "<td align=\"center\"><img src=\"led_ho1p_distribution.gif\" alt=\"led ho1p distribution\"> </td>" << std::endl;
838  htmlFile << "<td align=\"center\"><img src=\"led_ho1m_distribution.gif\" alt=\"led ho1m distribution\"> </td>" << std::endl;
839  htmlFile << "</tr>" << std::endl;
840 
841  htmlFile << "<tr align=\"left\">" << std::endl;
842  HO2Pphi->SetMarkerColor(kRed);
843  HO2Pphi->SetMarkerStyle(23);
844  HO2Pphi->SetXTitle("HPD Index = RBX*4+RM");
845  HO2Mphi->SetMarkerColor(kRed);
846  HO2Mphi->SetMarkerStyle(23);
847  HO2Mphi->GetXaxis()->SetNdivisions(412,kFALSE);
848  HO2Pphi->GetXaxis()->SetNdivisions(412,kFALSE);
849 
850  HO2Mphi->SetXTitle("HPD Index = RBX*4+RM");
851  HO2Pphi->Draw(); can->SaveAs((htmlDir + "led_ho2p_distribution.gif").c_str());
852  HO2Mphi->Draw(); can->SaveAs((htmlDir + "led_ho2m_distribution.gif").c_str());
853  htmlFile << "<td align=\"center\"><img src=\"led_ho2p_distribution.gif\" alt=\"led ho2p distribution\"> </td>" << std::endl;
854  htmlFile << "<td align=\"center\"><img src=\"led_ho2m_distribution.gif\" alt=\"led ho2m distribution\"> </td>" << std::endl;
855  htmlFile << "</tr>" << std::endl;
856 
857  htmlFile << "<tr align=\"left\">" << std::endl;
858  HO0phi->SetMarkerColor(kRed);
859  HO0phi->SetMarkerStyle(23);
860  HO0phi->SetXTitle("HPD Index = RBX*4+RM");
861  HO0phi->GetXaxis()->SetNdivisions(412,kFALSE);
862  HO0phi->Draw(); can->SaveAs((htmlDir + "led_ho0_distribution.gif").c_str());
863  htmlFile << "<td align=\"center\"><img src=\"led_ho0_distribution.gif\" alt=\"led ho0 distribution\"> </td>" << std::endl;
864  htmlFile << "</tr>" << std::endl;
865 
866  htmlFile << "</table>" << std::endl;
867 
868  htmlFile << "</body> " << std::endl;
869  htmlFile << "</html> " << std::endl;
870  htmlFile.close();
871  can->Close();
872 }
dictionary missing
Definition: combine.py:4
int i
Definition: DBlmapReader.cc:9
std::string name()
TH2F * ChannelStatusUnstableChannels[4]
static void printTableLine(std::ofstream &file, int ind, HcalDetId &detid, HcalFrontEndId &lmap_entry, HcalElectronicsId &emap_entry, std::string comment="")
static void printTableTail(std::ofstream &file)
std::vector< std::string > HcalEtaPhiHistNames()
static void printTableHeader(std::ofstream &file, std::string header)
T eta() const
static const float SD[]
Definition: sicif.h:67
list outfile
Definition: EdgesToViz.py:91
HcalElectronicsMap generateHcalElectronicsMap()
HcalSubdetector
Definition: HcalAssistant.h:31
TH2F * ChannelStatusMissingChannels[4]
MonitorElement * get(const std::string &path) const
get ME from full pathname (e.g. &quot;my/long/dir/my_histo&quot;)
Definition: DQMStore.cc:1623
double get_channel_status(std::string subdet, int eta, int phi, int depth, int type)
std::string valueString(void) const
const HcalFrontEndId getHcalFrontEndId(const DetId &)
double sd
std::string subdir_
std::map< HcalDetId, unsigned int > badstatusmap
HcalLogicalMap * logicalMap_
tuple cout
Definition: gather_cfg.py:121
TH2F * ChannelStatusUnstableLEDsignal[4]
Readout chain identification for Hcal [31:26] Unused (so far) [25] Trigger-chain id flag [24:20] Read...
DQMStore * dqmStore_
const DetId lookup(HcalElectronicsId fId) const
lookup the logical detid associated with the given electronics id
Definition: DDAxes.h:10
#define comment(par)
Definition: vmac.h:161
void HcalDetDiagLEDClient::setup ( void  )
virtual

Reimplemented from HcalBaseDQClient.

Definition at line 91 of file HcalDetDiagLEDClient.cc.

91 {}
bool HcalDetDiagLEDClient::test_enabled ( void  )
virtual

Reimplemented from HcalBaseDQClient.

Definition at line 103 of file HcalDetDiagLEDClient.cc.

103 {return true;}
void HcalDetDiagLEDClient::updateChannelStatus ( std::map< HcalDetId, unsigned int > &  myqual)
virtual

Reimplemented from HcalBaseDQClient.

Definition at line 50 of file HcalDetDiagLEDClient.cc.

50  {
51  // This gets called by HcalMonitorClient
52  // trigger primitives don't yet contribute to channel status (though they could...)
53  // see dead or hot cell code for an example
54 
55 }
bool HcalDetDiagLEDClient::validHtmlOutput ( )
virtual

Reimplemented from HcalBaseDQClient.

Definition at line 105 of file HcalDetDiagLEDClient.cc.

References HcalBaseDQClient::dqmStore_, DQMStore::get(), n, alignCSCRings::s, AlCaHLTBitMon_QueryRunRegistry::string, HcalBaseDQClient::subdir_, and MonitorElement::valueString().

105  {
106  std::string s=subdir_+"HcalDetDiagLEDMonitor Event Number";
107  MonitorElement *me = dqmStore_->get(s.c_str());
108  int n=0;
109  if ( me ) {
110  s = me->valueString();
111  sscanf((s.substr(2,s.length()-2)).c_str(), "%d", &n);
112  }
113  if(n<100) return false;
114  return true;
115 }
MonitorElement * get(const std::string &path) const
get ME from full pathname (e.g. &quot;my/long/dir/my_histo&quot;)
Definition: DQMStore.cc:1623
std::string valueString(void) const
std::string subdir_
DQMStore * dqmStore_

Member Data Documentation

TH2F* HcalDetDiagLEDClient::ChannelsLEDEnergy[4]
private

Definition at line 40 of file HcalDetDiagLEDClient.h.

Referenced by get_energy(), and htmlOutput().

TH2F* HcalDetDiagLEDClient::ChannelsLEDEnergyRef[4]
private

Definition at line 41 of file HcalDetDiagLEDClient.h.

Referenced by get_energy(), and htmlOutput().

TH2F* HcalDetDiagLEDClient::ChannelStatusLEDMean[4]
private

Definition at line 45 of file HcalDetDiagLEDClient.h.

Referenced by get_channel_status(), and htmlOutput().

TH2F* HcalDetDiagLEDClient::ChannelStatusLEDRMS[4]
private

Definition at line 46 of file HcalDetDiagLEDClient.h.

Referenced by get_channel_status(), and htmlOutput().

TH2F* HcalDetDiagLEDClient::ChannelStatusMissingChannels[4]
private

Definition at line 42 of file HcalDetDiagLEDClient.h.

Referenced by get_channel_status(), and htmlOutput().

TH2F* HcalDetDiagLEDClient::ChannelStatusTimeMean[4]
private

Definition at line 47 of file HcalDetDiagLEDClient.h.

Referenced by get_channel_status(), and htmlOutput().

TH2F* HcalDetDiagLEDClient::ChannelStatusTimeRMS[4]
private

Definition at line 48 of file HcalDetDiagLEDClient.h.

Referenced by get_channel_status(), and htmlOutput().

TH2F* HcalDetDiagLEDClient::ChannelStatusUnstableChannels[4]
private

Definition at line 43 of file HcalDetDiagLEDClient.h.

Referenced by get_channel_status(), and htmlOutput().

TH2F* HcalDetDiagLEDClient::ChannelStatusUnstableLEDsignal[4]
private

Definition at line 44 of file HcalDetDiagLEDClient.h.

Referenced by get_channel_status(), and htmlOutput().

int HcalDetDiagLEDClient::nevts_
private

Definition at line 38 of file HcalDetDiagLEDClient.h.

Referenced by beginRun().

int HcalDetDiagLEDClient::status
private