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
SiStripQualityDQM Class Reference

#include <SiStripQualityDQM.h>

Inheritance diagram for SiStripQualityDQM:
SiStripBaseCondObjDQM

Public Member Functions

void fillGrandSummaryMEs ()
 
void fillMEsForDet (ModMEs selModME_, uint32_t selDetId_)
 
void fillMEsForLayer (uint32_t selDetId_)
 
void fillModMEs (const std::vector< uint32_t > &selectedDetIds)
 
void fillSummaryMEs (const std::vector< uint32_t > &selectedDetIds)
 
void getActiveDetIds (const edm::EventSetup &eSetup)
 
unsigned long long getCache (const edm::EventSetup &eSetup)
 
void getConditionObject (const edm::EventSetup &eSetup)
 
 SiStripQualityDQM (const edm::EventSetup &eSetup, edm::ParameterSet const &hPSet, edm::ParameterSet const &fPSet)
 
virtual ~SiStripQualityDQM ()
 
- Public Member Functions inherited from SiStripBaseCondObjDQM
void analysis (const edm::EventSetup &eSetup_)
 
void analysisOnDemand (const edm::EventSetup &eSetup_, uint32_t detIdOnDemand)
 
void analysisOnDemand (const edm::EventSetup &eSetup_, std::vector< uint32_t > detIdsOnDemand)
 
void analysisOnDemand (const edm::EventSetup &eSetup_, std::string requestedSubDetector, uint32_t requestedSide, uint32_t requestedLayer)
 
virtual void end ()
 
std::vector< uint32_t > getCabledModules ()
 
void selectModules (std::vector< uint32_t > &detIds_)
 
 SiStripBaseCondObjDQM (const edm::EventSetup &eSetup, edm::ParameterSet const &hPSet, edm::ParameterSet const &fPSet)
 
virtual ~SiStripBaseCondObjDQM ()
 

Private Member Functions

void SetBadComponents (int i, int component, SiStripQuality::BadComponent &BC)
 

Private Attributes

std::vector< uint32_t > alreadyFilledLayers
 
int NBadComponent [4][19][4]
 
int NTkBadComponent [4]
 
edm::ESHandle< SiStripQualityqualityHandle_
 
std::string qualityLabel_
 
std::stringstream ssV [4][19]
 

Additional Inherited Members

- Protected Member Functions inherited from SiStripBaseCondObjDQM
void fillTkMap (const uint32_t &detid, const float &value)
 
std::pair< std::string, uint32_t > getLayerNameAndId (const uint32_t &detId_)
 
void getModMEs (ModMEs &CondObj_ME, const uint32_t &detId_)
 
std::vector< uint32_t > GetSameLayerDetId (std::vector< uint32_t > activeDetIds, uint32_t selDetId)
 
std::pair< std::string, uint32_t > getStringNameAndId (const uint32_t &detId_)
 
void getSummaryMEs (ModMEs &CondObj_ME, const uint32_t &detId_)
 
- Protected Attributes inherited from SiStripBaseCondObjDQM
std::vector< uint32_t > activeDetIds
 
std::vector< uint32_t > all_DetIds
 
unsigned long long cacheID_current
 
unsigned long long cacheID_memory
 
std::string CondObj_fillId_
 
std::string CondObj_name_
 
const edm::EventSetupeSetup_
 
edm::ParameterSet fPSet_
 
bool GrandSummary_On_
 
bool HistoMaps_On_
 
edm::ParameterSet hPSet_
 
double maxValue
 
double minValue
 
bool Mod_On_
 
std::map< uint32_t, ModMEsModMEsMap_
 
SiStripDetInfoFileReaderreader
 
std::map< uint32_t, ModMEsSummaryMEsMap_
 
bool SummaryOnLayerLevel_On_
 
bool SummaryOnStringLevel_On_
 
TkHistoMapTk_HM_
 
TkHistoMapTk_HM_H
 
TkHistoMapTk_HM_L
 
TrackerMaptkMap
 
std::vector< int > tkMapScaler
 

Detailed Description

Definition at line 29 of file SiStripQualityDQM.h.

Constructor & Destructor Documentation

SiStripQualityDQM::SiStripQualityDQM ( const edm::EventSetup eSetup,
edm::ParameterSet const &  hPSet,
edm::ParameterSet const &  fPSet 
)

Definition at line 6 of file SiStripQualityDQM.cc.

References edm::ParameterSet::getParameter(), SiStripBaseCondObjDQM::HistoMaps_On_, qualityLabel_, and SiStripBaseCondObjDQM::Tk_HM_.

8  :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 }
SiStripBaseCondObjDQM(const edm::EventSetup &eSetup, edm::ParameterSet const &hPSet, edm::ParameterSet const &fPSet)
std::string qualityLabel_
SiStripQualityDQM::~SiStripQualityDQM ( )
virtual

Definition at line 20 of file SiStripQualityDQM.cc.

20 {}

Member Function Documentation

void SiStripQualityDQM::fillGrandSummaryMEs ( )

Definition at line 183 of file SiStripQualityDQM.cc.

References a, DQMStore::book1D(), alignmentValidation::c1, cond::rpcobgas::detid, SiStripBaseCondObjDQM::dqmStore_, MonitorElement::Fill(), SiStripBaseCondObjDQM::fPSet_, SiStripDetInfoFileReader::getAllDetIds(), edm::ParameterSet::getParameter(), MonitorElement::getTH1(), SiStripBaseCondObjDQM::hPSet_, i, j, gen::k, TOBDetId::layer(), TIBDetId::layer(), LogDebug, mergeVDriftHistosByStation::name, NBadComponent, NTkBadComponent, cppFunctionSkipper::operator, qualityHandle_, SiStripBaseCondObjDQM::reader, MonitorElement::setAxisTitle(), SetBadComponents(), DQMStore::setCurrentFolder(), TIDDetId::side(), TECDetId::side(), ssV, DetId::subdetId(), SiStripDetId::TEC, SiStripDetId::TIB, SiStripDetId::TID, SiStripDetId::TOB, TIDDetId::wheel(), and TECDetId::wheel().

Referenced by SiStripClassToMonitorCondData::analyseCondData(), SiStripMonitorCondData::analyze(), SiStripClassToMonitorCondData::getLayerMEsOnDemand(), and SiStripClassToMonitorCondData::getModMEsOnDemand().

183  {
184 
185 
186 
187  std::string hSummary_BadObjects_xTitle = hPSet_.getParameter<std::string>("Summary_BadObjects_histo_xTitle");
188 
189  std::string hSummary_BadModules_name = hPSet_.getParameter<std::string>("Summary_BadModules_histo_name");
190  std::string hSummary_BadModules_yTitle = hPSet_.getParameter<std::string>("Summary_BadModules_histo_yTitle");
191 
192  std::string hSummary_BadFibers_name = hPSet_.getParameter<std::string>("Summary_BadFibers_histo_name");
193  std::string hSummary_BadFibers_yTitle = hPSet_.getParameter<std::string>("Summary_BadFibers_histo_yTitle");
194 
195  std::string hSummary_BadApvs_name = hPSet_.getParameter<std::string>("Summary_BadApvs_histo_name");
196  std::string hSummary_BadApvs_yTitle = hPSet_.getParameter<std::string>("Summary_BadApvs_histo_yTitle");
197 
198  std::string hSummary_BadStrips_name = hPSet_.getParameter<std::string>("Summary_BadStrips_histo_name");
199  std::string hSummary_BadStrips_yTitle = hPSet_.getParameter<std::string>("Summary_BadStrips_histo_yTitle");
200 
201  int NchX = 34;
202  double LowX = 0.5;
203  double HighX = 34.5;
204 
205 
206 
207 
208  MonitorElement *ME[4];
209 
211 
212  std::string FolderName=fPSet_.getParameter<std::string>("FolderName_For_QualityAndCabling_SummaryHistos");
213 
214  dqmStore_->setCurrentFolder(FolderName);
215 
216  ME[0] = dqmStore_->book1D(hSummary_BadModules_name,hSummary_BadModules_name,NchX,LowX,HighX);
217  ME[0]->setAxisTitle(hSummary_BadObjects_xTitle,1);
218  ME[0]->setAxisTitle(hSummary_BadModules_yTitle,2);
219 
220  ME[1] = dqmStore_->book1D(hSummary_BadFibers_name,hSummary_BadFibers_name,NchX,LowX,HighX);
221  ME[1]->setAxisTitle(hSummary_BadObjects_xTitle,1);
222  ME[1]->setAxisTitle(hSummary_BadFibers_yTitle,2);
223 
224  ME[2] = dqmStore_->book1D(hSummary_BadApvs_name,hSummary_BadApvs_name,NchX,LowX,HighX);
225  ME[2]->setAxisTitle(hSummary_BadObjects_xTitle,1);
226  ME[2]->setAxisTitle(hSummary_BadApvs_yTitle,2);
227 
228  ME[3] = dqmStore_->book1D(hSummary_BadStrips_name,hSummary_BadStrips_name,NchX,LowX,HighX);
229  ME[3]->setAxisTitle(hSummary_BadObjects_xTitle,1);
230  ME[3]->setAxisTitle(hSummary_BadStrips_yTitle,2);
231 
232 
233  //==============================
234 
235  for(int i=0;i<4;++i){
236  NTkBadComponent[i]=0;
237  for(int j=0;j<19;++j){
238  ssV[i][j].str("");
239  for(int k=0;k<4;++k)
240  NBadComponent[i][j][k]=0;
241  }
242  }
243 
244  std::stringstream ss;
245  ss.str("");
246  std::vector<uint32_t> detids=reader->getAllDetIds();
247  std::vector<uint32_t>::const_iterator idet=detids.begin();
248  for(;idet!=detids.end();++idet){
249  ss << "detid " << (*idet) << " IsModuleUsable " << qualityHandle_->IsModuleUsable((*idet)) << "\n";
250  }
251  LogDebug("SiStripQualityDQM") << ss.str() << std::endl;
252 
253 
254  std::vector<SiStripQuality::BadComponent> BC = qualityHandle_->getBadComponentList();
255 
256  for (size_t i=0;i<BC.size();++i){
257 
258  //&&&&&&&&&&&&&
259  //Full Tk
260  //&&&&&&&&&&&&&
261 
262  if (BC[i].BadModule)
263  NTkBadComponent[0]++;
264  if (BC[i].BadFibers)
265  NTkBadComponent[1]+= ( (BC[i].BadFibers>>2)&0x1 )+ ( (BC[i].BadFibers>>1)&0x1 ) + ( (BC[i].BadFibers)&0x1 );
266  if (BC[i].BadApvs)
267  NTkBadComponent[2]+= ( (BC[i].BadApvs>>5)&0x1 )+ ( (BC[i].BadApvs>>4)&0x1 ) + ( (BC[i].BadApvs>>3)&0x1 ) +
268  ( (BC[i].BadApvs>>2)&0x1 )+ ( (BC[i].BadApvs>>1)&0x1 ) + ( (BC[i].BadApvs)&0x1 );
269 
270  //&&&&&&&&&&&&&&&&&
271  //Single SubSyste
272  //&&&&&&&&&&&&&&&&&
273 
274  int component;
275  SiStripDetId a(BC[i].detid);
276  if ( a.subdetId() == SiStripDetId::TIB ){
277  //&&&&&&&&&&&&&&&&&
278  //TIB
279  //&&&&&&&&&&&&&&&&&
280 
281  component=TIBDetId(BC[i].detid).layer();
282  SetBadComponents(0, component, BC[i]);
283 
284  } else if ( a.subdetId() == SiStripDetId::TID ) {
285  //&&&&&&&&&&&&&&&&&
286  //TID
287  //&&&&&&&&&&&&&&&&&
288 
289  component=TIDDetId(BC[i].detid).side()==2?TIDDetId(BC[i].detid).wheel():TIDDetId(BC[i].detid).wheel()+3;
290  SetBadComponents(1, component, BC[i]);
291 
292  } else if ( a.subdetId() == SiStripDetId::TOB ) {
293  //&&&&&&&&&&&&&&&&&
294  //TOB
295  //&&&&&&&&&&&&&&&&&
296 
297  component=TOBDetId(BC[i].detid).layer();
298  SetBadComponents(2, component, BC[i]);
299 
300  } else if ( a.subdetId() == SiStripDetId::TEC ) {
301  //&&&&&&&&&&&&&&&&&
302  //TEC
303  //&&&&&&&&&&&&&&&&&
304 
305  component=TECDetId(BC[i].detid).side()==2?TECDetId(BC[i].detid).wheel():TECDetId(BC[i].detid).wheel()+9;
306  SetBadComponents(3, component, BC[i]);
307 
308  }
309  }
310 
311  //&&&&&&&&&&&&&&&&&&
312  // Single Strip Info
313  //&&&&&&&&&&&&&&&&&&
314 
315  SiStripQuality::RegistryIterator rbegin = qualityHandle_->getRegistryVectorBegin();
316  SiStripQuality::RegistryIterator rend = qualityHandle_->getRegistryVectorEnd();
317 
318  for (SiStripBadStrip::RegistryIterator rp=rbegin; rp != rend; ++rp) {
319  uint32_t detid=rp->detid;
320 
321  int subdet=0;
322  int component=0;
323  SiStripDetId a(detid);
324  if ( a.subdetId() == 3 ){
325  subdet=0;
326  component=TIBDetId(detid).layer();
327  } else if ( a.subdetId() == 4 ) {
328  subdet=1;
329  component=TIDDetId(detid).side()==2?TIDDetId(detid).wheel():TIDDetId(detid).wheel()+3;
330  } else if ( a.subdetId() == 5 ) {
331  subdet=2;
332  component=TOBDetId(detid).layer();
333  } else if ( a.subdetId() == 6 ) {
334  subdet=3;
335  component=TECDetId(detid).side()==2?TECDetId(detid).wheel():TECDetId(detid).wheel()+9;
336  }
337 
338  SiStripQuality::Range sqrange = SiStripQuality::Range( qualityHandle_->getDataVectorBegin()+rp->ibegin , qualityHandle_->getDataVectorBegin()+rp->iend );
339 
340  for(int it=0;it<sqrange.second-sqrange.first;it++){
341  unsigned int range=qualityHandle_->decode( *(sqrange.first+it) ).range;
342  NTkBadComponent[3]+=range;
343  NBadComponent[subdet][0][3]+=range;
344  NBadComponent[subdet][component][3]+=range;
345  }
346  }
347 
348 
349  //&&&&&&&&&&&&&&&&&&
350  // printout
351  //&&&&&&&&&&&&&&&&&&
352 
353  ss.str("");
354  ss << "\n-----------------\nGlobal Info\n-----------------";
355  ss << "\nBadComponent \t Modules \tFibers \tApvs\tStrips\n----------------------------------------------------------------";
356  ss << "\nTracker:\t\t"<<NTkBadComponent[0]<<"\t"<<NTkBadComponent[1]<<"\t"<<NTkBadComponent[2]<<"\t"<<NTkBadComponent[3];
357  ss<< "\n";
358  ss << "\nTIB:\t\t\t"<<NBadComponent[0][0][0]<<"\t"<<NBadComponent[0][0][1]<<"\t"<<NBadComponent[0][0][2]<<"\t"<<NBadComponent[0][0][3];
359  ss << "\nTID:\t\t\t"<<NBadComponent[1][0][0]<<"\t"<<NBadComponent[1][0][1]<<"\t"<<NBadComponent[1][0][2]<<"\t"<<NBadComponent[1][0][3];
360  ss << "\nTOB:\t\t\t"<<NBadComponent[2][0][0]<<"\t"<<NBadComponent[2][0][1]<<"\t"<<NBadComponent[2][0][2]<<"\t"<<NBadComponent[2][0][3];
361  ss << "\nTEC:\t\t\t"<<NBadComponent[3][0][0]<<"\t"<<NBadComponent[3][0][1]<<"\t"<<NBadComponent[3][0][2]<<"\t"<<NBadComponent[3][0][3];
362  ss << "\n";
363 
364  for (int i=1;i<5;++i){
365  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];
366  std::stringstream binlabel;
367  binlabel<<"TIB L "<<i;
368 
369  for(int j=0;j<4;j++){
370  ME[j]->Fill(i,NBadComponent[0][i][j]);
371  ME[j]->getTH1()->GetXaxis()->SetBinLabel(i,binlabel.str().c_str());
372  }
373  }
374  ss << "\n";
375  for (int i=1;i<4;++i){
376  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];
377  std::stringstream binlabel;
378  binlabel<<"TID+ D "<<i;
379 
380  for(int j=0;j<4;j++){
381  ME[j]->Fill(i+4,NBadComponent[1][i][j]);
382  ME[j]->getTH1()->GetXaxis()->SetBinLabel(i+4,binlabel.str().c_str());
383  }
384  }
385  for (int i=4;i<7;++i){
386  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];
387  std::stringstream binlabel;
388  binlabel<<"TID- D "<<i-3;
389 
390  for(int j=0;j<4;j++){
391  ME[j]->Fill(i+4,NBadComponent[1][i][j]);
392  ME[j]->getTH1()->GetXaxis()->SetBinLabel(i+4,binlabel.str().c_str());
393  }
394  }
395  ss << "\n";
396  for (int i=1;i<7;++i){
397  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];
398  std::stringstream binlabel;
399  binlabel<<"TOB L "<<i;
400 
401  for(int j=0;j<4;j++){
402  ME[j]->Fill(i+10,NBadComponent[2][i][j]);
403  ME[j]->getTH1()->GetXaxis()->SetBinLabel(i+10,binlabel.str().c_str());
404  }
405  }
406  ss << "\n";
407  for (int i=1;i<10;++i){
408  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];
409  std::stringstream binlabel;
410  binlabel<<"TEC+ D "<<i;
411 
412  for(int j=0;j<4;j++){
413  ME[j]->Fill(i+16,NBadComponent[3][i][j]);
414  ME[j]->getTH1()->GetXaxis()->SetBinLabel(i+16,binlabel.str().c_str());
415  }
416  }
417  for (int i=10;i<19;++i){
418  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];
419  std::stringstream binlabel;
420  binlabel<<"TEC- D "<<i-9;
421 
422  for(int j=0;j<4;j++){
423  ME[j]->Fill(i+16,NBadComponent[3][i][j]);
424  ME[j]->getTH1()->GetXaxis()->SetBinLabel(i+16,binlabel.str().c_str());
425  }
426  }
427  ss<< "\n";
428 
429  ss << "\n----------------------------------------------------------------\n\t\t Detid \tModules Fibers Apvs\n----------------------------------------------------------------";
430  for (int i=1;i<5;++i)
431  ss << "\nTIB Layer " << i << " :" << ssV[0][i].str();
432  ss << "\n";
433  for (int i=1;i<4;++i)
434  ss << "\nTID+ Disk " << i << " :" << ssV[1][i].str();
435  for (int i=4;i<7;++i)
436  ss << "\nTID- Disk " << i-3 << " :" << ssV[1][i].str();
437  ss << "\n";
438  for (int i=1;i<7;++i)
439  ss << "\nTOB Layer " << i << " :" << ssV[2][i].str();
440  ss << "\n";
441  for (int i=1;i<10;++i)
442  ss << "\nTEC+ Disk " << i << " :" << ssV[3][i].str();
443  for (int i=10;i<19;++i)
444  ss << "\nTEC- Disk " << i-9 << " :" << ssV[3][i].str();
445 
446 
447  edm::LogInfo("SiStripQualityDQM") << ss.str() << std::endl;
448 
449  for (int i=0; i<4; i++){
450  TCanvas c1("c1");
451  ME[i]->getTH1()->Draw();
452  std::string name (ME[i]->getTH1()->GetTitle());
453  name+=".png";
454  c1.Print(name.c_str());
455  }
456 
457 
458 }
#define LogDebug(id)
T getParameter(std::string const &) const
int i
Definition: DBlmapReader.cc:9
int NBadComponent[4][19][4]
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:717
Registry::const_iterator RegistryIterator
unsigned int side() const
positive or negative id
Definition: TECDetId.h:47
Definition: ME.h:11
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
int k[5][pyjets_maxn]
Detector identifier class for the strip tracker.
Definition: SiStripDetId.h:17
unsigned int side() const
positive or negative id
Definition: TIDDetId.h:45
unsigned int wheel() const
wheel id
Definition: TECDetId.h:52
unsigned int layer() const
layer id
Definition: TIBDetId.h:41
double a
Definition: hdecay.h:121
std::pair< ContainerIterator, ContainerIterator > Range
edm::ESHandle< SiStripQuality > qualityHandle_
void setCurrentFolder(const std::string &fullpath)
Definition: DQMStore.cc:429
unsigned int wheel() const
wheel id
Definition: TIDDetId.h:50
void SiStripQualityDQM::fillMEsForDet ( ModMEs  selModME_,
uint32_t  selDetId_ 
)
virtual

Implements SiStripBaseCondObjDQM.

Definition at line 50 of file SiStripQualityDQM.cc.

References MonitorElement::Fill(), SiStripBaseCondObjDQM::getModMEs(), SiStripDetInfoFileReader::getNumberOfApvsAndStripLength(), SiStripBaseCondObjDQM::ModMEs::ProfileDistr, qualityHandle_, and SiStripBaseCondObjDQM::reader.

Referenced by fillModMEs().

50  {
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  selModME_.ProfileDistr->Fill(istrip+1,qualityHandle_->IsStripBad(qualityRange,istrip)?0.:1.);
59 
60  }// istrip
61 
62 }
void getModMEs(ModMEs &CondObj_ME, const uint32_t &detId_)
const std::pair< unsigned short, double > getNumberOfApvsAndStripLength(uint32_t detId) const
SiStripDetInfoFileReader * reader
std::pair< ContainerIterator, ContainerIterator > Range
edm::ESHandle< SiStripQuality > qualityHandle_
void SiStripQualityDQM::fillMEsForLayer ( uint32_t  selDetId_)
virtual

Implements SiStripBaseCondObjDQM.

Definition at line 96 of file SiStripQualityDQM.cc.

References SiStripBaseCondObjDQM::activeDetIds, alreadyFilledLayers, trackerHits::c, SiStripHistoId::createHistoLayer(), MonitorElement::Fill(), SiStripBaseCondObjDQM::fillTkMap(), first, SiStripBaseCondObjDQM::fPSet_, SiStripBaseCondObjDQM::getLayerNameAndId(), SiStripDetInfoFileReader::getNumberOfApvsAndStripLength(), edm::ParameterSet::getParameter(), SiStripBaseCondObjDQM::GetSameLayerDetId(), SiStripBaseCondObjDQM::getSummaryMEs(), MonitorElement::getTH1(), SiStripBaseCondObjDQM::hidmanager, SiStripBaseCondObjDQM::HistoMaps_On_, SiStripBaseCondObjDQM::hPSet_, i, qualityHandle_, SiStripBaseCondObjDQM::reader, edm::second(), TkHistoMap::setBinContent(), python.multivaluedict::sort(), SiStripBaseCondObjDQM::ModMEs::SummaryDistr, SiStripBaseCondObjDQM::SummaryMEsMap_, and SiStripBaseCondObjDQM::Tk_HM_.

Referenced by fillSummaryMEs().

96  {
97 
98  float numberOfBadStrips=0;
99 
101 
102  if(hPSet_.getParameter<bool>("FillSummaryAtLayerLevel")){
103 
104  std::string hSummary_description;
105  hSummary_description = hPSet_.getParameter<std::string>("Summary_description");
106 
107  std::string hSummary_name;
108 
109  // ----
110  int subDetId_ = ((selDetId_>>25)&0x7);
111 
112  if( subDetId_<3 || subDetId_>6 ){
113  edm::LogError("SiStripQualityDQM")
114  << "[SiStripQualityDQM::fillMEsForLayer] WRONG INPUT : no such subdetector type : "
115  << subDetId_ << " no folder set!"
116  << std::endl;
117  return;
118  }
119  // ----
120 
121  hSummary_name = hidmanager.createHistoLayer(hSummary_description,
122  "layer",
123  getLayerNameAndId(selDetId_).first,
124  "") ;
125 
126  std::map<uint32_t, ModMEs>::iterator selMEsMapIter_ = SummaryMEsMap_.find(getLayerNameAndId(selDetId_).second);
127 
128  ModMEs selME_;
129  if ( selMEsMapIter_ != SummaryMEsMap_.end())
130  selME_ =selMEsMapIter_->second;
131 
132  getSummaryMEs(selME_,selDetId_ );
133 
134 
135  std::vector<uint32_t> sameLayerDetIds_;
136  sameLayerDetIds_.clear();
137  sameLayerDetIds_=GetSameLayerDetId(activeDetIds,selDetId_);
138  // -----
139  // unsigned int iBin=0;
140 
141  //%%%%%%%%%%%%%%%%%%%
142  //%%% FIXME: patch to fix the bug causing double counting on each layer
143  //%%%%%%%%%%%%%%%%%%%%%%%
144  if(std::binary_search(alreadyFilledLayers.begin(),alreadyFilledLayers.end(),sameLayerDetIds_[0]))
145  return;
146  alreadyFilledLayers.push_back(sameLayerDetIds_[0]);
148  //%%%%%%%%%%%%%%%%%%%%%%% END %%%%%%%%%%
149 
150  for(unsigned int i=0;i< sameLayerDetIds_.size(); i++){
151 
152  SiStripQuality::Range qualityRange = qualityHandle_->getRange(sameLayerDetIds_[i]);
153  int nStrip = reader->getNumberOfApvsAndStripLength(sameLayerDetIds_[i]).first*128;
154 
155  numberOfBadStrips=0;
156 
157  for( int istrip=0;istrip<nStrip;++istrip){
158  if(qualityHandle_->IsStripBad(qualityRange,istrip)) { numberOfBadStrips++;}
159  }
160 
161  float fr=100*float(numberOfBadStrips)/nStrip;
162  selME_.SummaryDistr->Fill(i+1,fr);
163  if(fr>20){
164  char c[9];
165  sprintf(c,"%d",sameLayerDetIds_[i]);
166  selME_.SummaryDistr->getTH1()->GetXaxis()->SetBinLabel(i+1,c);
167  }
168 
169  // Fill the TkHistoMap with Quality output :
170  if(HistoMaps_On_ ) Tk_HM_->setBinContent(sameLayerDetIds_[i], fr);
171 
172  // Fill the TkMap
173  if(fPSet_.getParameter<bool>("TkMap_On") || hPSet_.getParameter<bool>("TkMap_On")){
174  fillTkMap(sameLayerDetIds_[i], fr);
175  }
176  }
177  }//if Fill ...
178 }
T getParameter(std::string const &) const
int i
Definition: DBlmapReader.cc:9
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 fillTkMap(const uint32_t &detid, const float &value)
U second(std::pair< T, U > const &p)
std::map< uint32_t, ModMEs > SummaryMEsMap_
SiStripDetInfoFileReader * reader
bool first
Definition: L1TdeRCT.cc:94
void setBinContent(uint32_t &detid, float value)
Definition: TkHistoMap.cc:146
std::vector< uint32_t > alreadyFilledLayers
std::pair< std::string, uint32_t > getLayerNameAndId(const uint32_t &detId_)
std::pair< ContainerIterator, ContainerIterator > Range
std::vector< uint32_t > activeDetIds
edm::ESHandle< SiStripQuality > qualityHandle_
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 SiStripQualityDQM::fillModMEs ( const std::vector< uint32_t > &  selectedDetIds)
virtual

Reimplemented from SiStripBaseCondObjDQM.

Definition at line 34 of file SiStripQualityDQM.cc.

References fillMEsForDet().

34  {
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 }
void fillMEsForDet(ModMEs selModME_, uint32_t selDetId_)
void SiStripQualityDQM::fillSummaryMEs ( const std::vector< uint32_t > &  selectedDetIds)
virtual

Reimplemented from SiStripBaseCondObjDQM.

Definition at line 67 of file SiStripQualityDQM.cc.

References alignmentValidation::c1, fillMEsForLayer(), SiStripBaseCondObjDQM::fPSet_, edm::ParameterSet::getParameter(), MonitorElement::getTH1(), SiStripBaseCondObjDQM::hPSet_, mergeVDriftHistosByStation::name, SiStripBaseCondObjDQM::ModMEs::SummaryDistr, and SiStripBaseCondObjDQM::SummaryMEsMap_.

67  {
68 
69  for(std::vector<uint32_t>::const_iterator detIter_ = selectedDetIds.begin();
70  detIter_!= selectedDetIds.end();detIter_++){
71  fillMEsForLayer(/*SummaryMEsMap_,*/ *detIter_);
72 
73  }
74 
75  for (std::map<uint32_t, ModMEs>::iterator iter=SummaryMEsMap_.begin(); iter!=SummaryMEsMap_.end(); iter++){
76 
77  ModMEs selME;
78  selME = iter->second;
79 
80  if(hPSet_.getParameter<bool>("FillSummaryAtLayerLevel") && fPSet_.getParameter<bool>("OutputSummaryAtLayerLevelAsImage")){
81 
82  TCanvas c1("c1");
83  selME.SummaryDistr->getTH1()->Draw();
84  std::string name (selME.SummaryDistr->getTH1()->GetTitle());
85  name+=".png";
86  c1.Print(name.c_str());
87  }
88  }
89 
90 }
T getParameter(std::string const &) const
std::map< uint32_t, ModMEs > SummaryMEsMap_
void fillMEsForLayer(uint32_t selDetId_)
void SiStripQualityDQM::getActiveDetIds ( const edm::EventSetup eSetup)
virtual

Implements SiStripBaseCondObjDQM.

Definition at line 25 of file SiStripQualityDQM.cc.

References SiStripBaseCondObjDQM::activeDetIds, getConditionObject(), and qualityHandle_.

25  {
26  getConditionObject(eSetup);
27  qualityHandle_->getDetIds(activeDetIds);
28 
29 }
std::vector< uint32_t > activeDetIds
edm::ESHandle< SiStripQuality > qualityHandle_
void getConditionObject(const edm::EventSetup &eSetup)
unsigned long long SiStripQualityDQM::getCache ( const edm::EventSetup eSetup)
inlinevirtual

Implements SiStripBaseCondObjDQM.

Definition at line 49 of file SiStripQualityDQM.h.

References edm::EventSetup::get().

49 { return eSetup.get<SiStripQualityRcd>().cacheIdentifier();}
const T & get() const
Definition: EventSetup.h:55
void SiStripQualityDQM::getConditionObject ( const edm::EventSetup eSetup)
inlinevirtual
void SiStripQualityDQM::SetBadComponents ( int  i,
int  component,
SiStripQuality::BadComponent BC 
)
private

Definition at line 461 of file SiStripQualityDQM.cc.

References SiStripQuality::BadComponent::BadApvs, SiStripQuality::BadComponent::BadFibers, SiStripQuality::BadComponent::BadModule, SiStripQuality::BadComponent::detid, SiStripDetInfoFileReader::getNumberOfApvsAndStripLength(), i, NBadComponent, SiStripBaseCondObjDQM::reader, and ssV.

Referenced by fillGrandSummaryMEs().

461  {
462 
463  int napv=reader->getNumberOfApvsAndStripLength(BC.detid).first;
464 
465  ssV[i][component] << "\n\t\t "
466  << BC.detid
467  << " \t " << BC.BadModule << " \t "
468  << ( (BC.BadFibers)&0x1 ) << " ";
469  if (napv==4)
470  ssV[i][component] << "x " <<( (BC.BadFibers>>1)&0x1 );
471 
472  if (napv==6)
473  ssV[i][component] << ( (BC.BadFibers>>1)&0x1 ) << " "
474  << ( (BC.BadFibers>>2)&0x1 );
475  ssV[i][component] << " \t "
476  << ( (BC.BadApvs)&0x1 ) << " "
477  << ( (BC.BadApvs>>1)&0x1 ) << " ";
478  if (napv==4)
479  ssV[i][component] << "x x " << ( (BC.BadApvs>>2)&0x1 ) << " "
480  << ( (BC.BadApvs>>3)&0x1 );
481  if (napv==6)
482  ssV[i][component] << ( (BC.BadApvs>>2)&0x1 ) << " "
483  << ( (BC.BadApvs>>3)&0x1 ) << " "
484  << ( (BC.BadApvs>>4)&0x1 ) << " "
485  << ( (BC.BadApvs>>5)&0x1 ) << " ";
486 
487  if (BC.BadApvs){
488  NBadComponent[i][0][2]+= ( (BC.BadApvs>>5)&0x1 )+ ( (BC.BadApvs>>4)&0x1 ) + ( (BC.BadApvs>>3)&0x1 ) +
489  ( (BC.BadApvs>>2)&0x1 )+ ( (BC.BadApvs>>1)&0x1 ) + ( (BC.BadApvs)&0x1 );
490  NBadComponent[i][component][2]+= ( (BC.BadApvs>>5)&0x1 )+ ( (BC.BadApvs>>4)&0x1 ) + ( (BC.BadApvs>>3)&0x1 ) +
491  ( (BC.BadApvs>>2)&0x1 )+ ( (BC.BadApvs>>1)&0x1 ) + ( (BC.BadApvs)&0x1 );
492  // tkMap->fillc(BC.detid,0xff0000);
493  }
494  if (BC.BadFibers){
495  NBadComponent[i][0][1]+= ( (BC.BadFibers>>2)&0x1 )+ ( (BC.BadFibers>>1)&0x1 ) + ( (BC.BadFibers)&0x1 );
496  NBadComponent[i][component][1]+= ( (BC.BadFibers>>2)&0x1 )+ ( (BC.BadFibers>>1)&0x1 ) + ( (BC.BadFibers)&0x1 );
497  // tkMap->fillc(BC.detid,0x0000ff);
498  }
499  if (BC.BadModule){
500  NBadComponent[i][0][0]++;
501  NBadComponent[i][component][0]++;
502  // tkMap->fillc(BC.detid,0x0);
503  }
504 }
int i
Definition: DBlmapReader.cc:9
int NBadComponent[4][19][4]
const std::pair< unsigned short, double > getNumberOfApvsAndStripLength(uint32_t detId) const
SiStripDetInfoFileReader * reader
std::stringstream ssV[4][19]

Member Data Documentation

std::vector<uint32_t> SiStripQualityDQM::alreadyFilledLayers
private

Definition at line 64 of file SiStripQualityDQM.h.

Referenced by fillMEsForLayer().

int SiStripQualityDQM::NBadComponent[4][19][4]
private

Definition at line 60 of file SiStripQualityDQM.h.

Referenced by fillGrandSummaryMEs(), and SetBadComponents().

int SiStripQualityDQM::NTkBadComponent[4]
private

Definition at line 59 of file SiStripQualityDQM.h.

Referenced by fillGrandSummaryMEs().

edm::ESHandle<SiStripQuality> SiStripQualityDQM::qualityHandle_
private
std::string SiStripQualityDQM::qualityLabel_
private

Definition at line 57 of file SiStripQualityDQM.h.

Referenced by getConditionObject(), and SiStripQualityDQM().

std::stringstream SiStripQualityDQM::ssV[4][19]
private

Definition at line 61 of file SiStripQualityDQM.h.

Referenced by fillGrandSummaryMEs(), and SetBadComponents().