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);
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);