CMS 3D CMS Logo

List of all members | Public Types | Public Member Functions | Private Attributes
SiPixelDataQuality Class Reference

#include <SiPixelDataQuality.h>

Public Types

typedef dqm::legacy::DQMStore DQMStore
 
typedef dqm::legacy::MonitorElement MonitorElement
 

Public Member Functions

void bookGlobalQualityFlag (DQMStore::IBooker &iBooker, bool Tier0Flag, int nFEDs)
 
void computeGlobalQualityFlag (DQMStore::IBooker &iBooker, DQMStore::IGetter &iGetter, bool init, int nFEDs, bool Tier0Flag)
 
void computeGlobalQualityFlagByLumi (DQMStore::IGetter &iGetter, bool init, int nFEDs, bool Tier0Flag, int nEvents_lastLS_, int nErrorsBarrel_lastLS_, int nErrorsEndcap_lastLS_)
 
void fillGlobalQualityPlot (DQMStore::IBooker &iBooker, DQMStore::IGetter &iGetter, bool init, const SiPixelFedCablingMap *theCablingMap, int nFEDs, bool Tier0Flag, int lumisec)
 
int getDetId (MonitorElement *mE)
 (Documentation under construction). More...
 
 SiPixelDataQuality (bool offlineXMLfile)
 Constructor of the SiPixelInformationExtractor class. More...
 
 ~SiPixelDataQuality ()
 Destructor of the SiPixelDataQuality class. More...
 

Private Attributes

int allMods_
 
TH2F * allmodsMap
 
TH1D * allmodsVec
 
float barrel_error_flag_
 
int barrelMods_
 
MonitorElementClusterChargeBarrel
 
MonitorElementClusterChargeEndcap
 
int clusterCounterBarrel
 
int clusterCounterEndcap
 
MonitorElementClusterMod1
 
MonitorElementClusterMod2
 
MonitorElementClusterMod3
 
MonitorElementClusterMod4
 
MonitorElementClusterModAll
 
MonitorElementClusterSizeBarrel
 
MonitorElementClusterSizeEndcap
 
bool clusterStatsBarrel
 
bool clusterStatsEndcap
 
int count
 
int count1
 
int count2
 
int count3
 
int count4
 
int count5
 
int count6
 
MonitorElementDigiChargeBarrel
 
MonitorElementDigiChargeEndcap
 
int digiCounterBarrel
 
int digiCounterEndcap
 
bool digiStatsBarrel
 
bool digiStatsEndcap
 
bool DONE_
 
float endcap_error_flag_
 
int endcapMods_
 
bool endOfModules_
 
int errcount
 
TH2F * errmodsMap
 
TH1D * errmodsVec
 
int errorMods_
 
MonitorElementFEDErrReportMap
 
TH2F * goodmodsMap
 
TH1D * goodmodsVec
 
bool gotDigis
 
float lastallmods_ [40]
 
float lasterrmods_ [40]
 
int lastLS_
 
int modCounter_
 
std::ofstream myfile_
 
int n_errors_barrel_
 
int n_errors_endcap_
 
int n_errors_pixel_
 
MonitorElementNClustersBarrel
 
MonitorElementNClustersEndcap
 
MonitorElementNDigisBarrel
 
MonitorElementNDigisEndcap
 
MonitorElementNErrorsBarrel
 
MonitorElementNErrorsEndcap
 
MonitorElementNErrorsFEDs
 
int nevents_
 
MonitorElementNPixelTracks
 
int objectCount_
 
bool offlineXMLfile_
 
float pixel_error_flag_
 
float qflag_
 
MonitorElementSummaryBarrel
 
MonitorElementSummaryEndcap
 
MonitorElementSummaryPixel
 
MonitorElementSummaryReportMap
 
int timeoutCounter_
 
int trackCounterBarrel
 
int trackCounterEndcap
 
bool trackStatsBarrel
 
bool trackStatsEndcap
 

Detailed Description

Definition at line 30 of file SiPixelDataQuality.h.

Member Typedef Documentation

◆ DQMStore

Definition at line 33 of file SiPixelDataQuality.h.

◆ MonitorElement

Definition at line 32 of file SiPixelDataQuality.h.

Constructor & Destructor Documentation

◆ SiPixelDataQuality()

SiPixelDataQuality::SiPixelDataQuality ( bool  offlineXMLfile)

Constructor of the SiPixelInformationExtractor class.

Definition at line 66 of file SiPixelDataQuality.cc.

References allMods_, allmodsMap, allmodsVec, errmodsMap, errmodsVec, errorMods_, goodmodsMap, goodmodsVec, mps_fire::i, lastallmods_, lasterrmods_, lastLS_, qflag_, and timeoutCounter_.

66  : offlineXMLfile_(offlineXMLfile) {
67  edm::LogInfo("SiPixelDataQuality") << " Creating SiPixelDataQuality "
68  << "\n";
69 
70  allMods_ = 0;
71  errorMods_ = 0;
72  qflag_ = 1.;
73 
74  allmodsMap = nullptr;
75  errmodsMap = nullptr;
76  goodmodsMap = nullptr;
77  allmodsVec = nullptr;
78  errmodsVec = nullptr;
79  goodmodsVec = nullptr;
80  for (int i = 0; i < 40; ++i) {
81  lastallmods_[i] = 0;
82  lasterrmods_[i] = 0;
83  }
84  timeoutCounter_ = 0;
85  lastLS_ = -1;
86 }
Log< level::Info, false > LogInfo

◆ ~SiPixelDataQuality()

SiPixelDataQuality::~SiPixelDataQuality ( )

Destructor of the SiPixelDataQuality class.

Definition at line 92 of file SiPixelDataQuality.cc.

References allmodsMap, allmodsVec, errmodsMap, errmodsVec, goodmodsMap, and goodmodsVec.

92  {
93  edm::LogInfo("SiPixelDataQuality") << " Deleting SiPixelDataQuality "
94  << "\n";
95  if (allmodsMap)
96  delete allmodsMap;
97  if (errmodsMap)
98  delete errmodsMap;
99  if (goodmodsMap)
100  delete goodmodsMap;
101  if (allmodsVec)
102  delete allmodsVec;
103  if (errmodsVec)
104  delete errmodsVec;
105  if (goodmodsVec)
106  delete goodmodsVec;
107 }
Log< level::Info, false > LogInfo

Member Function Documentation

◆ bookGlobalQualityFlag()

void SiPixelDataQuality::bookGlobalQualityFlag ( DQMStore::IBooker iBooker,
bool  Tier0Flag,
int  nFEDs 
)

Definition at line 131 of file SiPixelDataQuality.cc.

References allmodsMap, allmodsVec, dqm::implementation::IBooker::book1D(), dqm::implementation::IBooker::book2D(), dqm::implementation::IBooker::bookFloat(), dqm::implementation::IBooker::bookInt(), dqm::implementation::NavigatorBase::cd(), ClusterChargeBarrel, ClusterChargeEndcap, ClusterMod1, ClusterMod2, ClusterMod3, ClusterMod4, ClusterModAll, ClusterSizeBarrel, ClusterSizeEndcap, DigiChargeBarrel, DigiChargeEndcap, errmodsMap, errmodsVec, dqm::impl::MonitorElement::Fill(), goodmodsMap, goodmodsVec, mps_fire::i, dqmiolumiharvest::j, NClustersBarrel, NClustersEndcap, NDigisBarrel, NDigisEndcap, NErrorsBarrel, NErrorsEndcap, NErrorsFEDs, NPixelTracks, dqm::impl::MonitorElement::setAxisTitle(), dqm::impl::MonitorElement::setBinContent(), dqm::impl::MonitorElement::setBinLabel(), dqm::implementation::NavigatorBase::setCurrentFolder(), SummaryBarrel, SummaryEndcap, SummaryPixel, SummaryReportMap, and SiPixelOfflineDQM_client_cff::Tier0Flag.

131  {
132  // std::cout<<"BOOK GLOBAL QUALITY FLAG MEs!"<<std::endl;
133  iBooker.cd();
134 
135  iBooker.setCurrentFolder("Pixel/Barrel");
136  if (!Tier0Flag) {
137  ClusterModAll = iBooker.book1D("NClustertoChargeRatio_AllMod", "Cluster Noise All Modules", 768, 0., 768.);
138  ClusterMod1 = iBooker.book1D(
139  "NClustertoChargeRatio_NormMod1", "Normalized N_{Clusters} to Charge Ratio per Module1", 192, 0., 192.);
140  ClusterMod2 = iBooker.book1D(
141  "NClustertoChargeRatio_NormMod2", "Normalized N_{Clusters} to Charge Ratio per Module2", 192, 0., 192.);
142  ClusterMod3 = iBooker.book1D(
143  "NClustertoChargeRatio_NormMod3", "Normalized N_{Clusters} to Charge Ratio per Module3", 192, 0., 192.);
144  ClusterMod4 = iBooker.book1D(
145  "NClustertoChargeRatio_NormMod4", "Normalized N_{Clusters} to Charge Ratio per Module4", 192, 0., 192.);
146  }
147  iBooker.setCurrentFolder("Pixel/EventInfo");
148  if (!Tier0Flag) {
149  SummaryReportMap = iBooker.book2D("reportSummaryMap", "Pixel Summary Map", 3000, 0., 3000., 40, 0., 40.);
150  SummaryReportMap->setAxisTitle("Lumi Section", 1);
151  SummaryReportMap->setAxisTitle("Pixel FED #", 2);
152  allmodsVec = new TH1D("allmodsVec", "allmodsVec", 40, 0., 40.);
153  errmodsVec = new TH1D("errmodsVec", "errmodsVec", 40, 0., 40.);
154  goodmodsVec = new TH1D("goodmodsVec", "goodmodsVec", 40, 0., 40.);
155  } else {
156  SummaryReportMap = iBooker.book2D("reportSummaryMap", "Pixel Summary Map", 2, 0., 2., 7, 0., 7.);
157  SummaryReportMap->setBinLabel(1, "Barrel", 1);
158  SummaryReportMap->setBinLabel(2, "Endcaps", 1);
159  SummaryReportMap->setBinLabel(1, "Errors", 2);
160  SummaryReportMap->setBinLabel(2, "NDigis", 2);
161  SummaryReportMap->setBinLabel(3, "DigiCharge", 2);
162  SummaryReportMap->setBinLabel(4, "ClusterSize", 2);
163  SummaryReportMap->setBinLabel(5, "NClusters", 2);
164  SummaryReportMap->setBinLabel(6, "ClusterCharge", 2);
165  SummaryReportMap->setBinLabel(7, "HitEff", 2);
166  allmodsMap = new TH2F("allmodsMap", "allmodsMap", 2, 0., 2., 7, 0., 7.);
167  errmodsMap = new TH2F("errmodsMap", "errmodsMap", 2, 0., 2., 7, 0., 7.);
168  goodmodsMap = new TH2F("goodmodsMap", "goodmodsMap", 2, 0., 2., 7, 0., 7.);
169  }
170  SummaryPixel = iBooker.bookFloat("reportSummary");
171  iBooker.setCurrentFolder("Pixel/EventInfo/reportSummaryContents");
172  SummaryBarrel = iBooker.bookFloat("PixelBarrelFraction");
173  SummaryEndcap = iBooker.bookFloat("PixelEndcapFraction");
174  // book the data certification cuts:
175  iBooker.setCurrentFolder("Pixel/AdditionalPixelErrors");
176  NErrorsFEDs = iBooker.bookFloat("FEDsNErrorsCut");
177  iBooker.setCurrentFolder("Pixel/Barrel");
178  NErrorsBarrel = iBooker.bookFloat("BarrelNErrorsCut");
179  NDigisBarrel = iBooker.bookInt("BarrelNDigisCut");
180  DigiChargeBarrel = iBooker.bookInt("BarrelDigiChargeCut");
181  ClusterSizeBarrel = iBooker.bookInt("BarrelClusterSizeCut");
182  NClustersBarrel = iBooker.bookInt("BarrelNClustersCut");
183  ClusterChargeBarrel = iBooker.bookInt("BarrelClusterChargeCut");
184  iBooker.setCurrentFolder("Pixel/Endcap");
185  NErrorsEndcap = iBooker.bookFloat("EndcapNErrorsCut");
186  NDigisEndcap = iBooker.bookInt("EndcapNDigisCut");
187  DigiChargeEndcap = iBooker.bookInt("EndcapDigiChargeCut");
188  ClusterSizeEndcap = iBooker.bookInt("EndcapClusterSizeCut");
189  NClustersEndcap = iBooker.bookInt("EndcapNClustersCut");
190  ClusterChargeEndcap = iBooker.bookInt("EndcapClusterChargeCut");
191  if (Tier0Flag) {
192  iBooker.setCurrentFolder("Pixel/Tracks");
193  NPixelTracks = iBooker.bookInt("PixelTracksCut");
194  }
195 
196  // Init MonitoringElements:
197  if (nFEDs > 0) {
198  if (SummaryPixel)
199  SummaryPixel->Fill(1.);
200  if (SummaryBarrel)
201  SummaryBarrel->Fill(1.);
202  if (SummaryEndcap)
203  SummaryEndcap->Fill(1.);
204  } else {
205  if (SummaryPixel)
206  SummaryPixel->Fill(-1.);
207  if (SummaryBarrel)
208  SummaryBarrel->Fill(-1.);
209  if (SummaryEndcap)
210  SummaryEndcap->Fill(-1.);
211  }
212  if (NErrorsBarrel)
213  NErrorsBarrel->Fill(1.);
214  if (NErrorsEndcap)
215  NErrorsEndcap->Fill(1.);
216  if (NErrorsFEDs)
217  NErrorsFEDs->Fill(1.);
218  if (NDigisBarrel)
219  NDigisBarrel->Fill(1);
220  if (NDigisEndcap)
221  NDigisEndcap->Fill(1);
222  if (DigiChargeBarrel)
224  if (DigiChargeEndcap)
226  if (ClusterSizeBarrel)
228  if (ClusterSizeEndcap)
234  if (NClustersBarrel)
235  NClustersBarrel->Fill(1);
236  if (NClustersEndcap)
237  NClustersEndcap->Fill(1);
238  if (Tier0Flag) {
239  if (NPixelTracks)
240  NPixelTracks->Fill(1);
241  }
242 
243  if (SummaryReportMap) {
244  if (!Tier0Flag)
245  for (int i = 1; i != 3001; i++)
246  for (int j = 1; j != 41; j++)
248  if (Tier0Flag)
249  for (int i = 1; i != 3; i++)
250  for (int j = 1; j != 8; j++)
252  }
253  if (!Tier0Flag) {
254  for (int j = 1; j != 41; j++) {
255  if (allmodsVec)
256  allmodsVec->SetBinContent(j, 0.);
257  if (errmodsVec)
258  errmodsVec->SetBinContent(j, 0.);
259  if (goodmodsVec)
260  goodmodsVec->SetBinContent(j, 0.);
261  }
262  }
263  if (Tier0Flag) {
264  for (int i = 1; i != 3; i++)
265  for (int j = 1; j != 8; j++) {
266  if (allmodsMap)
267  allmodsMap->SetBinContent(i, j, 0.);
268  if (errmodsMap)
269  errmodsMap->SetBinContent(i, j, 0.);
270  if (goodmodsMap)
271  goodmodsMap->SetBinContent(i, j, 0.);
272  }
273  }
274 
275  iBooker.cd();
276 }
MonitorElement * bookFloat(TString const &name, FUNC onbooking=NOOP())
Definition: DQMStore.h:80
virtual void setCurrentFolder(std::string const &fullpath)
Definition: DQMStore.cc:36
MonitorElement * ClusterChargeBarrel
MonitorElement * ClusterModAll
MonitorElement * SummaryBarrel
MonitorElement * ClusterSizeEndcap
MonitorElement * NPixelTracks
MonitorElement * NErrorsFEDs
MonitorElement * NDigisEndcap
void Fill(long long x)
MonitorElement * SummaryPixel
MonitorElement * NErrorsEndcap
MonitorElement * ClusterMod3
MonitorElement * ClusterMod1
MonitorElement * ClusterMod4
MonitorElement * NErrorsBarrel
MonitorElement * ClusterMod2
MonitorElement * NClustersEndcap
MonitorElement * ClusterSizeBarrel
virtual void setBinLabel(int bin, const std::string &label, int axis=1)
set bin label for x, y or z axis (axis=1, 2, 3 respectively)
MonitorElement * SummaryReportMap
virtual void setBinContent(int binx, double content)
set content of bin (1-D)
MonitorElement * DigiChargeEndcap
MonitorElement * book2D(TString const &name, TString const &title, int nchX, double lowX, double highX, int nchY, double lowY, double highY, FUNC onbooking=NOOP())
Definition: DQMStore.h:212
MonitorElement * SummaryEndcap
MonitorElement * bookInt(TString const &name, FUNC onbooking=NOOP())
Definition: DQMStore.h:73
MonitorElement * NDigisBarrel
MonitorElement * book1D(TString const &name, TString const &title, int const nchX, double const lowX, double const highX, FUNC onbooking=NOOP())
Definition: DQMStore.h:98
MonitorElement * ClusterChargeEndcap
MonitorElement * DigiChargeBarrel
MonitorElement * NClustersBarrel
virtual void setAxisTitle(const std::string &title, int axis=1)
set x-, y- or z-axis title (axis=1, 2, 3 respectively)

◆ computeGlobalQualityFlag()

void SiPixelDataQuality::computeGlobalQualityFlag ( DQMStore::IBooker iBooker,
DQMStore::IGetter iGetter,
bool  init,
int  nFEDs,
bool  Tier0Flag 
)

Definition at line 280 of file SiPixelDataQuality.cc.

References allMods_, barrel_error_flag_, barrelMods_, dqm::implementation::NavigatorBase::cd(), ClusterChargeBarrel, ClusterChargeEndcap, clusterCounterBarrel, clusterCounterEndcap, ClusterSizeBarrel, ClusterSizeEndcap, clusterStatsBarrel, clusterStatsEndcap, bTagMiniDQMDeepCSV::denominator, DigiChargeBarrel, DigiChargeEndcap, digiCounterBarrel, digiCounterEndcap, digiStatsBarrel, digiStatsEndcap, RefreshWebPage::dname, DONE_, endcap_error_flag_, endcapMods_, errorMods_, dqm::impl::MonitorElement::Fill(), dqmMemoryStats::float, dqm::implementation::IGetter::get(), dqm::impl::MonitorElement::getBinContent(), dqm::impl::MonitorElement::getIntValue(), dqm::implementation::IGetter::getMEs(), dqm::implementation::IGetter::getSubdirs(), dqm::implementation::NavigatorBase::goUp(), mps_fire::i, createfilelist::int, dqmiolumiharvest::j, dqmdumpme::k, hlt_dqm_clientPB-live_cfg::me, n_errors_barrel_, n_errors_endcap_, n_errors_pixel_, NClustersBarrel, NClustersEndcap, NDigisBarrel, NDigisEndcap, NErrorsBarrel, NErrorsEndcap, NPixelTracks, bTagMiniDQMDeepCSV::numerator, objectCount_, pixel_error_flag_, dqm::implementation::NavigatorBase::pwd(), qflag_, dqm::implementation::NavigatorBase::setCurrentFolder(), SummaryBarrel, SummaryEndcap, SummaryPixel, SiPixelOfflineDQM_client_cff::Tier0Flag, trackCounterBarrel, trackCounterEndcap, trackStatsBarrel, and trackStatsEndcap.

281  {
282  if (init) {
283  allMods_ = 0;
284  errorMods_ = 0;
285  qflag_ = 0.;
286  barrelMods_ = 0;
287  endcapMods_ = 0;
288  objectCount_ = 0;
289  DONE_ = false;
290 
291  // Error counters and flags:
292  n_errors_barrel_ = 0;
293  barrel_error_flag_ = 0.;
294  n_errors_endcap_ = 0;
295  endcap_error_flag_ = 0.;
296  n_errors_pixel_ = 0;
297  pixel_error_flag_ = 0.;
298  digiStatsBarrel = false, clusterStatsBarrel = false, trackStatsBarrel = false;
300  digiStatsEndcap = false, clusterStatsEndcap = false, trackStatsEndcap = false;
302  init = false;
303  }
304  if (nFEDs == 0)
305  return;
306 
307  string currDir = iBooker.pwd();
308  string dname = currDir.substr(currDir.find_last_of('/') + 1);
309 
310  if ((!Tier0Flag && dname.find("Module_") != string::npos) ||
311  (Tier0Flag && (dname.find("Ladder_") != string::npos || dname.find("Blade_") != string::npos))) {
312  objectCount_++;
313 
314  if (currDir.find("Pixel") != string::npos)
315  allMods_++;
316  if (currDir.find("Barrel") != string::npos)
317  barrelMods_++;
318  if (currDir.find("Endcap") != string::npos)
319  endcapMods_++;
320  vector<string> meVec = iGetter.getMEs();
321  for (vector<string>::const_iterator it = meVec.begin(); it != meVec.end(); it++) {
322  string full_path = currDir + "/" + (*it);
323  if (full_path.find("ndigis_") != string::npos) {
324  MonitorElement *me = iGetter.get(full_path);
325  if (!me)
326  continue;
327  if (me->getEntries() > 25) {
328  if (full_path.find("Barrel") != string::npos)
330  if (full_path.find("Endcap") != string::npos)
332  }
333  } else if (Tier0Flag && full_path.find("nclusters_OnTrack_") != string::npos) {
334  MonitorElement *me = iGetter.get(full_path);
335  if (!me)
336  continue;
337  if (me->getEntries() > 25) {
338  if (full_path.find("Barrel") != string::npos)
340  if (full_path.find("Endcap") != string::npos)
342  }
343  } else if (!Tier0Flag && full_path.find("nclusters_") != string::npos) {
344  MonitorElement *me = iGetter.get(full_path);
345  if (!me)
346  continue;
347  if (me->getEntries() > 25) {
348  if (full_path.find("Barrel") != string::npos)
350  if (full_path.find("Endcap") != string::npos)
352  }
353  }
354  }
355  }
356  vector<string> subDirVec = iGetter.getSubdirs();
357  for (vector<string>::const_iterator ic = subDirVec.begin(); ic != subDirVec.end(); ic++) {
358  iGetter.cd(*ic);
359  iBooker.cd(*ic);
360  init = false;
361  computeGlobalQualityFlag(iBooker, iGetter, init, nFEDs, Tier0Flag);
362  iBooker.goUp();
363  iGetter.setCurrentFolder(iBooker.pwd());
364  }
365 
366  // Make sure I have finished looping over all Modules/Ladders/Blades:
367  if (!Tier0Flag) { // online case
368  if (objectCount_ == 1440)
369  DONE_ = true;
370  } else { // offline case
371  if (objectCount_ == 288)
372  DONE_ = true;
373  }
374 
375  if (DONE_ && currDir == "Pixel/EventInfo/reportSummaryContents") {
376  // Evaluate error flag now, only stored in AdditionalPixelErrors:
377  MonitorElement *me_err = iGetter.get("Pixel/AdditionalPixelErrors/FedETypeNErr");
378  MonitorElement *me_evt = iGetter.get("Pixel/EventInfo/processedEvents");
379  if (me_err && me_evt) {
380  for (int i = 1; i != 41; i++)
381  for (int j = 1; j != 22; j++)
382  if (me_err->getBinContent(i, j) > 0) {
384  if (i < 33)
386  if (i > 32)
388  }
389  int NProcEvts = me_evt->getIntValue();
390  if (NProcEvts > 0) {
391  barrel_error_flag_ = (float(NProcEvts) - float(n_errors_barrel_)) / float(NProcEvts);
392  endcap_error_flag_ = (float(NProcEvts) - float(n_errors_endcap_)) / float(NProcEvts);
393  pixel_error_flag_ = (float(NProcEvts) - float(n_errors_barrel_) - float(n_errors_endcap_)) / float(NProcEvts);
394  }
395  }
396  NErrorsBarrel = iGetter.get("Pixel/Barrel/BarrelNErrorsCut");
397  if (NErrorsBarrel)
399  NErrorsEndcap = iGetter.get("Pixel/Endcap/EndcapNErrorsCut");
400  if (NErrorsEndcap)
402 
403  string meName0;
405 
406  // Fill the Digi flags:
407  if (!Tier0Flag) {
408  meName0 = "Pixel/Barrel/SUMDIG_ndigis_Barrel";
409  if (digiCounterBarrel / 768 > 0.5)
410  digiStatsBarrel = true;
411  if (digiCounterEndcap / 672 > 0.5)
412  digiStatsEndcap = true;
413  } else {
414  meName0 = "Pixel/Barrel/SUMOFF_ndigis_Barrel";
415  if (digiCounterBarrel / 192 > 0.5)
416  digiStatsBarrel = true;
417  if (digiCounterEndcap / 96 > 0.5)
418  digiStatsEndcap = true;
419  }
420  me = iGetter.get(meName0);
421  if (me) {
422  NDigisBarrel = iGetter.get("Pixel/Barrel/BarrelNDigisCut");
423  if (NDigisBarrel && digiStatsBarrel) {
424  if (me->hasError())
425  NDigisBarrel->Fill(0);
426  else
427  NDigisBarrel->Fill(1);
428  }
429  }
430  if (!Tier0Flag)
431  meName0 = "Pixel/Endcap/SUMDIG_ndigis_Endcap";
432  else
433  meName0 = "Pixel/Endcap/SUMOFF_ndigis_Endcap";
434  me = iGetter.get(meName0);
435  if (me) {
436  NDigisEndcap = iGetter.get("Pixel/Endcap/EndcapNDigisCut");
437  if (NDigisEndcap && digiStatsEndcap) {
438  if (me->hasError())
439  NDigisEndcap->Fill(0);
440  else
441  NDigisEndcap->Fill(1);
442  }
443  }
444  if (!Tier0Flag)
445  meName0 = "Pixel/Barrel/SUMDIG_adc_Barrel";
446  else
447  meName0 = "Pixel/Barrel/SUMOFF_adc_Barrel";
448  me = iGetter.get(meName0);
449  if (me) {
450  DigiChargeBarrel = iGetter.get("Pixel/Barrel/BarrelDigiChargeCut");
452  if (me->hasError())
454  else
456  }
457  }
458  if (!Tier0Flag)
459  meName0 = "Pixel/Endcap/SUMDIG_adc_Endcap";
460  else
461  meName0 = "Pixel/Endcap/SUMOFF_adc_Endcap";
462  me = iGetter.get(meName0);
463  if (me) {
464  DigiChargeEndcap = iGetter.get("Pixel/Endcap/EndcapDigiChargeCut");
466  if (me->hasError())
468  else
470  }
471  }
472 
473  // Fill the Cluster flags:
474  if (!Tier0Flag) {
475  meName0 = "Pixel/Barrel/SUMCLU_size_Barrel";
476  if (clusterCounterBarrel / 768 > 0.5)
477  clusterStatsBarrel = true;
478  if (clusterCounterEndcap / 672 > 0.5)
479  clusterStatsEndcap = true;
480  } else {
481  meName0 = "Pixel/Barrel/SUMOFF_size_OnTrack_Barrel";
482  if (clusterCounterBarrel / 192 > 0.5)
483  clusterStatsBarrel = true;
484  if (clusterCounterEndcap / 96 > 0.5)
485  clusterStatsEndcap = true;
486  }
487  me = iGetter.get(meName0);
488  if (me) {
489  ClusterSizeBarrel = iGetter.get("Pixel/Barrel/BarrelClusterSizeCut");
491  if (me->hasError())
493  else
495  }
496  }
497  if (!Tier0Flag)
498  meName0 = "Pixel/Endcap/SUMCLU_size_Endcap";
499  else
500  meName0 = "Pixel/Endcap/SUMOFF_size_OnTrack_Endcap";
501  me = iGetter.get(meName0);
502  if (me) {
503  ClusterSizeEndcap = iGetter.get("Pixel/Endcap/EndcapClusterSizeCut");
505  if (me->hasError())
507  else
509  }
510  }
511  if (!Tier0Flag)
512  meName0 = "Pixel/Barrel/SUMCLU_charge_Barrel";
513  else
514  meName0 = "Pixel/Barrel/SUMOFF_charge_OnTrack_Barrel";
515  me = iGetter.get(meName0);
516  if (me) {
517  ClusterChargeBarrel = iGetter.get("Pixel/Barrel/BarrelClusterChargeCut");
519  if (me->hasError())
521  else
523  }
524  }
525  if (!Tier0Flag)
526  meName0 = "Pixel/Endcap/SUMCLU_charge_Endcap";
527  else
528  meName0 = "Pixel/Endcap/SUMOFF_charge_OnTrack_Endcap";
529  me = iGetter.get(meName0);
530  if (me) {
531  ClusterChargeEndcap = iGetter.get("Pixel/Endcap/EndcapClusterChargeCut");
533  if (me->hasError())
535  else
537  }
538  }
539  if (!Tier0Flag)
540  meName0 = "Pixel/Barrel/SUMCLU_nclusters_Barrel";
541  else
542  meName0 = "Pixel/Barrel/SUMOFF_nclusters_OnTrack_Barrel";
543  me = iGetter.get(meName0);
544  if (me) {
545  NClustersBarrel = iGetter.get("Pixel/Barrel/BarrelNClustersCut");
547  if (me->hasError())
548  NClustersBarrel->Fill(0);
549  else
550  NClustersBarrel->Fill(1);
551  }
552  }
553  if (!Tier0Flag)
554  meName0 = "Pixel/Endcap/SUMCLU_nclusters_Endcap";
555  else
556  meName0 = "Pixel/Endcap/SUMOFF_nclusters_OnTrack_Endcap";
557  me = iGetter.get(meName0);
558  if (me) {
559  NClustersEndcap = iGetter.get("Pixel/Endcap/EndcapNClustersCut");
561  if (me->hasError())
562  NClustersEndcap->Fill(0);
563  else
564  NClustersEndcap->Fill(1);
565  }
566  }
567  // Pixel Track multiplicity / Pixel hit efficiency
568  meName0 = "Pixel/Tracks/ntracks_generalTracks";
569  me = iGetter.get(meName0);
570  if (me) {
571  NPixelTracks = iGetter.get("Pixel/Tracks/PixelTracksCut");
572  if (NPixelTracks && me->getBinContent(1) > 1000) {
573  if ((float)me->getBinContent(2) / (float)me->getBinContent(1) < 0.01) {
574  NPixelTracks->Fill(0);
575  } else {
576  NPixelTracks->Fill(1);
577  }
578  }
579  }
580 
581  //********************************************************************************************************
582 
583  // Final combination of all Data Quality results:
584  float pixelFlag = -1., barrelFlag = -1., endcapFlag = -1.;
585  float barrel_errors_temp[1] = {-1.};
586  int barrel_cuts_temp[5] = {5 * -1};
587  float endcap_errors_temp[1] = {-1.};
588  int endcap_cuts_temp[5] = {5 * -1};
589  int pixel_cuts_temp[1] = {-1};
590  float combinedCuts = 1.;
591  int numerator = 0, denominator = 0;
592 
593  // Barrel results:
594  me = iGetter.get("Pixel/Barrel/BarrelNErrorsCut");
595  if (me)
596  barrel_errors_temp[0] = me->getFloatValue();
597  me = iGetter.get("Pixel/Barrel/BarrelNDigisCut");
598  if (me)
599  barrel_cuts_temp[0] = me->getIntValue();
600  me = iGetter.get("Pixel/Barrel/BarrelDigiChargeCut");
601  if (me)
602  barrel_cuts_temp[1] = me->getIntValue();
603  me = iGetter.get("Pixel/Barrel/BarrelClusterSizeCut");
604  if (me)
605  barrel_cuts_temp[2] = me->getIntValue();
606  me = iGetter.get("Pixel/Barrel/BarrelNClustersCut");
607  if (me)
608  barrel_cuts_temp[3] = me->getIntValue();
609  me = iGetter.get("Pixel/Barrel/BarrelClusterChargeCut");
610  if (me)
611  barrel_cuts_temp[4] = me->getIntValue();
612  for (int k = 0; k != 5; k++) {
613  if (barrel_cuts_temp[k] >= 0) {
614  numerator = numerator + barrel_cuts_temp[k];
615  denominator++;
616  }
617  }
618  if (denominator != 0)
619  combinedCuts = float(numerator) / float(denominator);
620  barrelFlag = barrel_errors_temp[0] * combinedCuts;
621 
622  // Endcap results:
623  combinedCuts = 1.;
624  numerator = 0;
625  denominator = 0;
626  me = iGetter.get("Pixel/Endcap/EndcapNErrorsCut");
627  if (me)
628  endcap_errors_temp[0] = me->getFloatValue();
629  me = iGetter.get("Pixel/Endcap/EndcapNDigisCut");
630  if (me)
631  endcap_cuts_temp[0] = me->getIntValue();
632  me = iGetter.get("Pixel/Endcap/EndcapDigiChargeCut");
633  if (me)
634  endcap_cuts_temp[1] = me->getIntValue();
635  me = iGetter.get("Pixel/Endcap/EndcapClusterSizeCut");
636  if (me)
637  endcap_cuts_temp[2] = me->getIntValue();
638  me = iGetter.get("Pixel/Endcap/EndcapNClustersCut");
639  if (me)
640  endcap_cuts_temp[3] = me->getIntValue();
641  me = iGetter.get("Pixel/Endcap/EndcapClusterChargeCut");
642  if (me)
643  endcap_cuts_temp[4] = me->getIntValue();
644  for (int k = 0; k != 5; k++) {
645  if (endcap_cuts_temp[k] >= 0) {
646  numerator = numerator + endcap_cuts_temp[k];
647  denominator++;
648  }
649  }
650  if (denominator != 0)
651  combinedCuts = float(numerator) / float(denominator);
652  endcapFlag = endcap_errors_temp[0] * combinedCuts;
653 
654  // Track results:
655  combinedCuts = 1.;
656  numerator = 0;
657  denominator = 0;
658  me = iGetter.get("Pixel/Tracks/PixelTracksCut");
659  if (me)
660  pixel_cuts_temp[0] = me->getIntValue();
661 
662  // Combination of all:
663  combinedCuts = 1.;
664  numerator = 0;
665  denominator = 0;
666  for (int k = 0; k != 5; k++) {
667  if (barrel_cuts_temp[k] >= 0) {
668  numerator = numerator + barrel_cuts_temp[k];
669  denominator++;
670  }
671  if (endcap_cuts_temp[k] >= 0) {
672  numerator = numerator + endcap_cuts_temp[k];
673  denominator++;
674  }
675  if (k < 1 && pixel_cuts_temp[k] >= 0) {
676  numerator = numerator + pixel_cuts_temp[k];
677  denominator++;
678  }
679  }
680  if (denominator != 0)
681  combinedCuts = float(numerator) / float(denominator);
682  pixelFlag = float(pixel_error_flag_) * float(combinedCuts);
683 
684  SummaryPixel = iGetter.get("Pixel/EventInfo/reportSummary");
685  if (SummaryPixel)
686  SummaryPixel->Fill(pixelFlag);
687  SummaryBarrel = iGetter.get("Pixel/EventInfo/reportSummaryContents/PixelBarrelFraction");
688  if (SummaryBarrel)
689  SummaryBarrel->Fill(barrelFlag);
690  SummaryEndcap = iGetter.get("Pixel/EventInfo/reportSummaryContents/PixelEndcapFraction");
691  if (SummaryEndcap)
692  SummaryEndcap->Fill(endcapFlag);
693  }
694 }
virtual void setCurrentFolder(std::string const &fullpath)
Definition: DQMStore.cc:36
MonitorElement * ClusterChargeBarrel
virtual std::vector< std::string > getMEs() const
Definition: DQMStore.cc:737
virtual std::string pwd()
Definition: DQMStore.cc:20
MonitorElement * SummaryBarrel
MonitorElement * ClusterSizeEndcap
MonitorElement * NPixelTracks
MonitorElement * NDigisEndcap
void Fill(long long x)
MonitorElement * SummaryPixel
MonitorElement * NErrorsEndcap
MonitorElement * NErrorsBarrel
MonitorElement * NClustersEndcap
MonitorElement * ClusterSizeBarrel
void computeGlobalQualityFlag(DQMStore::IBooker &iBooker, DQMStore::IGetter &iGetter, bool init, int nFEDs, bool Tier0Flag)
Definition: init.py:1
MonitorElement * DigiChargeEndcap
MonitorElement * SummaryEndcap
virtual MonitorElement * get(std::string const &fullpath) const
Definition: DQMStore.cc:690
MonitorElement * NDigisBarrel
MonitorElement * ClusterChargeEndcap
MonitorElement * DigiChargeBarrel
MonitorElement * NClustersBarrel
virtual double getBinContent(int binx) const
get content of bin (1-D)
virtual int64_t getIntValue() const
virtual DQM_DEPRECATED std::vector< std::string > getSubdirs() const
Definition: DQMStore.cc:717

◆ computeGlobalQualityFlagByLumi()

void SiPixelDataQuality::computeGlobalQualityFlagByLumi ( DQMStore::IGetter iGetter,
bool  init,
int  nFEDs,
bool  Tier0Flag,
int  nEvents_lastLS_,
int  nErrorsBarrel_lastLS_,
int  nErrorsEndcap_lastLS_ 
)

Definition at line 698 of file SiPixelDataQuality.cc.

References dqm::impl::MonitorElement::Fill(), dqm::implementation::IGetter::get(), dqm::impl::MonitorElement::getBinContent(), dqm::impl::MonitorElement::getMean(), mps_fire::i, hlt_dqm_clientPB-live_cfg::me, hlt_dqm_clientPB-live_cfg::me1, hlt_dqm_clientPB-live_cfg::me2, SummaryBarrel, SummaryEndcap, and SummaryPixel.

704  {
705  if (nFEDs == 0)
706  return;
707 
708  // evaluate fatal FED errors for data quality:
709  float BarrelRate_LS = 1.;
710  float EndcapRate_LS = 1.;
711  float PixelRate_LS = 1.;
712  MonitorElement *me = iGetter.get("Pixel/AdditionalPixelErrors/byLumiErrors");
713  if (me) {
714  double nBarrelErrors_LS = me->getBinContent(1) - nErrorsBarrel_lastLS_;
715  double nEndcapErrors_LS = me->getBinContent(2) - nErrorsEndcap_lastLS_;
716  double nEvents_LS = me->getBinContent(0) - nEvents_lastLS_;
717  if (nBarrelErrors_LS / nEvents_LS > 0.5)
718  BarrelRate_LS = 0.;
719  if (nEndcapErrors_LS / nEvents_LS > 0.5)
720  EndcapRate_LS = 0.;
721  if ((nBarrelErrors_LS + nEndcapErrors_LS) / nEvents_LS > 0.5)
722  PixelRate_LS = 0.;
723  }
724 
725  // evaluate mean cluster charge on tracks for data quality:
726  float BarrelClusterCharge = 1.;
727  float EndcapClusterCharge = 1.;
728  float PixelClusterCharge = 1.;
729  MonitorElement *me1 = iGetter.get("Pixel/Clusters/OnTrack/charge_siPixelClusters_Barrel");
730  if (me1 && me1->getMean() < 12.)
731  BarrelClusterCharge = 0.;
732  MonitorElement *me2 = iGetter.get("Pixel/Clusters/OnTrack/charge_siPixelClusters_Endcap");
733  if (me2 && me2->getMean() < 12.)
734  EndcapClusterCharge = 0.;
735  MonitorElement *me3 = iGetter.get("Pixel/Clusters/OnTrack/charge_siPixelClusters");
736  if (me3 && me3->getMean() < 12.)
737  PixelClusterCharge = 0.;
738 
739  // evaluate average FED occupancy for data quality:
740  float BarrelOccupancy = 1.;
741  float EndcapOccupancy = 1.;
742  float PixelOccupancy = 1.;
743  MonitorElement *me4 = iGetter.get("Pixel/averageDigiOccupancy");
744  if (me4) {
745  double minBarrelOcc = 999999.;
746  double maxBarrelOcc = -1.;
747  double meanBarrelOcc = 0.;
748  double minEndcapOcc = 999999.;
749  double maxEndcapOcc = -1.;
750  double meanEndcapOcc = 0.;
751  for (int i = 1; i != 41; i++) {
752  if (i <= 32 && me4->getBinContent(i) < minBarrelOcc)
753  minBarrelOcc = me4->getBinContent(i);
754  if (i <= 32 && me4->getBinContent(i) > maxBarrelOcc)
755  maxBarrelOcc = me4->getBinContent(i);
756  if (i <= 32)
757  meanBarrelOcc += me4->getBinContent(i);
758  if (i > 32 && me4->getBinContent(i) < minEndcapOcc)
759  minEndcapOcc = me4->getBinContent(i);
760  if (i > 32 && me4->getBinContent(i) > maxEndcapOcc)
761  maxEndcapOcc = me4->getBinContent(i);
762  if (i > 32)
763  meanEndcapOcc += me4->getBinContent(i);
764  }
765  meanBarrelOcc = meanBarrelOcc / 32.;
766  meanEndcapOcc = meanEndcapOcc / 8.;
767  if (minBarrelOcc < 0.1 * meanBarrelOcc || maxBarrelOcc > 2.5 * meanBarrelOcc)
768  BarrelOccupancy = 0.;
769  if (minEndcapOcc < 0.2 * meanEndcapOcc || maxEndcapOcc > 1.8 * meanEndcapOcc)
770  EndcapOccupancy = 0.;
771  PixelOccupancy = BarrelOccupancy * EndcapOccupancy;
772  }
773 
774  float pixelFlag = PixelRate_LS * PixelClusterCharge * PixelOccupancy;
775  float barrelFlag = BarrelRate_LS * BarrelClusterCharge * BarrelOccupancy;
776  float endcapFlag = EndcapRate_LS * EndcapClusterCharge * EndcapOccupancy;
777  SummaryPixel = iGetter.get("Pixel/EventInfo/reportSummary");
778  if (SummaryPixel)
779  SummaryPixel->Fill(pixelFlag);
780  SummaryBarrel = iGetter.get("Pixel/EventInfo/reportSummaryContents/PixelBarrelFraction");
781  if (SummaryBarrel)
782  SummaryBarrel->Fill(barrelFlag);
783  SummaryEndcap = iGetter.get("Pixel/EventInfo/reportSummaryContents/PixelEndcapFraction");
784  if (SummaryEndcap)
785  SummaryEndcap->Fill(endcapFlag);
786 }
MonitorElement * SummaryBarrel
void Fill(long long x)
MonitorElement * SummaryPixel
MonitorElement * SummaryEndcap
virtual MonitorElement * get(std::string const &fullpath) const
Definition: DQMStore.cc:690
virtual double getMean(int axis=1) const
get mean value of histogram along x, y or z axis (axis=1, 2, 3 respectively)
virtual double getBinContent(int binx) const
get content of bin (1-D)

◆ fillGlobalQualityPlot()

void SiPixelDataQuality::fillGlobalQualityPlot ( DQMStore::IBooker iBooker,
DQMStore::IGetter iGetter,
bool  init,
const SiPixelFedCablingMap theCablingMap,
int  nFEDs,
bool  Tier0Flag,
int  lumisec 
)

Definition at line 790 of file SiPixelDataQuality.cc.

References allmodsMap, allmodsVec, newFWLiteAna::bin, visDQMUpload::buf, dqm::implementation::NavigatorBase::cd(), Skims_PA_cff::content, relmon_rootfiles_spy::contents, count, count1, count2, count3, count4, count5, count6, RefreshWebPage::dname, errcount, errmodsMap, errmodsVec, PixelSLinkDataInputSource_cfi::fedid, l1tstage2_dqm_sourceclient-live_cfg::fedId, dqm::implementation::IGetter::get(), dqm::impl::MonitorElement::getBinContent(), getDetId(), dqm::implementation::IGetter::getMEs(), dqm::impl::MonitorElement::getNbinsX(), dqm::implementation::IGetter::getSubdirs(), goodmodsMap, goodmodsVec, dqm::implementation::NavigatorBase::goUp(), mps_fire::i, createfilelist::int, dqmiolumiharvest::j, dqmdumpme::k, lastallmods_, lasterrmods_, phase1PixelTopology::layer, hlt_dqm_clientPB-live_cfg::me, modCounter_, dqm::implementation::NavigatorBase::pwd(), dqm::impl::MonitorElement::setBinContent(), dqm::implementation::NavigatorBase::setCurrentFolder(), SummaryReportMap, and SiPixelOfflineDQM_client_cff::Tier0Flag.

796  {
797  // std::cout<<"Entering SiPixelDataQuality::fillGlobalQualityPlot:
798  // "<<nFEDs<<std::endl;
799  if (init) {
800  count = 0;
801  errcount = 0;
802  init = false;
803  count1 = 0;
804  count2 = 0;
805  count3 = 0;
806  count4 = 0;
807  count5 = 0;
808  count6 = 0;
809  modCounter_ = 0;
810  if (!Tier0Flag) {
811  // The plots that these Vecs are integrated throughout a run
812  // So at each lumi section I save their last values (lastmods)
813  // And then subtract them out later when filling the SummaryMap
814  for (int j = 1; j != 41; j++) {
815  if (allmodsVec)
816  lastallmods_[j - 1] = allmodsVec->GetBinContent(j);
817  if (errmodsVec)
818  lasterrmods_[j - 1] = errmodsVec->GetBinContent(j);
819  if (allmodsVec)
820  allmodsVec->SetBinContent(j, 0.);
821  if (errmodsVec)
822  errmodsVec->SetBinContent(j, 0.);
823  if (goodmodsVec)
824  goodmodsVec->SetBinContent(j, 0.);
825  }
826  }
827  if (Tier0Flag) {
828  for (int i = 1; i != 3; i++)
829  for (int j = 1; j != 8; j++) {
830  if (allmodsMap)
831  allmodsMap->SetBinContent(i, j, 0.);
832  if (errmodsMap)
833  errmodsMap->SetBinContent(i, j, 0.);
834  if (goodmodsMap)
835  goodmodsMap->SetBinContent(i, j, 0.);
836  }
837  }
838  }
839 
840  //^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
841  // Fill Maps:
842  // Online:
843  if (nFEDs == 0)
844  return;
845 
846  if (!Tier0Flag) {
847  // Not elegant, but not sure where else to put this sweet new plot!
848  MonitorElement *meTmp = iGetter.get("Pixel/Barrel/NClustertoChargeRatio_AllMod");
849  MonitorElement *meTop = iGetter.get("Pixel/Barrel/SUMCLU_nclusters_Barrel");
850  MonitorElement *meBot = iGetter.get("Pixel/Barrel/SUMCLU_charge_Barrel");
851  if (meTop && meBot && meTmp) {
852  for (int bin = 1; bin < 769; ++bin) {
853  float content = 0.0;
854  if (meBot->getBinContent(bin) > 0.0) {
855  content = meTop->getBinContent(bin) / meBot->getBinContent(bin);
856  }
857  meTmp->setBinContent(bin, content);
858  }
859  for (int j = 0; j < 4; ++j) {
860  static const char buf[] = "Pixel/Barrel/NClustertoChargeRatio_NormMod%i";
861  char modplot[sizeof(buf) + 16];
862  sprintf(modplot, buf, j + 1);
863  MonitorElement *meFinal = iGetter.get(modplot);
864  if (!meFinal)
865  continue;
866  for (int i = 1; i < 769; ++i) {
867  int k = 3 - j;
868  if (int(i + k) % 4 == 0)
869  meFinal->setBinContent(int((i + k) / 4), meTmp->getBinContent(i));
870  }
871  // Filling done. Now modification.
872  float SFLay[3], TotLay[3];
873  for (int ll = 0; ll < 3; ++ll)
874  TotLay[ll] = 0.0;
875  for (int bin = 1; bin < (meFinal->getNbinsX() + 1); ++bin) {
876  int layer = int((bin % 48) / 16);
877  TotLay[layer] += meFinal->getBinContent(bin);
878  }
879  float laynorm = TotLay[1] / 64.;
880  for (int ll = 0; ll < 3; ++ll) {
881  SFLay[ll] = 0.0;
882  if (TotLay[ll] > 0.0 && TotLay[1] > 0.0)
883  SFLay[ll] = TotLay[1] / TotLay[ll] * (1. / laynorm);
884  }
885  // now loop through plot
886  for (int bin = 1; bin < (meFinal->getNbinsX() + 1); ++bin) {
887  // access the layer number for bin: int((i%48)/16)
888  int layer = int((bin % 48) / 16);
889  float content = meFinal->getBinContent(bin);
890  // apply scale factor to bin content
891  meFinal->setBinContent(bin, content * SFLay[layer]);
892  }
893  }
894  }
895 
896  string currDir = iBooker.pwd();
897  if (currDir.find("Reference") != string::npos || currDir.find("Additional") != string::npos)
898  return;
899  string dname = currDir.substr(currDir.find_last_of('/') + 1);
900  if (dname.find("Module_") != string::npos && currDir.find("Reference") == string::npos) {
901  vector<string> meVec = iGetter.getMEs();
902  int detId = -1;
903  int fedId = -1;
904  for (vector<string>::const_iterator it = meVec.begin(); it != meVec.end();
905  it++) { // loop over all modules and fill ndigis into allmodsMap
906  // checking for any digis or FED errors to decide if this module is in
907  // DAQ:
908  string full_path = currDir + "/" + (*it);
909  if (detId == -1 && full_path.find("SUMOFF") == string::npos &&
910  (full_path.find("ndigis") != string::npos && full_path.find("SUMDIG") == string::npos) &&
911  (getDetId(iGetter.get(full_path)) > 100)) {
912  MonitorElement *me = iGetter.get(full_path);
913  if (!me)
914  continue;
915  if ((full_path.find("ndigis") != string::npos)) {
916  modCounter_++;
917  detId = getDetId(me);
918  for (int fedid = 0; fedid != 40; ++fedid) {
919  SiPixelFrameConverter converter(theCablingMap, fedid);
920  uint32_t newDetId = detId;
921  if (converter.hasDetUnit(newDetId)) {
922  fedId = fedid;
923  break;
924  }
925  }
926  double NDigis = 0;
927  if (full_path.find("ndigis") != string::npos)
928  NDigis = me->getEntries();
929  float weight = (allmodsVec->GetBinContent(fedId + 1)) + NDigis;
930  allmodsVec->SetBinContent(fedId + 1, weight);
931  }
932  }
933  } // end loop over MEs
934  } // end of module dir's
935  vector<string> subDirVec = iGetter.getSubdirs();
936  for (vector<string>::const_iterator ic = subDirVec.begin(); ic != subDirVec.end(); ic++) {
937  iBooker.cd(*ic);
938  iGetter.cd(*ic);
939  init = false;
940  fillGlobalQualityPlot(iBooker, iGetter, init, theCablingMap, nFEDs, Tier0Flag, lumisec);
941  iBooker.goUp();
942  iGetter.setCurrentFolder(iBooker.pwd());
943  }
944  if (modCounter_ == 1440) {
945  iBooker.cd("Pixel/EventInfo/reportSummaryContents");
946  iGetter.cd("Pixel/EventInfo/reportSummaryContents");
947  if (iBooker.pwd() == "Pixel/EventInfo/reportSummaryContents") {
948  for (int i = 0; i != 40; i++) { // loop over FEDs to fetch the errors
949  static const char buf[] = "Pixel/AdditionalPixelErrors/FED_%d/FedChNErr";
950  char fedplot[sizeof(buf) + 4];
951  int NErrors = 0;
952  for (int j = 0; j != 37; j++) { // loop over FED channels within a FED
953  sprintf(fedplot, buf, i);
954  MonitorElement *me = iGetter.get(fedplot);
955  if (me)
956  NErrors = NErrors + me->getBinContent(j + 1);
957  }
958  // If I fill, then I end up majorly overcounting the numbers of
959  // errors...
960  if (NErrors > 0) {
961  errmodsVec->SetBinContent(i + 1, NErrors);
962  }
963  }
964  SummaryReportMap = iGetter.get("Pixel/EventInfo/reportSummaryMap");
965  if (SummaryReportMap) {
966  float contents = 0.;
967  for (int i = 1; i != 41; i++) {
968  // Dynamically subtracting previous (integrated) lumi section values
969  // in order to only show current lumi section's numbers
970  float mydigis = allmodsVec->GetBinContent(i) - lastallmods_[i - 1];
971  float myerrs = errmodsVec->GetBinContent(i) - lasterrmods_[i - 1];
972  if ((mydigis + myerrs) > 0.) {
973  contents = mydigis / (mydigis + myerrs);
974  } else {
975  // Changed so that dynamic zooming will still
976  // advance over these bins(in renderplugins)
977  contents = -0.5;
978  }
979  SummaryReportMap->setBinContent(lumisec + 1, i, contents);
980  } // end for loop over summaryReportMap bins
981  } // end if reportSummaryMap ME exists
982  } // end if in summary directory
983  } // end if modCounter_
984  } else { // Offline
985  float barrel_errors_temp[1] = {-1.};
986  int barrel_cuts_temp[6] = {6 * -1};
987  float endcap_errors_temp[1] = {-1.};
988  int endcap_cuts_temp[6] = {6 * -1};
989  int pixel_cuts_temp[1] = {-1};
990  // Barrel results:
992  me = iGetter.get("Pixel/Barrel/BarrelNErrorsCut");
993  if (me)
994  barrel_errors_temp[0] = me->getFloatValue();
995  me = iGetter.get("Pixel/Endcap/EndcapNErrorsCut");
996  if (me)
997  endcap_errors_temp[0] = me->getFloatValue();
998  SummaryReportMap->setBinContent(1, 1, barrel_errors_temp[0]);
999  SummaryReportMap->setBinContent(2, 1, endcap_errors_temp[0]);
1000  me = iGetter.get("Pixel/Barrel/BarrelNDigisCut");
1001  if (me)
1002  barrel_cuts_temp[0] = me->getIntValue();
1003  me = iGetter.get("Pixel/Barrel/BarrelDigiChargeCut");
1004  if (me)
1005  barrel_cuts_temp[1] = me->getIntValue();
1006  me = iGetter.get("Pixel/Barrel/BarrelClusterSizeCut");
1007  if (me)
1008  barrel_cuts_temp[2] = me->getIntValue();
1009  me = iGetter.get("Pixel/Barrel/BarrelNClustersCut");
1010  if (me)
1011  barrel_cuts_temp[3] = me->getIntValue();
1012  me = iGetter.get("Pixel/Barrel/BarrelClusterChargeCut");
1013  if (me)
1014  barrel_cuts_temp[4] = me->getIntValue();
1015  me = iGetter.get("Pixel/Endcap/EndcapNDigisCut");
1016  if (me)
1017  endcap_cuts_temp[0] = me->getIntValue();
1018  me = iGetter.get("Pixel/Endcap/EndcapDigiChargeCut");
1019  if (me)
1020  endcap_cuts_temp[1] = me->getIntValue();
1021  me = iGetter.get("Pixel/Endcap/EndcapClusterSizeCut");
1022  if (me)
1023  endcap_cuts_temp[2] = me->getIntValue();
1024  me = iGetter.get("Pixel/Endcap/EndcapNClustersCut");
1025  if (me)
1026  endcap_cuts_temp[3] = me->getIntValue();
1027  me = iGetter.get("Pixel/Endcap/EndcapClusterChargeCut");
1028  if (me)
1029  endcap_cuts_temp[4] = me->getIntValue();
1030  for (int j = 2; j != 7; j++) {
1031  SummaryReportMap->setBinContent(1, j, barrel_cuts_temp[j - 2]);
1032  SummaryReportMap->setBinContent(2, j, endcap_cuts_temp[j - 2]);
1033  }
1034  me = iGetter.get("Pixel/Tracks/PixelTracksCut");
1035  if (me)
1036  pixel_cuts_temp[0] = me->getIntValue();
1037  SummaryReportMap->setBinContent(1, 7, pixel_cuts_temp[0]);
1038  SummaryReportMap->setBinContent(2, 7, pixel_cuts_temp[0]);
1039  } // end of offline map
1040  if (allmodsMap)
1041  allmodsMap->Clear();
1042  if (goodmodsMap)
1043  goodmodsMap->Clear();
1044  if (errmodsMap)
1045  errmodsMap->Clear();
1046 }
virtual void setCurrentFolder(std::string const &fullpath)
Definition: DQMStore.cc:36
virtual std::vector< std::string > getMEs() const
Definition: DQMStore.cc:737
virtual std::string pwd()
Definition: DQMStore.cc:20
Definition: weight.py:1
int getDetId(MonitorElement *mE)
(Documentation under construction).
constexpr std::array< uint8_t, layerIndexSize > layer
Definition: init.py:1
MonitorElement * SummaryReportMap
virtual void setBinContent(int binx, double content)
set content of bin (1-D)
virtual MonitorElement * get(std::string const &fullpath) const
Definition: DQMStore.cc:690
virtual int getNbinsX() const
get # of bins in X-axis
void fillGlobalQualityPlot(DQMStore::IBooker &iBooker, DQMStore::IGetter &iGetter, bool init, const SiPixelFedCablingMap *theCablingMap, int nFEDs, bool Tier0Flag, int lumisec)
virtual double getBinContent(int binx) const
get content of bin (1-D)
virtual DQM_DEPRECATED std::vector< std::string > getSubdirs() const
Definition: DQMStore.cc:717

◆ getDetId()

int SiPixelDataQuality::getDetId ( MonitorElement mE)

(Documentation under construction).

Given a pointer to ME returns the associated detId

Definition at line 114 of file SiPixelDataQuality.cc.

References dqm::impl::MonitorElement::getName().

Referenced by fillGlobalQualityPlot().

114  {
115  const string &mEName = mE->getName();
116 
117  int detId = 0;
118 
119  if (mEName.find("_3") != string::npos) {
120  string detIdString = mEName.substr((mEName.find_last_of('_')) + 1, 9);
121  std::istringstream isst;
122  isst.str(detIdString);
123  isst >> detId;
124  }
125 
126  return detId;
127 }
const std::string & getName() const
get name of ME

Member Data Documentation

◆ allMods_

int SiPixelDataQuality::allMods_
private

Definition at line 93 of file SiPixelDataQuality.h.

Referenced by computeGlobalQualityFlag(), and SiPixelDataQuality().

◆ allmodsMap

TH2F* SiPixelDataQuality::allmodsMap
private

◆ allmodsVec

TH1D* SiPixelDataQuality::allmodsVec
private

◆ barrel_error_flag_

float SiPixelDataQuality::barrel_error_flag_
private

Definition at line 101 of file SiPixelDataQuality.h.

Referenced by computeGlobalQualityFlag().

◆ barrelMods_

int SiPixelDataQuality::barrelMods_
private

Definition at line 93 of file SiPixelDataQuality.h.

Referenced by computeGlobalQualityFlag().

◆ ClusterChargeBarrel

MonitorElement* SiPixelDataQuality::ClusterChargeBarrel
private

Definition at line 117 of file SiPixelDataQuality.h.

Referenced by bookGlobalQualityFlag(), and computeGlobalQualityFlag().

◆ ClusterChargeEndcap

MonitorElement* SiPixelDataQuality::ClusterChargeEndcap
private

Definition at line 118 of file SiPixelDataQuality.h.

Referenced by bookGlobalQualityFlag(), and computeGlobalQualityFlag().

◆ clusterCounterBarrel

int SiPixelDataQuality::clusterCounterBarrel
private

Definition at line 104 of file SiPixelDataQuality.h.

Referenced by computeGlobalQualityFlag().

◆ clusterCounterEndcap

int SiPixelDataQuality::clusterCounterEndcap
private

Definition at line 106 of file SiPixelDataQuality.h.

Referenced by computeGlobalQualityFlag().

◆ ClusterMod1

MonitorElement* SiPixelDataQuality::ClusterMod1
private

Definition at line 87 of file SiPixelDataQuality.h.

Referenced by bookGlobalQualityFlag().

◆ ClusterMod2

MonitorElement* SiPixelDataQuality::ClusterMod2
private

Definition at line 88 of file SiPixelDataQuality.h.

Referenced by bookGlobalQualityFlag().

◆ ClusterMod3

MonitorElement* SiPixelDataQuality::ClusterMod3
private

Definition at line 89 of file SiPixelDataQuality.h.

Referenced by bookGlobalQualityFlag().

◆ ClusterMod4

MonitorElement* SiPixelDataQuality::ClusterMod4
private

Definition at line 90 of file SiPixelDataQuality.h.

Referenced by bookGlobalQualityFlag().

◆ ClusterModAll

MonitorElement* SiPixelDataQuality::ClusterModAll
private

Definition at line 86 of file SiPixelDataQuality.h.

Referenced by bookGlobalQualityFlag().

◆ ClusterSizeBarrel

MonitorElement* SiPixelDataQuality::ClusterSizeBarrel
private

Definition at line 115 of file SiPixelDataQuality.h.

Referenced by bookGlobalQualityFlag(), and computeGlobalQualityFlag().

◆ ClusterSizeEndcap

MonitorElement* SiPixelDataQuality::ClusterSizeEndcap
private

Definition at line 116 of file SiPixelDataQuality.h.

Referenced by bookGlobalQualityFlag(), and computeGlobalQualityFlag().

◆ clusterStatsBarrel

bool SiPixelDataQuality::clusterStatsBarrel
private

Definition at line 103 of file SiPixelDataQuality.h.

Referenced by computeGlobalQualityFlag().

◆ clusterStatsEndcap

bool SiPixelDataQuality::clusterStatsEndcap
private

Definition at line 105 of file SiPixelDataQuality.h.

Referenced by computeGlobalQualityFlag().

◆ count

int SiPixelDataQuality::count
private

◆ count1

int SiPixelDataQuality::count1
private

Definition at line 125 of file SiPixelDataQuality.h.

Referenced by fillGlobalQualityPlot().

◆ count2

int SiPixelDataQuality::count2
private

Definition at line 126 of file SiPixelDataQuality.h.

Referenced by fillGlobalQualityPlot().

◆ count3

int SiPixelDataQuality::count3
private

Definition at line 127 of file SiPixelDataQuality.h.

Referenced by fillGlobalQualityPlot().

◆ count4

int SiPixelDataQuality::count4
private

Definition at line 128 of file SiPixelDataQuality.h.

Referenced by fillGlobalQualityPlot().

◆ count5

int SiPixelDataQuality::count5
private

Definition at line 129 of file SiPixelDataQuality.h.

Referenced by fillGlobalQualityPlot().

◆ count6

int SiPixelDataQuality::count6
private

Definition at line 130 of file SiPixelDataQuality.h.

Referenced by fillGlobalQualityPlot().

◆ DigiChargeBarrel

MonitorElement* SiPixelDataQuality::DigiChargeBarrel
private

Definition at line 111 of file SiPixelDataQuality.h.

Referenced by bookGlobalQualityFlag(), and computeGlobalQualityFlag().

◆ DigiChargeEndcap

MonitorElement* SiPixelDataQuality::DigiChargeEndcap
private

Definition at line 112 of file SiPixelDataQuality.h.

Referenced by bookGlobalQualityFlag(), and computeGlobalQualityFlag().

◆ digiCounterBarrel

int SiPixelDataQuality::digiCounterBarrel
private

Definition at line 104 of file SiPixelDataQuality.h.

Referenced by computeGlobalQualityFlag().

◆ digiCounterEndcap

int SiPixelDataQuality::digiCounterEndcap
private

Definition at line 106 of file SiPixelDataQuality.h.

Referenced by computeGlobalQualityFlag().

◆ digiStatsBarrel

bool SiPixelDataQuality::digiStatsBarrel
private

Definition at line 103 of file SiPixelDataQuality.h.

Referenced by computeGlobalQualityFlag().

◆ digiStatsEndcap

bool SiPixelDataQuality::digiStatsEndcap
private

Definition at line 105 of file SiPixelDataQuality.h.

Referenced by computeGlobalQualityFlag().

◆ DONE_

bool SiPixelDataQuality::DONE_
private

Definition at line 75 of file SiPixelDataQuality.h.

Referenced by computeGlobalQualityFlag().

◆ endcap_error_flag_

float SiPixelDataQuality::endcap_error_flag_
private

Definition at line 101 of file SiPixelDataQuality.h.

Referenced by computeGlobalQualityFlag().

◆ endcapMods_

int SiPixelDataQuality::endcapMods_
private

Definition at line 93 of file SiPixelDataQuality.h.

Referenced by computeGlobalQualityFlag().

◆ endOfModules_

bool SiPixelDataQuality::endOfModules_
private

Definition at line 79 of file SiPixelDataQuality.h.

◆ errcount

int SiPixelDataQuality::errcount
private

Definition at line 71 of file SiPixelDataQuality.h.

Referenced by fillGlobalQualityPlot().

◆ errmodsMap

TH2F* SiPixelDataQuality::errmodsMap
private

◆ errmodsVec

TH1D* SiPixelDataQuality::errmodsVec
private

◆ errorMods_

int SiPixelDataQuality::errorMods_
private

Definition at line 93 of file SiPixelDataQuality.h.

Referenced by computeGlobalQualityFlag(), and SiPixelDataQuality().

◆ FEDErrReportMap

MonitorElement* SiPixelDataQuality::FEDErrReportMap
private

Definition at line 96 of file SiPixelDataQuality.h.

◆ goodmodsMap

TH2F* SiPixelDataQuality::goodmodsMap
private

◆ goodmodsVec

TH1D* SiPixelDataQuality::goodmodsVec
private

◆ gotDigis

bool SiPixelDataQuality::gotDigis
private

Definition at line 72 of file SiPixelDataQuality.h.

◆ lastallmods_

float SiPixelDataQuality::lastallmods_[40]
private

Definition at line 136 of file SiPixelDataQuality.h.

Referenced by fillGlobalQualityPlot(), and SiPixelDataQuality().

◆ lasterrmods_

float SiPixelDataQuality::lasterrmods_[40]
private

Definition at line 135 of file SiPixelDataQuality.h.

Referenced by fillGlobalQualityPlot(), and SiPixelDataQuality().

◆ lastLS_

int SiPixelDataQuality::lastLS_
private

Definition at line 134 of file SiPixelDataQuality.h.

Referenced by SiPixelDataQuality().

◆ modCounter_

int SiPixelDataQuality::modCounter_
private

Definition at line 133 of file SiPixelDataQuality.h.

Referenced by fillGlobalQualityPlot().

◆ myfile_

std::ofstream SiPixelDataQuality::myfile_
private

Definition at line 77 of file SiPixelDataQuality.h.

◆ n_errors_barrel_

int SiPixelDataQuality::n_errors_barrel_
private

Definition at line 100 of file SiPixelDataQuality.h.

Referenced by computeGlobalQualityFlag().

◆ n_errors_endcap_

int SiPixelDataQuality::n_errors_endcap_
private

Definition at line 100 of file SiPixelDataQuality.h.

Referenced by computeGlobalQualityFlag().

◆ n_errors_pixel_

int SiPixelDataQuality::n_errors_pixel_
private

Definition at line 100 of file SiPixelDataQuality.h.

Referenced by computeGlobalQualityFlag().

◆ NClustersBarrel

MonitorElement* SiPixelDataQuality::NClustersBarrel
private

Definition at line 119 of file SiPixelDataQuality.h.

Referenced by bookGlobalQualityFlag(), and computeGlobalQualityFlag().

◆ NClustersEndcap

MonitorElement* SiPixelDataQuality::NClustersEndcap
private

Definition at line 120 of file SiPixelDataQuality.h.

Referenced by bookGlobalQualityFlag(), and computeGlobalQualityFlag().

◆ NDigisBarrel

MonitorElement* SiPixelDataQuality::NDigisBarrel
private

Definition at line 109 of file SiPixelDataQuality.h.

Referenced by bookGlobalQualityFlag(), and computeGlobalQualityFlag().

◆ NDigisEndcap

MonitorElement* SiPixelDataQuality::NDigisEndcap
private

Definition at line 110 of file SiPixelDataQuality.h.

Referenced by bookGlobalQualityFlag(), and computeGlobalQualityFlag().

◆ NErrorsBarrel

MonitorElement* SiPixelDataQuality::NErrorsBarrel
private

Definition at line 97 of file SiPixelDataQuality.h.

Referenced by bookGlobalQualityFlag(), and computeGlobalQualityFlag().

◆ NErrorsEndcap

MonitorElement* SiPixelDataQuality::NErrorsEndcap
private

Definition at line 98 of file SiPixelDataQuality.h.

Referenced by bookGlobalQualityFlag(), and computeGlobalQualityFlag().

◆ NErrorsFEDs

MonitorElement* SiPixelDataQuality::NErrorsFEDs
private

Definition at line 99 of file SiPixelDataQuality.h.

Referenced by bookGlobalQualityFlag().

◆ nevents_

int SiPixelDataQuality::nevents_
private

Definition at line 78 of file SiPixelDataQuality.h.

◆ NPixelTracks

MonitorElement* SiPixelDataQuality::NPixelTracks
private

Definition at line 123 of file SiPixelDataQuality.h.

Referenced by bookGlobalQualityFlag(), and computeGlobalQualityFlag().

◆ objectCount_

int SiPixelDataQuality::objectCount_
private

Definition at line 74 of file SiPixelDataQuality.h.

Referenced by computeGlobalQualityFlag().

◆ offlineXMLfile_

bool SiPixelDataQuality::offlineXMLfile_
private

Definition at line 62 of file SiPixelDataQuality.h.

◆ pixel_error_flag_

float SiPixelDataQuality::pixel_error_flag_
private

Definition at line 101 of file SiPixelDataQuality.h.

Referenced by computeGlobalQualityFlag().

◆ qflag_

float SiPixelDataQuality::qflag_
private

Definition at line 92 of file SiPixelDataQuality.h.

Referenced by computeGlobalQualityFlag(), and SiPixelDataQuality().

◆ SummaryBarrel

MonitorElement* SiPixelDataQuality::SummaryBarrel
private

◆ SummaryEndcap

MonitorElement* SiPixelDataQuality::SummaryEndcap
private

◆ SummaryPixel

MonitorElement* SiPixelDataQuality::SummaryPixel
private

◆ SummaryReportMap

MonitorElement* SiPixelDataQuality::SummaryReportMap
private

Definition at line 82 of file SiPixelDataQuality.h.

Referenced by bookGlobalQualityFlag(), and fillGlobalQualityPlot().

◆ timeoutCounter_

int SiPixelDataQuality::timeoutCounter_
private

Definition at line 132 of file SiPixelDataQuality.h.

Referenced by SiPixelDataQuality().

◆ trackCounterBarrel

int SiPixelDataQuality::trackCounterBarrel
private

Definition at line 104 of file SiPixelDataQuality.h.

Referenced by computeGlobalQualityFlag().

◆ trackCounterEndcap

int SiPixelDataQuality::trackCounterEndcap
private

Definition at line 106 of file SiPixelDataQuality.h.

Referenced by computeGlobalQualityFlag().

◆ trackStatsBarrel

bool SiPixelDataQuality::trackStatsBarrel
private

Definition at line 103 of file SiPixelDataQuality.h.

Referenced by computeGlobalQualityFlag().

◆ trackStatsEndcap

bool SiPixelDataQuality::trackStatsEndcap
private

Definition at line 105 of file SiPixelDataQuality.h.

Referenced by computeGlobalQualityFlag().