23 std::vector<std::string> sourceList(_params.
getUntrackedParameter<std::vector<std::string> >(
"activeSources"));
24 if (
std::find(sourceList.begin(), sourceList.end(),
"Presample") == sourceList.end())
26 if (
std::find(sourceList.begin(), sourceList.end(),
"Timing") == sourceList.end())
28 if (
std::find(sourceList.begin(), sourceList.end(),
"TriggerPrimitives") == sourceList.end())
30 if (
std::find(sourceList.begin(), sourceList.end(),
"HotCell") == sourceList.end())
37 MESet& meReportSummaryContents(
MEs_.at(
"ReportSummaryContents"));
38 MESet& meReportSummary(
MEs_.at(
"ReportSummary"));
39 MESet& meReportSummaryMap(
MEs_.at(
"ReportSummaryMap"));
41 for (
unsigned iDCC(0); iDCC <
nDCC; ++iDCC) {
43 meReportSummaryContents.fill(dccid, -1.);
46 meReportSummary.fill(-1.);
48 meReportSummaryMap.reset(-1.);
52 MESet& meReportSummaryContents(
MEs_.at(
"ReportSummaryContents"));
53 MESet& meReportSummary(
MEs_.at(
"ReportSummary"));
55 for (
unsigned iDCC(0); iDCC <
nDCC; ++iDCC) {
57 meReportSummaryContents.fill(dccid, -1.);
59 meReportSummary.fill(-1.);
61 MESet const& sIntegrityByLumi(
sources_.at(
"IntegrityByLumi"));
64 MESet const& sFEStatusErrMapByLumi(
sources_.at(
"FEStatusErrMapByLumi"));
66 double integrityByLumi[
nDCC];
67 double rawDataByLumi[
nDCC];
68 for (
unsigned iDCC(0); iDCC <
nDCC; ++iDCC) {
69 integrityByLumi[iDCC] = sIntegrityByLumi.
getBinContent(iDCC + 1);
70 rawDataByLumi[iDCC] = sDesyncByLumi.getBinContent(iDCC + 1) + sFEByLumi.getBinContent(iDCC + 1);
73 MESet& meQualitySummary(
MEs_.at(
"QualitySummary"));
74 MESet& meReportSummaryMap(
MEs_.at(
"ReportSummaryMap"));
80 MESet const* sTriggerPrimitives(
using_(
"TriggerPrimitives") ? &
sources_.at(
"TriggerPrimitives") :
nullptr);
83 float totalChannels(0.);
84 float totalGood(0.), totalGoodRaw(0);
86 double dccChannels[
nDCC];
87 std::fill_n(dccChannels, nDCC, 0.);
88 double dccGood[
nDCC], dccGoodRaw[
nDCC];
89 std::fill_n(dccGood, nDCC, 0.);
90 std::fill_n(dccGoodRaw, nDCC, 0.);
92 std::map<uint32_t, int> badChannelsCount;
98 std::vector<bool> hasMismatchDCC(nDCC,
false);
99 for (
unsigned iDCC(0); iDCC <
nDCC; ++iDCC) {
100 if (sBXSRP.getBinContent(iDCC + 1) > 50. || sBXTCC.getBinContent(iDCC + 1) > 50.)
101 hasMismatchDCC[iDCC] =
true;
110 unsigned iDCC(
dccId(
id) - 1);
114 int integrity(sIntegrity ? (
int)sIntegrity->getBinContent(
id) :
kUnknown);
115 int presample(sPresample ? (
int)sPresample->getBinContent(
id) :
kUnknown);
116 int hotcell(sHotCell ? (
int)sHotCell->getBinContent(
id) :
kUnknown);
118 int trigprim(sTriggerPrimitives ? (
int)sTriggerPrimitives->getBinContent(
id) :
kUnknown);
119 int rawdata(sRawData.getBinContent(
id));
121 double rawdataLS(sFEStatusErrMapByLumi.getBinContent(
id));
125 if (integrity ==
kBad && integrityByLumi[iDCC] == 0. && !hasMismatchDCC[iDCC])
128 if (rawdata ==
kBad && rawDataByLumi[iDCC] == 0. && rawdataLS == 0.)
143 qItr->setBinContent(integrity);
147 qItr->setBinContent(status);
150 if (status ==
kBad) {
159 dccChannels[iDCC] += 1.;
164 bool isMasked(meQualitySummary.maskMatches(
id, mask,
statusManager_));
165 if (rawdataLS == 0. || isMasked) {
166 dccGoodRaw[iDCC] += 1.;
237 for (
unsigned iDCC(0); iDCC <
nDCC; ++iDCC) {
238 if (dccChannels[iDCC] < 1.)
242 float frac(dccGood[iDCC] / dccChannels[iDCC]);
243 float fracRaw(dccGoodRaw[iDCC] / dccChannels[iDCC]);
244 meReportSummaryMap.setBinContent(dccid, frac);
246 meReportSummaryContents.fill(dccid, fracLS);
252 float totalGoodLS(
onlineMode_ ? totalGood : totalGoodRaw);
253 if (totalChannels > 0.)
254 meReportSummary.fill(totalGoodLS / totalChannels);
257 if (totalChannels > 0.)
258 MEs_.at(
"GlobalSummary").setBinContent(1, totalGood / totalChannels);
259 MEs_.at(
"NBadFEDs").setBinContent(1, nBad);
void setParams(edm::ParameterSet const &) override
T getUntrackedParameter(std::string const &, T const &) const
#define DEFINE_ECALDQM_WORKER(TYPE)
constexpr uint32_t rawId() const
get the raw id
bool using_(std::string const &_name, ProcessType _type=kJob) const
void find(edm::Handle< EcalRecHitCollection > &hits, DetId thisDet, std::vector< EcalRecHitCollection::const_iterator > &hit, bool debug=false)
const_iterator & toNextChannel()
static const int STATUS_FLAG_ERROR
void producePlots(ProcessType) override
std::set< std::string > qualitySummaries_
virtual double getBinContent(DetId const &, int=0) const
StatusManager const * statusManager_
EcalTrigTowerDetId tower() const
get the HCAL/trigger iphi of this crystal
unsigned dccId(DetId const &)