From 966557b13034fdc45fbc279b74cfeec149f4165c Mon Sep 17 00:00:00 2001 From: mmusich Date: Wed, 22 Sep 2021 15:01:31 +0200 Subject: [PATCH 1/2] fix SiPixelCalCosmics for Run3: logical mistake in DetStatus --- .../python/ALCARECOSiPixelCalCosmics_cff.py | 6 ++++-- DPGAnalysis/Skims/src/DetStatus.cc | 16 ++++++++++++---- 2 files changed, 16 insertions(+), 6 deletions(-) diff --git a/Calibration/TkAlCaRecoProducers/python/ALCARECOSiPixelCalCosmics_cff.py b/Calibration/TkAlCaRecoProducers/python/ALCARECOSiPixelCalCosmics_cff.py index 75f14f74e1483..145de98bb95d1 100644 --- a/Calibration/TkAlCaRecoProducers/python/ALCARECOSiPixelCalCosmics_cff.py +++ b/Calibration/TkAlCaRecoProducers/python/ALCARECOSiPixelCalCosmics_cff.py @@ -9,7 +9,7 @@ ALCARECOSiPixelCalCosmicsDCSFilter = DPGAnalysis.Skims.skim_detstatus_cfi.dcsstatus.clone( DetectorType = cms.vstring('BPIX','FPIX'), ApplyFilter = cms.bool(True), - AndOr = cms.bool(True), + AndOr = cms.bool(False), # if True put partitions in AND, otherwise in OR DebugOn = cms.untracked.bool(False) ) @@ -38,4 +38,6 @@ ALCARECOSiPixelCalCosmics.minHitsPerSubDet.inPIXEL = 1 # Sequence # -seqALCARECOSiPixelCalCosmics = cms.Sequence(ALCARECOSiPixelCalCosmicsDCSFilter+ALCARECOSiPixelCalCosmicsHLTFilter*ALCARECOSiPixelCalCosmics) +seqALCARECOSiPixelCalCosmics = cms.Sequence(ALCARECOSiPixelCalCosmicsDCSFilter* + ALCARECOSiPixelCalCosmicsHLTFilter* + ALCARECOSiPixelCalCosmics) diff --git a/DPGAnalysis/Skims/src/DetStatus.cc b/DPGAnalysis/Skims/src/DetStatus.cc index 36cd5a432dbd3..b878872e8f323 100644 --- a/DPGAnalysis/Skims/src/DetStatus.cc +++ b/DPGAnalysis/Skims/src/DetStatus.cc @@ -70,7 +70,7 @@ DetStatus::DetStatus(const edm::ParameterSet& pset) { // // -- Destructor // -DetStatus::~DetStatus() {} +DetStatus::~DetStatus() = default; //*********************************************************************// bool DetStatus::checkForDCSStatus(const DcsStatusCollection& dcsStatus) @@ -115,10 +115,17 @@ bool DetStatus::checkForDCSRecord(const DCSRecord& dcsRecord) edm::LogInfo("DetStatus") << "Using softFED#1022 for reading DCS bits" << std::endl; } + int count = 0; for (unsigned int detlist = 0; detlist < DcsStatus::nPartitions; detlist++) { + if (verbose_) + edm::LogInfo("DetStatus") << "testing " << DcsStatus::partitionName[detlist]; if (requestedPartitions_.test(detlist)) { + count++; + if (verbose_) + edm::LogInfo("DetStatus") << " " << DcsStatus::partitionName[detlist] << "in the requested list" << std::endl; if (AndOr_) { - accepted = (accepted & dcsRecord.highVoltageReady(detlist)); + accepted = + (count == 1) ? dcsRecord.highVoltageReady(detlist) : (accepted && dcsRecord.highVoltageReady(detlist)); } else { accepted = (accepted || dcsRecord.highVoltageReady(detlist)); } @@ -126,7 +133,7 @@ bool DetStatus::checkForDCSRecord(const DCSRecord& dcsRecord) } if (verbose_) { - edm::LogInfo("DetStatus") << "DCSStatus filter: " << accepted << "( AndOr: " << AndOr_ << ")" << std::endl; + edm::LogInfo("DetStatus") << "DCSStatus filter: " << accepted << " ( AndOr: " << AndOr_ << ")" << std::endl; edm::LogVerbatim("DetStatus") << "Partitions ON: "; for (unsigned int detlist = 0; detlist < DcsStatus::nPartitions; detlist++) { if ((dcsRecord.highVoltageReady(detlist))) { @@ -154,11 +161,12 @@ bool DetStatus::filter(edm::Event& evt, edm::EventSetup const& es) edm::Handle dcsRecord; evt.getByToken(dcsRecordToken_, dcsRecord); + // if the old style DCS status is valid (Run1 + Run2) if (dcsStatus.isValid() && !dcsStatus->empty()) { accepted = checkForDCSStatus(*dcsStatus); } else if (dcsRecord.isValid()) { if (evt.eventAuxiliary().isRealData()) { - // in case of real data check for DCS + // in case of real data check for DCSRecord content (Run >=3) accepted = checkForDCSRecord(*dcsRecord); } else { // in case of MC accept in any case From a89a2b31473bd1c3441d738595eca600333c611d Mon Sep 17 00:00:00 2001 From: mmusich Date: Thu, 23 Sep 2021 11:45:11 +0200 Subject: [PATCH 2/2] simplify logic for AndOr in DetStatus --- DPGAnalysis/Skims/src/DetStatus.cc | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/DPGAnalysis/Skims/src/DetStatus.cc b/DPGAnalysis/Skims/src/DetStatus.cc index b878872e8f323..3ce8232333cf8 100644 --- a/DPGAnalysis/Skims/src/DetStatus.cc +++ b/DPGAnalysis/Skims/src/DetStatus.cc @@ -115,17 +115,16 @@ bool DetStatus::checkForDCSRecord(const DCSRecord& dcsRecord) edm::LogInfo("DetStatus") << "Using softFED#1022 for reading DCS bits" << std::endl; } - int count = 0; for (unsigned int detlist = 0; detlist < DcsStatus::nPartitions; detlist++) { if (verbose_) edm::LogInfo("DetStatus") << "testing " << DcsStatus::partitionName[detlist]; if (requestedPartitions_.test(detlist)) { - count++; if (verbose_) edm::LogInfo("DetStatus") << " " << DcsStatus::partitionName[detlist] << "in the requested list" << std::endl; if (AndOr_) { - accepted = - (count == 1) ? dcsRecord.highVoltageReady(detlist) : (accepted && dcsRecord.highVoltageReady(detlist)); + accepted = dcsRecord.highVoltageReady(detlist); + if (!accepted) + break; } else { accepted = (accepted || dcsRecord.highVoltageReady(detlist)); }