CMS 3D CMS Logo

RawDataClient.cc
Go to the documentation of this file.
2 
5 
7 
9 
10 #include <cmath>
11 
12 namespace ecaldqm {
13 
14  RawDataClient::RawDataClient() : DQWorkerClient(), synchErrThresholdFactor_(0.) {
15  qualitySummaries_.insert("QualitySummary");
16  }
17 
19  synchErrThresholdFactor_ = _params.getUntrackedParameter<double>("synchErrThresholdFactor");
20  }
21 
23  MESet& meQualitySummary(MEs_.at("QualitySummary"));
24  MESet& meErrorsSummary(MEs_.at("ErrorsSummary"));
25 
26  MESet const& sEntries(sources_.at("Entries"));
27  MESet const& sL1ADCC(sources_.at("L1ADCC"));
28  MESet const& sFEStatus(sources_.at("FEStatus"));
29 
30  uint32_t mask(1 << EcalDQMStatusHelper::STATUS_FLAG_ERROR);
31 
32  std::vector<int> dccStatus(nDCC, 1);
33 
34  for (unsigned iDCC(0); iDCC < nDCC; ++iDCC) {
35  double entries(sEntries.getBinContent(iDCC + 1));
36  if (entries > 1. &&
37  sL1ADCC.getBinContent(iDCC + 1) > synchErrThresholdFactor_ * std::log(entries) / std::log(10.))
38  dccStatus[iDCC] = 0;
39  }
40 
41  MESet::iterator meEnd(meQualitySummary.end());
42  for (MESet::iterator meItr(meQualitySummary.beginChannel()); meItr != meEnd; meItr.toNextChannel()) {
43  DetId id(meItr->getId());
44 
45  bool doMask(meQualitySummary.maskMatches(id, mask, statusManager_));
46 
47  int dccid(dccId(id));
48 
49  if (dccStatus[dccid - 1] == 0) {
50  meItr->setBinContent(doMask ? kMUnknown : kUnknown);
51  continue;
52  }
53 
54  int towerStatus(doMask ? kMGood : kGood);
55  float towerEntries(0.);
56  for (unsigned iS(0); iS < nFEFlags; iS++) {
57  float entries(sFEStatus.getBinContent(id, iS + 1));
58  towerEntries += entries;
59  if (entries > 0. && iS != Enabled && iS != Suppressed && iS != FIFOFull && iS != FIFOFullL1ADesync &&
60  iS != ForcedZS)
61  towerStatus = doMask ? kMBad : kBad;
62  }
63 
64  if (towerEntries < 1.)
65  towerStatus = doMask ? kMUnknown : kUnknown;
66 
67  meItr->setBinContent(towerStatus);
68  if (towerStatus == kBad)
69  meErrorsSummary.fill(dccid);
70  }
71  }
72 
74 } // namespace ecaldqm
T getUntrackedParameter(std::string const &, T const &) const
#define DEFINE_ECALDQM_WORKER(TYPE)
Definition: DQWorker.h:112
void producePlots(ProcessType) override
const_iterator & toNextChannel()
Definition: MESet.h:289
void setParams(edm::ParameterSet const &) override
static const int STATUS_FLAG_ERROR
std::set< std::string > qualitySummaries_
StatusManager const * statusManager_
MESetCollection sources_
Definition: DetId.h:17
MESetCollection MEs_
Definition: DQWorker.h:78
unsigned dccId(DetId const &)