CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
SiStripQualityDQM.cc
Go to the documentation of this file.
3 #include "TCanvas.h"
4 
5 // -----
7  edm::ParameterSet const& hPSet,
8  edm::ParameterSet const& fPSet):SiStripBaseCondObjDQM(eSetup, hPSet, fPSet){
9  qualityLabel_ = fPSet.getParameter<std::string>("StripQualityLabel");
10 
11  // Build the Histo_TkMap:
12  if(HistoMaps_On_ ) Tk_HM_ = new TkHistoMap("SiStrip/Histo_Map","Quality_TkMap",0.);
13 
14 }
15 // -----
16 
17 
18 
19 // -----
21 // -----
22 
23 
24 // -----
26  getConditionObject(eSetup);
27  qualityHandle_->getDetIds(activeDetIds);
28 
29 }
30 // -----
31 
32 //================================================
33 // -----
34 void SiStripQualityDQM::fillModMEs(const std::vector<uint32_t> & selectedDetIds){
35 
36  ModMEs CondObj_ME;
37 
38  for(std::vector<uint32_t>::const_iterator detIter_ = selectedDetIds.begin();
39  detIter_!= selectedDetIds.end();detIter_++){
40  fillMEsForDet(CondObj_ME,*detIter_);
41 
42  }
43 }
44 // -----
45 
46 
47 
48 //===================================================
49 // -----
50 void SiStripQualityDQM::fillMEsForDet(ModMEs selModME_, uint32_t selDetId_){
51 
52  getModMEs(selModME_,selDetId_);
53 
54  SiStripQuality::Range qualityRange = qualityHandle_->getRange(selDetId_);
55  int nStrip = reader->getNumberOfApvsAndStripLength(selDetId_).first*128;
56 
57  for( int istrip=0;istrip<nStrip;++istrip){
58  try{
59  selModME_.ProfileDistr->Fill(istrip+1,qualityHandle_->IsStripBad(qualityRange,istrip)?0.:1.);
60 
61  }
62  catch(cms::Exception& e){
63  edm::LogError("SiStripQualityDQM")
64  << "[SiStripQualityDQM::fillMEsForDet] cms::Exception accessing qualityHandle_->IsStripBad(qualityRange,istrip)?1.:0.) for strip "
65  << istrip
66  << " and detid "
67  << selDetId_
68  << " : "
69  << e.what() ;
70  }
71 
72 
73 
74  }// istrip
75 
76 }
77 // -----
78 
79 //====================================================
80 // -----
81 void SiStripQualityDQM::fillSummaryMEs(const std::vector<uint32_t> & selectedDetIds){
82 
83  for(std::vector<uint32_t>::const_iterator detIter_ = selectedDetIds.begin();
84  detIter_!= selectedDetIds.end();detIter_++){
85  fillMEsForLayer(SummaryMEsMap_, *detIter_);
86 
87  }
88 
89  for (std::map<uint32_t, ModMEs>::iterator iter=SummaryMEsMap_.begin(); iter!=SummaryMEsMap_.end(); iter++){
90 
91  ModMEs selME;
92  selME = iter->second;
93 
94  if(hPSet_.getParameter<bool>("FillSummaryAtLayerLevel") && fPSet_.getParameter<bool>("OutputSummaryAtLayerLevelAsImage")){
95 
96  TCanvas c1("c1");
97  selME.SummaryDistr->getTH1()->Draw();
98  std::string name (selME.SummaryDistr->getTH1()->GetTitle());
99  name+=".png";
100  c1.Print(name.c_str());
101  }
102  }
103 
104 }
105 // -----
106 
107 
108 //=================================================
109 // -----
110 void SiStripQualityDQM::fillMEsForLayer( std::map<uint32_t, ModMEs> selMEsMap_, uint32_t selDetId_){
111 
112  float numberOfBadStrips=0;
113 
115 
116  if(hPSet_.getParameter<bool>("FillSummaryAtLayerLevel")){
117 
118  std::string hSummary_description;
119  hSummary_description = hPSet_.getParameter<std::string>("Summary_description");
120 
121  std::string hSummary_name;
122 
123  // ----
124  int subDetId_ = ((selDetId_>>25)&0x7);
125 
126  if( subDetId_<3 || subDetId_>6 ){
127  edm::LogError("SiStripQualityDQM")
128  << "[SiStripQualityDQM::fillMEsForLayer] WRONG INPUT : no such subdetector type : "
129  << subDetId_ << " no folder set!"
130  << std::endl;
131  return;
132  }
133  // ----
134 
135  hSummary_name = hidmanager.createHistoLayer(hSummary_description,
136  "layer",
137  getLayerNameAndId(selDetId_).first,
138  "") ;
139 
140  std::map<uint32_t, ModMEs>::iterator selMEsMapIter_ = selMEsMap_.find(getLayerNameAndId(selDetId_).second);
141 
142  ModMEs selME_;
143  selME_ =selMEsMapIter_->second;
144 
145  getSummaryMEs(selME_,selDetId_ );
146 
147 
148  std::vector<uint32_t> sameLayerDetIds_;
149  sameLayerDetIds_.clear();
150  sameLayerDetIds_=GetSameLayerDetId(activeDetIds,selDetId_);
151  // -----
152  // unsigned int iBin=0;
153 
154  //%%%%%%%%%%%%%%%%%%%
155  //%%% FIXME: patch to fix the bug causing double counting on each layer
156  //%%%%%%%%%%%%%%%%%%%%%%%
157  if(std::binary_search(alreadyFilledLayers.begin(),alreadyFilledLayers.end(),sameLayerDetIds_[0]))
158  return;
159  alreadyFilledLayers.push_back(sameLayerDetIds_[0]);
161  //%%%%%%%%%%%%%%%%%%%%%%% END %%%%%%%%%%
162 
163  for(unsigned int i=0;i< sameLayerDetIds_.size(); i++){
164 
165  SiStripQuality::Range qualityRange = qualityHandle_->getRange(sameLayerDetIds_[i]);
166  int nStrip = reader->getNumberOfApvsAndStripLength(sameLayerDetIds_[i]).first*128;
167 
168  numberOfBadStrips=0;
169 
170  for( int istrip=0;istrip<nStrip;++istrip){
171  if(qualityHandle_->IsStripBad(qualityRange,istrip)) { numberOfBadStrips++;}
172  }
173 
174  try{
175  float fr=100*float(numberOfBadStrips)/nStrip;
176  selME_.SummaryDistr->Fill(i+1,fr);
177  if(fr>20){
178  char c[9];
179  sprintf(c,"%d",sameLayerDetIds_[i]);
180  selME_.SummaryDistr->getTH1()->GetXaxis()->SetBinLabel(i+1,c);
181  }
182 
183  // Fill the TkHistoMap with Quality output :
184  if(HistoMaps_On_ ) Tk_HM_->setBinContent(sameLayerDetIds_[i], fr);
185 
186  // Fill the TkMap
187  if(fPSet_.getParameter<bool>("TkMap_On") || hPSet_.getParameter<bool>("TkMap_On")){
188  fillTkMap(sameLayerDetIds_[i], fr);
189  }
190 
191  }
192  catch(cms::Exception& e){
193  edm::LogError("SiStripQualityDQM")
194  << "[SiStripQualityDQM::fillMEsForLayer] cms::Exception filling fraction of bad strips for detId "
195  << sameLayerDetIds_[i]
196  << " : "
197  << e.what() ;
198  }
199  }
200  }//if Fill ...
201 }
202 // -----
203 
204 
205 //=============================
207 
208 
209 
210  std::string hSummary_BadObjects_xTitle = hPSet_.getParameter<std::string>("Summary_BadObjects_histo_xTitle");
211 
212  std::string hSummary_BadModules_name = hPSet_.getParameter<std::string>("Summary_BadModules_histo_name");
213  std::string hSummary_BadModules_yTitle = hPSet_.getParameter<std::string>("Summary_BadModules_histo_yTitle");
214 
215  std::string hSummary_BadFibers_name = hPSet_.getParameter<std::string>("Summary_BadFibers_histo_name");
216  std::string hSummary_BadFibers_yTitle = hPSet_.getParameter<std::string>("Summary_BadFibers_histo_yTitle");
217 
218  std::string hSummary_BadApvs_name = hPSet_.getParameter<std::string>("Summary_BadApvs_histo_name");
219  std::string hSummary_BadApvs_yTitle = hPSet_.getParameter<std::string>("Summary_BadApvs_histo_yTitle");
220 
221  std::string hSummary_BadStrips_name = hPSet_.getParameter<std::string>("Summary_BadStrips_histo_name");
222  std::string hSummary_BadStrips_yTitle = hPSet_.getParameter<std::string>("Summary_BadStrips_histo_yTitle");
223 
224  int NchX = 34;
225  double LowX = 0.5;
226  double HighX = 34.5;
227 
228 
229 
230 
231  MonitorElement *ME[4];
232 
234 
235  std::string FolderName=fPSet_.getParameter<std::string>("FolderName_For_QualityAndCabling_SummaryHistos");
236 
237  dqmStore_->setCurrentFolder(FolderName);
238 
239  ME[0] = dqmStore_->book1D(hSummary_BadModules_name,hSummary_BadModules_name,NchX,LowX,HighX);
240  ME[0]->setAxisTitle(hSummary_BadObjects_xTitle,1);
241  ME[0]->setAxisTitle(hSummary_BadModules_yTitle,2);
242 
243  ME[1] = dqmStore_->book1D(hSummary_BadFibers_name,hSummary_BadFibers_name,NchX,LowX,HighX);
244  ME[1]->setAxisTitle(hSummary_BadObjects_xTitle,1);
245  ME[1]->setAxisTitle(hSummary_BadFibers_yTitle,2);
246 
247  ME[2] = dqmStore_->book1D(hSummary_BadApvs_name,hSummary_BadApvs_name,NchX,LowX,HighX);
248  ME[2]->setAxisTitle(hSummary_BadObjects_xTitle,1);
249  ME[2]->setAxisTitle(hSummary_BadApvs_yTitle,2);
250 
251  ME[3] = dqmStore_->book1D(hSummary_BadStrips_name,hSummary_BadStrips_name,NchX,LowX,HighX);
252  ME[3]->setAxisTitle(hSummary_BadObjects_xTitle,1);
253  ME[3]->setAxisTitle(hSummary_BadStrips_yTitle,2);
254 
255 
256  //==============================
257 
258  for(int i=0;i<4;++i){
259  NTkBadComponent[i]=0;
260  for(int j=0;j<19;++j){
261  ssV[i][j].str("");
262  for(int k=0;k<4;++k)
263  NBadComponent[i][j][k]=0;
264  }
265  }
266 
267  std::stringstream ss;
268  ss.str("");
269  std::vector<uint32_t> detids=reader->getAllDetIds();
270  std::vector<uint32_t>::const_iterator idet=detids.begin();
271  for(;idet!=detids.end();++idet){
272  ss << "detid " << (*idet) << " IsModuleUsable " << qualityHandle_->IsModuleUsable((*idet)) << "\n";
273  }
274  LogDebug("SiStripQualityStatistics") << ss.str() << std::endl;
275 
276 
277  std::vector<SiStripQuality::BadComponent> BC = qualityHandle_->getBadComponentList();
278 
279  for (size_t i=0;i<BC.size();++i){
280 
281  //&&&&&&&&&&&&&
282  //Full Tk
283  //&&&&&&&&&&&&&
284 
285  if (BC[i].BadModule)
286  NTkBadComponent[0]++;
287  if (BC[i].BadFibers)
288  NTkBadComponent[1]+= ( (BC[i].BadFibers>>2)&0x1 )+ ( (BC[i].BadFibers>>1)&0x1 ) + ( (BC[i].BadFibers)&0x1 );
289  if (BC[i].BadApvs)
290  NTkBadComponent[2]+= ( (BC[i].BadApvs>>5)&0x1 )+ ( (BC[i].BadApvs>>4)&0x1 ) + ( (BC[i].BadApvs>>3)&0x1 ) +
291  ( (BC[i].BadApvs>>2)&0x1 )+ ( (BC[i].BadApvs>>1)&0x1 ) + ( (BC[i].BadApvs)&0x1 );
292 
293  //&&&&&&&&&&&&&&&&&
294  //Single SubSyste
295  //&&&&&&&&&&&&&&&&&
296 
297  int component;
298  SiStripDetId a(BC[i].detid);
299  if ( a.subdetId() == SiStripDetId::TIB ){
300  //&&&&&&&&&&&&&&&&&
301  //TIB
302  //&&&&&&&&&&&&&&&&&
303 
304  component=TIBDetId(BC[i].detid).layer();
305  SetBadComponents(0, component, BC[i]);
306 
307  } else if ( a.subdetId() == SiStripDetId::TID ) {
308  //&&&&&&&&&&&&&&&&&
309  //TID
310  //&&&&&&&&&&&&&&&&&
311 
312  component=TIDDetId(BC[i].detid).side()==2?TIDDetId(BC[i].detid).wheel():TIDDetId(BC[i].detid).wheel()+3;
313  SetBadComponents(1, component, BC[i]);
314 
315  } else if ( a.subdetId() == SiStripDetId::TOB ) {
316  //&&&&&&&&&&&&&&&&&
317  //TOB
318  //&&&&&&&&&&&&&&&&&
319 
320  component=TOBDetId(BC[i].detid).layer();
321  SetBadComponents(2, component, BC[i]);
322 
323  } else if ( a.subdetId() == SiStripDetId::TEC ) {
324  //&&&&&&&&&&&&&&&&&
325  //TEC
326  //&&&&&&&&&&&&&&&&&
327 
328  component=TECDetId(BC[i].detid).side()==2?TECDetId(BC[i].detid).wheel():TECDetId(BC[i].detid).wheel()+9;
329  SetBadComponents(3, component, BC[i]);
330 
331  }
332  }
333 
334  //&&&&&&&&&&&&&&&&&&
335  // Single Strip Info
336  //&&&&&&&&&&&&&&&&&&
337 
338  SiStripQuality::RegistryIterator rbegin = qualityHandle_->getRegistryVectorBegin();
339  SiStripQuality::RegistryIterator rend = qualityHandle_->getRegistryVectorEnd();
340 
341  for (SiStripBadStrip::RegistryIterator rp=rbegin; rp != rend; ++rp) {
342  uint32_t detid=rp->detid;
343 
344  int subdet=0;
345  int component=0;
346  SiStripDetId a(detid);
347  if ( a.subdetId() == 3 ){
348  subdet=0;
349  component=TIBDetId(detid).layer();
350  } else if ( a.subdetId() == 4 ) {
351  subdet=1;
352  component=TIDDetId(detid).side()==2?TIDDetId(detid).wheel():TIDDetId(detid).wheel()+3;
353  } else if ( a.subdetId() == 5 ) {
354  subdet=2;
355  component=TOBDetId(detid).layer();
356  } else if ( a.subdetId() == 6 ) {
357  subdet=3;
358  component=TECDetId(detid).side()==2?TECDetId(detid).wheel():TECDetId(detid).wheel()+9;
359  }
360 
361  SiStripQuality::Range sqrange = SiStripQuality::Range( qualityHandle_->getDataVectorBegin()+rp->ibegin , qualityHandle_->getDataVectorBegin()+rp->iend );
362 
363  for(int it=0;it<sqrange.second-sqrange.first;it++){
364  unsigned int range=qualityHandle_->decode( *(sqrange.first+it) ).range;
365  NTkBadComponent[3]+=range;
366  NBadComponent[subdet][0][3]+=range;
367  NBadComponent[subdet][component][3]+=range;
368  }
369  }
370 
371 
372  //&&&&&&&&&&&&&&&&&&
373  // printout
374  //&&&&&&&&&&&&&&&&&&
375 
376  ss.str("");
377  ss << "\n-----------------\nGlobal Info\n-----------------";
378  ss << "\nBadComponent \t Modules \tFibers \tApvs\tStrips\n----------------------------------------------------------------";
379  ss << "\nTracker:\t\t"<<NTkBadComponent[0]<<"\t"<<NTkBadComponent[1]<<"\t"<<NTkBadComponent[2]<<"\t"<<NTkBadComponent[3];
380  ss<< "\n";
381  ss << "\nTIB:\t\t\t"<<NBadComponent[0][0][0]<<"\t"<<NBadComponent[0][0][1]<<"\t"<<NBadComponent[0][0][2]<<"\t"<<NBadComponent[0][0][3];
382  ss << "\nTID:\t\t\t"<<NBadComponent[1][0][0]<<"\t"<<NBadComponent[1][0][1]<<"\t"<<NBadComponent[1][0][2]<<"\t"<<NBadComponent[1][0][3];
383  ss << "\nTOB:\t\t\t"<<NBadComponent[2][0][0]<<"\t"<<NBadComponent[2][0][1]<<"\t"<<NBadComponent[2][0][2]<<"\t"<<NBadComponent[2][0][3];
384  ss << "\nTEC:\t\t\t"<<NBadComponent[3][0][0]<<"\t"<<NBadComponent[3][0][1]<<"\t"<<NBadComponent[3][0][2]<<"\t"<<NBadComponent[3][0][3];
385  ss << "\n";
386 
387  for (int i=1;i<5;++i){
388  ss << "\nTIB Layer " << i << " :\t\t"<<NBadComponent[0][i][0]<<"\t"<<NBadComponent[0][i][1]<<"\t"<<NBadComponent[0][i][2]<<"\t"<<NBadComponent[0][i][3];
389  std::stringstream binlabel;
390  binlabel<<"TIB L "<<i;
391 
392  for(int j=0;j<4;j++){
393  ME[j]->Fill(i,NBadComponent[0][i][j]);
394  ME[j]->getTH1()->GetXaxis()->SetBinLabel(i,binlabel.str().c_str());
395  }
396  }
397  ss << "\n";
398  for (int i=1;i<4;++i){
399  ss << "\nTID+ Disk " << i << " :\t\t"<<NBadComponent[1][i][0]<<"\t"<<NBadComponent[1][i][1]<<"\t"<<NBadComponent[1][i][2]<<"\t"<<NBadComponent[1][i][3];
400  std::stringstream binlabel;
401  binlabel<<"TID+ D "<<i;
402 
403  for(int j=0;j<4;j++){
404  ME[j]->Fill(i+4,NBadComponent[1][i][j]);
405  ME[j]->getTH1()->GetXaxis()->SetBinLabel(i+4,binlabel.str().c_str());
406  }
407  }
408  for (int i=4;i<7;++i){
409  ss << "\nTID- Disk " << i-3 << " :\t\t"<<NBadComponent[1][i][0]<<"\t"<<NBadComponent[1][i][1]<<"\t"<<NBadComponent[1][i][2]<<"\t"<<NBadComponent[1][i][3];
410  std::stringstream binlabel;
411  binlabel<<"TID- D "<<i-3;
412 
413  for(int j=0;j<4;j++){
414  ME[j]->Fill(i+4,NBadComponent[1][i][j]);
415  ME[j]->getTH1()->GetXaxis()->SetBinLabel(i+4,binlabel.str().c_str());
416  }
417  }
418  ss << "\n";
419  for (int i=1;i<7;++i){
420  ss << "\nTOB Layer " << i << " :\t\t"<<NBadComponent[2][i][0]<<"\t"<<NBadComponent[2][i][1]<<"\t"<<NBadComponent[2][i][2]<<"\t"<<NBadComponent[2][i][3];
421  std::stringstream binlabel;
422  binlabel<<"TOB L "<<i;
423 
424  for(int j=0;j<4;j++){
425  ME[j]->Fill(i+10,NBadComponent[2][i][j]);
426  ME[j]->getTH1()->GetXaxis()->SetBinLabel(i+10,binlabel.str().c_str());
427  }
428  }
429  ss << "\n";
430  for (int i=1;i<10;++i){
431  ss << "\nTEC+ Disk " << i << " :\t\t"<<NBadComponent[3][i][0]<<"\t"<<NBadComponent[3][i][1]<<"\t"<<NBadComponent[3][i][2]<<"\t"<<NBadComponent[3][i][3];
432  std::stringstream binlabel;
433  binlabel<<"TEC+ D "<<i;
434 
435  for(int j=0;j<4;j++){
436  ME[j]->Fill(i+16,NBadComponent[3][i][j]);
437  ME[j]->getTH1()->GetXaxis()->SetBinLabel(i+16,binlabel.str().c_str());
438  }
439  }
440  for (int i=10;i<19;++i){
441  ss << "\nTEC- Disk " << i-9 << " :\t\t"<<NBadComponent[3][i][0]<<"\t"<<NBadComponent[3][i][1]<<"\t"<<NBadComponent[3][i][2]<<"\t"<<NBadComponent[3][i][3];
442  std::stringstream binlabel;
443  binlabel<<"TEC- D "<<i-9;
444 
445  for(int j=0;j<4;j++){
446  ME[j]->Fill(i+16,NBadComponent[3][i][j]);
447  ME[j]->getTH1()->GetXaxis()->SetBinLabel(i+16,binlabel.str().c_str());
448  }
449  }
450  ss<< "\n";
451 
452  ss << "\n----------------------------------------------------------------\n\t\t Detid \tModules Fibers Apvs\n----------------------------------------------------------------";
453  for (int i=1;i<5;++i)
454  ss << "\nTIB Layer " << i << " :" << ssV[0][i].str();
455  ss << "\n";
456  for (int i=1;i<4;++i)
457  ss << "\nTID+ Disk " << i << " :" << ssV[1][i].str();
458  for (int i=4;i<7;++i)
459  ss << "\nTID- Disk " << i-3 << " :" << ssV[1][i].str();
460  ss << "\n";
461  for (int i=1;i<7;++i)
462  ss << "\nTOB Layer " << i << " :" << ssV[2][i].str();
463  ss << "\n";
464  for (int i=1;i<10;++i)
465  ss << "\nTEC+ Disk " << i << " :" << ssV[3][i].str();
466  for (int i=10;i<19;++i)
467  ss << "\nTEC- Disk " << i-9 << " :" << ssV[3][i].str();
468 
469 
470  edm::LogInfo("SiStripQualityStatistics") << ss.str() << std::endl;
471 
472  for (int i=0; i<4; i++){
473  TCanvas c1("c1");
474  ME[i]->getTH1()->Draw();
475  std::string name (ME[i]->getTH1()->GetTitle());
476  name+=".png";
477  c1.Print(name.c_str());
478  }
479 
480 
481 }
482 
483 //=====================
485 
486  int napv=reader->getNumberOfApvsAndStripLength(BC.detid).first;
487 
488  ssV[i][component] << "\n\t\t "
489  << BC.detid
490  << " \t " << BC.BadModule << " \t "
491  << ( (BC.BadFibers)&0x1 ) << " ";
492  if (napv==4)
493  ssV[i][component] << "x " <<( (BC.BadFibers>>1)&0x1 );
494 
495  if (napv==6)
496  ssV[i][component] << ( (BC.BadFibers>>1)&0x1 ) << " "
497  << ( (BC.BadFibers>>2)&0x1 );
498  ssV[i][component] << " \t "
499  << ( (BC.BadApvs)&0x1 ) << " "
500  << ( (BC.BadApvs>>1)&0x1 ) << " ";
501  if (napv==4)
502  ssV[i][component] << "x x " << ( (BC.BadApvs>>2)&0x1 ) << " "
503  << ( (BC.BadApvs>>3)&0x1 );
504  if (napv==6)
505  ssV[i][component] << ( (BC.BadApvs>>2)&0x1 ) << " "
506  << ( (BC.BadApvs>>3)&0x1 ) << " "
507  << ( (BC.BadApvs>>4)&0x1 ) << " "
508  << ( (BC.BadApvs>>5)&0x1 ) << " ";
509 
510  if (BC.BadApvs){
511  NBadComponent[i][0][2]+= ( (BC.BadApvs>>5)&0x1 )+ ( (BC.BadApvs>>4)&0x1 ) + ( (BC.BadApvs>>3)&0x1 ) +
512  ( (BC.BadApvs>>2)&0x1 )+ ( (BC.BadApvs>>1)&0x1 ) + ( (BC.BadApvs)&0x1 );
513  NBadComponent[i][component][2]+= ( (BC.BadApvs>>5)&0x1 )+ ( (BC.BadApvs>>4)&0x1 ) + ( (BC.BadApvs>>3)&0x1 ) +
514  ( (BC.BadApvs>>2)&0x1 )+ ( (BC.BadApvs>>1)&0x1 ) + ( (BC.BadApvs)&0x1 );
515  // tkMap->fillc(BC.detid,0xff0000);
516  }
517  if (BC.BadFibers){
518  NBadComponent[i][0][1]+= ( (BC.BadFibers>>2)&0x1 )+ ( (BC.BadFibers>>1)&0x1 ) + ( (BC.BadFibers)&0x1 );
519  NBadComponent[i][component][1]+= ( (BC.BadFibers>>2)&0x1 )+ ( (BC.BadFibers>>1)&0x1 ) + ( (BC.BadFibers)&0x1 );
520  // tkMap->fillc(BC.detid,0x0000ff);
521  }
522  if (BC.BadModule){
523  NBadComponent[i][0][0]++;
524  NBadComponent[i][component][0]++;
525  // tkMap->fillc(BC.detid,0x0);
526  }
527 }
528 
#define LogDebug(id)
void getModMEs(ModMEs &CondObj_ME, const uint32_t &detId_)
virtual char const * what() const
Definition: Exception.cc:97
T getParameter(std::string const &) const
int i
Definition: DBlmapReader.cc:9
int NBadComponent[4][19][4]
ADDITON OF TK_HISTO_MAP.
unsigned int layer() const
layer id
Definition: TOBDetId.h:39
MonitorElement * book1D(const char *name, const char *title, int nchX, double lowX, double highX)
Book 1D histogram.
Definition: DQMStore.cc:519
const std::pair< unsigned short, double > getNumberOfApvsAndStripLength(uint32_t detId) const
std::vector< uint32_t > GetSameLayerDetId(std::vector< uint32_t > activeDetIds, uint32_t selDetId)
void fillMEsForLayer(std::map< uint32_t, ModMEs > selModMEsMap_, uint32_t selDetId_)
Registry::const_iterator RegistryIterator
void fillModMEs(const std::vector< uint32_t > &selectedDetIds)
void fillTkMap(const uint32_t &detid, const float &value)
unsigned int side() const
positive or negative id
Definition: TECDetId.h:47
void Fill(long long x)
U second(std::pair< T, U > const &p)
Definition: ME.h:11
void getActiveDetIds(const edm::EventSetup &eSetup)
std::map< uint32_t, ModMEs > SummaryMEsMap_
const std::vector< uint32_t > & getAllDetIds() const
SiStripDetInfoFileReader * reader
std::stringstream ssV[4][19]
void SetBadComponents(int i, int component, SiStripQuality::BadComponent &BC)
int j
Definition: DBlmapReader.cc:9
TH1 * getTH1(void) const
void fillMEsForDet(ModMEs selModME_, uint32_t selDetId_)
bool first
Definition: L1TdeRCT.cc:79
int subdetId() const
get the contents of the subdetector field (not cast into any detector&#39;s numbering enum) ...
Definition: DetId.h:39
int k[5][pyjets_maxn]
Detector identifier class for the strip tracker.
Definition: SiStripDetId.h:17
void setBinContent(uint32_t &detid, float value)
Definition: TkHistoMap.cc:146
virtual ~SiStripQualityDQM()
void fillSummaryMEs(const std::vector< uint32_t > &selectedDetIds)
unsigned int side() const
positive or negative id
Definition: TIDDetId.h:45
std::vector< uint32_t > alreadyFilledLayers
unsigned int wheel() const
wheel id
Definition: TECDetId.h:52
std::pair< std::string, uint32_t > getLayerNameAndId(const uint32_t &detId_)
unsigned int layer() const
layer id
Definition: TIBDetId.h:41
double a
Definition: hdecay.h:121
std::pair< ContainerIterator, ContainerIterator > Range
std::string qualityLabel_
std::vector< uint32_t > activeDetIds
edm::ESHandle< SiStripQuality > qualityHandle_
void getConditionObject(const edm::EventSetup &eSetup)
std::string createHistoLayer(std::string description, std::string id_type, std::string path, std::string flag)
void getSummaryMEs(ModMEs &CondObj_ME, const uint32_t &detId_)
void setAxisTitle(const std::string &title, int axis=1)
set x-, y- or z-axis title (axis=1, 2, 3 respectively)
SiStripQualityDQM(const edm::EventSetup &eSetup, edm::ParameterSet const &hPSet, edm::ParameterSet const &fPSet)
void setCurrentFolder(const std::string &fullpath)
Definition: DQMStore.cc:237
unsigned int wheel() const
wheel id
Definition: TIDDetId.h:50