From 80db57bd56a6fd21ea59de1ea85d9e7aa3c96a75 Mon Sep 17 00:00:00 2001 From: Angela Czirkos Date: Fri, 23 Apr 2021 17:32:02 +0200 Subject: [PATCH 01/19] shorten syntax for default error list vectors --- .../SiPixelRawToDigi/plugins/SiPixelRawToDigi.cc | 10 ++-------- 1 file changed, 2 insertions(+), 8 deletions(-) diff --git a/EventFilter/SiPixelRawToDigi/plugins/SiPixelRawToDigi.cc b/EventFilter/SiPixelRawToDigi/plugins/SiPixelRawToDigi.cc index 93d3f023d44e8..6c371974816e1 100644 --- a/EventFilter/SiPixelRawToDigi/plugins/SiPixelRawToDigi.cc +++ b/EventFilter/SiPixelRawToDigi/plugins/SiPixelRawToDigi.cc @@ -114,17 +114,11 @@ void SiPixelRawToDigi::fillDescriptions(edm::ConfigurationDescriptions& descript desc.add("IncludeErrors", true); desc.add("UseQualityInfo", false); { - std::vector temp1; - temp1.reserve(1); - temp1.push_back(29); - desc.add>("ErrorList", temp1) + desc.add>("ErrorList", std::vector{29}) ->setComment("## ErrorList: list of error codes used by tracking to invalidate modules"); } { - std::vector temp1; - temp1.reserve(1); - temp1.push_back(40); - desc.add>("UserErrorList", temp1) + desc.add>("UserErrorList", std::vector{40}) ->setComment("## UserErrorList: list of error codes used by Pixel experts for investigation"); } desc.add("InputLabel", edm::InputTag("siPixelRawData")); From 86147b15c5c4d7079813624985a0cea8757651c3 Mon Sep 17 00:00:00 2001 From: Angela Czirkos Date: Fri, 23 Apr 2021 17:32:50 +0200 Subject: [PATCH 02/19] get rid of unnecessary debug variable --- EventFilter/SiPixelRawToDigi/plugins/SiPixelRawToDigi.cc | 4 +--- EventFilter/SiPixelRawToDigi/plugins/SiPixelRawToDigi.h | 1 - 2 files changed, 1 insertion(+), 4 deletions(-) diff --git a/EventFilter/SiPixelRawToDigi/plugins/SiPixelRawToDigi.cc b/EventFilter/SiPixelRawToDigi/plugins/SiPixelRawToDigi.cc index 6c371974816e1..3c06d17dd25dc 100644 --- a/EventFilter/SiPixelRawToDigi/plugins/SiPixelRawToDigi.cc +++ b/EventFilter/SiPixelRawToDigi/plugins/SiPixelRawToDigi.cc @@ -144,7 +144,6 @@ void SiPixelRawToDigi::fillDescriptions(edm::ConfigurationDescriptions& descript // ----------------------------------------------------------------------------- void SiPixelRawToDigi::produce(edm::Event& ev, const edm::EventSetup& es) { const uint32_t dummydetid = 0xffffffff; - debug = edm::MessageDrop::instance()->debugEnabled; // initialize cabling map or update if necessary if (recordWatcher.check(es)) { @@ -205,8 +204,7 @@ void SiPixelRawToDigi::produce(edm::Event& ev, const edm::EventSetup& es) { if (regions_ && !regions_->mayUnpackFED(fedId)) continue; - if (debug) - LogDebug("SiPixelRawToDigi") << " PRODUCE DIGI FOR FED: " << fedId << endl; + LogDebug("SiPixelRawToDigi") << " PRODUCE DIGI FOR FED: " << fedId << endl; PixelDataFormatter::Errors errors; diff --git a/EventFilter/SiPixelRawToDigi/plugins/SiPixelRawToDigi.h b/EventFilter/SiPixelRawToDigi/plugins/SiPixelRawToDigi.h index c475479cc7303..53b87a2989dcb 100644 --- a/EventFilter/SiPixelRawToDigi/plugins/SiPixelRawToDigi.h +++ b/EventFilter/SiPixelRawToDigi/plugins/SiPixelRawToDigi.h @@ -49,7 +49,6 @@ class SiPixelRawToDigi : public edm::stream::EDProducer<> { std::unique_ptr theTimer; bool includeErrors; bool useQuality; - bool debug; std::vector tkerrorlist; std::vector usererrorlist; std::vector fedIds; From fee18a662589a2a2bdfda6ece242321531be26ec Mon Sep 17 00:00:00 2001 From: Angela Czirkos Date: Fri, 23 Apr 2021 17:35:20 +0200 Subject: [PATCH 03/19] remove cablingMapLabel from members --- EventFilter/SiPixelRawToDigi/plugins/SiPixelRawToDigi.cc | 2 +- EventFilter/SiPixelRawToDigi/plugins/SiPixelRawToDigi.h | 1 - 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/EventFilter/SiPixelRawToDigi/plugins/SiPixelRawToDigi.cc b/EventFilter/SiPixelRawToDigi/plugins/SiPixelRawToDigi.cc index 3c06d17dd25dc..1c972ca1fff8f 100644 --- a/EventFilter/SiPixelRawToDigi/plugins/SiPixelRawToDigi.cc +++ b/EventFilter/SiPixelRawToDigi/plugins/SiPixelRawToDigi.cc @@ -91,7 +91,7 @@ SiPixelRawToDigi::SiPixelRawToDigi(const edm::ParameterSet& conf) edm::LogInfo("SiPixelRawToDigi") << " Using phase1"; //CablingMap could have a label //Tav - cablingMapLabel = config_.getParameter("CablingMapLabel"); + auto cablingMapLabel = config_.getParameter("CablingMapLabel"); tCablingMap = esConsumes(edm::ESInputTag("", cablingMapLabel)); } diff --git a/EventFilter/SiPixelRawToDigi/plugins/SiPixelRawToDigi.h b/EventFilter/SiPixelRawToDigi/plugins/SiPixelRawToDigi.h index 53b87a2989dcb..aedfd281d5239 100644 --- a/EventFilter/SiPixelRawToDigi/plugins/SiPixelRawToDigi.h +++ b/EventFilter/SiPixelRawToDigi/plugins/SiPixelRawToDigi.h @@ -61,6 +61,5 @@ class SiPixelRawToDigi : public edm::stream::EDProducer<> { int nwords; bool usePilotBlade; bool usePhase1; - std::string cablingMapLabel; }; #endif From 94a42c5ebedb4a3b7a11ba6ba9172c7a75ee9df7 Mon Sep 17 00:00:00 2001 From: Angela Czirkos Date: Fri, 23 Apr 2021 17:37:41 +0200 Subject: [PATCH 04/19] remove unused label --- EventFilter/SiPixelRawToDigi/plugins/SiPixelRawToDigi.h | 1 - 1 file changed, 1 deletion(-) diff --git a/EventFilter/SiPixelRawToDigi/plugins/SiPixelRawToDigi.h b/EventFilter/SiPixelRawToDigi/plugins/SiPixelRawToDigi.h index aedfd281d5239..9f9f7a959a1cc 100644 --- a/EventFilter/SiPixelRawToDigi/plugins/SiPixelRawToDigi.h +++ b/EventFilter/SiPixelRawToDigi/plugins/SiPixelRawToDigi.h @@ -54,7 +54,6 @@ class SiPixelRawToDigi : public edm::stream::EDProducer<> { std::vector fedIds; edm::ESWatcher recordWatcher; edm::ESWatcher qualityWatcher; - edm::InputTag label; edm::ESGetToken tSiPixelQuality; edm::ESGetToken tCablingMap; int ndigis; From 363d6269d0be1c86344df4acfa5c6403bff86b2b Mon Sep 17 00:00:00 2001 From: Angela Czirkos Date: Fri, 23 Apr 2021 17:40:24 +0200 Subject: [PATCH 05/19] remove timer I know it might be breaking, that's why this is an atomic commit and can be reversed easily -> git rebase --- .../plugins/SiPixelRawToDigi.cc | 38 +------------------ .../plugins/SiPixelRawToDigi.h | 5 --- 2 files changed, 1 insertion(+), 42 deletions(-) diff --git a/EventFilter/SiPixelRawToDigi/plugins/SiPixelRawToDigi.cc b/EventFilter/SiPixelRawToDigi/plugins/SiPixelRawToDigi.cc index 1c972ca1fff8f..5baecd36e24c7 100644 --- a/EventFilter/SiPixelRawToDigi/plugins/SiPixelRawToDigi.cc +++ b/EventFilter/SiPixelRawToDigi/plugins/SiPixelRawToDigi.cc @@ -35,14 +35,11 @@ #include "EventFilter/SiPixelRawToDigi/interface/PixelUnpackingRegions.h" #include "FWCore/Framework/interface/ConsumesCollector.h" -#include "TH1D.h" -#include "TFile.h" - using namespace std; // ----------------------------------------------------------------------------- SiPixelRawToDigi::SiPixelRawToDigi(const edm::ParameterSet& conf) - : config_(conf), badPixelInfo_(nullptr), regions_(nullptr), hCPU(nullptr), hDigi(nullptr) { + : config_(conf), badPixelInfo_(nullptr), regions_(nullptr) { includeErrors = config_.getParameter("IncludeErrors"); useQuality = config_.getParameter("UseQualityInfo"); @@ -54,10 +51,6 @@ SiPixelRawToDigi::SiPixelRawToDigi(const edm::ParameterSet& conf) tSiPixelQuality = esConsumes(); } - //start counters - ndigis = 0; - nwords = 0; - // Products produces>(); if (includeErrors) { @@ -72,14 +65,6 @@ SiPixelRawToDigi::SiPixelRawToDigi(const edm::ParameterSet& conf) regions_ = new PixelUnpackingRegions(config_, consumesCollector()); } - // Timing - bool timing = config_.getUntrackedParameter("Timing", false); - if (timing) { - theTimer = std::make_unique(); - hCPU = new TH1D("hCPU", "hCPU", 100, 0., 0.050); - hDigi = new TH1D("hDigi", "hDigi", 50, 0., 15000.); - } - // Control the usage of pilot-blade data, FED=40 usePilotBlade = config_.getParameter("UsePilotBlade"); if (usePilotBlade) @@ -98,15 +83,8 @@ SiPixelRawToDigi::SiPixelRawToDigi(const edm::ParameterSet& conf) // ----------------------------------------------------------------------------- SiPixelRawToDigi::~SiPixelRawToDigi() { edm::LogInfo("SiPixelRawToDigi") << " HERE ** SiPixelRawToDigi destructor!"; - if (regions_) delete regions_; - - if (theTimer) { - TFile rootFile("analysis.root", "RECREATE", "my histograms"); - hCPU->Write(); - hDigi->Write(); - } } void SiPixelRawToDigi::fillDescriptions(edm::ConfigurationDescriptions& descriptions) { @@ -131,7 +109,6 @@ void SiPixelRawToDigi::fillDescriptions(edm::ConfigurationDescriptions& descript desc.add("Regions", psd0) ->setComment("## Empty Regions PSet means complete unpacking"); } - desc.addUntracked("Timing", false); desc.add("UsePilotBlade", false)->setComment("## Use pilot blades"); desc.add("UsePhase1", false)->setComment("## Use phase1"); desc.add("CablingMapLabel", "")->setComment("CablingMap label"); //Tav @@ -182,8 +159,6 @@ void SiPixelRawToDigi::produce(edm::Event& ev, const edm::EventSetup& es) { if (useQuality) formatter.setQualityStatus(useQuality, badPixelInfo_); - if (theTimer) - theTimer->start(); bool errorsInEvent = false; PixelDataFormatter::DetErrors nodeterrors; @@ -292,17 +267,6 @@ void SiPixelRawToDigi::produce(edm::Event& ev, const edm::EventSetup& es) { if (errorsInEvent) LogDebug("SiPixelRawToDigi") << "Error words were stored in this event"; - if (theTimer) { - theTimer->stop(); - LogDebug("SiPixelRawToDigi") << "TIMING IS: (real)" << theTimer->realTime(); - ndigis += formatter.nDigis(); - nwords += formatter.nWords(); - LogDebug("SiPixelRawToDigi") << " (Words/Digis) this ev: " << formatter.nWords() << "/" << formatter.nDigis() - << "--- all :" << nwords << "/" << ndigis; - hCPU->Fill(theTimer->realTime()); - hDigi->Fill(formatter.nDigis()); - } - ev.put(std::move(collection)); if (includeErrors) { ev.put(std::move(errorcollection)); diff --git a/EventFilter/SiPixelRawToDigi/plugins/SiPixelRawToDigi.h b/EventFilter/SiPixelRawToDigi/plugins/SiPixelRawToDigi.h index 9f9f7a959a1cc..0fe3d6a63c4ab 100644 --- a/EventFilter/SiPixelRawToDigi/plugins/SiPixelRawToDigi.h +++ b/EventFilter/SiPixelRawToDigi/plugins/SiPixelRawToDigi.h @@ -17,7 +17,6 @@ #include "CondFormats/DataRecord/interface/SiPixelQualityRcd.h" #include "DataFormats/FEDRawData/interface/FEDRawDataCollection.h" #include "FWCore/Framework/interface/ConsumesCollector.h" -#include "FWCore/Utilities/interface/CPUTimer.h" #include "FWCore/Utilities/interface/ESGetToken.h" class SiPixelFedCablingTree; @@ -45,8 +44,6 @@ class SiPixelRawToDigi : public edm::stream::EDProducer<> { const SiPixelQuality* badPixelInfo_; PixelUnpackingRegions* regions_; edm::EDGetTokenT tFEDRawDataCollection; - TH1D *hCPU, *hDigi; - std::unique_ptr theTimer; bool includeErrors; bool useQuality; std::vector tkerrorlist; @@ -56,8 +53,6 @@ class SiPixelRawToDigi : public edm::stream::EDProducer<> { edm::ESWatcher qualityWatcher; edm::ESGetToken tSiPixelQuality; edm::ESGetToken tCablingMap; - int ndigis; - int nwords; bool usePilotBlade; bool usePhase1; }; From e3abd2b6476701d4e343360ffc50bf552f73985c Mon Sep 17 00:00:00 2001 From: Angela Czirkos Date: Mon, 26 Apr 2021 11:24:44 +0200 Subject: [PATCH 06/19] Move unpacking of FED error collections to PixelDataFormatter --- .../interface/PixelDataFormatter.h | 16 +++- .../plugins/SiPixelDigiErrorsFromSoA.cc | 76 +++--------------- .../plugins/SiPixelRawToDigi.cc | 78 +++--------------- .../src/PixelDataFormatter.cc | 80 ++++++++++++++++++- 4 files changed, 110 insertions(+), 140 deletions(-) diff --git a/EventFilter/SiPixelRawToDigi/interface/PixelDataFormatter.h b/EventFilter/SiPixelRawToDigi/interface/PixelDataFormatter.h index 189763dc6fd46..2000d108147f0 100644 --- a/EventFilter/SiPixelRawToDigi/interface/PixelDataFormatter.h +++ b/EventFilter/SiPixelRawToDigi/interface/PixelDataFormatter.h @@ -38,6 +38,7 @@ #include "DataFormats/Common/interface/DetSetVector.h" #include "DataFormats/SiPixelRawData/interface/SiPixelRawDataError.h" #include "DataFormats/Common/interface/DetSetVector.h" +#include "DataFormats/DetId/interface/DetIdCollection.h" #include "EventFilter/SiPixelRawToDigi/interface/ErrorChecker.h" #include "EventFilter/SiPixelRawToDigi/interface/ErrorCheckerPhase0.h" #include "FWCore/Utilities/interface/typedefs.h" @@ -70,7 +71,7 @@ class PixelDataFormatter { typedef cms_uint32_t Word32; typedef cms_uint64_t Word64; - PixelDataFormatter(const SiPixelFedCabling* map, bool phase1 = false); + PixelDataFormatter(const SiPixelFedCablingTree* map, bool phase1 = false); void setErrorStatus(bool ErrorStatus); void setQualityStatus(bool QualityStatus, const SiPixelQuality* QualityInfo); @@ -84,13 +85,22 @@ class PixelDataFormatter { void formatRawData(unsigned int lvl1_ID, RawData& fedRawData, const Digis& digis, const BadChannels& badChannels); - cms_uint32_t linkId(cms_uint32_t word32) { return (word32 >> LINK_shift) & LINK_mask; } + void unpackFEDErrors(Errors& errors, + std::vector const& tkerrorlist, + std::vector const& usererrorlist, + edm::DetSetVector& errorcollection, + DetIdCollection& tkerror_detidcollection, + DetIdCollection& usererror_detidcollection, + edmNew::DetSetVector& disabled_channelcollection, + DetErrors& nodeterrors); + + cms_uint32_t getLinkId(cms_uint32_t word32) { return (word32 >> LINK_shift) & LINK_mask; } private: mutable int theDigiCounter; mutable int theWordCounter; - SiPixelFedCabling const* theCablingTree; + SiPixelFedCablingTree const* theCablingTree; const SiPixelFrameReverter* theFrameReverter; const SiPixelQuality* badPixelInfo; const std::set* modulesToUnpack; diff --git a/EventFilter/SiPixelRawToDigi/plugins/SiPixelDigiErrorsFromSoA.cc b/EventFilter/SiPixelRawToDigi/plugins/SiPixelDigiErrorsFromSoA.cc index d09e703c36a00..9e2bf3d5820e9 100644 --- a/EventFilter/SiPixelRawToDigi/plugins/SiPixelDigiErrorsFromSoA.cc +++ b/EventFilter/SiPixelRawToDigi/plugins/SiPixelDigiErrorsFromSoA.cc @@ -104,72 +104,16 @@ void SiPixelDigiErrorsFromSoA::produce(edm::Event& iEvent, const edm::EventSetup } } - constexpr uint32_t dummydetid = 0xffffffff; - typedef PixelDataFormatter::Errors::iterator IE; - for (auto& error : errors) { - uint32_t errordetid = error.first; - if (errordetid == dummydetid) { // errors given dummy detId must be sorted by Fed - nodeterrors.insert(nodeterrors.end(), errors[errordetid].begin(), errors[errordetid].end()); - } else { - edm::DetSet& errorDetSet = errorcollection.find_or_insert(errordetid); - errorDetSet.data.insert(errorDetSet.data.end(), error.second.begin(), error.second.end()); - // Fill detid of the detectors where there is error AND the error number is listed - // in the configurable error list in the job option cfi. - // Code needs to be here, because there can be a set of errors for each - // entry in the for loop over PixelDataFormatter::Errors - - std::vector disabledChannelsDetSet; - - for (auto const& aPixelError : errorDetSet) { - // For the time being, we extend the error handling functionality with ErrorType 25 - // In the future, we should sort out how the usage of tkerrorlist can be generalized - if (aPixelError.getType() == 25) { - int fedId = aPixelError.getFedId(); - const sipixelobjects::PixelFEDCabling* fed = cabling_->fed(fedId); - if (fed) { - cms_uint32_t linkId = formatter.linkId(aPixelError.getWord32()); - const sipixelobjects::PixelFEDLink* link = fed->link(linkId); - if (link) { - // The "offline" 0..15 numbering is fixed by definition, also, the FrameConversion depends on it - // in contrast, the ROC-in-channel numbering is determined by hardware --> better to use the "offline" scheme - PixelFEDChannel ch = {fed->id(), linkId, 25, 0}; - for (unsigned int iRoc = 1; iRoc <= link->numberOfROCs(); iRoc++) { - const sipixelobjects::PixelROC* roc = link->roc(iRoc); - if (roc->idInDetUnit() < ch.roc_first) - ch.roc_first = roc->idInDetUnit(); - if (roc->idInDetUnit() > ch.roc_last) - ch.roc_last = roc->idInDetUnit(); - } - disabledChannelsDetSet.push_back(ch); - } - } - } else { - // fill list of detIds to be turned off by tracking - if (!tkerrorlist_.empty()) { - auto it_find = std::find(tkerrorlist_.begin(), tkerrorlist_.end(), aPixelError.getType()); - if (it_find != tkerrorlist_.end()) { - tkerror_detidcollection.push_back(errordetid); - } - } - } - - // fill list of detIds with errors to be studied - if (!usererrorlist_.empty()) { - auto it_find = std::find(usererrorlist_.begin(), usererrorlist_.end(), aPixelError.getType()); - if (it_find != usererrorlist_.end()) { - usererror_detidcollection.push_back(errordetid); - } - } - - } // loop on DetSet of errors - - if (!disabledChannelsDetSet.empty()) { - disabled_channelcollection.insert(errordetid, disabledChannelsDetSet.data(), disabledChannelsDetSet.size()); - } - - } // if error assigned to a real DetId - } // loop on errors in event for this FED - + formatter.unpackFEDErrors(errors, + tkerrorlist_, + usererrorlist_, + errorcollection, + tkerror_detidcollection, + usererror_detidcollection, + disabled_channelcollection, + nodeterrors); + + const uint32_t dummydetid = 0xffffffff; edm::DetSet& errorDetSet = errorcollection.find_or_insert(dummydetid); errorDetSet.data = nodeterrors; diff --git a/EventFilter/SiPixelRawToDigi/plugins/SiPixelRawToDigi.cc b/EventFilter/SiPixelRawToDigi/plugins/SiPixelRawToDigi.cc index 5baecd36e24c7..502b588c735d0 100644 --- a/EventFilter/SiPixelRawToDigi/plugins/SiPixelRawToDigi.cc +++ b/EventFilter/SiPixelRawToDigi/plugins/SiPixelRawToDigi.cc @@ -191,74 +191,16 @@ void SiPixelRawToDigi::produce(edm::Event& ev, const edm::EventSetup& es) { //pack errors into collection if (includeErrors) { - typedef PixelDataFormatter::Errors::iterator IE; - for (IE is = errors.begin(); is != errors.end(); is++) { - uint32_t errordetid = is->first; - if (errordetid == dummydetid) { // errors given dummy detId must be sorted by Fed - nodeterrors.insert(nodeterrors.end(), errors[errordetid].begin(), errors[errordetid].end()); - } else { - edm::DetSet& errorDetSet = errorcollection->find_or_insert(errordetid); - errorDetSet.data.insert(errorDetSet.data.end(), is->second.begin(), is->second.end()); - // Fill detid of the detectors where there is error AND the error number is listed - // in the configurable error list in the job option cfi. - // Code needs to be here, because there can be a set of errors for each - // entry in the for loop over PixelDataFormatter::Errors - - std::vector disabledChannelsDetSet; - - for (auto const& aPixelError : errorDetSet) { - // For the time being, we extend the error handling functionality with ErrorType 25 - // In the future, we should sort out how the usage of tkerrorlist can be generalized - if (usePhase1 && aPixelError.getType() == 25) { - assert(aPixelError.getFedId() == fedId); - const sipixelobjects::PixelFEDCabling* fed = cabling_->fed(fedId); - if (fed) { - cms_uint32_t linkId = formatter.linkId(aPixelError.getWord32()); - const sipixelobjects::PixelFEDLink* link = fed->link(linkId); - if (link) { - // The "offline" 0..15 numbering is fixed by definition, also, the FrameConversion depends on it - // in contrast, the ROC-in-channel numbering is determined by hardware --> better to use the "offline" scheme - PixelFEDChannel ch = {fed->id(), linkId, 25, 0}; - for (unsigned int iRoc = 1; iRoc <= link->numberOfROCs(); iRoc++) { - const sipixelobjects::PixelROC* roc = link->roc(iRoc); - if (roc->idInDetUnit() < ch.roc_first) - ch.roc_first = roc->idInDetUnit(); - if (roc->idInDetUnit() > ch.roc_last) - ch.roc_last = roc->idInDetUnit(); - } - disabledChannelsDetSet.push_back(ch); - } - } - } else { - // fill list of detIds to be turned off by tracking - if (!tkerrorlist.empty()) { - std::vector::iterator it_find = - find(tkerrorlist.begin(), tkerrorlist.end(), aPixelError.getType()); - if (it_find != tkerrorlist.end()) { - tkerror_detidcollection->push_back(errordetid); - } - } - } - - // fill list of detIds with errors to be studied - if (!usererrorlist.empty()) { - std::vector::iterator it_find = - find(usererrorlist.begin(), usererrorlist.end(), aPixelError.getType()); - if (it_find != usererrorlist.end()) { - usererror_detidcollection->push_back(errordetid); - } - } - - } // loop on DetSet of errors - - if (!disabledChannelsDetSet.empty()) { - disabled_channelcollection->insert( - errordetid, disabledChannelsDetSet.data(), disabledChannelsDetSet.size()); - } - } // if error assigned to a real DetId - } // loop on errors in event for this FED - } // if errors to be included in the event - } // loop on FED data to be unpacked + formatter.unpackFEDErrors(errors, + tkerrorlist, + usererrorlist, + *errorcollection.get(), + *tkerror_detidcollection.get(), + *usererror_detidcollection.get(), + *disabled_channelcollection.get(), + nodeterrors); + } // if errors to be included in the event + } // loop on FED data to be unpacked if (includeErrors) { edm::DetSet& errorDetSet = errorcollection->find_or_insert(dummydetid); diff --git a/EventFilter/SiPixelRawToDigi/src/PixelDataFormatter.cc b/EventFilter/SiPixelRawToDigi/src/PixelDataFormatter.cc index 74514b5bdf4dd..47baa6c0fc866 100644 --- a/EventFilter/SiPixelRawToDigi/src/PixelDataFormatter.cc +++ b/EventFilter/SiPixelRawToDigi/src/PixelDataFormatter.cc @@ -54,7 +54,7 @@ namespace { //const bool DANEK = false; } // namespace -PixelDataFormatter::PixelDataFormatter(const SiPixelFedCabling* map, bool phase) +PixelDataFormatter::PixelDataFormatter(const SiPixelFedCablingTree* map, bool phase) : theDigiCounter(0), theWordCounter(0), theCablingTree(map), @@ -332,11 +332,11 @@ void PixelDataFormatter::formatRawData(unsigned int lvl1_ID, } else if (detBadChannels != badChannels.end()) { auto badChannel = std::find_if(detBadChannels->second.begin(), detBadChannels->second.end(), [&](const PixelFEDChannel& ch) { - return (int(ch.fed) == fedId && ch.link == linkId(words[fedId].back())); + return (int(ch.fed) == fedId && ch.link == getLinkId(words[fedId].back())); }); if (badChannel != detBadChannels->second.end()) { LogError("FormatDataException") << " while marked bad, found digi for FED " << fedId << " Link " - << linkId(words[fedId].back()) << " on module " << rawId << endl + << getLinkId(words[fedId].back()) << " on module " << rawId << endl << print(digi) << endl; } } // if (fedId) @@ -520,3 +520,77 @@ std::string PixelDataFormatter::print(const Word64& word) const { str << "word64: " << reinterpret_cast&>(word); return str.str(); } + +void PixelDataFormatter::unpackFEDErrors(PixelDataFormatter::Errors& errors, + std::vector const& tkerrorlist, + std::vector const& usererrorlist, + edm::DetSetVector& errorcollection, + DetIdCollection& tkerror_detidcollection, + DetIdCollection& usererror_detidcollection, + edmNew::DetSetVector& disabled_channelcollection, + DetErrors& nodeterrors) { + const uint32_t dummydetid = 0xffffffff; + for (auto& error : errors) { + uint32_t errordetid = error.first; + if (errordetid == dummydetid) { // errors given dummy detId must be sorted by Fed + nodeterrors.insert(nodeterrors.end(), errors[errordetid].begin(), errors[errordetid].end()); + } else { + edm::DetSet& errorDetSet = errorcollection.find_or_insert(errordetid); + errorDetSet.data.insert(errorDetSet.data.end(), error.second.begin(), error.second.end()); + // Fill detid of the detectors where there is error AND the error number is listed + // in the configurable error list in the job option cfi. + // Code needs to be here, because there can be a set of errors for each + // entry in the for loop over PixelDataFormatter::Errors + + std::vector disabledChannelsDetSet; + + for (auto const& aPixelError : errorDetSet) { + // For the time being, we extend the error handling functionality with ErrorType 25 + // In the future, we should sort out how the usage of tkerrorlist can be generalized + if (aPixelError.getType() == 25) { + int fedId = aPixelError.getFedId(); + const sipixelobjects::PixelFEDCabling* fed = theCablingTree->fed(fedId); + if (fed) { + cms_uint32_t linkId = getLinkId(aPixelError.getWord32()); + const sipixelobjects::PixelFEDLink* link = fed->link(linkId); + if (link) { + // The "offline" 0..15 numbering is fixed by definition, also, the FrameConversion depends on it + // in contrast, the ROC-in-channel numbering is determined by hardware --> better to use the "offline" scheme + PixelFEDChannel ch = {fed->id(), linkId, 25, 0}; + for (unsigned int iRoc = 1; iRoc <= link->numberOfROCs(); iRoc++) { + const sipixelobjects::PixelROC* roc = link->roc(iRoc); + if (roc->idInDetUnit() < ch.roc_first) + ch.roc_first = roc->idInDetUnit(); + if (roc->idInDetUnit() > ch.roc_last) + ch.roc_last = roc->idInDetUnit(); + } + disabledChannelsDetSet.push_back(ch); + } + } + } else { + // fill list of detIds to be turned off by tracking + if (!tkerrorlist.empty()) { + auto it_find = std::find(tkerrorlist.begin(), tkerrorlist.end(), aPixelError.getType()); + if (it_find != tkerrorlist.end()) { + tkerror_detidcollection.push_back(errordetid); + } + } + } + + // fill list of detIds with errors to be studied + if (!usererrorlist.empty()) { + auto it_find = std::find(usererrorlist.begin(), usererrorlist.end(), aPixelError.getType()); + if (it_find != usererrorlist.end()) { + usererror_detidcollection.push_back(errordetid); + } + } + + } // loop on DetSet of errors + + if (!disabledChannelsDetSet.empty()) { + disabled_channelcollection.insert(errordetid, disabledChannelsDetSet.data(), disabledChannelsDetSet.size()); + } + + } // if error assigned to a real DetId + } // loop on errors in event for this FED +} \ No newline at end of file From f6c459d077ede1868d6f6d4060b6cb9cacea3715 Mon Sep 17 00:00:00 2001 From: Angela Czirkos Date: Mon, 26 Apr 2021 11:36:14 +0200 Subject: [PATCH 07/19] take errors with const reference --- EventFilter/SiPixelRawToDigi/interface/PixelDataFormatter.h | 2 +- EventFilter/SiPixelRawToDigi/src/PixelDataFormatter.cc | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/EventFilter/SiPixelRawToDigi/interface/PixelDataFormatter.h b/EventFilter/SiPixelRawToDigi/interface/PixelDataFormatter.h index 2000d108147f0..6e9fcd953f061 100644 --- a/EventFilter/SiPixelRawToDigi/interface/PixelDataFormatter.h +++ b/EventFilter/SiPixelRawToDigi/interface/PixelDataFormatter.h @@ -85,7 +85,7 @@ class PixelDataFormatter { void formatRawData(unsigned int lvl1_ID, RawData& fedRawData, const Digis& digis, const BadChannels& badChannels); - void unpackFEDErrors(Errors& errors, + void unpackFEDErrors(Errors const& errors, std::vector const& tkerrorlist, std::vector const& usererrorlist, edm::DetSetVector& errorcollection, diff --git a/EventFilter/SiPixelRawToDigi/src/PixelDataFormatter.cc b/EventFilter/SiPixelRawToDigi/src/PixelDataFormatter.cc index 47baa6c0fc866..2cc4cc4c67b60 100644 --- a/EventFilter/SiPixelRawToDigi/src/PixelDataFormatter.cc +++ b/EventFilter/SiPixelRawToDigi/src/PixelDataFormatter.cc @@ -521,7 +521,7 @@ std::string PixelDataFormatter::print(const Word64& word) const { return str.str(); } -void PixelDataFormatter::unpackFEDErrors(PixelDataFormatter::Errors& errors, +void PixelDataFormatter::unpackFEDErrors(PixelDataFormatter::Errors const& errors, std::vector const& tkerrorlist, std::vector const& usererrorlist, edm::DetSetVector& errorcollection, @@ -533,7 +533,7 @@ void PixelDataFormatter::unpackFEDErrors(PixelDataFormatter::Errors& errors, for (auto& error : errors) { uint32_t errordetid = error.first; if (errordetid == dummydetid) { // errors given dummy detId must be sorted by Fed - nodeterrors.insert(nodeterrors.end(), errors[errordetid].begin(), errors[errordetid].end()); + nodeterrors.insert(nodeterrors.end(), error.second.begin(), error.second.end()); } else { edm::DetSet& errorDetSet = errorcollection.find_or_insert(errordetid); errorDetSet.data.insert(errorDetSet.data.end(), error.second.begin(), error.second.end()); From e714478ffece77485e16c7f954f8bdcc2cd8f0d0 Mon Sep 17 00:00:00 2001 From: Angela Czirkos Date: Mon, 26 Apr 2021 11:41:24 +0200 Subject: [PATCH 08/19] remove obsolete stuff from PixelDataFormatter --- .../interface/PixelDataFormatter.h | 7 -- .../src/PixelDataFormatter.cc | 117 +----------------- 2 files changed, 2 insertions(+), 122 deletions(-) diff --git a/EventFilter/SiPixelRawToDigi/interface/PixelDataFormatter.h b/EventFilter/SiPixelRawToDigi/interface/PixelDataFormatter.h index 6e9fcd953f061..f356786293658 100644 --- a/EventFilter/SiPixelRawToDigi/interface/PixelDataFormatter.h +++ b/EventFilter/SiPixelRawToDigi/interface/PixelDataFormatter.h @@ -126,13 +126,6 @@ class PixelDataFormatter { const PixelDigi& digi, std::map >& words) const; - int word2digi(const int fedId, - const SiPixelFrameConverter* converter, - const bool includeError, - const bool useQuality, - const Word32& word, - Digis& digis) const; - std::string print(const PixelDigi& digi) const; std::string print(const Word64& word) const; diff --git a/EventFilter/SiPixelRawToDigi/src/PixelDataFormatter.cc b/EventFilter/SiPixelRawToDigi/src/PixelDataFormatter.cc index 2cc4cc4c67b60..10df21fed1712 100644 --- a/EventFilter/SiPixelRawToDigi/src/PixelDataFormatter.cc +++ b/EventFilter/SiPixelRawToDigi/src/PixelDataFormatter.cc @@ -40,18 +40,6 @@ namespace { constexpr int COL_bits1_l1 = 6; constexpr int ROW_bits1_l1 = 7; - // Moved to the header file, keep commented out unti the final version is done/ - // constexpr int ADC_shift = 0; - // constexpr int PXID_shift = ADC_shift + ADC_bits; - // constexpr int DCOL_shift = PXID_shift + PXID_bits; - // constexpr int ROC_shift = DCOL_shift + DCOL_bits; - // constexpr int LINK_shift = ROC_shift + ROC_bits; - // constexpr PixelDataFormatter::Word32 LINK_mask = ~(~PixelDataFormatter::Word32(0) << LINK_bits); - // constexpr PixelDataFormatter::Word32 ROC_mask = ~(~PixelDataFormatter::Word32(0) << ROC_bits); - // constexpr PixelDataFormatter::Word32 DCOL_mask = ~(~PixelDataFormatter::Word32(0) << DCOL_bits); - // constexpr PixelDataFormatter::Word32 PXID_mask = ~(~PixelDataFormatter::Word32(0) << PXID_bits); - // constexpr PixelDataFormatter::Word32 ADC_mask = ~(~PixelDataFormatter::Word32(0) << ADC_bits); - //const bool DANEK = false; } // namespace PixelDataFormatter::PixelDataFormatter(const SiPixelFedCablingTree* map, bool phase) @@ -186,8 +174,6 @@ void PixelDataFormatter::interpretRawData( int nlink = (ww >> LINK_shift) & LINK_mask; int nroc = (ww >> ROC_shift) & ROC_mask; - //if(DANEK) cout<<" fed, link, roc "<print()<<" layer "<bpixLayerPhase1(rawId)<<" " - // <idInDetUnit(); skipROC = badPixelInfo->IsRocBad(rawId, rocInDet); @@ -239,11 +222,8 @@ void PixelDataFormatter::interpretRawData( // for l1 roc use the roc column and row index instead of dcol and pixel index. int col = (ww >> COL_shift) & COL_mask; int row = (ww >> ROW_shift) & ROW_mask; - //if(DANEK) cout<<" layer 1: raw2digi "<(localCR); // local pixel coordinate - //if(DANEK) cout<dcol()<<" "<pxid()<<" "<rocCol()<<" "<rocRow()<> DCOL_shift) & DCOL_mask; int pxid = (ww >> PXID_shift) & PXID_mask; - //if(DANEK) cout<<" raw2digi "<(localDP); // local pixel coordinate - //if(DANEK) cout<dcol()<<" "<pxid()<<" "<rocCol()<<" "<rocRow()<toGlobal(*local); // global pixel coordinate (in module) (*detDigis).data.emplace_back(global.row, global.col, adc); - //if(DANEK) cout<> DCOL_shift) & DCOL_mask; -// int pxid = (ww >> PXID_shift) & PXID_mask; -// // int adc = (ww >> ADC_shift) & ADC_mask; -// LocalPixel::DcolPxid local = { dcol, pxid }; -// valid[i] = local.valid(); -// GlobalPixel global = rocp->toGlobal( LocalPixel(local) ); -// row[i]=global.row; col[i]=global.col; -// } -// } - void PixelDataFormatter::formatRawData(unsigned int lvl1_ID, RawData& fedRawData, const Digis& digis, @@ -308,7 +267,6 @@ void PixelDataFormatter::formatRawData(unsigned int lvl1_ID, bool barrel = PixelModuleName::isBarrel(rawId); if (barrel) layer = PixelROC::bpixLayerPhase1(rawId); - //if(DANEK) cout<<" layer "< >& words) const { - LogDebug("PixelDataFormatter") - // <<" detId: " << detId - << print(digi); + LogDebug("PixelDataFormatter") << print(digi); DetectorIndex detector = {detId, digi.row(), digi.column()}; ElectronicIndex cabling; @@ -411,9 +367,6 @@ int PixelDataFormatter::digi2word(cms_uint32_t detId, if (fedId < 0) return fedId; - //if(DANEK) cout<<" digi2raw "< >& words) const { - LogDebug("PixelDataFormatter") - // <<" detId: " << detId - << print(digi); + LogDebug("PixelDataFormatter") << print(digi); DetectorIndex detector = {detId, digi.row(), digi.column()}; ElectronicIndex cabling; @@ -437,10 +388,6 @@ int PixelDataFormatter::digi2wordPhase1Layer1(cms_uint32_t detId, int col = ((cabling.dcol) * 2) + ((cabling.pxid) % 2); int row = LocalPixel::numRowsInRoc - ((cabling.pxid) / 2); - //if(DANEK) cout<<" layer 1: digi2raw "<> DCOL_shift) & DCOL_mask; - cabling.pxid = (word >> PXID_shift) & PXID_mask; - cabling.link = (word >> LINK_shift) & LINK_mask; - cabling.roc = (word >> ROC_shift) & ROC_mask; - int adc = (word >> ADC_shift) & ADC_mask; - - if (debug) { - LocalPixel::DcolPxid pixel = {cabling.dcol, cabling.pxid}; - LocalPixel local(pixel); - LogTrace("") << " link: " << cabling.link << ", roc: " << cabling.roc << " rocRow: " << local.rocRow() - << ", rocCol:" << local.rocCol() << " (dcol: " << cabling.dcol << ", pxid:" << cabling.pxid - << "), adc:" << adc; - } - - if (!converter) - return 0; - - DetectorIndex detIdx; - int status = converter->toDetector(cabling, detIdx); - if (status) - return status; - - // exclude ROC(raw) based on bad ROC list bad in SiPixelQuality - // enable: process.siPixelDigis.UseQualityInfo = True - // 20-10-2010 A.Y. - if (useQuality && badPixelInfo) { - CablingPathToDetUnit path = {static_cast(fedId), - static_cast(cabling.link), - static_cast(cabling.roc)}; - const PixelROC* roc = theCablingTree->findItem(path); - short rocInDet = (short)roc->idInDetUnit(); - bool badROC = badPixelInfo->IsRocBad(detIdx.rawId, rocInDet); - if (badROC) - return 0; - } - - if (modulesToUnpack && modulesToUnpack->find(detIdx.rawId) == modulesToUnpack->end()) - return 0; - - digis[detIdx.rawId].emplace_back(detIdx.row, detIdx.col, adc); - - theDigiCounter++; - - if (debug) - LogTrace("") << digis[detIdx.rawId].back(); - return 0; -} - std::string PixelDataFormatter::print(const PixelDigi& digi) const { ostringstream str; str << " DIGI: row: " << digi.row() << ", col: " << digi.column() << ", adc: " << digi.adc(); From bba3554d4f89b2b88786ea2678e4dfbabf667f5a Mon Sep 17 00:00:00 2001 From: Angela Czirkos Date: Mon, 26 Apr 2021 13:09:15 +0200 Subject: [PATCH 09/19] use own typedefs --- .../src/PixelDataFormatter.cc | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) diff --git a/EventFilter/SiPixelRawToDigi/src/PixelDataFormatter.cc b/EventFilter/SiPixelRawToDigi/src/PixelDataFormatter.cc index 10df21fed1712..6c85f1f357d81 100644 --- a/EventFilter/SiPixelRawToDigi/src/PixelDataFormatter.cc +++ b/EventFilter/SiPixelRawToDigi/src/PixelDataFormatter.cc @@ -39,7 +39,6 @@ namespace { // Special for layer 1 bpix rocs 6/9/16 d.k. THIS STAYS. constexpr int COL_bits1_l1 = 6; constexpr int ROW_bits1_l1 = 7; - } // namespace PixelDataFormatter::PixelDataFormatter(const SiPixelFedCablingTree* map, bool phase) @@ -69,25 +68,25 @@ PixelDataFormatter::PixelDataFormatter(const SiPixelFedCablingTree* map, bool ph if (phase1) { // for phase 1 LINK_shift = ROC_shift + ROC_bits1; - LINK_mask = ~(~PixelDataFormatter::Word32(0) << LINK_bits1); - ROC_mask = ~(~PixelDataFormatter::Word32(0) << ROC_bits1); + LINK_mask = ~(~Word32(0) << LINK_bits1); + ROC_mask = ~(~Word32(0) << ROC_bits1); // special for layer 1 ROC ROW_shift = ADC_shift + ADC_bits; COL_shift = ROW_shift + ROW_bits1_l1; - COL_mask = ~(~PixelDataFormatter::Word32(0) << COL_bits1_l1); - ROW_mask = ~(~PixelDataFormatter::Word32(0) << ROW_bits1_l1); + COL_mask = ~(~Word32(0) << COL_bits1_l1); + ROW_mask = ~(~Word32(0) << ROW_bits1_l1); maxROCIndex = 8; } else { // for phase 0 LINK_shift = ROC_shift + ROC_bits; - LINK_mask = ~(~PixelDataFormatter::Word32(0) << LINK_bits); - ROC_mask = ~(~PixelDataFormatter::Word32(0) << ROC_bits); + LINK_mask = ~(~Word32(0) << LINK_bits); + ROC_mask = ~(~Word32(0) << ROC_bits); maxROCIndex = 25; } - DCOL_mask = ~(~PixelDataFormatter::Word32(0) << DCOL_bits); - PXID_mask = ~(~PixelDataFormatter::Word32(0) << PXID_bits); - ADC_mask = ~(~PixelDataFormatter::Word32(0) << ADC_bits); + DCOL_mask = ~(~Word32(0) << DCOL_bits); + PXID_mask = ~(~Word32(0) << PXID_bits); + ADC_mask = ~(~Word32(0) << ADC_bits); if (phase1) { errorcheck = std::unique_ptr(new ErrorChecker()); From 3aafe7167dfd0fcf3b8fb6e55e90e67a2bd5374a Mon Sep 17 00:00:00 2001 From: Angela Czirkos Date: Mon, 26 Apr 2021 13:24:50 +0200 Subject: [PATCH 10/19] apply naming convention for SiPixelRawToDigi members --- .../plugins/SiPixelRawToDigi.cc | 62 +++++++++---------- .../plugins/SiPixelRawToDigi.h | 24 +++---- .../src/PixelDataFormatter.cc | 2 +- 3 files changed, 44 insertions(+), 44 deletions(-) diff --git a/EventFilter/SiPixelRawToDigi/plugins/SiPixelRawToDigi.cc b/EventFilter/SiPixelRawToDigi/plugins/SiPixelRawToDigi.cc index 502b588c735d0..e5bb08f69c887 100644 --- a/EventFilter/SiPixelRawToDigi/plugins/SiPixelRawToDigi.cc +++ b/EventFilter/SiPixelRawToDigi/plugins/SiPixelRawToDigi.cc @@ -1,7 +1,7 @@ // Skip FED40 pilot-blade // Include parameter driven interface to SiPixelQuality for study purposes // exclude ROC(raw) based on bad ROC list in SiPixelQuality -// enabled by: process.siPixelDigis.UseQualityInfo = True (BY DEFAULT NOT USED) +// enabled by: process.siPixelDigis.useQuality_Info = True (BY DEFAULT NOT USED) // 20-10-2010 Andrew York (Tennessee) // Jan 2016 Tamas Almos Vami (Tav) (Wigner RCP) -- Cabling Map label option // Jul 2017 Viktor Veszpremi -- added PixelFEDChannel @@ -40,20 +40,20 @@ using namespace std; // ----------------------------------------------------------------------------- SiPixelRawToDigi::SiPixelRawToDigi(const edm::ParameterSet& conf) : config_(conf), badPixelInfo_(nullptr), regions_(nullptr) { - includeErrors = config_.getParameter("IncludeErrors"); - useQuality = config_.getParameter("UseQualityInfo"); + includeErrors_ = config_.getParameter("IncludeErrors"); + useQuality_ = config_.getParameter("UseQualityInfo"); - tkerrorlist = config_.getParameter>("ErrorList"); - usererrorlist = config_.getParameter>("UserErrorList"); + tkerrorlist_ = config_.getParameter>("ErrorList"); + usererrorlist_ = config_.getParameter>("UserErrorList"); - tFEDRawDataCollection = consumes(config_.getParameter("InputLabel")); - if (useQuality) { - tSiPixelQuality = esConsumes(); + fedRawDataCollectionToken_ = consumes(config_.getParameter("InputLabel")); + if (useQuality_) { + siPixelQualityToken_ = esConsumes(); } // Products produces>(); - if (includeErrors) { + if (includeErrors_) { produces>(); produces(); produces("UserErrorModules"); @@ -66,18 +66,18 @@ SiPixelRawToDigi::SiPixelRawToDigi(const edm::ParameterSet& conf) } // Control the usage of pilot-blade data, FED=40 - usePilotBlade = config_.getParameter("UsePilotBlade"); - if (usePilotBlade) + usePilotBlade_ = config_.getParameter("UsePilotBlade"); + if (usePilotBlade_) edm::LogInfo("SiPixelRawToDigi") << " Use pilot blade data (FED 40)"; // Control the usage of phase1 - usePhase1 = config_.getParameter("UsePhase1"); - if (usePhase1) + usePhase1_ = config_.getParameter("UsePhase1"); + if (usePhase1_) edm::LogInfo("SiPixelRawToDigi") << " Using phase1"; //CablingMap could have a label //Tav auto cablingMapLabel = config_.getParameter("CablingMapLabel"); - tCablingMap = esConsumes(edm::ESInputTag("", cablingMapLabel)); + cablingMapToken_ = esConsumes(edm::ESInputTag("", cablingMapLabel)); } // ----------------------------------------------------------------------------- @@ -123,17 +123,17 @@ void SiPixelRawToDigi::produce(edm::Event& ev, const edm::EventSetup& es) { const uint32_t dummydetid = 0xffffffff; // initialize cabling map or update if necessary - if (recordWatcher.check(es)) { + if (recordWatcher_.check(es)) { // cabling map, which maps online address (fed->link->ROC->local pixel) to offline (DetId->global pixel) - edm::ESHandle cablingMap = es.getHandle(tCablingMap); - fedIds = cablingMap->fedIds(); + edm::ESHandle cablingMap = es.getHandle(cablingMapToken_); + fedIds_ = cablingMap->fedIds(); cabling_ = cablingMap->cablingTree(); LogDebug("map version:") << cabling_->version(); } // initialize quality record or update if necessary - if (qualityWatcher.check(es) && useQuality) { + if (qualityWatcher_.check(es) && useQuality_) { // quality info for dead pixel modules or ROCs - edm::ESHandle qualityInfo = es.getHandle(tSiPixelQuality); + edm::ESHandle qualityInfo = es.getHandle(siPixelQualityToken_); badPixelInfo_ = qualityInfo.product(); if (!badPixelInfo_) { edm::LogError("SiPixelQualityNotPresent") @@ -142,7 +142,7 @@ void SiPixelRawToDigi::produce(edm::Event& ev, const edm::EventSetup& es) { } edm::Handle buffers; - ev.getByToken(tFEDRawDataCollection, buffers); + ev.getByToken(fedRawDataCollectionToken_, buffers); // create product (digis & errors) auto collection = std::make_unique>(); @@ -152,12 +152,12 @@ void SiPixelRawToDigi::produce(edm::Event& ev, const edm::EventSetup& es) { auto usererror_detidcollection = std::make_unique(); auto disabled_channelcollection = std::make_unique>(); - PixelDataFormatter formatter(cabling_.get(), usePhase1); // for phase 1 & 0 + PixelDataFormatter formatter(cabling_.get(), usePhase1_); // for phase 1 & 0 - formatter.setErrorStatus(includeErrors); + formatter.setErrorStatus(includeErrors_); - if (useQuality) - formatter.setQualityStatus(useQuality, badPixelInfo_); + if (useQuality_) + formatter.setQualityStatus(useQuality_, badPixelInfo_); bool errorsInEvent = false; PixelDataFormatter::DetErrors nodeterrors; @@ -170,10 +170,10 @@ void SiPixelRawToDigi::produce(edm::Event& ev, const edm::EventSetup& es) { << regions_->nForwardModules() << " " << regions_->nModules(); } - for (auto aFed = fedIds.begin(); aFed != fedIds.end(); ++aFed) { + for (auto aFed = fedIds_.begin(); aFed != fedIds_.end(); ++aFed) { int fedId = *aFed; - if (!usePilotBlade && (fedId == 40)) + if (!usePilotBlade_ && (fedId == 40)) continue; // skip pilot blade data if (regions_ && !regions_->mayUnpackFED(fedId)) @@ -190,10 +190,10 @@ void SiPixelRawToDigi::produce(edm::Event& ev, const edm::EventSetup& es) { formatter.interpretRawData(errorsInEvent, fedId, fedRawData, *collection, errors); //pack errors into collection - if (includeErrors) { + if (includeErrors_) { formatter.unpackFEDErrors(errors, - tkerrorlist, - usererrorlist, + tkerrorlist_, + usererrorlist_, *errorcollection.get(), *tkerror_detidcollection.get(), *usererror_detidcollection.get(), @@ -202,7 +202,7 @@ void SiPixelRawToDigi::produce(edm::Event& ev, const edm::EventSetup& es) { } // if errors to be included in the event } // loop on FED data to be unpacked - if (includeErrors) { + if (includeErrors_) { edm::DetSet& errorDetSet = errorcollection->find_or_insert(dummydetid); errorDetSet.data = nodeterrors; } @@ -210,7 +210,7 @@ void SiPixelRawToDigi::produce(edm::Event& ev, const edm::EventSetup& es) { LogDebug("SiPixelRawToDigi") << "Error words were stored in this event"; ev.put(std::move(collection)); - if (includeErrors) { + if (includeErrors_) { ev.put(std::move(errorcollection)); ev.put(std::move(tkerror_detidcollection)); ev.put(std::move(usererror_detidcollection), "UserErrorModules"); diff --git a/EventFilter/SiPixelRawToDigi/plugins/SiPixelRawToDigi.h b/EventFilter/SiPixelRawToDigi/plugins/SiPixelRawToDigi.h index 0fe3d6a63c4ab..e78074c9f4957 100644 --- a/EventFilter/SiPixelRawToDigi/plugins/SiPixelRawToDigi.h +++ b/EventFilter/SiPixelRawToDigi/plugins/SiPixelRawToDigi.h @@ -43,17 +43,17 @@ class SiPixelRawToDigi : public edm::stream::EDProducer<> { std::unique_ptr cabling_; const SiPixelQuality* badPixelInfo_; PixelUnpackingRegions* regions_; - edm::EDGetTokenT tFEDRawDataCollection; - bool includeErrors; - bool useQuality; - std::vector tkerrorlist; - std::vector usererrorlist; - std::vector fedIds; - edm::ESWatcher recordWatcher; - edm::ESWatcher qualityWatcher; - edm::ESGetToken tSiPixelQuality; - edm::ESGetToken tCablingMap; - bool usePilotBlade; - bool usePhase1; + std::vector tkerrorlist_; + std::vector usererrorlist_; + std::vector fedIds_; + edm::ESWatcher recordWatcher_; + edm::ESWatcher qualityWatcher_; + edm::EDGetTokenT fedRawDataCollectionToken_; + edm::ESGetToken siPixelQualityToken_; + edm::ESGetToken cablingMapToken_; + bool includeErrors_; + bool useQuality_; + bool usePilotBlade_; + bool usePhase1_; }; #endif diff --git a/EventFilter/SiPixelRawToDigi/src/PixelDataFormatter.cc b/EventFilter/SiPixelRawToDigi/src/PixelDataFormatter.cc index 6c85f1f357d81..13f2561a3cee7 100644 --- a/EventFilter/SiPixelRawToDigi/src/PixelDataFormatter.cc +++ b/EventFilter/SiPixelRawToDigi/src/PixelDataFormatter.cc @@ -479,4 +479,4 @@ void PixelDataFormatter::unpackFEDErrors(PixelDataFormatter::Errors const& error } // if error assigned to a real DetId } // loop on errors in event for this FED -} \ No newline at end of file +} From 478931c228edf37d84cd5f2577e597c7187ff1b0 Mon Sep 17 00:00:00 2001 From: Angela Czirkos Date: Mon, 26 Apr 2021 13:33:11 +0200 Subject: [PATCH 11/19] use initializer list and make members const --- .../plugins/SiPixelRawToDigi.cc | 22 ++++++++++--------- .../plugins/SiPixelRawToDigi.h | 14 ++++++------ 2 files changed, 19 insertions(+), 17 deletions(-) diff --git a/EventFilter/SiPixelRawToDigi/plugins/SiPixelRawToDigi.cc b/EventFilter/SiPixelRawToDigi/plugins/SiPixelRawToDigi.cc index e5bb08f69c887..a2d70b400d201 100644 --- a/EventFilter/SiPixelRawToDigi/plugins/SiPixelRawToDigi.cc +++ b/EventFilter/SiPixelRawToDigi/plugins/SiPixelRawToDigi.cc @@ -39,14 +39,18 @@ using namespace std; // ----------------------------------------------------------------------------- SiPixelRawToDigi::SiPixelRawToDigi(const edm::ParameterSet& conf) - : config_(conf), badPixelInfo_(nullptr), regions_(nullptr) { - includeErrors_ = config_.getParameter("IncludeErrors"); - useQuality_ = config_.getParameter("UseQualityInfo"); - - tkerrorlist_ = config_.getParameter>("ErrorList"); - usererrorlist_ = config_.getParameter>("UserErrorList"); - - fedRawDataCollectionToken_ = consumes(config_.getParameter("InputLabel")); + : config_(conf), + badPixelInfo_(nullptr), + regions_(nullptr), + tkerrorlist_(config_.getParameter>("ErrorList")), + usererrorlist_(config_.getParameter>("UserErrorList")), + fedRawDataCollectionToken_(consumes(config_.getParameter("InputLabel"))), + includeErrors_(config_.getParameter("IncludeErrors")), + useQuality_(config_.getParameter("UseQualityInfo")), + usePilotBlade_(config_.getParameter("UsePilotBlade")), + usePhase1_(config_.getParameter("UsePhase1")) + +{ if (useQuality_) { siPixelQualityToken_ = esConsumes(); } @@ -66,12 +70,10 @@ SiPixelRawToDigi::SiPixelRawToDigi(const edm::ParameterSet& conf) } // Control the usage of pilot-blade data, FED=40 - usePilotBlade_ = config_.getParameter("UsePilotBlade"); if (usePilotBlade_) edm::LogInfo("SiPixelRawToDigi") << " Use pilot blade data (FED 40)"; // Control the usage of phase1 - usePhase1_ = config_.getParameter("UsePhase1"); if (usePhase1_) edm::LogInfo("SiPixelRawToDigi") << " Using phase1"; diff --git a/EventFilter/SiPixelRawToDigi/plugins/SiPixelRawToDigi.h b/EventFilter/SiPixelRawToDigi/plugins/SiPixelRawToDigi.h index e78074c9f4957..97e4f3a4f5c20 100644 --- a/EventFilter/SiPixelRawToDigi/plugins/SiPixelRawToDigi.h +++ b/EventFilter/SiPixelRawToDigi/plugins/SiPixelRawToDigi.h @@ -43,17 +43,17 @@ class SiPixelRawToDigi : public edm::stream::EDProducer<> { std::unique_ptr cabling_; const SiPixelQuality* badPixelInfo_; PixelUnpackingRegions* regions_; - std::vector tkerrorlist_; - std::vector usererrorlist_; + const std::vector tkerrorlist_; + const std::vector usererrorlist_; std::vector fedIds_; edm::ESWatcher recordWatcher_; edm::ESWatcher qualityWatcher_; - edm::EDGetTokenT fedRawDataCollectionToken_; + const edm::EDGetTokenT fedRawDataCollectionToken_; edm::ESGetToken siPixelQualityToken_; edm::ESGetToken cablingMapToken_; - bool includeErrors_; - bool useQuality_; - bool usePilotBlade_; - bool usePhase1_; + const bool includeErrors_; + const bool useQuality_; + const bool usePilotBlade_; + const bool usePhase1_; }; #endif From eedeaa127bdd34d277b7d0a12fd8316ca3414967 Mon Sep 17 00:00:00 2001 From: Angela Czirkos Date: Mon, 26 Apr 2021 16:39:55 +0200 Subject: [PATCH 12/19] Use EDPutTokens in SiPixelRawData - also, add Timing as an optional - manage header includes to minimize dependency --- .../plugins/SiPixelRawToDigi.cc | 63 ++++++++----------- .../plugins/SiPixelRawToDigi.h | 28 +++++++-- 2 files changed, 50 insertions(+), 41 deletions(-) diff --git a/EventFilter/SiPixelRawToDigi/plugins/SiPixelRawToDigi.cc b/EventFilter/SiPixelRawToDigi/plugins/SiPixelRawToDigi.cc index a2d70b400d201..c556c5623be9e 100644 --- a/EventFilter/SiPixelRawToDigi/plugins/SiPixelRawToDigi.cc +++ b/EventFilter/SiPixelRawToDigi/plugins/SiPixelRawToDigi.cc @@ -18,22 +18,13 @@ #include "FWCore/MessageLogger/interface/MessageLogger.h" -#include "DataFormats/SiPixelDigi/interface/PixelDigi.h" - -#include "DataFormats/SiPixelRawData/interface/SiPixelRawDataError.h" - -#include "DataFormats/Common/interface/DetSetVector.h" #include "DataFormats/FEDRawData/interface/FEDRawDataCollection.h" #include "DataFormats/FEDRawData/interface/FEDRawData.h" #include "DataFormats/FEDRawData/interface/FEDNumbering.h" -#include "DataFormats/DetId/interface/DetIdCollection.h" -#include "CondFormats/SiPixelObjects/interface/SiPixelFedCablingTree.h" #include "EventFilter/SiPixelRawToDigi/interface/PixelDataFormatter.h" -#include "DataFormats/SiPixelDetId/interface/PixelFEDChannel.h" #include "EventFilter/SiPixelRawToDigi/interface/PixelUnpackingRegions.h" -#include "FWCore/Framework/interface/ConsumesCollector.h" using namespace std; @@ -44,7 +35,10 @@ SiPixelRawToDigi::SiPixelRawToDigi(const edm::ParameterSet& conf) regions_(nullptr), tkerrorlist_(config_.getParameter>("ErrorList")), usererrorlist_(config_.getParameter>("UserErrorList")), - fedRawDataCollectionToken_(consumes(config_.getParameter("InputLabel"))), + fedRawDataCollectionToken_{consumes(config_.getParameter("InputLabel"))}, + cablingMapToken_{esConsumes( + edm::ESInputTag("", config_.getParameter("CablingMapLabel")))}, + siPixelDigiCollectionToken_{produces>()}, includeErrors_(config_.getParameter("IncludeErrors")), useQuality_(config_.getParameter("UseQualityInfo")), usePilotBlade_(config_.getParameter("UsePilotBlade")), @@ -56,12 +50,11 @@ SiPixelRawToDigi::SiPixelRawToDigi(const edm::ParameterSet& conf) } // Products - produces>(); if (includeErrors_) { - produces>(); - produces(); - produces("UserErrorModules"); - produces>(); + errorPutToken_ = produces>(); + tkErrorPutToken_ = produces(); + userErrorPutToken_ = produces("UserErrorModules"); + disabledChannelPutToken_ = produces>(); } // regions @@ -76,10 +69,6 @@ SiPixelRawToDigi::SiPixelRawToDigi(const edm::ParameterSet& conf) // Control the usage of phase1 if (usePhase1_) edm::LogInfo("SiPixelRawToDigi") << " Using phase1"; - - //CablingMap could have a label //Tav - auto cablingMapLabel = config_.getParameter("CablingMapLabel"); - cablingMapToken_ = esConsumes(edm::ESInputTag("", cablingMapLabel)); } // ----------------------------------------------------------------------------- @@ -114,7 +103,9 @@ void SiPixelRawToDigi::fillDescriptions(edm::ConfigurationDescriptions& descript desc.add("UsePilotBlade", false)->setComment("## Use pilot blades"); desc.add("UsePhase1", false)->setComment("## Use phase1"); desc.add("CablingMapLabel", "")->setComment("CablingMap label"); //Tav - desc.addOptional("CheckPixelOrder"); // never used, kept for back-compatibility + // unused options, kept for back-compatibility + desc.addOptional("CheckPixelOrder"); + desc.addOptional("Timing"); descriptions.add("siPixelRawToDigi", desc); } @@ -147,12 +138,12 @@ void SiPixelRawToDigi::produce(edm::Event& ev, const edm::EventSetup& es) { ev.getByToken(fedRawDataCollectionToken_, buffers); // create product (digis & errors) - auto collection = std::make_unique>(); + auto collection = edm::DetSetVector(); // collection->reserve(8*1024); - auto errorcollection = std::make_unique>(); - auto tkerror_detidcollection = std::make_unique(); - auto usererror_detidcollection = std::make_unique(); - auto disabled_channelcollection = std::make_unique>(); + auto errorcollection = edm::DetSetVector{}; + auto tkerror_detidcollection = DetIdCollection{}; + auto usererror_detidcollection = DetIdCollection{}; + auto disabled_channelcollection = edmNew::DetSetVector{}; PixelDataFormatter formatter(cabling_.get(), usePhase1_); // for phase 1 & 0 @@ -189,34 +180,34 @@ void SiPixelRawToDigi::produce(edm::Event& ev, const edm::EventSetup& es) { const FEDRawData& fedRawData = buffers->FEDData(fedId); //convert data to digi and strip off errors - formatter.interpretRawData(errorsInEvent, fedId, fedRawData, *collection, errors); + formatter.interpretRawData(errorsInEvent, fedId, fedRawData, collection, errors); //pack errors into collection if (includeErrors_) { formatter.unpackFEDErrors(errors, tkerrorlist_, usererrorlist_, - *errorcollection.get(), - *tkerror_detidcollection.get(), - *usererror_detidcollection.get(), - *disabled_channelcollection.get(), + errorcollection, + tkerror_detidcollection, + usererror_detidcollection, + disabled_channelcollection, nodeterrors); } // if errors to be included in the event } // loop on FED data to be unpacked if (includeErrors_) { - edm::DetSet& errorDetSet = errorcollection->find_or_insert(dummydetid); + edm::DetSet& errorDetSet = errorcollection.find_or_insert(dummydetid); errorDetSet.data = nodeterrors; } if (errorsInEvent) LogDebug("SiPixelRawToDigi") << "Error words were stored in this event"; - ev.put(std::move(collection)); + ev.emplace(siPixelDigiCollectionToken_, std::move(collection)); if (includeErrors_) { - ev.put(std::move(errorcollection)); - ev.put(std::move(tkerror_detidcollection)); - ev.put(std::move(usererror_detidcollection), "UserErrorModules"); - ev.put(std::move(disabled_channelcollection)); + ev.emplace(errorPutToken_, std::move(errorcollection)); + ev.emplace(tkErrorPutToken_, std::move(tkerror_detidcollection)); + ev.emplace(userErrorPutToken_, std::move(usererror_detidcollection)); + ev.emplace(disabledChannelPutToken_, std::move(disabled_channelcollection)); } } // declare this as a framework plugin diff --git a/EventFilter/SiPixelRawToDigi/plugins/SiPixelRawToDigi.h b/EventFilter/SiPixelRawToDigi/plugins/SiPixelRawToDigi.h index 97e4f3a4f5c20..69b72cb326c33 100644 --- a/EventFilter/SiPixelRawToDigi/plugins/SiPixelRawToDigi.h +++ b/EventFilter/SiPixelRawToDigi/plugins/SiPixelRawToDigi.h @@ -10,14 +10,23 @@ #include "FWCore/Framework/interface/stream/EDProducer.h" #include "FWCore/Framework/interface/EventSetup.h" #include "FWCore/Framework/interface/Event.h" +#include "FWCore/Framework/interface/ConsumesCollector.h" #include "FWCore/ParameterSet/interface/ParameterSet.h" -#include "CondFormats/SiPixelObjects/interface/SiPixelQuality.h" -#include "CondFormats/SiPixelObjects/interface/SiPixelFedCablingMap.h" +#include "FWCore/Utilities/interface/ESGetToken.h" + #include "CondFormats/DataRecord/interface/SiPixelFedCablingMapRcd.h" #include "CondFormats/DataRecord/interface/SiPixelQualityRcd.h" +#include "CondFormats/SiPixelObjects/interface/SiPixelQuality.h" +#include "CondFormats/SiPixelObjects/interface/SiPixelFedCablingMap.h" +#include "CondFormats/SiPixelObjects/interface/SiPixelFedCablingTree.h" + +#include "DataFormats/Common/interface/DetSetVector.h" +#include "DataFormats/Common/interface/DetSetVectorNew.h" +#include "DataFormats/DetId/interface/DetIdCollection.h" #include "DataFormats/FEDRawData/interface/FEDRawDataCollection.h" -#include "FWCore/Framework/interface/ConsumesCollector.h" -#include "FWCore/Utilities/interface/ESGetToken.h" +#include "DataFormats/SiPixelDigi/interface/PixelDigi.h" +#include "DataFormats/SiPixelDetId/interface/PixelFEDChannel.h" +#include "DataFormats/SiPixelRawData/interface/SiPixelRawDataError.h" class SiPixelFedCablingTree; class SiPixelFedCabling; @@ -48,9 +57,18 @@ class SiPixelRawToDigi : public edm::stream::EDProducer<> { std::vector fedIds_; edm::ESWatcher recordWatcher_; edm::ESWatcher qualityWatcher_; + // always consumed const edm::EDGetTokenT fedRawDataCollectionToken_; + const edm::ESGetToken cablingMapToken_; + // consume only if pixel quality is used -> useQuality_ edm::ESGetToken siPixelQualityToken_; - edm::ESGetToken cablingMapToken_; + // always produced + edm::EDPutTokenT> siPixelDigiCollectionToken_; + // produce only if error collections are included -> includeErrors_ + edm::EDPutTokenT> errorPutToken_; + edm::EDPutTokenT tkErrorPutToken_; + edm::EDPutTokenT userErrorPutToken_; + edm::EDPutTokenT> disabledChannelPutToken_; const bool includeErrors_; const bool useQuality_; const bool usePilotBlade_; From ffdbb76c9a5424c93f490ac617b47de4e0e6dcb0 Mon Sep 17 00:00:00 2001 From: Angela Czirkos Date: Tue, 27 Apr 2021 09:00:37 +0200 Subject: [PATCH 13/19] remove Timing from HLT menus extra validation: ran addOnTests.py and unittests locally --- EventFilter/SiPixelRawToDigi/plugins/SiPixelRawToDigi.cc | 4 +--- .../SiPixelRawToDigi/python/SiPixelDigiToRaw_cfi.py | 1 - EventFilter/SiPixelRawToDigi/test/runRawDumper_cfg.py | 1 - HLTrigger/Configuration/python/customizeHLTforCMSSW.py | 9 +++++++++ 4 files changed, 10 insertions(+), 5 deletions(-) diff --git a/EventFilter/SiPixelRawToDigi/plugins/SiPixelRawToDigi.cc b/EventFilter/SiPixelRawToDigi/plugins/SiPixelRawToDigi.cc index c556c5623be9e..d16639614d279 100644 --- a/EventFilter/SiPixelRawToDigi/plugins/SiPixelRawToDigi.cc +++ b/EventFilter/SiPixelRawToDigi/plugins/SiPixelRawToDigi.cc @@ -103,9 +103,7 @@ void SiPixelRawToDigi::fillDescriptions(edm::ConfigurationDescriptions& descript desc.add("UsePilotBlade", false)->setComment("## Use pilot blades"); desc.add("UsePhase1", false)->setComment("## Use phase1"); desc.add("CablingMapLabel", "")->setComment("CablingMap label"); //Tav - // unused options, kept for back-compatibility - desc.addOptional("CheckPixelOrder"); - desc.addOptional("Timing"); + desc.addOptional("CheckPixelOrder"); // unused option, kept for back-compatibility descriptions.add("siPixelRawToDigi", desc); } diff --git a/EventFilter/SiPixelRawToDigi/python/SiPixelDigiToRaw_cfi.py b/EventFilter/SiPixelRawToDigi/python/SiPixelDigiToRaw_cfi.py index bb78b3ee8c6ea..0c5946f226a11 100644 --- a/EventFilter/SiPixelRawToDigi/python/SiPixelDigiToRaw_cfi.py +++ b/EventFilter/SiPixelRawToDigi/python/SiPixelDigiToRaw_cfi.py @@ -1,7 +1,6 @@ import FWCore.ParameterSet.Config as cms siPixelRawData = cms.EDProducer("SiPixelDigiToRaw", - Timing = cms.untracked.bool(False), InputLabel = cms.InputTag("simSiPixelDigis"), ## Use phase1 UsePhase1 = cms.bool(False), diff --git a/EventFilter/SiPixelRawToDigi/test/runRawDumper_cfg.py b/EventFilter/SiPixelRawToDigi/test/runRawDumper_cfg.py index 8cfcdf2944364..84fc26136d1aa 100644 --- a/EventFilter/SiPixelRawToDigi/test/runRawDumper_cfg.py +++ b/EventFilter/SiPixelRawToDigi/test/runRawDumper_cfg.py @@ -273,7 +273,6 @@ #process.source.lumisToProcess = cms.untracked.VLuminosityBlockRange('205718:49-205718:734') process.d = cms.EDAnalyzer("SiPixelRawDumper", - Timing = cms.untracked.bool(False), IncludeErrors = cms.untracked.bool(True), # In 2012, label = rawDataCollector, extension = _LHC # InputLabel = cms.untracked.string('rawDataCollector'), diff --git a/HLTrigger/Configuration/python/customizeHLTforCMSSW.py b/HLTrigger/Configuration/python/customizeHLTforCMSSW.py index b5499e80b4306..72c7c184f63b5 100644 --- a/HLTrigger/Configuration/python/customizeHLTforCMSSW.py +++ b/HLTrigger/Configuration/python/customizeHLTforCMSSW.py @@ -151,6 +151,14 @@ def customiseFor33495(process): return process +def customizeFor33526(process): + """ Customize HLT menu to remove deprecated parameters for the pixel raw to digi step""" + for producer in producers_by_type(process, "SiPixelRawToDigi"): + if hasattr(producer, "Timing"): + del producer.Timing + + return process + # CMSSW version specific customizations def customizeHLTforCMSSW(process, menuType="GRun"): @@ -158,6 +166,7 @@ def customizeHLTforCMSSW(process, menuType="GRun"): # add call to action function in proper order: newest last! # process = customiseFor12718(process) process = customiseFor33495(process) + process = customizeFor33526(process) process = customizeFor33543(process) return process From c147a247988842b5229b2b9020fc67d6ef0b864d Mon Sep 17 00:00:00 2001 From: Angela Czirkos Date: Tue, 27 Apr 2021 12:50:39 +0200 Subject: [PATCH 14/19] remove unused variable CheckPixelOrder --- EventFilter/SiPixelRawToDigi/plugins/SiPixelRawToDigi.cc | 1 - EventFilter/SiPixelRawToDigi/test/runHotPixels_cfg.py | 1 - EventFilter/SiPixelRawToDigi/test/runRawDumper_cfg.py | 1 - HLTrigger/Configuration/python/customizeHLTforCMSSW.py | 6 +++--- 4 files changed, 3 insertions(+), 6 deletions(-) diff --git a/EventFilter/SiPixelRawToDigi/plugins/SiPixelRawToDigi.cc b/EventFilter/SiPixelRawToDigi/plugins/SiPixelRawToDigi.cc index d16639614d279..7d333e661a6c0 100644 --- a/EventFilter/SiPixelRawToDigi/plugins/SiPixelRawToDigi.cc +++ b/EventFilter/SiPixelRawToDigi/plugins/SiPixelRawToDigi.cc @@ -103,7 +103,6 @@ void SiPixelRawToDigi::fillDescriptions(edm::ConfigurationDescriptions& descript desc.add("UsePilotBlade", false)->setComment("## Use pilot blades"); desc.add("UsePhase1", false)->setComment("## Use phase1"); desc.add("CablingMapLabel", "")->setComment("CablingMap label"); //Tav - desc.addOptional("CheckPixelOrder"); // unused option, kept for back-compatibility descriptions.add("siPixelRawToDigi", desc); } diff --git a/EventFilter/SiPixelRawToDigi/test/runHotPixels_cfg.py b/EventFilter/SiPixelRawToDigi/test/runHotPixels_cfg.py index 5a82f804ee8fe..b457b7f840843 100644 --- a/EventFilter/SiPixelRawToDigi/test/runHotPixels_cfg.py +++ b/EventFilter/SiPixelRawToDigi/test/runHotPixels_cfg.py @@ -78,7 +78,6 @@ # In 2012, extension = _LHC InputLabel = cms.untracked.string('rawDataCollector'), # InputLabel = cms.untracked.string('siPixelRawData'), - CheckPixelOrder = cms.untracked.bool(False) ) process.p = cms.Path(process.hltfilter*process.dumper) diff --git a/EventFilter/SiPixelRawToDigi/test/runRawDumper_cfg.py b/EventFilter/SiPixelRawToDigi/test/runRawDumper_cfg.py index 84fc26136d1aa..17c420cca4488 100644 --- a/EventFilter/SiPixelRawToDigi/test/runRawDumper_cfg.py +++ b/EventFilter/SiPixelRawToDigi/test/runRawDumper_cfg.py @@ -283,7 +283,6 @@ # old # InputLabel = cms.untracked.string('siPixelRawData'), # InputLabel = cms.untracked.string('source'), - CheckPixelOrder = cms.untracked.bool(False), # 0 - nothing, 1 - error , 2- data, 3-headers, 4-hex Verbosity = cms.untracked.int32(1), # threshold, print fed/channel num of errors if tot_errors > events * PrintThreshold, default 0,001 diff --git a/HLTrigger/Configuration/python/customizeHLTforCMSSW.py b/HLTrigger/Configuration/python/customizeHLTforCMSSW.py index 72c7c184f63b5..3485f90b5b4b0 100644 --- a/HLTrigger/Configuration/python/customizeHLTforCMSSW.py +++ b/HLTrigger/Configuration/python/customizeHLTforCMSSW.py @@ -150,19 +150,19 @@ def customiseFor33495(process): del producer.DoLorentz return process - def customizeFor33526(process): """ Customize HLT menu to remove deprecated parameters for the pixel raw to digi step""" for producer in producers_by_type(process, "SiPixelRawToDigi"): if hasattr(producer, "Timing"): del producer.Timing + if hasattr(producer, "CheckPixelOrder"): + del producer.CheckPixelOrder return process - # CMSSW version specific customizations def customizeHLTforCMSSW(process, menuType="GRun"): - + # add call to action function in proper order: newest last! # process = customiseFor12718(process) process = customiseFor33495(process) From a0ef64769ea2fbe745e219c25d0d2cfdcc09c413 Mon Sep 17 00:00:00 2001 From: Angela Czirkos Date: Wed, 28 Apr 2021 08:57:40 +0200 Subject: [PATCH 15/19] use range-based for loop for map iteration, increase readibility best c++17 feature --- .../src/PixelDataFormatter.cc | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) diff --git a/EventFilter/SiPixelRawToDigi/src/PixelDataFormatter.cc b/EventFilter/SiPixelRawToDigi/src/PixelDataFormatter.cc index 13f2561a3cee7..2988219d17d47 100644 --- a/EventFilter/SiPixelRawToDigi/src/PixelDataFormatter.cc +++ b/EventFilter/SiPixelRawToDigi/src/PixelDataFormatter.cc @@ -415,14 +415,13 @@ void PixelDataFormatter::unpackFEDErrors(PixelDataFormatter::Errors const& error DetIdCollection& usererror_detidcollection, edmNew::DetSetVector& disabled_channelcollection, DetErrors& nodeterrors) { - const uint32_t dummydetid = 0xffffffff; - for (auto& error : errors) { - uint32_t errordetid = error.first; - if (errordetid == dummydetid) { // errors given dummy detId must be sorted by Fed - nodeterrors.insert(nodeterrors.end(), error.second.begin(), error.second.end()); + const uint32_t dummyDetId = 0xffffffff; + for (const auto& [errorDetId, rawErrorsVec] : errors) { + if (errorDetId == dummyDetId) { // errors given dummy detId must be sorted by Fed + nodeterrors.insert(nodeterrors.end(), rawErrorsVec.begin(), rawErrorsVec.end()); } else { - edm::DetSet& errorDetSet = errorcollection.find_or_insert(errordetid); - errorDetSet.data.insert(errorDetSet.data.end(), error.second.begin(), error.second.end()); + edm::DetSet& errorDetSet = errorcollection.find_or_insert(errorDetId); + errorDetSet.data.insert(errorDetSet.data.end(), rawErrorsVec.begin(), rawErrorsVec.end()); // Fill detid of the detectors where there is error AND the error number is listed // in the configurable error list in the job option cfi. // Code needs to be here, because there can be a set of errors for each @@ -458,7 +457,7 @@ void PixelDataFormatter::unpackFEDErrors(PixelDataFormatter::Errors const& error if (!tkerrorlist.empty()) { auto it_find = std::find(tkerrorlist.begin(), tkerrorlist.end(), aPixelError.getType()); if (it_find != tkerrorlist.end()) { - tkerror_detidcollection.push_back(errordetid); + tkerror_detidcollection.push_back(errorDetId); } } } @@ -467,14 +466,14 @@ void PixelDataFormatter::unpackFEDErrors(PixelDataFormatter::Errors const& error if (!usererrorlist.empty()) { auto it_find = std::find(usererrorlist.begin(), usererrorlist.end(), aPixelError.getType()); if (it_find != usererrorlist.end()) { - usererror_detidcollection.push_back(errordetid); + usererror_detidcollection.push_back(errorDetId); } } } // loop on DetSet of errors if (!disabledChannelsDetSet.empty()) { - disabled_channelcollection.insert(errordetid, disabledChannelsDetSet.data(), disabledChannelsDetSet.size()); + disabled_channelcollection.insert(errorDetId, disabledChannelsDetSet.data(), disabledChannelsDetSet.size()); } } // if error assigned to a real DetId From 9e2a0c7828f5ea719b8a255b092cb4bf848ab2b1 Mon Sep 17 00:00:00 2001 From: Angela Czirkos Date: Wed, 28 Apr 2021 09:05:37 +0200 Subject: [PATCH 16/19] make put token const --- EventFilter/SiPixelRawToDigi/plugins/SiPixelRawToDigi.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/EventFilter/SiPixelRawToDigi/plugins/SiPixelRawToDigi.h b/EventFilter/SiPixelRawToDigi/plugins/SiPixelRawToDigi.h index 69b72cb326c33..9ca5792f800a9 100644 --- a/EventFilter/SiPixelRawToDigi/plugins/SiPixelRawToDigi.h +++ b/EventFilter/SiPixelRawToDigi/plugins/SiPixelRawToDigi.h @@ -63,7 +63,7 @@ class SiPixelRawToDigi : public edm::stream::EDProducer<> { // consume only if pixel quality is used -> useQuality_ edm::ESGetToken siPixelQualityToken_; // always produced - edm::EDPutTokenT> siPixelDigiCollectionToken_; + const edm::EDPutTokenT> siPixelDigiCollectionToken_; // produce only if error collections are included -> includeErrors_ edm::EDPutTokenT> errorPutToken_; edm::EDPutTokenT tkErrorPutToken_; From 7c8282f21f4373f7bddae4bdf6606b8ff3498d46 Mon Sep 17 00:00:00 2001 From: Angela Czirkos Date: Fri, 30 Apr 2021 07:16:21 +0200 Subject: [PATCH 17/19] fix phase 1 condition --- EventFilter/SiPixelRawToDigi/interface/PixelDataFormatter.h | 1 - EventFilter/SiPixelRawToDigi/src/PixelDataFormatter.cc | 2 +- 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/EventFilter/SiPixelRawToDigi/interface/PixelDataFormatter.h b/EventFilter/SiPixelRawToDigi/interface/PixelDataFormatter.h index f356786293658..6a27de20b202a 100644 --- a/EventFilter/SiPixelRawToDigi/interface/PixelDataFormatter.h +++ b/EventFilter/SiPixelRawToDigi/interface/PixelDataFormatter.h @@ -107,7 +107,6 @@ class PixelDataFormatter { bool includeErrors; bool useQualityInfo; - bool debug; int allDetDigis; int hasDetDigis; std::unique_ptr errorcheck; diff --git a/EventFilter/SiPixelRawToDigi/src/PixelDataFormatter.cc b/EventFilter/SiPixelRawToDigi/src/PixelDataFormatter.cc index 2988219d17d47..5557f8061446e 100644 --- a/EventFilter/SiPixelRawToDigi/src/PixelDataFormatter.cc +++ b/EventFilter/SiPixelRawToDigi/src/PixelDataFormatter.cc @@ -432,7 +432,7 @@ void PixelDataFormatter::unpackFEDErrors(PixelDataFormatter::Errors const& error for (auto const& aPixelError : errorDetSet) { // For the time being, we extend the error handling functionality with ErrorType 25 // In the future, we should sort out how the usage of tkerrorlist can be generalized - if (aPixelError.getType() == 25) { + if (phase1 && aPixelError.getType() == 25) { int fedId = aPixelError.getFedId(); const sipixelobjects::PixelFEDCabling* fed = theCablingTree->fed(fedId); if (fed) { From 7e2e909629dab21c3b8ef4758bf5048292274a3b Mon Sep 17 00:00:00 2001 From: Angela Czirkos Date: Fri, 30 Apr 2021 07:24:17 +0200 Subject: [PATCH 18/19] remove header for plugin SiPixelRawToDigi --- .../plugins/SiPixelRawToDigi.cc | 78 +++++++++++++++++-- .../plugins/SiPixelRawToDigi.h | 77 ------------------ 2 files changed, 73 insertions(+), 82 deletions(-) delete mode 100644 EventFilter/SiPixelRawToDigi/plugins/SiPixelRawToDigi.h diff --git a/EventFilter/SiPixelRawToDigi/plugins/SiPixelRawToDigi.cc b/EventFilter/SiPixelRawToDigi/plugins/SiPixelRawToDigi.cc index 7d333e661a6c0..0c68cc0d91cd2 100644 --- a/EventFilter/SiPixelRawToDigi/plugins/SiPixelRawToDigi.cc +++ b/EventFilter/SiPixelRawToDigi/plugins/SiPixelRawToDigi.cc @@ -6,8 +6,6 @@ // Jan 2016 Tamas Almos Vami (Tav) (Wigner RCP) -- Cabling Map label option // Jul 2017 Viktor Veszpremi -- added PixelFEDChannel -#include "SiPixelRawToDigi.h" - #include #include "DataFormats/Common/interface/Handle.h" @@ -16,18 +14,88 @@ #include "FWCore/ParameterSet/interface/ConfigurationDescriptions.h" #include "FWCore/ParameterSet/interface/ParameterSetDescription.h" +#include "FWCore/Framework/interface/ESWatcher.h" +#include "FWCore/Framework/interface/stream/EDProducer.h" +#include "FWCore/Framework/interface/EventSetup.h" +#include "FWCore/Framework/interface/Event.h" +#include "FWCore/Framework/interface/ConsumesCollector.h" +#include "FWCore/ParameterSet/interface/ParameterSet.h" +#include "FWCore/Utilities/interface/ESGetToken.h" #include "FWCore/MessageLogger/interface/MessageLogger.h" -#include "DataFormats/FEDRawData/interface/FEDRawDataCollection.h" -#include "DataFormats/FEDRawData/interface/FEDRawData.h" +#include "CondFormats/DataRecord/interface/SiPixelFedCablingMapRcd.h" +#include "CondFormats/DataRecord/interface/SiPixelQualityRcd.h" +#include "CondFormats/SiPixelObjects/interface/SiPixelQuality.h" +#include "CondFormats/SiPixelObjects/interface/SiPixelFedCablingMap.h" +#include "CondFormats/SiPixelObjects/interface/SiPixelFedCablingTree.h" +#include "DataFormats/Common/interface/DetSetVector.h" +#include "DataFormats/Common/interface/DetSetVectorNew.h" +#include "DataFormats/DetId/interface/DetIdCollection.h" +#include "DataFormats/FEDRawData/interface/FEDRawData.h" +#include "DataFormats/FEDRawData/interface/FEDRawDataCollection.h" #include "DataFormats/FEDRawData/interface/FEDNumbering.h" -#include "EventFilter/SiPixelRawToDigi/interface/PixelDataFormatter.h" +#include "DataFormats/SiPixelDigi/interface/PixelDigi.h" +#include "DataFormats/SiPixelDetId/interface/PixelFEDChannel.h" +#include "DataFormats/SiPixelRawData/interface/SiPixelRawDataError.h" +#include "EventFilter/SiPixelRawToDigi/interface/PixelDataFormatter.h" #include "EventFilter/SiPixelRawToDigi/interface/PixelUnpackingRegions.h" using namespace std; +class SiPixelFedCablingTree; +class SiPixelFedCabling; +class SiPixelQuality; +class TH1D; +class PixelUnpackingRegions; + +/** \class SiPixelRawToDigi + * Plug-in module that performs Raw data to digi conversion + * for pixel subdetector + */ + +class SiPixelRawToDigi : public edm::stream::EDProducer<> { +public: + /// ctor + explicit SiPixelRawToDigi(const edm::ParameterSet&); + + /// dtor + ~SiPixelRawToDigi() override; + + static void fillDescriptions(edm::ConfigurationDescriptions& descriptions); + + /// get data, convert to digis attach againe to Event + void produce(edm::Event&, const edm::EventSetup&) override; + +private: + edm::ParameterSet config_; + std::unique_ptr cabling_; + const SiPixelQuality* badPixelInfo_; + PixelUnpackingRegions* regions_; + const std::vector tkerrorlist_; + const std::vector usererrorlist_; + std::vector fedIds_; + edm::ESWatcher recordWatcher_; + edm::ESWatcher qualityWatcher_; + // always consumed + const edm::EDGetTokenT fedRawDataCollectionToken_; + const edm::ESGetToken cablingMapToken_; + // consume only if pixel quality is used -> useQuality_ + edm::ESGetToken siPixelQualityToken_; + // always produced + const edm::EDPutTokenT> siPixelDigiCollectionToken_; + // produce only if error collections are included -> includeErrors_ + edm::EDPutTokenT> errorPutToken_; + edm::EDPutTokenT tkErrorPutToken_; + edm::EDPutTokenT userErrorPutToken_; + edm::EDPutTokenT> disabledChannelPutToken_; + const bool includeErrors_; + const bool useQuality_; + const bool usePilotBlade_; + const bool usePhase1_; +}; + // ----------------------------------------------------------------------------- SiPixelRawToDigi::SiPixelRawToDigi(const edm::ParameterSet& conf) : config_(conf), diff --git a/EventFilter/SiPixelRawToDigi/plugins/SiPixelRawToDigi.h b/EventFilter/SiPixelRawToDigi/plugins/SiPixelRawToDigi.h deleted file mode 100644 index 9ca5792f800a9..0000000000000 --- a/EventFilter/SiPixelRawToDigi/plugins/SiPixelRawToDigi.h +++ /dev/null @@ -1,77 +0,0 @@ -#ifndef SiPixelRawToDigi_H -#define SiPixelRawToDigi_H - -/** \class SiPixelRawToDigi_H - * Plug-in module that performs Raw data to digi conversion - * for pixel subdetector - */ - -#include "FWCore/Framework/interface/ESWatcher.h" -#include "FWCore/Framework/interface/stream/EDProducer.h" -#include "FWCore/Framework/interface/EventSetup.h" -#include "FWCore/Framework/interface/Event.h" -#include "FWCore/Framework/interface/ConsumesCollector.h" -#include "FWCore/ParameterSet/interface/ParameterSet.h" -#include "FWCore/Utilities/interface/ESGetToken.h" - -#include "CondFormats/DataRecord/interface/SiPixelFedCablingMapRcd.h" -#include "CondFormats/DataRecord/interface/SiPixelQualityRcd.h" -#include "CondFormats/SiPixelObjects/interface/SiPixelQuality.h" -#include "CondFormats/SiPixelObjects/interface/SiPixelFedCablingMap.h" -#include "CondFormats/SiPixelObjects/interface/SiPixelFedCablingTree.h" - -#include "DataFormats/Common/interface/DetSetVector.h" -#include "DataFormats/Common/interface/DetSetVectorNew.h" -#include "DataFormats/DetId/interface/DetIdCollection.h" -#include "DataFormats/FEDRawData/interface/FEDRawDataCollection.h" -#include "DataFormats/SiPixelDigi/interface/PixelDigi.h" -#include "DataFormats/SiPixelDetId/interface/PixelFEDChannel.h" -#include "DataFormats/SiPixelRawData/interface/SiPixelRawDataError.h" - -class SiPixelFedCablingTree; -class SiPixelFedCabling; -class SiPixelQuality; -class TH1D; -class PixelUnpackingRegions; - -class SiPixelRawToDigi : public edm::stream::EDProducer<> { -public: - /// ctor - explicit SiPixelRawToDigi(const edm::ParameterSet&); - - /// dtor - ~SiPixelRawToDigi() override; - - static void fillDescriptions(edm::ConfigurationDescriptions& descriptions); - - /// get data, convert to digis attach againe to Event - void produce(edm::Event&, const edm::EventSetup&) override; - -private: - edm::ParameterSet config_; - std::unique_ptr cabling_; - const SiPixelQuality* badPixelInfo_; - PixelUnpackingRegions* regions_; - const std::vector tkerrorlist_; - const std::vector usererrorlist_; - std::vector fedIds_; - edm::ESWatcher recordWatcher_; - edm::ESWatcher qualityWatcher_; - // always consumed - const edm::EDGetTokenT fedRawDataCollectionToken_; - const edm::ESGetToken cablingMapToken_; - // consume only if pixel quality is used -> useQuality_ - edm::ESGetToken siPixelQualityToken_; - // always produced - const edm::EDPutTokenT> siPixelDigiCollectionToken_; - // produce only if error collections are included -> includeErrors_ - edm::EDPutTokenT> errorPutToken_; - edm::EDPutTokenT tkErrorPutToken_; - edm::EDPutTokenT userErrorPutToken_; - edm::EDPutTokenT> disabledChannelPutToken_; - const bool includeErrors_; - const bool useQuality_; - const bool usePilotBlade_; - const bool usePhase1_; -}; -#endif From 64d828b400c67c5145190f855b75579c99654aac Mon Sep 17 00:00:00 2001 From: Angela Czirkos Date: Fri, 30 Apr 2021 09:16:13 +0200 Subject: [PATCH 19/19] remove unnecessary header includes, forward declarations --- .../interface/PixelDataFormatter.h | 1 - .../SiPixelRawToDigi/plugins/SiPixelRawToDigi.cc | 16 +++------------- 2 files changed, 3 insertions(+), 14 deletions(-) diff --git a/EventFilter/SiPixelRawToDigi/interface/PixelDataFormatter.h b/EventFilter/SiPixelRawToDigi/interface/PixelDataFormatter.h index 6a27de20b202a..cd5b02c5d848c 100644 --- a/EventFilter/SiPixelRawToDigi/interface/PixelDataFormatter.h +++ b/EventFilter/SiPixelRawToDigi/interface/PixelDataFormatter.h @@ -37,7 +37,6 @@ #include "DataFormats/SiPixelDigi/interface/PixelDigi.h" #include "DataFormats/Common/interface/DetSetVector.h" #include "DataFormats/SiPixelRawData/interface/SiPixelRawDataError.h" -#include "DataFormats/Common/interface/DetSetVector.h" #include "DataFormats/DetId/interface/DetIdCollection.h" #include "EventFilter/SiPixelRawToDigi/interface/ErrorChecker.h" #include "EventFilter/SiPixelRawToDigi/interface/ErrorCheckerPhase0.h" diff --git a/EventFilter/SiPixelRawToDigi/plugins/SiPixelRawToDigi.cc b/EventFilter/SiPixelRawToDigi/plugins/SiPixelRawToDigi.cc index 0c68cc0d91cd2..ffe3b246782e6 100644 --- a/EventFilter/SiPixelRawToDigi/plugins/SiPixelRawToDigi.cc +++ b/EventFilter/SiPixelRawToDigi/plugins/SiPixelRawToDigi.cc @@ -1,7 +1,7 @@ // Skip FED40 pilot-blade // Include parameter driven interface to SiPixelQuality for study purposes // exclude ROC(raw) based on bad ROC list in SiPixelQuality -// enabled by: process.siPixelDigis.useQuality_Info = True (BY DEFAULT NOT USED) +// enabled by: process.siPixelDigis.useQualityInfo = True (BY DEFAULT NOT USED) // 20-10-2010 Andrew York (Tennessee) // Jan 2016 Tamas Almos Vami (Tav) (Wigner RCP) -- Cabling Map label option // Jul 2017 Viktor Veszpremi -- added PixelFEDChannel @@ -34,7 +34,6 @@ #include "DataFormats/DetId/interface/DetIdCollection.h" #include "DataFormats/FEDRawData/interface/FEDRawData.h" #include "DataFormats/FEDRawData/interface/FEDRawDataCollection.h" -#include "DataFormats/FEDRawData/interface/FEDNumbering.h" #include "DataFormats/SiPixelDigi/interface/PixelDigi.h" #include "DataFormats/SiPixelDetId/interface/PixelFEDChannel.h" #include "DataFormats/SiPixelRawData/interface/SiPixelRawDataError.h" @@ -42,14 +41,6 @@ #include "EventFilter/SiPixelRawToDigi/interface/PixelDataFormatter.h" #include "EventFilter/SiPixelRawToDigi/interface/PixelUnpackingRegions.h" -using namespace std; - -class SiPixelFedCablingTree; -class SiPixelFedCabling; -class SiPixelQuality; -class TH1D; -class PixelUnpackingRegions; - /** \class SiPixelRawToDigi * Plug-in module that performs Raw data to digi conversion * for pixel subdetector @@ -194,8 +185,7 @@ void SiPixelRawToDigi::produce(edm::Event& ev, const edm::EventSetup& es) { edm::ESHandle qualityInfo = es.getHandle(siPixelQualityToken_); badPixelInfo_ = qualityInfo.product(); if (!badPixelInfo_) { - edm::LogError("SiPixelQualityNotPresent") - << " Configured to use SiPixelQuality, but SiPixelQuality not present" << endl; + edm::LogError("SiPixelQualityNotPresent") << "Configured to use SiPixelQuality, but SiPixelQuality not present"; } } @@ -237,7 +227,7 @@ void SiPixelRawToDigi::produce(edm::Event& ev, const edm::EventSetup& es) { if (regions_ && !regions_->mayUnpackFED(fedId)) continue; - LogDebug("SiPixelRawToDigi") << " PRODUCE DIGI FOR FED: " << fedId << endl; + LogDebug("SiPixelRawToDigi") << "PRODUCE DIGI FOR FED:" << fedId; PixelDataFormatter::Errors errors;