File indexing completed on 2023-10-25 09:41:51
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011 #include "DQM/DTMonitorClient/src/DTLocalTriggerTest.h"
0012
0013
0014 #include "FWCore/Framework/interface/EventSetup.h"
0015 #include "FWCore/MessageLogger/interface/MessageLogger.h"
0016 #include "DQMServices/Core/interface/DQMStore.h"
0017
0018
0019 #include "Geometry/Records/interface/MuonGeometryRecord.h"
0020 #include "Geometry/DTGeometry/interface/DTGeometry.h"
0021
0022
0023 #include "TF1.h"
0024 #include "TProfile.h"
0025
0026
0027 #include <iostream>
0028 #include <sstream>
0029
0030 using namespace edm;
0031 using namespace std;
0032
0033 DTLocalTriggerTest::DTLocalTriggerTest(const edm::ParameterSet& ps) {
0034 setConfig(ps, "DTLocalTrigger");
0035 baseFolderTM = "DT/03-LocalTrigger-TM/";
0036 nMinEvts = ps.getUntrackedParameter<int>("nEventsCert", 5000);
0037
0038 bookingdone = false;
0039 }
0040
0041 DTLocalTriggerTest::~DTLocalTriggerTest() {}
0042
0043 void DTLocalTriggerTest::Bookings(DQMStore::IBooker& ibooker, DQMStore::IGetter& igetter) {
0044 vector<string>::const_iterator iTr = trigSources.begin();
0045 vector<string>::const_iterator trEnd = trigSources.end();
0046 vector<string>::const_iterator iHw = hwSources.begin();
0047 vector<string>::const_iterator hwEnd = hwSources.end();
0048
0049
0050 if (parameters.getUntrackedParameter<bool>("staticBooking", true)) {
0051 for (; iTr != trEnd; ++iTr) {
0052 trigSource = (*iTr);
0053 for (; iHw != hwEnd; ++iHw) {
0054 hwSource = (*iHw);
0055
0056 for (int wh = -2; wh <= 2; ++wh) {
0057 for (int sect = 1; sect <= 12; ++sect) {
0058 bookSectorHistos(ibooker, wh, sect, "BXDistribPhiIn");
0059 bookSectorHistos(ibooker, wh, sect, "QualDistribPhiIn");
0060 bookSectorHistos(ibooker, wh, sect, "BXDistribPhiOut");
0061 bookSectorHistos(ibooker, wh, sect, "QualDistribPhiOut");
0062 }
0063
0064 bookWheelHistos(ibooker, wh, "CorrectBXPhiIn");
0065 bookWheelHistos(ibooker, wh, "ResidualBXPhiIn");
0066 bookWheelHistos(ibooker, wh, "CorrFractionPhiIn");
0067 bookWheelHistos(ibooker, wh, "2ndFractionPhiIn");
0068 bookWheelHistos(ibooker, wh, "TriggerInclusivePhiIn");
0069
0070 bookWheelHistos(ibooker, wh, "CorrectBXPhiOut");
0071 bookWheelHistos(ibooker, wh, "ResidualBXPhiOut");
0072 bookWheelHistos(ibooker, wh, "CorrFractionPhiOut");
0073 bookWheelHistos(ibooker, wh, "2ndFractionPhiOut");
0074 bookWheelHistos(ibooker, wh, "TriggerInclusivePhiOut");
0075 }
0076 }
0077 }
0078 }
0079
0080 for (iTr = trigSources.begin(); iTr != trEnd; ++iTr) {
0081 trigSource = (*iTr);
0082 for (iHw = hwSources.begin(); iHw != hwSources.end(); ++iHw) {
0083 hwSource = (*iHw);
0084
0085 for (int wh = -2; wh <= 2; ++wh) {
0086 bookWheelHistos(ibooker, wh, "CorrFractionSummaryIn", "Summaries");
0087 bookWheelHistos(ibooker, wh, "2ndFractionSummaryIn", "Summaries");
0088 bookWheelHistos(ibooker, wh, "CorrFractionSummaryOut", "Summaries");
0089 bookWheelHistos(ibooker, wh, "2ndFractionSummaryOut", "Summaries");
0090 }
0091 bookCmsHistos(ibooker, "CorrFractionSummaryIn");
0092 bookCmsHistos(ibooker, "2ndFractionSummaryIn");
0093 bookCmsHistos(ibooker, "CorrFractionSummaryOut");
0094 bookCmsHistos(ibooker, "2ndFractionSummaryOut");
0095
0096 if (hwSource == "TM") {
0097 bookCmsHistos(ibooker, "TrigGlbSummary", "", true);
0098 }
0099 }
0100 }
0101
0102 bookingdone = true;
0103 }
0104
0105 void DTLocalTriggerTest::beginRun(const edm::Run& r, const edm::EventSetup& c) {
0106 DTLocalTriggerBaseTest::beginRun(r, c);
0107 }
0108
0109 void DTLocalTriggerTest::runClientDiagnostic(DQMStore::IBooker& ibooker, DQMStore::IGetter& igetter) {
0110 if (!bookingdone)
0111 Bookings(ibooker, igetter);
0112
0113
0114 for (vector<string>::const_iterator iTr = trigSources.begin(); iTr != trigSources.end(); ++iTr) {
0115 trigSource = (*iTr);
0116
0117 for (vector<string>::const_iterator iHw = hwSources.begin(); iHw != hwSources.end(); ++iHw) {
0118 hwSource = (*iHw);
0119
0120 for (int stat = 1; stat <= 4; ++stat) {
0121 for (int wh = -2; wh <= 2; ++wh) {
0122 for (int sect = 1; sect <= 12; ++sect) {
0123 DTChamberId chId(wh, stat, sect);
0124 int sector_id = (wh + wheelArrayShift) + (sect - 1) * 5;
0125
0126
0127 TH2F* BXvsQual = getHisto<TH2F>(igetter.get(getMEName("BXvsQual_In", "LocalTriggerPhiIn", chId)));
0128 TH1F* BestQual = getHisto<TH1F>(igetter.get(getMEName("BestQual_In", "LocalTriggerPhiIn", chId)));
0129 TH2F* Flag1stvsQual = getHisto<TH2F>(igetter.get(getMEName("Flag1stvsQual_In", "LocalTriggerPhiIn", chId)));
0130 if (BXvsQual && Flag1stvsQual && BestQual) {
0131 int corrSummary = 1;
0132 int secondSummary = 1;
0133
0134 double BX_OK = 51.;
0135 double BXMean = 51.;
0136 double corrFrac = 0.;
0137 double secondFrac = 0.;
0138 double besttrigs = 0.;
0139 if (BestQual->GetEntries() > 1) {
0140 TH1D* BXHH = BXvsQual->ProjectionY("", 6, 7, "");
0141 TH1D* Flag1st = Flag1stvsQual->ProjectionY();
0142 int BXOK_bin = BXHH->GetEntries() >= 1 ? BXHH->GetMaximumBin() : 51;
0143 BXMean = BXHH->GetEntries() >= 1 ? BXHH->GetMean() : 51;
0144 BX_OK = BXvsQual->GetYaxis()->GetBinCenter(BXOK_bin);
0145 double trigsFlag2nd = Flag1st->GetBinContent(2);
0146 double trigs = Flag1st->GetEntries();
0147 besttrigs = BestQual->GetEntries();
0148 double besttrigsCorr = BestQual->Integral(5, 7, "");
0149 delete BXHH;
0150 delete Flag1st;
0151
0152 corrFrac = besttrigsCorr / besttrigs;
0153 secondFrac = trigsFlag2nd / trigs;
0154 if (corrFrac < parameters.getUntrackedParameter<double>("corrFracError", .5)) {
0155 corrSummary = 2;
0156 } else if (corrFrac < parameters.getUntrackedParameter<double>("corrFracWarning", .6)) {
0157 corrSummary = 3;
0158 } else {
0159 corrSummary = 0;
0160 }
0161 if (secondFrac > parameters.getUntrackedParameter<double>("secondFracError", .2)) {
0162 secondSummary = 2;
0163 } else if (secondFrac > parameters.getUntrackedParameter<double>("secondFracWarning", .1)) {
0164 secondSummary = 3;
0165 } else {
0166 secondSummary = 0;
0167 }
0168
0169 if (secME[sector_id].find(fullName("BXDistribPhiIn")) == secME[sector_id].end()) {
0170 bookSectorHistos(ibooker, wh, sect, "QualDistribPhiIn");
0171 bookSectorHistos(ibooker, wh, sect, "BXDistribPhiIn");
0172 }
0173
0174 TH1D* BXDistr = BXvsQual->ProjectionY();
0175 TH1D* QualDistr = BXvsQual->ProjectionX();
0176 std::map<std::string, MonitorElement*>* innerME = &(secME[sector_id]);
0177
0178 int nbinsBX = BXDistr->GetNbinsX();
0179 int firstBinCenter = static_cast<int>(BXDistr->GetBinCenter(1));
0180 int lastBinCenter = static_cast<int>(BXDistr->GetBinCenter(nbinsBX));
0181 int iMin = firstBinCenter > -4 ? firstBinCenter : -4;
0182 int iMax = lastBinCenter < 20 ? lastBinCenter : 20;
0183 for (int ibin = iMin + 5; ibin <= iMax + 5; ++ibin) {
0184 innerME->find(fullName("BXDistribPhiIn"))
0185 ->second->setBinContent(ibin, stat, BXDistr->GetBinContent(ibin - 5 - firstBinCenter + 1));
0186 }
0187 for (int ibin = 1; ibin <= 7; ++ibin) {
0188 innerME->find(fullName("QualDistribPhiIn"))
0189 ->second->setBinContent(ibin, stat, QualDistr->GetBinContent(ibin));
0190 }
0191
0192 delete BXDistr;
0193 delete QualDistr;
0194 }
0195
0196 std::map<std::string, MonitorElement*>* innerME = &(secME[sector_id]);
0197
0198 if (whME[wh].find(fullName("CorrectBXPhiIn")) == whME[wh].end()) {
0199 bookWheelHistos(ibooker, wh, "ResidualBXPhiIn");
0200 bookWheelHistos(ibooker, wh, "CorrectBXPhiIn");
0201 bookWheelHistos(ibooker, wh, "CorrFractionPhiIn");
0202 bookWheelHistos(ibooker, wh, "2ndFractionPhiIn");
0203 bookWheelHistos(ibooker, wh, "TriggerInclusivePhiIn");
0204 }
0205
0206 innerME = &(whME[wh]);
0207 innerME->find(fullName("CorrectBXPhiIn"))->second->setBinContent(sect, stat, BX_OK + 0.00001);
0208 innerME->find(fullName("ResidualBXPhiIn"))
0209 ->second->setBinContent(sect, stat, round(25. * (BXMean - BX_OK)) + 0.00001);
0210 innerME->find(fullName("CorrFractionPhiIn"))->second->setBinContent(sect, stat, corrFrac);
0211 innerME->find(fullName("TriggerInclusivePhiIn"))->second->setBinContent(sect, stat, besttrigs);
0212 innerME->find(fullName("2ndFractionPhiIn"))->second->setBinContent(sect, stat, secondFrac);
0213
0214 whME[wh].find(fullName("CorrFractionSummaryIn"))->second->setBinContent(sect, stat, corrSummary);
0215 whME[wh].find(fullName("2ndFractionSummaryIn"))->second->setBinContent(sect, stat, secondSummary);
0216
0217 }
0218
0219 if (hwSource == "TM") {
0220
0221
0222 TH2F* BXvsQual = getHisto<TH2F>(igetter.get(getMEName("BXvsQual_Out", "LocalTriggerPhiOut", chId)));
0223 TH1F* BestQual = getHisto<TH1F>(igetter.get(getMEName("BestQual_Out", "LocalTriggerPhiOut", chId)));
0224 TH2F* Flag1stvsQual =
0225 getHisto<TH2F>(igetter.get(getMEName("Flag1stvsQual_Out", "LocalTriggerPhiOut", chId)));
0226 if (BXvsQual && Flag1stvsQual && BestQual) {
0227 int corrSummary = 1;
0228 int secondSummary = 1;
0229
0230 double BX_OK = 51.;
0231 double BXMean = 51.;
0232 double corrFrac = 0.;
0233 double secondFrac = 0.;
0234 double besttrigs = 0.;
0235
0236 if (BestQual->GetEntries() > 1) {
0237 TH1D* BXHH = BXvsQual->ProjectionY("", 6, 7, "");
0238 TH1D* Flag1st = Flag1stvsQual->ProjectionY();
0239 int BXOK_bin = BXHH->GetEntries() >= 1 ? BXHH->GetMaximumBin() : 51;
0240 BXMean = BXHH->GetEntries() >= 1 ? BXHH->GetMean() : 51;
0241 BX_OK = BXvsQual->GetYaxis()->GetBinCenter(BXOK_bin);
0242 double trigsFlag2nd = Flag1st->GetBinContent(2);
0243 double trigs = Flag1st->GetEntries();
0244 besttrigs = BestQual->GetEntries();
0245 double besttrigsCorr = BestQual->Integral(5, 7, "");
0246 delete BXHH;
0247 delete Flag1st;
0248
0249 corrFrac = besttrigsCorr / besttrigs;
0250 secondFrac = trigsFlag2nd / trigs;
0251 if (corrFrac < parameters.getUntrackedParameter<double>("corrFracError", .5)) {
0252 corrSummary = 2;
0253 } else if (corrFrac < parameters.getUntrackedParameter<double>("corrFracWarning", .6)) {
0254 corrSummary = 3;
0255 } else {
0256 corrSummary = 0;
0257 }
0258 if (secondFrac > parameters.getUntrackedParameter<double>("secondFracError", .2)) {
0259 secondSummary = 2;
0260 } else if (secondFrac > parameters.getUntrackedParameter<double>("secondFracWarning", .1)) {
0261 secondSummary = 3;
0262 } else {
0263 secondSummary = 0;
0264 }
0265
0266 if (secME[sector_id].find(fullName("BXDistribPhiOut")) == secME[sector_id].end()) {
0267 bookSectorHistos(ibooker, wh, sect, "QualDistribPhiOut");
0268 bookSectorHistos(ibooker, wh, sect, "BXDistribPhiOut");
0269 }
0270
0271 TH1D* BXDistr = BXvsQual->ProjectionY();
0272 TH1D* QualDistr = BXvsQual->ProjectionX();
0273 std::map<std::string, MonitorElement*>* innerME = &(secME[sector_id]);
0274
0275 int nbinsBX = BXDistr->GetNbinsX();
0276 int firstBinCenter = static_cast<int>(BXDistr->GetBinCenter(1));
0277 int lastBinCenter = static_cast<int>(BXDistr->GetBinCenter(nbinsBX));
0278 int iMin = firstBinCenter > -4 ? firstBinCenter : -4;
0279 int iMax = lastBinCenter < 20 ? lastBinCenter : 20;
0280 for (int ibin = iMin + 5; ibin <= iMax + 5; ++ibin) {
0281 innerME->find(fullName("BXDistribPhiOut"))
0282 ->second->setBinContent(ibin, stat, BXDistr->GetBinContent(ibin - 5 - firstBinCenter + 1));
0283 }
0284 for (int ibin = 1; ibin <= 7; ++ibin) {
0285 innerME->find(fullName("QualDistribPhiOut"))
0286 ->second->setBinContent(ibin, stat, QualDistr->GetBinContent(ibin));
0287 }
0288
0289 delete BXDistr;
0290 delete QualDistr;
0291 }
0292
0293 std::map<std::string, MonitorElement*>* innerME = &(secME[sector_id]);
0294
0295 if (whME[wh].find(fullName("CorrectBXPhiOut")) == whME[wh].end()) {
0296 bookWheelHistos(ibooker, wh, "ResidualBXPhiOut");
0297 bookWheelHistos(ibooker, wh, "CorrectBXPhiOut");
0298 bookWheelHistos(ibooker, wh, "CorrFractionPhiOut");
0299 bookWheelHistos(ibooker, wh, "2ndFractionPhiOut");
0300 bookWheelHistos(ibooker, wh, "TriggerInclusivePhiOut");
0301 }
0302
0303 innerME = &(whME[wh]);
0304 innerME->find(fullName("CorrectBXPhiOut"))->second->setBinContent(sect, stat, BX_OK + 0.00001);
0305 innerME->find(fullName("ResidualBXPhiOut"))
0306 ->second->setBinContent(sect, stat, round(25. * (BXMean - BX_OK)) + 0.00001);
0307 innerME->find(fullName("CorrFractionPhiOut"))->second->setBinContent(sect, stat, corrFrac);
0308 innerME->find(fullName("TriggerInclusivePhiOut"))->second->setBinContent(sect, stat, besttrigs);
0309 innerME->find(fullName("2ndFractionPhiOut"))->second->setBinContent(sect, stat, secondFrac);
0310
0311 whME[wh].find(fullName("CorrFractionSummaryOut"))->second->setBinContent(sect, stat, corrSummary);
0312 whME[wh].find(fullName("2ndFractionSummaryOut"))->second->setBinContent(sect, stat, secondSummary);
0313
0314 }
0315
0316 }
0317
0318 if (hwSource == "TM") {
0319
0320 TH2F* ThetaPosvsBX = getHisto<TH2F>(igetter.get(getMEName("PositionvsBX", "LocalTriggerTheta", chId)));
0321 double BX_OK = 48;
0322
0323 if (ThetaPosvsBX && stat < 4 && ThetaPosvsBX->GetEntries() > 1) {
0324 TH1D* BX = ThetaPosvsBX->ProjectionX();
0325 int BXOK_bin = BX->GetEffectiveEntries() >= 1 ? BX->GetMaximumBin() : 10;
0326 BX_OK = ThetaPosvsBX->GetXaxis()->GetBinCenter(BXOK_bin);
0327 delete BX;
0328
0329 if (whME[wh].find(fullName("CorrectBXTheta")) == whME[wh].end()) {
0330 bookWheelHistos(ibooker, wh, "CorrectBXTheta");
0331 }
0332 std::map<std::string, MonitorElement*>* innerME = &(whME.find(wh)->second);
0333 innerME->find(fullName("CorrectBXTheta"))->second->setBinContent(sect, stat, BX_OK + 0.00001);
0334 }
0335
0336 TH2F* ThetaBXvsQual = getHisto<TH2F>(igetter.get(getMEName("ThetaBXvsQual", "LocalTriggerTheta", chId)));
0337 TH1F* ThetaBestQual = getHisto<TH1F>(igetter.get(getMEName("ThetaBestQual", "LocalTriggerTheta", chId)));
0338 if (ThetaBXvsQual && ThetaBestQual && stat < 4 && ThetaBestQual->GetEntries() > 1) {
0339 double trigs = ThetaBestQual->GetEntries();
0340 double trigsH = ThetaBestQual->GetBinContent(
0341 2);
0342 if (whME[wh].find(fullName("HFractionTheta")) == whME[wh].end()) {
0343 bookWheelHistos(ibooker, wh, "HFractionTheta");
0344 }
0345 std::map<std::string, MonitorElement*>* innerME = &(whME.find(wh)->second);
0346 innerME->find(fullName("HFractionTheta"))->second->setBinContent(sect, stat, trigsH / trigs);
0347 }
0348
0349 }
0350 }
0351 }
0352 }
0353 }
0354 }
0355
0356 for (vector<string>::const_iterator iTr = trigSources.begin(); iTr != trigSources.end(); ++iTr) {
0357 trigSource = (*iTr);
0358 for (vector<string>::const_iterator iHw = hwSources.begin(); iHw != hwSources.end(); ++iHw) {
0359 hwSource = (*iHw);
0360 for (int wh = -2; wh <= 2; ++wh) {
0361 std::map<std::string, MonitorElement*>* innerME = &(whME[wh]);
0362
0363 TH2F* corrWhSummaryIn = getHisto<TH2F>(innerME->find(fullName("CorrFractionSummaryIn"))->second);
0364 TH2F* secondWhSummaryIn = getHisto<TH2F>(innerME->find(fullName("2ndFractionSummaryIn"))->second);
0365 for (int sect = 1; sect <= 12; ++sect) {
0366 int corrErr = 0;
0367 int secondErr = 0;
0368 int corrNoData = 0;
0369 int secondNoData = 0;
0370 for (int stat = 1; stat <= 4; ++stat) {
0371 switch (static_cast<int>(corrWhSummaryIn->GetBinContent(sect, stat))) {
0372 case 1:
0373 corrNoData++;
0374 [[fallthrough]];
0375 case 2:
0376 corrErr++;
0377 }
0378 switch (static_cast<int>(secondWhSummaryIn->GetBinContent(sect, stat))) {
0379 case 1:
0380 secondNoData++;
0381 [[fallthrough]];
0382 case 2:
0383 secondErr++;
0384 }
0385 }
0386 if (corrNoData == 4)
0387 corrErr = 5;
0388 if (secondNoData == 4)
0389 secondErr = 5;
0390 cmsME.find(fullName("CorrFractionSummaryIn"))->second->setBinContent(sect, wh + wheelArrayShift, corrErr);
0391 cmsME.find(fullName("2ndFractionSummaryIn"))->second->setBinContent(sect, wh + wheelArrayShift, secondErr);
0392 }
0393
0394 TH2F* corrWhSummaryOut = getHisto<TH2F>(innerME->find(fullName("CorrFractionSummaryOut"))->second);
0395 TH2F* secondWhSummaryOut = getHisto<TH2F>(innerME->find(fullName("2ndFractionSummaryOut"))->second);
0396 for (int sect = 1; sect <= 12; ++sect) {
0397 int corrErr = 0;
0398 int secondErr = 0;
0399 int corrNoData = 0;
0400 int secondNoData = 0;
0401 for (int stat = 1; stat <= 4; ++stat) {
0402 switch (static_cast<int>(corrWhSummaryOut->GetBinContent(sect, stat))) {
0403 case 1:
0404 corrNoData++;
0405 [[fallthrough]];
0406 case 2:
0407 corrErr++;
0408 }
0409 switch (static_cast<int>(secondWhSummaryOut->GetBinContent(sect, stat))) {
0410 case 1:
0411 secondNoData++;
0412 [[fallthrough]];
0413 case 2:
0414 secondErr++;
0415 }
0416 }
0417 if (corrNoData == 4)
0418 corrErr = 5;
0419 if (secondNoData == 4)
0420 secondErr = 5;
0421 cmsME.find(fullName("CorrFractionSummaryOut"))->second->setBinContent(sect, wh + wheelArrayShift, corrErr);
0422 cmsME.find(fullName("2ndFractionSummaryOut"))->second->setBinContent(sect, wh + wheelArrayShift, secondErr);
0423 }
0424 }
0425 }
0426 }
0427 fillGlobalSummary(igetter);
0428 }
0429
0430 void DTLocalTriggerTest::fillGlobalSummary(DQMStore::IGetter& igetter) {
0431 float glbPerc[5] = {1., 0.9, 0.6, 0.3, 0.01};
0432 trigSource = "";
0433 hwSource = "TM";
0434
0435 int nSecReadout = 0;
0436
0437 for (int wh = -2; wh <= 2; ++wh) {
0438 for (int sect = 1; sect <= 12; ++sect) {
0439 float maxErr = 8.;
0440 int corr = cmsME.find(fullName("CorrFractionSummaryIn"))->second->getBinContent(sect, wh + wheelArrayShift);
0441 int second = cmsME.find(fullName("2ndFractionSummaryIn"))->second->getBinContent(sect, wh + wheelArrayShift);
0442 int lut = 0;
0443 MonitorElement* lutsME = igetter.get(topFolder() + "Summaries/TrigLutSummary");
0444 if (lutsME) {
0445 lut = lutsME->getBinContent(sect, wh + wheelArrayShift);
0446 maxErr += 4;
0447 } else {
0448 LogTrace(category()) << "[" << testName << "Test]: TM Lut test Summary histo not found." << endl;
0449 }
0450 (corr < 5 || second < 5) && nSecReadout++;
0451 int errcode = ((corr < 5 ? corr : 4) + (second < 5 ? second : 4) + (lut < 5 ? lut : 4));
0452 errcode = min(int((errcode / maxErr + 0.01) * 4), 4);
0453 cmsME.find("TrigGlbSummary")->second->setBinContent(sect, wh + wheelArrayShift, glbPerc[errcode]);
0454 }
0455 }
0456
0457 if (!nSecReadout)
0458 cmsME.find("TrigGlbSummary")->second->Reset();
0459
0460 string nEvtsName = "DT/EventInfo/Counters/nProcessedEventsTrigger";
0461 MonitorElement* meProcEvts = igetter.get(nEvtsName);
0462
0463 if (meProcEvts) {
0464 int nProcEvts = meProcEvts->getFloatValue();
0465 cmsME.find("TrigGlbSummary")->second->setEntries(nProcEvts < nMinEvts ? 10. : nProcEvts);
0466 } else {
0467 cmsME.find("TrigGlbSummary")->second->setEntries(nMinEvts + 1);
0468 LogVerbatim(category()) << "[" << testName << "Test]: ME: " << nEvtsName << " not found!" << endl;
0469 }
0470 }