From d34dfe7443c02454abf6ebeb802630ae8109c039 Mon Sep 17 00:00:00 2001 From: Deniz Sunar Cerci Date: Tue, 20 Aug 2024 16:09:06 +0200 Subject: [PATCH] Change from mod60 to mod10 for Bad Quality Events histogram and Bad CapID rotation histogram --- DQM/HcalTasks/data/HcalQualityTests.xml | 19 +++++++++++++- DQM/HcalTasks/interface/DigiTask.h | 2 +- DQM/HcalTasks/interface/RawTask.h | 7 ++--- DQM/HcalTasks/plugins/DigiTask.cc | 16 ++++++------ DQM/HcalTasks/plugins/RawTask.cc | 34 ++++++++++++++++++++++--- 5 files changed, 62 insertions(+), 16 deletions(-) diff --git a/DQM/HcalTasks/data/HcalQualityTests.xml b/DQM/HcalTasks/data/HcalQualityTests.xml index 1e72797cb84e5..c39d2df08e6de 100644 --- a/DQM/HcalTasks/data/HcalQualityTests.xml +++ b/DQM/HcalTasks/data/HcalQualityTests.xml @@ -30,4 +30,21 @@ BadCapIDThreshold - \ No newline at end of file + + ContentsWithinExpected + 1.0 + 1.0 + -1.0 + 0.0 + 0.0 + 0.0 + -1.0 + 0 + 1 + + + BadQualityThreshold + + + + diff --git a/DQM/HcalTasks/interface/DigiTask.h b/DQM/HcalTasks/interface/DigiTask.h index e13f532ee5a15..e2664eb15c3ee 100644 --- a/DQM/HcalTasks/interface/DigiTask.h +++ b/DQM/HcalTasks/interface/DigiTask.h @@ -169,7 +169,7 @@ class DigiTask : public hcaldqm::DQTask { hcaldqm::ContainerSingle2D _cCapidMinusBXmod4_CrateSlotuTCA[4]; // CrateSlot 2D histograms for each (capid-BX)%4 hcaldqm::ContainerSingle2D _cCapid_BadvsFEDvsLS; hcaldqm::ContainerSingle2D - _cCapid_BadvsFEDvsLSmod60; // Same as _cCapid_BadvsFEDvsLS, but only for last 50 LSes (for sound alarm turning off when problem goes away) + _cCapid_BadvsFEDvsLSmod10; // Same as _cCapid_BadvsFEDvsLS, but only for last 50 LSes (for sound alarm turning off when problem goes away) // #events counters MonitorElement *meNumEvents1LS; // to transfer the #events to harvesting diff --git a/DQM/HcalTasks/interface/RawTask.h b/DQM/HcalTasks/interface/RawTask.h index 99b35969afdf6..fe994a5538518 100644 --- a/DQM/HcalTasks/interface/RawTask.h +++ b/DQM/HcalTasks/interface/RawTask.h @@ -51,7 +51,7 @@ class RawTask : public hcaldqm::DQTask { // physics vs calib processing switch bool _calibProcessing; int _thresh_calib_nbadq; - + int _NBadQEvent; // vector of HcalElectronicsId for FEDs std::vector _vhashFEDs; @@ -75,8 +75,9 @@ class RawTask : public hcaldqm::DQTask { hcaldqm::Container2D _cOrnMsm_ElectronicsuTCA; hcaldqm::ContainerXXX _xEvnMsmLS, _xBcnMsmLS, _xOrnMsmLS, _xBadQLS; - hcaldqm::Container2D _cSummaryvsLS_FED; // online only - hcaldqm::ContainerSingle2D _cSummaryvsLS; // online only + hcaldqm::Container2D _cSummaryvsLS_FED; // online only + hcaldqm::ContainerSingle2D _cSummaryvsLS; // online only + hcaldqm::ContainerSingle2D _cBadQ_FEDvsLSmod10; // online only }; #endif diff --git a/DQM/HcalTasks/plugins/DigiTask.cc b/DQM/HcalTasks/plugins/DigiTask.cc index 7b9daa4e19052..69bede7bd69db 100644 --- a/DQM/HcalTasks/plugins/DigiTask.cc +++ b/DQM/HcalTasks/plugins/DigiTask.cc @@ -459,9 +459,9 @@ DigiTask::DigiTask(edm::ParameterSet const& ps) new hcaldqm::quantity::ValueQuantity(hcaldqm::quantity::fN, true), 0); - _cCapid_BadvsFEDvsLSmod60.initialize(_name, + _cCapid_BadvsFEDvsLSmod10.initialize(_name, "CapID", - new hcaldqm::quantity::LumiSection(60), + new hcaldqm::quantity::LumiSection(10), new hcaldqm::quantity::FEDQuantity(vFEDs), new hcaldqm::quantity::ValueQuantity(hcaldqm::quantity::fN, true), 0); @@ -658,7 +658,7 @@ DigiTask::DigiTask(edm::ParameterSet const& ps) _cCapidMinusBXmod4_SubdetPM.book(ib, _emap, _subsystem); if (_ptype == fOnline) { _cCapid_BadvsFEDvsLS.book(ib, _subsystem, "BadvsLS"); - _cCapid_BadvsFEDvsLSmod60.book(ib, _subsystem, "BadvsLSmod60"); + _cCapid_BadvsFEDvsLSmod10.book(ib, _subsystem, "BadvsLSmod10"); } for (int i = 0; i < 4; ++i) { constexpr unsigned int kSize = 32; @@ -787,10 +787,10 @@ DigiTask::DigiTask(edm::ParameterSet const& ps) _xQuality = lumiCache->xQuality; if (_ptype == fOnline && - lumiCache->EvtCntLS == 1) { // Reset the bin for _cCapid_BadvsFEDvsLSmod60 at the beginning of each new LS + lumiCache->EvtCntLS == 1) { // Reset the bin for _cCapid_BadvsFEDvsLSmod10 at the beginning of each new LS for (std::vector::const_iterator it = _vhashFEDs.begin(); it != _vhashFEDs.end(); ++it) { HcalElectronicsId eid = HcalElectronicsId(*it); - _cCapid_BadvsFEDvsLSmod60.setBinContent(eid, _currentLS % 60, 0); + _cCapid_BadvsFEDvsLSmod10.setBinContent(eid, _currentLS % 10, 0); } } @@ -898,7 +898,7 @@ DigiTask::DigiTask(edm::ParameterSet const& ps) if (!good_capidmbx) { _xBadCapid.get(eid)++; _cCapid_BadvsFEDvsLS.fill(eid, _currentLS); - _cCapid_BadvsFEDvsLSmod60.fill(eid, _currentLS % 60); + _cCapid_BadvsFEDvsLSmod10.fill(eid, _currentLS % 10); } if (!eid.isVMEid()) { _cCapidMinusBXmod4_CrateSlotuTCA[this_capidmbx].fill(eid); @@ -1091,7 +1091,7 @@ DigiTask::DigiTask(edm::ParameterSet const& ps) if (!good_capidmbx) { _xBadCapid.get(eid)++; _cCapid_BadvsFEDvsLS.fill(eid, _currentLS); - _cCapid_BadvsFEDvsLSmod60.fill(eid, _currentLS % 60); + _cCapid_BadvsFEDvsLSmod10.fill(eid, _currentLS % 10); } if (!eid.isVMEid()) { _cCapidMinusBXmod4_CrateSlotuTCA[this_capidmbx].fill(eid); @@ -1256,7 +1256,7 @@ DigiTask::DigiTask(edm::ParameterSet const& ps) if (!good_capidmbx) { _xBadCapid.get(eid)++; _cCapid_BadvsFEDvsLS.fill(eid, _currentLS); - _cCapid_BadvsFEDvsLSmod60.fill(eid, _currentLS % 60); + _cCapid_BadvsFEDvsLSmod10.fill(eid, _currentLS % 10); } if (!eid.isVMEid()) { _cCapidMinusBXmod4_CrateSlotuTCA[this_capidmbx].fill(eid); diff --git a/DQM/HcalTasks/plugins/RawTask.cc b/DQM/HcalTasks/plugins/RawTask.cc index 1206a6a5166e3..3fe1693c98fa9 100644 --- a/DQM/HcalTasks/plugins/RawTask.cc +++ b/DQM/HcalTasks/plugins/RawTask.cc @@ -18,6 +18,7 @@ RawTask::RawTask(edm::ParameterSet const& ps) _vflags[fBcnMsm] = flag::Flag("BcnMsm"); _vflags[fBadQ] = flag::Flag("BadQ"); _vflags[fOrnMsm] = flag::Flag("OrnMsm"); + _NBadQEvent = 0; } /* virtual */ void RawTask::bookHistograms(DQMStore::IBooker& ib, edm::Run const& r, edm::EventSetup const& es) { @@ -131,6 +132,12 @@ RawTask::RawTask(edm::ParameterSet const& ps) new hcaldqm::quantity::FEDQuantity(vFEDs), new hcaldqm::quantity::ValueQuantity(hcaldqm::quantity::fState), 0); + _cBadQ_FEDvsLSmod10.initialize(_name, + "BadQ_FEDvsLSmod10", + new hcaldqm::quantity::LumiSection(10), + new hcaldqm::quantity::FEDQuantity(vFEDs), + new hcaldqm::quantity::ValueQuantity(hcaldqm::quantity::fN), + 0); // FED Size vs LS _cDataSizevsLS_FED.initialize(_name, "DataSizevsLS", @@ -166,6 +173,7 @@ RawTask::RawTask(edm::ParameterSet const& ps) _xBadQLS.book(_emap); _cSummaryvsLS_FED.book(ib, _emap, _subsystem); _cSummaryvsLS.book(ib, _subsystem); + _cBadQ_FEDvsLSmod10.book(ib, _subsystem); _cDataSizevsLS_FED.book(ib, _emap, _subsystem); } @@ -224,6 +232,12 @@ RawTask::RawTask(edm::ParameterSet const& ps) // TODO: Include for Online Calibration Channels marked as bad // a comment below is left on purpose! //_cBadQualityvsBX.fill(bx, creport->badQualityDigis()); + int Nbadq = creport->badQualityDigis(); + if (lumiCache->EvtCntLS == 1) + _NBadQEvent = 0; // Reset at the beginning of each new LS + if (Nbadq > 0) + _NBadQEvent++; + //std::cout << " Nbadq "<< Nbadq << " NBadQEvent " <<_NBadQEvent<< std::endl; for (std::vector::const_iterator it = creport->bad_quality_begin(); it != creport->bad_quality_end(); ++it) { // skip non HCAL det ids if (!HcalGenericDetId(*it).isHcalDetId()) @@ -242,7 +256,9 @@ RawTask::RawTask(edm::ParameterSet const& ps) _cBadQuality_depth.fill(HcalDetId(*it)); // ONLINE ONLY! if (_ptype == fOnline) + //Number of BadQualityDigis _xBadQLS.get(eid)++; + //std::cout << " event _xBadQLS "<< double(_xBadQLS.get(eid)) << std::endl; if (_ptype != fOffline) { // hidefed2crate if (!eid.isVMEid()) { if (_filter_FEDsuTCA.filter(eid)) @@ -393,13 +409,15 @@ std::shared_ptr RawTask::globalBeginLuminosityBlock(edm::Luminos for (std::vector::const_iterator it = _vhashFEDs.begin(); it != _vhashFEDs.end(); ++it) { flag::Flag fSum("RAW"); HcalElectronicsId eid = HcalElectronicsId(*it); - + int fed = hcaldqm::utilities::crate2fed(eid.crateId(), eid.slot()); std::vector::const_iterator cit = std::find(_vcdaqEids.begin(), _vcdaqEids.end(), *it); if (cit == _vcdaqEids.end()) { // not @cDAQ for (uint32_t iflag = 0; iflag < _vflags.size(); iflag++) _cSummaryvsLS_FED.setBinContent(eid, _currentLS, int(iflag), int(flag::fNCDAQ)); _cSummaryvsLS.setBinContent(eid, _currentLS, int(flag::fNCDAQ)); + if (!hcaldqm::utilities::isFEDHO(eid) && fed != 1136) + _cBadQ_FEDvsLSmod10.setBinContent(eid, _currentLS % 10, int(flag::fNCDAQ)); continue; } @@ -419,9 +437,13 @@ std::shared_ptr RawTask::globalBeginLuminosityBlock(edm::Luminos _vflags[fOrnMsm]._state = flag::fGOOD; if (double(_xBadQLS.get(eid)) > double(12 * _evsPerLS)) _vflags[fBadQ]._state = flag::fBAD; - else if (_xBadQLS.get(eid) > 0) + //else if (_xBadQLS.get(eid) > 0){ + // Following line added due to https://gitlab.cern.ch/cmshcal/docs/-/issues/233 + // BadQ > (5%) of number of events in this LS. + else if (double(_xBadQLS.get(eid)) > 0 && double(_NBadQEvent) > double(0.05 * _evsPerLS)) { _vflags[fBadQ]._state = flag::fPROBLEMATIC; - else + + } else _vflags[fBadQ]._state = flag::fGOOD; } @@ -431,6 +453,12 @@ std::shared_ptr RawTask::globalBeginLuminosityBlock(edm::Luminos // - reset each flag right after using it for (std::vector::iterator ft = _vflags.begin(); ft != _vflags.end(); ++ft) { _cSummaryvsLS_FED.setBinContent(eid, _currentLS, int(iflag), ft->_state); + + if (ft->_name == "BadQ") { + if (!hcaldqm::utilities::isFEDHO(eid) && fed != 1136 && ft->_state != 3) { + _cBadQ_FEDvsLSmod10.setBinContent(eid, _currentLS % 10, (double(_NBadQEvent) / double(_evsPerLS)) * 100); + } + } fSum += (*ft); iflag++;