From 68b6d765a71d7c3924e7f8cb2622f1de577f2cb8 Mon Sep 17 00:00:00 2001 From: Abhirami Harilal Date: Wed, 24 Aug 2022 01:03:01 +0200 Subject: [PATCH 1/2] Adjusting thresholds for timing, laser and hot cell quality plots --- DQM/EcalMonitorClient/interface/LaserClient.h | 1 + .../interface/TimingClient.h | 3 ++- .../python/LaserClient_cfi.py | 2 ++ .../python/TimingClient_cfi.py | 10 ++++++---- DQM/EcalMonitorClient/src/LaserClient.cc | 10 ++++++++-- DQM/EcalMonitorClient/src/OccupancyClient.cc | 4 ++-- DQM/EcalMonitorClient/src/TimingClient.cc | 20 +++++++++++++++---- 7 files changed, 37 insertions(+), 13 deletions(-) diff --git a/DQM/EcalMonitorClient/interface/LaserClient.h b/DQM/EcalMonitorClient/interface/LaserClient.h index 81d62b15894b0..4d5de4530faa9 100644 --- a/DQM/EcalMonitorClient/interface/LaserClient.h +++ b/DQM/EcalMonitorClient/interface/LaserClient.h @@ -19,6 +19,7 @@ namespace ecaldqm { int minChannelEntries_; std::vector expectedAmplitude_; float toleranceAmplitudeLo_; + float toleranceAmplitudeFwdLo_; float toleranceAmplitudeHi_; float toleranceAmpRMSRatio_; std::vector expectedTiming_; diff --git a/DQM/EcalMonitorClient/interface/TimingClient.h b/DQM/EcalMonitorClient/interface/TimingClient.h index 057128a63910f..ecd5ce694128f 100644 --- a/DQM/EcalMonitorClient/interface/TimingClient.h +++ b/DQM/EcalMonitorClient/interface/TimingClient.h @@ -15,7 +15,8 @@ namespace ecaldqm { private: void setParams(edm::ParameterSet const&) override; - float toleranceMean_; + float EBtoleranceMean_; + float EEtoleranceMean_; float toleranceMeanFwd_; float toleranceRMS_; float toleranceRMSFwd_; diff --git a/DQM/EcalMonitorClient/python/LaserClient_cfi.py b/DQM/EcalMonitorClient/python/LaserClient_cfi.py index 01693525c51ab..bfbb58e1ee9d8 100644 --- a/DQM/EcalMonitorClient/python/LaserClient_cfi.py +++ b/DQM/EcalMonitorClient/python/LaserClient_cfi.py @@ -8,6 +8,7 @@ minChannelEntries = 3 expectedAmplitude = [1700.0, 1300.0, 1700.0, 1700.0] toleranceAmplitudeLo = 0.1 +toleranceAmplitudeFwdLo = 0.01 toleranceAmplitudeHi = 2.06 toleranceAmpRMSRatio = 0.3 expectedPNAmplitude = [800.0, 800.0, 800.0, 800.0] @@ -23,6 +24,7 @@ minChannelEntries = cms.untracked.int32(minChannelEntries), expectedAmplitude = cms.untracked.vdouble(expectedAmplitude), toleranceAmplitudeLo = cms.untracked.double(toleranceAmplitudeLo), + toleranceAmplitudeFwdLo = cms.untracked.double(toleranceAmplitudeFwdLo), toleranceAmplitudeHi = cms.untracked.double(toleranceAmplitudeHi), toleranceAmpRMSRatio = cms.untracked.double(toleranceAmpRMSRatio), expectedPNAmplitude = cms.untracked.vdouble(expectedPNAmplitude), diff --git a/DQM/EcalMonitorClient/python/TimingClient_cfi.py b/DQM/EcalMonitorClient/python/TimingClient_cfi.py index 62285dfb085f3..785e2ae41e6f7 100644 --- a/DQM/EcalMonitorClient/python/TimingClient_cfi.py +++ b/DQM/EcalMonitorClient/python/TimingClient_cfi.py @@ -5,7 +5,8 @@ minChannelEntries = 1 minTowerEntries = 3 -toleranceMean = 2. +EBtoleranceMean = 2. +EEtoleranceMean = 3. toleranceRMS = 6. minChannelEntriesFwd = 8 minTowerEntriesFwd = 24 @@ -18,7 +19,8 @@ params = cms.untracked.PSet( minChannelEntries = cms.untracked.int32(minChannelEntries), minTowerEntries = cms.untracked.int32(minTowerEntries), - toleranceMean = cms.untracked.double(toleranceMean), + EBtoleranceMean = cms.untracked.double(EBtoleranceMean), + EEtoleranceMean = cms.untracked.double(EEtoleranceMean), toleranceRMS = cms.untracked.double(toleranceRMS), minChannelEntriesFwd = cms.untracked.int32(minChannelEntriesFwd), minTowerEntriesFwd = cms.untracked.int32(minTowerEntriesFwd), @@ -127,14 +129,14 @@ kind = cms.untracked.string('TH2F'), otype = cms.untracked.string('Ecal3P'), btype = cms.untracked.string('SuperCrystal'), - description = cms.untracked.string('Summary of the timing data quality. A 5x5 tower is red if the mean timing of the tower is off by more than ' + str(toleranceMean) + ' or RMS is greater than ' + str(toleranceRMS) + ' (' + str(toleranceMeanFwd) + ' and ' + str(toleranceRMSFwd) + ' in forward region). Towers with total entries less than ' + str(minTowerEntries) + ' are not subject to this evaluation. Since 5x5 tower timings are calculated with a tighter time-window than per-channel timings, a tower can additionally become red if its the sum of per-channel timing histogram entries is greater than per-tower histogram entries by factor ' + str(1. / (1. - tailPopulThreshold)) + ' (significant fraction of events fall outside the tight time-window).') + description = cms.untracked.string('Summary of the timing data quality. A 5x5 tower is red if the mean timing of the tower is off by more than ' + str(EBtoleranceMean) + 'for EB and ' + str(EEtoleranceMean) + 'for EE, or RMS is greater than ' + str(toleranceRMS) + ' (' + str(toleranceMeanFwd) + ' and ' + str(toleranceRMSFwd) + ' in forward region). Towers with total entries less than ' + str(minTowerEntries) + ' are not subject to this evaluation. Since 5x5 tower timings are calculated with a tighter time-window than per-channel timings, a tower can additionally become red if its the sum of per-channel timing histogram entries is greater than per-tower histogram entries by factor ' + str(1. / (1. - tailPopulThreshold)) + ' (significant fraction of events fall outside the tight time-window).') ), Quality = cms.untracked.PSet( path = cms.untracked.string('%(subdet)s/%(prefix)sTimingClient/%(prefix)sTMT timing quality %(sm)s'), kind = cms.untracked.string('TH2F'), otype = cms.untracked.string('SM'), btype = cms.untracked.string('Crystal'), - description = cms.untracked.string('Summary of the timing data quality. A channel is red if its mean timing is off by more than ' + str(toleranceMean) + ' or RMS is greater than ' + str(toleranceRMS) + '. Channels with entries less than ' + str(minChannelEntries) + ' are not considered.') + description = cms.untracked.string('Summary of the timing data quality. A channel is red if its mean timing is off by more than ' + str(EBtoleranceMean) + 'for EB and' + str(EEtoleranceMean) + 'for EE, or RMS is greater than ' + str(toleranceRMS) + '. Channels with entries less than ' + str(minChannelEntries) + ' are not considered.') ), MeanAll = cms.untracked.PSet( path = cms.untracked.string('%(subdet)s/%(prefix)sSummaryClient/%(prefix)sTMT%(suffix)s timing mean 1D summary'), diff --git a/DQM/EcalMonitorClient/src/LaserClient.cc b/DQM/EcalMonitorClient/src/LaserClient.cc index 1fdb69ebfbd2b..8f910b7cad871 100644 --- a/DQM/EcalMonitorClient/src/LaserClient.cc +++ b/DQM/EcalMonitorClient/src/LaserClient.cc @@ -18,6 +18,7 @@ namespace ecaldqm { minChannelEntries_(0), expectedAmplitude_(0), toleranceAmplitudeLo_(0.), + toleranceAmplitudeFwdLo_(0.), toleranceAmplitudeHi_(0.), toleranceAmpRMSRatio_(0.), expectedTiming_(0), @@ -31,6 +32,7 @@ namespace ecaldqm { void LaserClient::setParams(edm::ParameterSet const& _params) { minChannelEntries_ = _params.getUntrackedParameter("minChannelEntries"); toleranceAmplitudeLo_ = _params.getUntrackedParameter("toleranceAmplitudeLo"); + toleranceAmplitudeFwdLo_ = _params.getUntrackedParameter("toleranceAmplitudeFwdLo"); toleranceAmplitudeHi_ = _params.getUntrackedParameter("toleranceAmplitudeHi"); toleranceAmpRMSRatio_ = _params.getUntrackedParameter("toleranceAmpRMSRatio"); toleranceTiming_ = _params.getUntrackedParameter("toleranceTiming"); @@ -148,16 +150,20 @@ namespace ecaldqm { float tMean(tItr->getBinContent()); float tRms(tItr->getBinError() * sqrt(tEntries)); + float threshAmplitudeLo_; meTimingMean.fill(getEcalDQMSetupObjects(), id, tMean); meTimingRMS.fill(getEcalDQMSetupObjects(), id, tRms); meTimingRMSMap.setBinContent(getEcalDQMSetupObjects(), id, tRms); float intensity(aMean / expectedAmplitude_[wlItr->second]); - if (isForward(id)) + if (isForward(id)) { intensity /= forwardFactor_; + threshAmplitudeLo_ = toleranceAmplitudeFwdLo_; + } else + threshAmplitudeLo_ = toleranceAmplitudeLo_; - if (intensity < toleranceAmplitudeLo_ || intensity > toleranceAmplitudeHi_ || + if (intensity < threshAmplitudeLo_ || intensity > toleranceAmplitudeHi_ || aRms > aMean * toleranceAmpRMSRatio_ || std::abs(tMean - expectedTiming_[wlItr->second]) > toleranceTiming_ /*|| tRms > toleranceTimRMS_*/) qItr->setBinContent(doMask ? kMBad : kBad); diff --git a/DQM/EcalMonitorClient/src/OccupancyClient.cc b/DQM/EcalMonitorClient/src/OccupancyClient.cc index bdab3a6b72012..cc916e43a7bec 100644 --- a/DQM/EcalMonitorClient/src/OccupancyClient.cc +++ b/DQM/EcalMonitorClient/src/OccupancyClient.cc @@ -180,7 +180,7 @@ namespace ecaldqm { meQualitySummary.maskMatches(id, mask, statusManager_, GetTrigTowerMap()) ? kMBad : kBad); } } - + /* Disabling as it's creating false alarms with whole FEDs RED when few hot towers show up. To be tuned. // Quality check: set entire FED to BAD if its occupancy begins to vanish // Fill FED statistics from (filtered) RecHit Occupancy float meanFEDEB(0), meanFEDEE(0), rmsFEDEB(0), rmsFEDEE(0); @@ -223,7 +223,7 @@ namespace ecaldqm { id, meQualitySummary.maskMatches(id, mask, statusManager_, GetTrigTowerMap()) ? kMBad : kBad); } - + */ } // producePlots() DEFINE_ECALDQM_WORKER(OccupancyClient); diff --git a/DQM/EcalMonitorClient/src/TimingClient.cc b/DQM/EcalMonitorClient/src/TimingClient.cc index 80580c73ca944..5302215c3ebf5 100644 --- a/DQM/EcalMonitorClient/src/TimingClient.cc +++ b/DQM/EcalMonitorClient/src/TimingClient.cc @@ -12,7 +12,8 @@ namespace ecaldqm { TimingClient::TimingClient() : DQWorkerClient(), - toleranceMean_(0.), + EBtoleranceMean_(0.), + EEtoleranceMean_(0.), toleranceMeanFwd_(0.), toleranceRMS_(0.), toleranceRMSFwd_(0.), @@ -26,7 +27,8 @@ namespace ecaldqm { } void TimingClient::setParams(edm::ParameterSet const& _params) { - toleranceMean_ = _params.getUntrackedParameter("toleranceMean"); + EBtoleranceMean_ = _params.getUntrackedParameter("EBtoleranceMean"); + EEtoleranceMean_ = _params.getUntrackedParameter("EEtoleranceMean"); toleranceMeanFwd_ = _params.getUntrackedParameter("toleranceMeanFwd"); toleranceRMS_ = _params.getUntrackedParameter("toleranceRMS"); toleranceRMSFwd_ = _params.getUntrackedParameter("toleranceRMSFwd"); @@ -73,9 +75,14 @@ namespace ecaldqm { DetId id(qItr->getId()); int minChannelEntries(minChannelEntries_); - float meanThresh(toleranceMean_); + float meanThresh; float rmsThresh(toleranceRMS_); + if (id.subdetId() == EcalBarrel) + meanThresh = EBtoleranceMean_; + else + meanThresh = EEtoleranceMean_; + if (isForward(id)) { minChannelEntries = minChannelEntriesFwd_; meanThresh = toleranceMeanFwd_; @@ -185,9 +192,14 @@ namespace ecaldqm { ids = scConstituents(EcalScDetId(tId)); int minTowerEntries(minTowerEntries_); - float meanThresh(toleranceMean_); + float meanThresh; float rmsThresh(toleranceRMS_); + if (tId.subdetId() == EcalBarrel) + meanThresh = EBtoleranceMean_; + else + meanThresh = EEtoleranceMean_; + if (isForward(tId)) { minTowerEntries = minTowerEntriesFwd_; meanThresh = toleranceMeanFwd_; From d150dcb4bf7c8f6fbbe0400a26cbbb9aad8aaf9c Mon Sep 17 00:00:00 2001 From: Abhirami Harilal Date: Thu, 25 Aug 2022 12:09:55 +0200 Subject: [PATCH 2/2] Change parameter names to lowercase --- DQM/EcalMonitorClient/interface/TimingClient.h | 4 ++-- DQM/EcalMonitorClient/python/TimingClient_cfi.py | 12 ++++++------ DQM/EcalMonitorClient/src/TimingClient.cc | 16 ++++++++-------- 3 files changed, 16 insertions(+), 16 deletions(-) diff --git a/DQM/EcalMonitorClient/interface/TimingClient.h b/DQM/EcalMonitorClient/interface/TimingClient.h index ecd5ce694128f..a9aa5f4352adb 100644 --- a/DQM/EcalMonitorClient/interface/TimingClient.h +++ b/DQM/EcalMonitorClient/interface/TimingClient.h @@ -15,8 +15,8 @@ namespace ecaldqm { private: void setParams(edm::ParameterSet const&) override; - float EBtoleranceMean_; - float EEtoleranceMean_; + float ebtoleranceMean_; + float eetoleranceMean_; float toleranceMeanFwd_; float toleranceRMS_; float toleranceRMSFwd_; diff --git a/DQM/EcalMonitorClient/python/TimingClient_cfi.py b/DQM/EcalMonitorClient/python/TimingClient_cfi.py index 785e2ae41e6f7..686e3ff3c232b 100644 --- a/DQM/EcalMonitorClient/python/TimingClient_cfi.py +++ b/DQM/EcalMonitorClient/python/TimingClient_cfi.py @@ -5,8 +5,8 @@ minChannelEntries = 1 minTowerEntries = 3 -EBtoleranceMean = 2. -EEtoleranceMean = 3. +ebtoleranceMean = 2. +eetoleranceMean = 3. toleranceRMS = 6. minChannelEntriesFwd = 8 minTowerEntriesFwd = 24 @@ -19,8 +19,8 @@ params = cms.untracked.PSet( minChannelEntries = cms.untracked.int32(minChannelEntries), minTowerEntries = cms.untracked.int32(minTowerEntries), - EBtoleranceMean = cms.untracked.double(EBtoleranceMean), - EEtoleranceMean = cms.untracked.double(EEtoleranceMean), + ebtoleranceMean = cms.untracked.double(ebtoleranceMean), + eetoleranceMean = cms.untracked.double(eetoleranceMean), toleranceRMS = cms.untracked.double(toleranceRMS), minChannelEntriesFwd = cms.untracked.int32(minChannelEntriesFwd), minTowerEntriesFwd = cms.untracked.int32(minTowerEntriesFwd), @@ -129,14 +129,14 @@ kind = cms.untracked.string('TH2F'), otype = cms.untracked.string('Ecal3P'), btype = cms.untracked.string('SuperCrystal'), - description = cms.untracked.string('Summary of the timing data quality. A 5x5 tower is red if the mean timing of the tower is off by more than ' + str(EBtoleranceMean) + 'for EB and ' + str(EEtoleranceMean) + 'for EE, or RMS is greater than ' + str(toleranceRMS) + ' (' + str(toleranceMeanFwd) + ' and ' + str(toleranceRMSFwd) + ' in forward region). Towers with total entries less than ' + str(minTowerEntries) + ' are not subject to this evaluation. Since 5x5 tower timings are calculated with a tighter time-window than per-channel timings, a tower can additionally become red if its the sum of per-channel timing histogram entries is greater than per-tower histogram entries by factor ' + str(1. / (1. - tailPopulThreshold)) + ' (significant fraction of events fall outside the tight time-window).') + description = cms.untracked.string('Summary of the timing data quality. A 5x5 tower is red if the mean timing of the tower is off by more than ' + str(ebtoleranceMean) + 'for EB and ' + str(eetoleranceMean) + 'for EE, or RMS is greater than ' + str(toleranceRMS) + ' (' + str(toleranceMeanFwd) + ' and ' + str(toleranceRMSFwd) + ' in forward region). Towers with total entries less than ' + str(minTowerEntries) + ' are not subject to this evaluation. Since 5x5 tower timings are calculated with a tighter time-window than per-channel timings, a tower can additionally become red if its the sum of per-channel timing histogram entries is greater than per-tower histogram entries by factor ' + str(1. / (1. - tailPopulThreshold)) + ' (significant fraction of events fall outside the tight time-window).') ), Quality = cms.untracked.PSet( path = cms.untracked.string('%(subdet)s/%(prefix)sTimingClient/%(prefix)sTMT timing quality %(sm)s'), kind = cms.untracked.string('TH2F'), otype = cms.untracked.string('SM'), btype = cms.untracked.string('Crystal'), - description = cms.untracked.string('Summary of the timing data quality. A channel is red if its mean timing is off by more than ' + str(EBtoleranceMean) + 'for EB and' + str(EEtoleranceMean) + 'for EE, or RMS is greater than ' + str(toleranceRMS) + '. Channels with entries less than ' + str(minChannelEntries) + ' are not considered.') + description = cms.untracked.string('Summary of the timing data quality. A channel is red if its mean timing is off by more than ' + str(ebtoleranceMean) + 'for EB and' + str(eetoleranceMean) + 'for EE, or RMS is greater than ' + str(toleranceRMS) + '. Channels with entries less than ' + str(minChannelEntries) + ' are not considered.') ), MeanAll = cms.untracked.PSet( path = cms.untracked.string('%(subdet)s/%(prefix)sSummaryClient/%(prefix)sTMT%(suffix)s timing mean 1D summary'), diff --git a/DQM/EcalMonitorClient/src/TimingClient.cc b/DQM/EcalMonitorClient/src/TimingClient.cc index 5302215c3ebf5..9ffe00b56cad1 100644 --- a/DQM/EcalMonitorClient/src/TimingClient.cc +++ b/DQM/EcalMonitorClient/src/TimingClient.cc @@ -12,8 +12,8 @@ namespace ecaldqm { TimingClient::TimingClient() : DQWorkerClient(), - EBtoleranceMean_(0.), - EEtoleranceMean_(0.), + ebtoleranceMean_(0.), + eetoleranceMean_(0.), toleranceMeanFwd_(0.), toleranceRMS_(0.), toleranceRMSFwd_(0.), @@ -27,8 +27,8 @@ namespace ecaldqm { } void TimingClient::setParams(edm::ParameterSet const& _params) { - EBtoleranceMean_ = _params.getUntrackedParameter("EBtoleranceMean"); - EEtoleranceMean_ = _params.getUntrackedParameter("EEtoleranceMean"); + ebtoleranceMean_ = _params.getUntrackedParameter("ebtoleranceMean"); + eetoleranceMean_ = _params.getUntrackedParameter("eetoleranceMean"); toleranceMeanFwd_ = _params.getUntrackedParameter("toleranceMeanFwd"); toleranceRMS_ = _params.getUntrackedParameter("toleranceRMS"); toleranceRMSFwd_ = _params.getUntrackedParameter("toleranceRMSFwd"); @@ -79,9 +79,9 @@ namespace ecaldqm { float rmsThresh(toleranceRMS_); if (id.subdetId() == EcalBarrel) - meanThresh = EBtoleranceMean_; + meanThresh = ebtoleranceMean_; else - meanThresh = EEtoleranceMean_; + meanThresh = eetoleranceMean_; if (isForward(id)) { minChannelEntries = minChannelEntriesFwd_; @@ -196,9 +196,9 @@ namespace ecaldqm { float rmsThresh(toleranceRMS_); if (tId.subdetId() == EcalBarrel) - meanThresh = EBtoleranceMean_; + meanThresh = ebtoleranceMean_; else - meanThresh = EEtoleranceMean_; + meanThresh = eetoleranceMean_; if (isForward(tId)) { minTowerEntries = minTowerEntriesFwd_;