From a61992134d837a3176b7b04ffa9b469997050480 Mon Sep 17 00:00:00 2001 From: Marco Musich Date: Fri, 1 Aug 2025 13:47:16 +0200 Subject: [PATCH 1/7] add support for DQM of scouting pf rechits --- .../plugins/ScoutingCollectionMonitor.cc | 51 ++++++++++++++++++- .../python/ScoutingCollectionMonitor_cfi.py | 6 ++- 2 files changed, 54 insertions(+), 3 deletions(-) diff --git a/DQM/HLTEvF/plugins/ScoutingCollectionMonitor.cc b/DQM/HLTEvF/plugins/ScoutingCollectionMonitor.cc index 3631dbf528652..bf1db710afeb2 100644 --- a/DQM/HLTEvF/plugins/ScoutingCollectionMonitor.cc +++ b/DQM/HLTEvF/plugins/ScoutingCollectionMonitor.cc @@ -35,6 +35,9 @@ It is based on the preexisting work of the scouting group and can be found at gi #include "DataFormats/Scouting/interface/Run3ScoutingPhoton.h" #include "DataFormats/Scouting/interface/Run3ScoutingTrack.h" #include "DataFormats/Scouting/interface/Run3ScoutingVertex.h" +#include "DataFormats/Scouting/interface/Run3ScoutingEBRecHit.h" +#include "DataFormats/Scouting/interface/Run3ScoutingEERecHit.h" +#include "DataFormats/Scouting/interface/Run3ScoutingHBHERecHit.h" #include "FWCore/Common/interface/TriggerNames.h" #include "FWCore/Framework/interface/Event.h" #include "FWCore/Framework/interface/Frameworkfwd.h" @@ -62,6 +65,14 @@ class ScoutingCollectionMonitor : public DQMEDAnalyzer { void analyze(const edm::Event&, const edm::EventSetup&) override; void bookHistograms(DQMStore::IBooker&, edm::Run const&, edm::EventSetup const&) override; + template + void setToken(edm::EDGetTokenT& token, const edm::ParameterSet& iConfig, std::string name) { + const auto inputTag = iConfig.getParameter(name); + if (!inputTag.encode().empty()) { + token = consumes(inputTag); + } + } + template bool getValidHandle(const edm::Event& iEvent, const edm::EDGetTokenT& token, @@ -105,6 +116,11 @@ class ScoutingCollectionMonitor : public DQMEDAnalyzer { const edm::EDGetTokenT onlineMetaDataDigisToken_; const std::string topfoldername_; + // calo rechits (only 2025 V1.3 onwards, see ) + edm::EDGetTokenT> ebRecHitsToken_; + edm::EDGetTokenT> eeRecHitsToken_; + edm::EDGetTokenT> hbheRecHitsToken_; + // pv vs PU and rho vs PU plots int primaryVertex_counter = 0; float avgPileUp; @@ -384,6 +400,11 @@ class ScoutingCollectionMonitor : public DQMEDAnalyzer { dqm::reco::MonitorElement* tk_chi2_prob_hist; dqm::reco::MonitorElement* tk_PV_dxy_hist; dqm::reco::MonitorElement* tk_PV_dz_hist; + + // calo rechits histrograms + dqm::reco::MonitorElement* ebRecHitsNumber; + dqm::reco::MonitorElement* eeRecHitsNumber; + dqm::reco::MonitorElement* hbheRecHitsNumber; }; // @@ -408,7 +429,11 @@ ScoutingCollectionMonitor::ScoutingCollectionMonitor(const edm::ParameterSet& iC pfjetsToken_(consumes>(iConfig.getParameter("pfjets"))), tracksToken_(consumes>(iConfig.getParameter("tracks"))), onlineMetaDataDigisToken_(consumes(iConfig.getParameter("onlineMetaDataDigis"))), - topfoldername_(iConfig.getParameter("topfoldername")) {} + topfoldername_(iConfig.getParameter("topfoldername")) { + setToken(ebRecHitsToken_, iConfig, "pfRecHitsEB"); + setToken(eeRecHitsToken_, iConfig, "pfRecHitsEE"); + setToken(hbheRecHitsToken_, iConfig, "pfRecHitsHBHE"); +} // // member functions @@ -797,6 +822,21 @@ void ScoutingCollectionMonitor::analyze(const edm::Event& iEvent, const edm::Eve tk_PV_dxy_hist->Fill(best_offset.first); tk_PV_dz_hist->Fill(best_offset.second); } + + if (!ebRecHitsToken_.isUninitialized()) { + auto const& ebRecHits = iEvent.get(ebRecHitsToken_); + ebRecHitsNumber->Fill(ebRecHits.size()); + } + + if (!eeRecHitsToken_.isUninitialized()) { + auto const& eeRecHits = iEvent.get(eeRecHitsToken_); + eeRecHitsNumber->Fill(eeRecHits.size()); + } + + if (!hbheRecHitsToken_.isUninitialized()) { + auto const& hbheRecHits = iEvent.get(hbheRecHitsToken_); + hbheRecHitsNumber->Fill(hbheRecHits.size()); + } } // ------------ method called once each job just before starting event loop ------------ @@ -1203,6 +1243,12 @@ void ScoutingCollectionMonitor::bookHistograms(DQMStore::IBooker& ibook, tk_chi2_prob_hist = ibook.book1DD("tk_chi2_prob_hist", "p(#chi^{2}, NDOF); p(#chi^{2}, NDOF); Entries", 100, 0, 1); tk_PV_dz_hist = ibook.book1DD("tk_PV_dz", "Track dz w.r.t. PV; Track dz w.r.t. PV; Entries", 100, -0.35, 0.35); tk_PV_dxy_hist = ibook.book1DD("tk_PV_dxy", "Track dxy w.r.t. PV; Track dxy w.r.t. PV; Entries", 100, -0.15, 0.15); + + ibook.setCurrentFolder(topfoldername_ + "/CaloRecHits"); + ebRecHitsNumber = ibook.book1D("ebRechitsN", "number of eb RecHits; number of EB recHits; events", 100, 0.0, 1000.0); + eeRecHitsNumber = ibook.book1D("eeRechitsN", "number of ee RecHits; number of EE recHits; events", 100, 0.0, 1000.0); + hbheRecHitsNumber = + ibook.book1D("hbheRechitsN", "number of hbhe RecHits; number of HBHE recHits; events", 100, 0.0, 1000.0); } // ------------ method fills 'descriptions' with the allowed parameters for the module ------------ @@ -1223,6 +1269,9 @@ void ScoutingCollectionMonitor::fillDescriptions(edm::ConfigurationDescriptions& desc.add("pfMetPhi", edm::InputTag("hltScoutingPFPacker", "pfMetPhi")); desc.add("rho", edm::InputTag("hltScoutingPFPacker", "rho")); desc.add("onlineMetaDataDigis", edm::InputTag("onlineMetaDataDigis")); + desc.add("pfRecHitsEB", edm::InputTag("")); + desc.add("pfRecHitsEE", edm::InputTag("")); + desc.add("pfRecHitsHBHE", edm::InputTag("")); desc.add("topfoldername", "HLT/ScoutingOffline/Miscellaneous"); descriptions.addWithDefaultLabel(desc); } diff --git a/DQM/HLTEvF/python/ScoutingCollectionMonitor_cfi.py b/DQM/HLTEvF/python/ScoutingCollectionMonitor_cfi.py index c7b579853c069..dbfd3b93ed164 100644 --- a/DQM/HLTEvF/python/ScoutingCollectionMonitor_cfi.py +++ b/DQM/HLTEvF/python/ScoutingCollectionMonitor_cfi.py @@ -17,6 +17,8 @@ pfMetPt = cms.InputTag("hltScoutingPFPacker","pfMetPt"), pfMetPhi = cms.InputTag("hltScoutingPFPacker","pfMetPhi"), rho = cms.InputTag("hltScoutingPFPacker","rho"), - topfoldername = cms.string("HLT/ScoutingOffline/Miscellaneous") - ) + topfoldername = cms.string("HLT/ScoutingOffline/Miscellaneous"), + pfRecHitsEB = cms.InputTag(""), + pfRecHitsEE = cms.InputTag(""), + pfRecHitsHBHE = cms.InputTag("")) From 20b8425ddd25c87f8ecb5688473ecc00fcd3bc1a Mon Sep 17 00:00:00 2001 From: Jessica Prendi Date: Mon, 4 Aug 2025 18:10:22 +0200 Subject: [PATCH 2/7] added time and energy plots of EE and EB rechits and energy plot of HBHE --- .../plugins/ScoutingCollectionMonitor.cc | 55 ++++++++++++++----- 1 file changed, 41 insertions(+), 14 deletions(-) diff --git a/DQM/HLTEvF/plugins/ScoutingCollectionMonitor.cc b/DQM/HLTEvF/plugins/ScoutingCollectionMonitor.cc index bf1db710afeb2..61c276b3c72f4 100644 --- a/DQM/HLTEvF/plugins/ScoutingCollectionMonitor.cc +++ b/DQM/HLTEvF/plugins/ScoutingCollectionMonitor.cc @@ -117,9 +117,10 @@ class ScoutingCollectionMonitor : public DQMEDAnalyzer { const std::string topfoldername_; // calo rechits (only 2025 V1.3 onwards, see ) - edm::EDGetTokenT> ebRecHitsToken_; - edm::EDGetTokenT> eeRecHitsToken_; - edm::EDGetTokenT> hbheRecHitsToken_; + //edm::EDGetTokenT> ebRecHitsToken_; + edm::EDGetTokenT ebRecHitsToken_; + edm::EDGetTokenT eeRecHitsToken_; + edm::EDGetTokenT hbheRecHitsToken_; // pv vs PU and rho vs PU plots int primaryVertex_counter = 0; @@ -403,8 +404,14 @@ class ScoutingCollectionMonitor : public DQMEDAnalyzer { // calo rechits histrograms dqm::reco::MonitorElement* ebRecHitsNumber; + dqm::reco::MonitorElement* ebRecHits_energy_hist; + dqm::reco::MonitorElement* ebRecHits_time_hist; dqm::reco::MonitorElement* eeRecHitsNumber; + dqm::reco::MonitorElement* eeRecHits_energy_hist; + dqm::reco::MonitorElement* eeRecHits_time_hist; dqm::reco::MonitorElement* hbheRecHitsNumber; + dqm::reco::MonitorElement* hbheRecHits_energy_hist; + }; // @@ -473,6 +480,7 @@ void ScoutingCollectionMonitor::analyze(const edm::Event& iEvent, const edm::Eve edm::Handle> tracksH; edm::Handle onlineMetaDataDigisHandle; + if (!getValidHandle(iEvent, rhoToken_, rhoH, "rho") || !getValidHandle(iEvent, pfMetPhiToken_, pfMetPhiH, "MET phi") || !getValidHandle(iEvent, pfMetPtToken_, pfMetPtH, "MET pT") || @@ -823,20 +831,34 @@ void ScoutingCollectionMonitor::analyze(const edm::Event& iEvent, const edm::Eve tk_PV_dz_hist->Fill(best_offset.second); } - if (!ebRecHitsToken_.isUninitialized()) { - auto const& ebRecHits = iEvent.get(ebRecHitsToken_); - ebRecHitsNumber->Fill(ebRecHits.size()); - } - if (!eeRecHitsToken_.isUninitialized()) { - auto const& eeRecHits = iEvent.get(eeRecHitsToken_); - eeRecHitsNumber->Fill(eeRecHits.size()); + edm::Handle ebRecHitsH; + if (!ebRecHitsToken_.isUninitialized() && getValidHandle(iEvent, ebRecHitsToken_, ebRecHitsH, "pfRecHitsEB")) { + ebRecHitsNumber->Fill(ebRecHitsH->size()); + for (const auto& ebRecHit : *ebRecHitsH) { + ebRecHits_energy_hist->Fill(ebRecHit.energy()); + ebRecHits_time_hist->Fill(ebRecHit.time()); + } } - if (!hbheRecHitsToken_.isUninitialized()) { - auto const& hbheRecHits = iEvent.get(hbheRecHitsToken_); - hbheRecHitsNumber->Fill(hbheRecHits.size()); - } +edm::Handle eeRecHitsH; +if (!eeRecHitsToken_.isUninitialized() && getValidHandle(iEvent, eeRecHitsToken_, eeRecHitsH, "pfRecHitsEE")) { + eeRecHitsNumber->Fill(eeRecHitsH->size()); + for (const auto& eeRecHit : *eeRecHitsH) { + eeRecHits_energy_hist->Fill(eeRecHit.energy()); + eeRecHits_time_hist->Fill(eeRecHit.time()); + } +} + +edm::Handle hbheRecHitsH; +if (!hbheRecHitsToken_.isUninitialized() && getValidHandle(iEvent, hbheRecHitsToken_, hbheRecHitsH, "pfRecHitsHBHE")) { + hbheRecHitsNumber->Fill(hbheRecHitsH->size()); + for (const auto& hbheRecHit : *hbheRecHitsH) { + hbheRecHits_energy_hist->Fill(hbheRecHit.energy()); + } +} + + } // ------------ method called once each job just before starting event loop ------------ @@ -1246,9 +1268,14 @@ void ScoutingCollectionMonitor::bookHistograms(DQMStore::IBooker& ibook, ibook.setCurrentFolder(topfoldername_ + "/CaloRecHits"); ebRecHitsNumber = ibook.book1D("ebRechitsN", "number of eb RecHits; number of EB recHits; events", 100, 0.0, 1000.0); + ebRecHits_energy_hist = ibook.book1D("ebRechits_energy", "Energy spectrum of eb RecHits; Energy of EB recHits; events", 100, 0.0, 1000.0); + ebRecHits_time_hist = ibook.book1D("ebRechits_time", "Time of eb RecHits; Energy of EB recHits; events", 100, 0.0, 1000.0); eeRecHitsNumber = ibook.book1D("eeRechitsN", "number of ee RecHits; number of EE recHits; events", 100, 0.0, 1000.0); + eeRecHits_energy_hist = ibook.book1D("eeRechits_energy", "Energy spectrum of ee RecHits; Energy of EE recHits; events", 100, 0.0, 1000.0); + eeRecHits_time_hist = ibook.book1D("eeRechits_time", "Time of ee RecHits; Energy of EE recHits; events", 100, 0.0, 1000.0); hbheRecHitsNumber = ibook.book1D("hbheRechitsN", "number of hbhe RecHits; number of HBHE recHits; events", 100, 0.0, 1000.0); + hbheRecHits_energy_hist = ibook.book1D("hbheRechits_energy", "Energy spectrum of hbhe RecHits; Energy of HBHE recHits; events", 100, 0.0, 1000.0); } // ------------ method fills 'descriptions' with the allowed parameters for the module ------------ From b1651341b345b4dd3932223beab8be9073b8fa6c Mon Sep 17 00:00:00 2001 From: Jessica Prendi Date: Tue, 5 Aug 2025 18:09:32 +0200 Subject: [PATCH 3/7] adding input tag of EE/EB/HBHE --- DQM/HLTEvF/plugins/ScoutingCollectionMonitor.cc | 6 +++--- DQM/HLTEvF/python/ScoutingCollectionMonitor_cfi.py | 6 +++--- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/DQM/HLTEvF/plugins/ScoutingCollectionMonitor.cc b/DQM/HLTEvF/plugins/ScoutingCollectionMonitor.cc index 61c276b3c72f4..167f23dc31498 100644 --- a/DQM/HLTEvF/plugins/ScoutingCollectionMonitor.cc +++ b/DQM/HLTEvF/plugins/ScoutingCollectionMonitor.cc @@ -1296,9 +1296,9 @@ void ScoutingCollectionMonitor::fillDescriptions(edm::ConfigurationDescriptions& desc.add("pfMetPhi", edm::InputTag("hltScoutingPFPacker", "pfMetPhi")); desc.add("rho", edm::InputTag("hltScoutingPFPacker", "rho")); desc.add("onlineMetaDataDigis", edm::InputTag("onlineMetaDataDigis")); - desc.add("pfRecHitsEB", edm::InputTag("")); - desc.add("pfRecHitsEE", edm::InputTag("")); - desc.add("pfRecHitsHBHE", edm::InputTag("")); + desc.add("pfRecHitsEB", edm::InputTag("hltScoutingRecHitPacker","EB")); + desc.add("pfRecHitsEE", edm::InputTag("hltScoutingRecHitPacker","EE")); + desc.add("pfRecHitsHBHE", edm::InputTag("hltScoutingRecHitPacker","HBHE")); desc.add("topfoldername", "HLT/ScoutingOffline/Miscellaneous"); descriptions.addWithDefaultLabel(desc); } diff --git a/DQM/HLTEvF/python/ScoutingCollectionMonitor_cfi.py b/DQM/HLTEvF/python/ScoutingCollectionMonitor_cfi.py index dbfd3b93ed164..48745d816590a 100644 --- a/DQM/HLTEvF/python/ScoutingCollectionMonitor_cfi.py +++ b/DQM/HLTEvF/python/ScoutingCollectionMonitor_cfi.py @@ -18,7 +18,7 @@ pfMetPhi = cms.InputTag("hltScoutingPFPacker","pfMetPhi"), rho = cms.InputTag("hltScoutingPFPacker","rho"), topfoldername = cms.string("HLT/ScoutingOffline/Miscellaneous"), - pfRecHitsEB = cms.InputTag(""), - pfRecHitsEE = cms.InputTag(""), - pfRecHitsHBHE = cms.InputTag("")) + pfRecHitsEB = cms.InputTag("hltScoutingRecHitPacker", "EB"), + pfRecHitsEE = cms.InputTag("hltScoutingRecHitPacker", "EE"), + pfRecHitsHBHE = cms.InputTag("hltScoutingRecHitPacker", "HBHE")) From d01c2667fcb4c29cd5dd705ac3d410005d70cfed Mon Sep 17 00:00:00 2001 From: Jessica Prendi Date: Tue, 5 Aug 2025 18:48:18 +0200 Subject: [PATCH 4/7] changing of histogram ranges and descriptions --- DQM/HLTEvF/plugins/ScoutingCollectionMonitor.cc | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/DQM/HLTEvF/plugins/ScoutingCollectionMonitor.cc b/DQM/HLTEvF/plugins/ScoutingCollectionMonitor.cc index 167f23dc31498..abd27b3e92da3 100644 --- a/DQM/HLTEvF/plugins/ScoutingCollectionMonitor.cc +++ b/DQM/HLTEvF/plugins/ScoutingCollectionMonitor.cc @@ -1267,15 +1267,15 @@ void ScoutingCollectionMonitor::bookHistograms(DQMStore::IBooker& ibook, tk_PV_dxy_hist = ibook.book1DD("tk_PV_dxy", "Track dxy w.r.t. PV; Track dxy w.r.t. PV; Entries", 100, -0.15, 0.15); ibook.setCurrentFolder(topfoldername_ + "/CaloRecHits"); - ebRecHitsNumber = ibook.book1D("ebRechitsN", "number of eb RecHits; number of EB recHits; events", 100, 0.0, 1000.0); - ebRecHits_energy_hist = ibook.book1D("ebRechits_energy", "Energy spectrum of eb RecHits; Energy of EB recHits; events", 100, 0.0, 1000.0); - ebRecHits_time_hist = ibook.book1D("ebRechits_time", "Time of eb RecHits; Energy of EB recHits; events", 100, 0.0, 1000.0); - eeRecHitsNumber = ibook.book1D("eeRechitsN", "number of ee RecHits; number of EE recHits; events", 100, 0.0, 1000.0); - eeRecHits_energy_hist = ibook.book1D("eeRechits_energy", "Energy spectrum of ee RecHits; Energy of EE recHits; events", 100, 0.0, 1000.0); - eeRecHits_time_hist = ibook.book1D("eeRechits_time", "Time of ee RecHits; Energy of EE recHits; events", 100, 0.0, 1000.0); + ebRecHitsNumber = ibook.book1D("ebRechitsN", "Number of eb RecHits; number of EB recHits; Entries", 100, 0.0, 1000.0); + ebRecHits_energy_hist = ibook.book1D("ebRechits_energy", "Energy spectrum of eb RecHits; Energy of EB recHits (Gev); Entries", 100, 0.0, 500.0); + ebRecHits_time_hist = ibook.book1D("ebRechits_time", "Time of eb RecHits; Energy of EB recHits (ps); Entries", 100, 0.0, 1000.0); + eeRecHitsNumber = ibook.book1D("eeRechitsN", "Number of ee RecHits; number of EE recHits; Entries", 100, 0.0, 1000.0); + eeRecHits_energy_hist = ibook.book1D("eeRechits_energy", "Energy spectrum of ee RecHits; Energy of EE recHits (GeV); Entries", 100, 0.0, 1000.0); + eeRecHits_time_hist = ibook.book1D("eeRechits_time", "Time of ee RecHits; Time of EE recHits (ps); Entries", 100, 0.0, 1000.0); hbheRecHitsNumber = - ibook.book1D("hbheRechitsN", "number of hbhe RecHits; number of HBHE recHits; events", 100, 0.0, 1000.0); - hbheRecHits_energy_hist = ibook.book1D("hbheRechits_energy", "Energy spectrum of hbhe RecHits; Energy of HBHE recHits; events", 100, 0.0, 1000.0); + ibook.book1D("hbheRechitsN", "number of hbhe RecHits; Number of HBHE recHits; Entries", 100, 0.0, 2000.0); + hbheRecHits_energy_hist = ibook.book1D("hbheRechits_energy", "Energy spectrum of hbhe RecHits; Energy of HBHE recHits (GeV); Entries", 100, 0.0, 200.0); } // ------------ method fills 'descriptions' with the allowed parameters for the module ------------ From 11d4ed458728dee68b1602e3b8da190afa26bff3 Mon Sep 17 00:00:00 2001 From: Marco Musich Date: Wed, 6 Aug 2025 14:13:58 +0200 Subject: [PATCH 5/7] add Ecal cleaned rechit monitoring and occupancy maps of calo pf rechits --- .../plugins/ScoutingCollectionMonitor.cc | 206 ++++++++++++++---- .../python/ScoutingCollectionMonitor_cfi.py | 6 +- 2 files changed, 165 insertions(+), 47 deletions(-) diff --git a/DQM/HLTEvF/plugins/ScoutingCollectionMonitor.cc b/DQM/HLTEvF/plugins/ScoutingCollectionMonitor.cc index abd27b3e92da3..4091c8a52f069 100644 --- a/DQM/HLTEvF/plugins/ScoutingCollectionMonitor.cc +++ b/DQM/HLTEvF/plugins/ScoutingCollectionMonitor.cc @@ -24,20 +24,23 @@ It is based on the preexisting work of the scouting group and can be found at gi // user include files #include "DQMServices/Core/interface/DQMEDAnalyzer.h" +#include "DataFormats/EcalDetId/interface/EBDetId.h" +#include "DataFormats/EcalDetId/interface/EEDetId.h" +#include "DataFormats/HcalDetId/interface/HcalDetId.h" #include "DataFormats/L1TGlobal/interface/GlobalAlgBlk.h" #include "DataFormats/OnlineMetaData/interface/OnlineLuminosityRecord.h" #include "DataFormats/PatCandidates/interface/PackedTriggerPrescales.h" #include "DataFormats/PatCandidates/interface/TriggerObjectStandAlone.h" +#include "DataFormats/Scouting/interface/Run3ScoutingEBRecHit.h" +#include "DataFormats/Scouting/interface/Run3ScoutingEERecHit.h" #include "DataFormats/Scouting/interface/Run3ScoutingElectron.h" +#include "DataFormats/Scouting/interface/Run3ScoutingHBHERecHit.h" #include "DataFormats/Scouting/interface/Run3ScoutingMuon.h" #include "DataFormats/Scouting/interface/Run3ScoutingPFJet.h" #include "DataFormats/Scouting/interface/Run3ScoutingParticle.h" #include "DataFormats/Scouting/interface/Run3ScoutingPhoton.h" #include "DataFormats/Scouting/interface/Run3ScoutingTrack.h" #include "DataFormats/Scouting/interface/Run3ScoutingVertex.h" -#include "DataFormats/Scouting/interface/Run3ScoutingEBRecHit.h" -#include "DataFormats/Scouting/interface/Run3ScoutingEERecHit.h" -#include "DataFormats/Scouting/interface/Run3ScoutingHBHERecHit.h" #include "FWCore/Common/interface/TriggerNames.h" #include "FWCore/Framework/interface/Event.h" #include "FWCore/Framework/interface/Frameworkfwd.h" @@ -116,10 +119,11 @@ class ScoutingCollectionMonitor : public DQMEDAnalyzer { const edm::EDGetTokenT onlineMetaDataDigisToken_; const std::string topfoldername_; - // calo rechits (only 2025 V1.3 onwards, see ) - //edm::EDGetTokenT> ebRecHitsToken_; + // calo rechits (only 2025 V1.3 onwards, see https://its.cern.ch/jira/browse/CMSHLT-3607) edm::EDGetTokenT ebRecHitsToken_; edm::EDGetTokenT eeRecHitsToken_; + edm::EDGetTokenT ebCleanedRecHitsToken_; + edm::EDGetTokenT eeCleanedRecHitsToken_; edm::EDGetTokenT hbheRecHitsToken_; // pv vs PU and rho vs PU plots @@ -402,16 +406,19 @@ class ScoutingCollectionMonitor : public DQMEDAnalyzer { dqm::reco::MonitorElement* tk_PV_dxy_hist; dqm::reco::MonitorElement* tk_PV_dz_hist; - // calo rechits histrograms - dqm::reco::MonitorElement* ebRecHitsNumber; - dqm::reco::MonitorElement* ebRecHits_energy_hist; - dqm::reco::MonitorElement* ebRecHits_time_hist; - dqm::reco::MonitorElement* eeRecHitsNumber; - dqm::reco::MonitorElement* eeRecHits_energy_hist; - dqm::reco::MonitorElement* eeRecHits_time_hist; - dqm::reco::MonitorElement* hbheRecHitsNumber; + // calo rechits histrograms (ECAL has two version, cleaned and unclean) + dqm::reco::MonitorElement* ebRecHitsNumber_hist[2]; + dqm::reco::MonitorElement* ebRecHits_energy_hist[2]; + dqm::reco::MonitorElement* ebRecHits_time_hist[2]; + dqm::reco::MonitorElement* ebRecHitsEtaPhiMap[2]; + dqm::reco::MonitorElement* eeRecHitsNumber_hist[2]; + dqm::reco::MonitorElement* eeRecHits_energy_hist[2]; + dqm::reco::MonitorElement* eeRecHits_time_hist[2]; + dqm::reco::MonitorElement* eePlusRecHitsXYMap[2]; + dqm::reco::MonitorElement* eeMinusRecHitsXYMap[2]; + dqm::reco::MonitorElement* hbheRecHitsNumber_hist; dqm::reco::MonitorElement* hbheRecHits_energy_hist; - + dqm::reco::MonitorElement* hbheRecHitsEtaPhiMap; }; // @@ -439,6 +446,8 @@ ScoutingCollectionMonitor::ScoutingCollectionMonitor(const edm::ParameterSet& iC topfoldername_(iConfig.getParameter("topfoldername")) { setToken(ebRecHitsToken_, iConfig, "pfRecHitsEB"); setToken(eeRecHitsToken_, iConfig, "pfRecHitsEE"); + setToken(ebCleanedRecHitsToken_, iConfig, "pfCleanedRecHitsEB"); + setToken(eeCleanedRecHitsToken_, iConfig, "pfCleanedRecHitsEE"); setToken(hbheRecHitsToken_, iConfig, "pfRecHitsHBHE"); } @@ -480,7 +489,6 @@ void ScoutingCollectionMonitor::analyze(const edm::Event& iEvent, const edm::Eve edm::Handle> tracksH; edm::Handle onlineMetaDataDigisHandle; - if (!getValidHandle(iEvent, rhoToken_, rhoH, "rho") || !getValidHandle(iEvent, pfMetPhiToken_, pfMetPhiH, "MET phi") || !getValidHandle(iEvent, pfMetPtToken_, pfMetPtH, "MET pT") || @@ -831,34 +839,72 @@ void ScoutingCollectionMonitor::analyze(const edm::Event& iEvent, const edm::Eve tk_PV_dz_hist->Fill(best_offset.second); } - + // uncleaned calo rechits histograms edm::Handle ebRecHitsH; if (!ebRecHitsToken_.isUninitialized() && getValidHandle(iEvent, ebRecHitsToken_, ebRecHitsH, "pfRecHitsEB")) { - ebRecHitsNumber->Fill(ebRecHitsH->size()); - for (const auto& ebRecHit : *ebRecHitsH) { - ebRecHits_energy_hist->Fill(ebRecHit.energy()); - ebRecHits_time_hist->Fill(ebRecHit.time()); - } + ebRecHitsNumber_hist[0]->Fill(ebRecHitsH->size()); + for (const auto& ebRecHit : *ebRecHitsH) { + EBDetId ebid(ebRecHit.detId()); + ebRecHitsEtaPhiMap[0]->Fill(ebid.ieta(), ebid.iphi()); + ebRecHits_energy_hist[0]->Fill(ebRecHit.energy()); + ebRecHits_time_hist[0]->Fill(ebRecHit.time()); + } } -edm::Handle eeRecHitsH; -if (!eeRecHitsToken_.isUninitialized() && getValidHandle(iEvent, eeRecHitsToken_, eeRecHitsH, "pfRecHitsEE")) { - eeRecHitsNumber->Fill(eeRecHitsH->size()); + edm::Handle eeRecHitsH; + if (!eeRecHitsToken_.isUninitialized() && getValidHandle(iEvent, eeRecHitsToken_, eeRecHitsH, "pfRecHitsEE")) { + eeRecHitsNumber_hist[0]->Fill(eeRecHitsH->size()); for (const auto& eeRecHit : *eeRecHitsH) { - eeRecHits_energy_hist->Fill(eeRecHit.energy()); - eeRecHits_time_hist->Fill(eeRecHit.time()); + EEDetId eeid(eeRecHit.detId()); + if (eeid.zside() > 0) { + eePlusRecHitsXYMap[0]->Fill(eeid.ix(), eeid.iy()); + } else { + eeMinusRecHitsXYMap[0]->Fill(eeid.ix(), eeid.iy()); + } + eeRecHits_energy_hist[0]->Fill(eeRecHit.energy()); + eeRecHits_time_hist[0]->Fill(eeRecHit.time()); } -} + } -edm::Handle hbheRecHitsH; -if (!hbheRecHitsToken_.isUninitialized() && getValidHandle(iEvent, hbheRecHitsToken_, hbheRecHitsH, "pfRecHitsHBHE")) { - hbheRecHitsNumber->Fill(hbheRecHitsH->size()); - for (const auto& hbheRecHit : *hbheRecHitsH) { - hbheRecHits_energy_hist->Fill(hbheRecHit.energy()); + // cleaned calo rechits histograms + edm::Handle ebRecHitsCleanedH; + if (!ebCleanedRecHitsToken_.isUninitialized() && + getValidHandle(iEvent, ebCleanedRecHitsToken_, ebRecHitsCleanedH, "pfCleanedRecHitsEB")) { + ebRecHitsNumber_hist[1]->Fill(ebRecHitsCleanedH->size()); + for (const auto& ebRecHit : *ebRecHitsCleanedH) { + EBDetId ebid(ebRecHit.detId()); + ebRecHitsEtaPhiMap[1]->Fill(ebid.ieta(), ebid.iphi()); + ebRecHits_energy_hist[1]->Fill(ebRecHit.energy()); + ebRecHits_time_hist[1]->Fill(ebRecHit.time()); } -} + } + edm::Handle eeRecHitsCleanedH; + if (!eeCleanedRecHitsToken_.isUninitialized() && + getValidHandle(iEvent, eeCleanedRecHitsToken_, eeRecHitsCleanedH, "pfCleanedRecHitsEE")) { + eeRecHitsNumber_hist[1]->Fill(eeRecHitsCleanedH->size()); + for (const auto& eeRecHit : *eeRecHitsCleanedH) { + EEDetId eeid(eeRecHit.detId()); + if (eeid.zside() > 0) { + eePlusRecHitsXYMap[1]->Fill(eeid.ix(), eeid.iy()); + } else { + eeMinusRecHitsXYMap[1]->Fill(eeid.ix(), eeid.iy()); + } + eeRecHits_energy_hist[1]->Fill(eeRecHit.energy()); + eeRecHits_time_hist[1]->Fill(eeRecHit.time()); + } + } + edm::Handle hbheRecHitsH; + if (!hbheRecHitsToken_.isUninitialized() && + getValidHandle(iEvent, hbheRecHitsToken_, hbheRecHitsH, "pfRecHitsHBHE")) { + hbheRecHitsNumber_hist->Fill(hbheRecHitsH->size()); + for (const auto& hbheRecHit : *hbheRecHitsH) { + hbheRecHits_energy_hist->Fill(hbheRecHit.energy()); + HcalDetId hcalid(hbheRecHit.detId()); + hbheRecHitsEtaPhiMap->Fill(hcalid.ieta(), hcalid.iphi()); + } + } } // ------------ method called once each job just before starting event loop ------------ @@ -1266,16 +1312,84 @@ void ScoutingCollectionMonitor::bookHistograms(DQMStore::IBooker& ibook, tk_PV_dz_hist = ibook.book1DD("tk_PV_dz", "Track dz w.r.t. PV; Track dz w.r.t. PV; Entries", 100, -0.35, 0.35); tk_PV_dxy_hist = ibook.book1DD("tk_PV_dxy", "Track dxy w.r.t. PV; Track dxy w.r.t. PV; Entries", 100, -0.15, 0.15); - ibook.setCurrentFolder(topfoldername_ + "/CaloRecHits"); - ebRecHitsNumber = ibook.book1D("ebRechitsN", "Number of eb RecHits; number of EB recHits; Entries", 100, 0.0, 1000.0); - ebRecHits_energy_hist = ibook.book1D("ebRechits_energy", "Energy spectrum of eb RecHits; Energy of EB recHits (Gev); Entries", 100, 0.0, 500.0); - ebRecHits_time_hist = ibook.book1D("ebRechits_time", "Time of eb RecHits; Energy of EB recHits (ps); Entries", 100, 0.0, 1000.0); - eeRecHitsNumber = ibook.book1D("eeRechitsN", "Number of ee RecHits; number of EE recHits; Entries", 100, 0.0, 1000.0); - eeRecHits_energy_hist = ibook.book1D("eeRechits_energy", "Energy spectrum of ee RecHits; Energy of EE recHits (GeV); Entries", 100, 0.0, 1000.0); - eeRecHits_time_hist = ibook.book1D("eeRechits_time", "Time of ee RecHits; Time of EE recHits (ps); Entries", 100, 0.0, 1000.0); - hbheRecHitsNumber = + // book the calo rechits histograms + const std::array caloLabels = {{"All", "Cleaned"}}; + const std::array caloSuffixes = {{"", "_clean"}}; + for (int i = 0; i < 2; ++i) { + ibook.setCurrentFolder(topfoldername_ + "/CaloRecHits" + caloLabels[i]); + + const std::string& lbl = caloLabels[i]; + const std::string& sfx = caloSuffixes[i]; + + ebRecHitsNumber_hist[i] = ibook.book1D( + "ebRechitsN" + sfx, "Number of EB RecHits (" + lbl + "); number of EB recHits; Entries", 100, 0.0, 1000.0); + + ebRecHits_energy_hist[i] = + ibook.book1D("ebRechits_energy" + sfx, + "Energy spectrum of EB RecHits (" + lbl + "); Energy of EB recHits (Gev); Entries", + 100, + 0.0, + 500.0); + + ebRecHits_time_hist[i] = ibook.book1D("ebRechits_time" + sfx, + "Time of EB RecHits (" + lbl + "); Energy of EB recHits (ps); Entries", + 100, + 0.0, + 1000.0); + eeRecHitsNumber_hist[i] = ibook.book1D( + "eeRechitsN" + sfx, "Number of EE RecHits (" + lbl + "); number of EE recHits; Entries", 100, 0.0, 1000.0); + eeRecHits_energy_hist[i] = + ibook.book1D("eeRechits_energy" + sfx, + "Energy spectrum of EE RecHits (" + lbl + "); Energy of EE recHits (GeV); Entries", + 100, + 0.0, + 1000.0); + eeRecHits_time_hist[i] = ibook.book1D( + "eeRechits_time" + sfx, "Time of EE RecHits (" + lbl + "); Time of EE recHits (ps); Entries", 100, 0.0, 1000.0); + + ebRecHitsEtaPhiMap[i] = ibook.book2D("ebRecHitsEtaPhitMap" + sfx, + "Occupancy map of EB rechit (" + lbl + ");ieta;iphi;Entries", + 171, + -85.5, + 85.5, + 361, + 0., + 361); + + ebRecHitsEtaPhiMap[i]->setOption("colz"); + + eePlusRecHitsXYMap[i] = ibook.book2D("eePlusRecHitsEtaPhitMap" + sfx, + "Occupancy map of EE+ rechit (" + lbl + ");ix;iy;Entries", + 100, + 1, + 101, + 100, + 1, + 101); + + eePlusRecHitsXYMap[i]->setOption("colz"); + + eeMinusRecHitsXYMap[i] = ibook.book2D("eeMinusRecHitsEtaPhitMap" + sfx, + "Occupancy map of EE- rechit (" + lbl + ");ix;iy;Entries", + 100, + 1, + 101, + 100, + 1, + 101); + + eeMinusRecHitsXYMap[i]->setOption("colz"); + } + + ibook.setCurrentFolder(topfoldername_ + "/CaloRecHitsAll"); + hbheRecHitsNumber_hist = ibook.book1D("hbheRechitsN", "number of hbhe RecHits; Number of HBHE recHits; Entries", 100, 0.0, 2000.0); - hbheRecHits_energy_hist = ibook.book1D("hbheRechits_energy", "Energy spectrum of hbhe RecHits; Energy of HBHE recHits (GeV); Entries", 100, 0.0, 200.0); + hbheRecHits_energy_hist = ibook.book1D( + "hbheRechits_energy", "Energy spectrum of hbhe RecHits; Energy of HBHE recHits (GeV); Entries", 100, 0.0, 200.0); + + hbheRecHitsEtaPhiMap = ibook.book2D( + "hbheRecHitsEtaPhitMap", "Occupancy map of HBHE rechit;ieta;iphi;Entries", 61, -30.5, 30.5, 74, -0.5, 73.5); + hbheRecHitsEtaPhiMap->setOption("colz"); } // ------------ method fills 'descriptions' with the allowed parameters for the module ------------ @@ -1296,9 +1410,11 @@ void ScoutingCollectionMonitor::fillDescriptions(edm::ConfigurationDescriptions& desc.add("pfMetPhi", edm::InputTag("hltScoutingPFPacker", "pfMetPhi")); desc.add("rho", edm::InputTag("hltScoutingPFPacker", "rho")); desc.add("onlineMetaDataDigis", edm::InputTag("onlineMetaDataDigis")); - desc.add("pfRecHitsEB", edm::InputTag("hltScoutingRecHitPacker","EB")); - desc.add("pfRecHitsEE", edm::InputTag("hltScoutingRecHitPacker","EE")); - desc.add("pfRecHitsHBHE", edm::InputTag("hltScoutingRecHitPacker","HBHE")); + desc.add("pfRecHitsEB", edm::InputTag("hltScoutingRecHitPacker", "EB")); + desc.add("pfRecHitsEE", edm::InputTag("hltScoutingRecHitPacker", "EE")); + desc.add("pfRecHitsHBHE", edm::InputTag("hltScoutingRecHitPacker", "HBHE")); + desc.add("pfCleanedRecHitsEB", edm::InputTag("hltScoutingRecHitPacker", "EBCleaned")); + desc.add("pfCleanedRecHitsEE", edm::InputTag("hltScoutingRecHitPacker", "EECleaned")); desc.add("topfoldername", "HLT/ScoutingOffline/Miscellaneous"); descriptions.addWithDefaultLabel(desc); } diff --git a/DQM/HLTEvF/python/ScoutingCollectionMonitor_cfi.py b/DQM/HLTEvF/python/ScoutingCollectionMonitor_cfi.py index 48745d816590a..24dfc2750d762 100644 --- a/DQM/HLTEvF/python/ScoutingCollectionMonitor_cfi.py +++ b/DQM/HLTEvF/python/ScoutingCollectionMonitor_cfi.py @@ -2,7 +2,8 @@ from DQMServices.Core.DQMEDAnalyzer import DQMEDAnalyzer scoutingCollectionMonitor = DQMEDAnalyzer('ScoutingCollectionMonitor', - onlyScouting = cms.bool(False), + topfoldername = cms.string("HLT/ScoutingOffline/Miscellaneous"), + onlyScouting = cms.bool(False), onlineMetaDataDigis = cms.InputTag("onlineMetaDataDigis"), muons = cms.InputTag("hltScoutingMuonPackerNoVtx"), muonsVtx = cms.InputTag("hltScoutingMuonPackerVtx"), @@ -17,8 +18,9 @@ pfMetPt = cms.InputTag("hltScoutingPFPacker","pfMetPt"), pfMetPhi = cms.InputTag("hltScoutingPFPacker","pfMetPhi"), rho = cms.InputTag("hltScoutingPFPacker","rho"), - topfoldername = cms.string("HLT/ScoutingOffline/Miscellaneous"), pfRecHitsEB = cms.InputTag("hltScoutingRecHitPacker", "EB"), pfRecHitsEE = cms.InputTag("hltScoutingRecHitPacker", "EE"), + pfCleanedRecHitsEB = cms.InputTag("hltScoutingRecHitPacker", "EBCleaned"), + pfCleanedRecHitsEE = cms.InputTag("hltScoutingRecHitPacker", "EECleaned"), pfRecHitsHBHE = cms.InputTag("hltScoutingRecHitPacker", "HBHE")) From a7be00ee59d477c512b889b5a8c0d984507d2675 Mon Sep 17 00:00:00 2001 From: Marco Musich Date: Fri, 8 Aug 2025 14:49:15 +0200 Subject: [PATCH 6/7] add separate RecHit maps for HB and HE --- .../plugins/ScoutingCollectionMonitor.cc | 24 +++++++++++++++---- 1 file changed, 20 insertions(+), 4 deletions(-) diff --git a/DQM/HLTEvF/plugins/ScoutingCollectionMonitor.cc b/DQM/HLTEvF/plugins/ScoutingCollectionMonitor.cc index 4091c8a52f069..d99955a6821a9 100644 --- a/DQM/HLTEvF/plugins/ScoutingCollectionMonitor.cc +++ b/DQM/HLTEvF/plugins/ScoutingCollectionMonitor.cc @@ -419,6 +419,8 @@ class ScoutingCollectionMonitor : public DQMEDAnalyzer { dqm::reco::MonitorElement* hbheRecHitsNumber_hist; dqm::reco::MonitorElement* hbheRecHits_energy_hist; dqm::reco::MonitorElement* hbheRecHitsEtaPhiMap; + dqm::reco::MonitorElement* hbRecHitsEtaPhiMap; + dqm::reco::MonitorElement* heRecHitsEtaPhiMap; }; // @@ -903,6 +905,12 @@ void ScoutingCollectionMonitor::analyze(const edm::Event& iEvent, const edm::Eve hbheRecHits_energy_hist->Fill(hbheRecHit.energy()); HcalDetId hcalid(hbheRecHit.detId()); hbheRecHitsEtaPhiMap->Fill(hcalid.ieta(), hcalid.iphi()); + const auto& subdet = hcalid.subdetId(); + if (subdet == 1) { // HB + hbRecHitsEtaPhiMap->Fill(hcalid.ieta(), hcalid.iphi()); + } else { // HE + heRecHitsEtaPhiMap->Fill(hcalid.ieta(), hcalid.iphi()); + } } } } @@ -1348,7 +1356,7 @@ void ScoutingCollectionMonitor::bookHistograms(DQMStore::IBooker& ibook, "eeRechits_time" + sfx, "Time of EE RecHits (" + lbl + "); Time of EE recHits (ps); Entries", 100, 0.0, 1000.0); ebRecHitsEtaPhiMap[i] = ibook.book2D("ebRecHitsEtaPhitMap" + sfx, - "Occupancy map of EB rechit (" + lbl + ");ieta;iphi;Entries", + "Occupancy map of EB rechits (" + lbl + ");ieta;iphi;Entries", 171, -85.5, 85.5, @@ -1359,7 +1367,7 @@ void ScoutingCollectionMonitor::bookHistograms(DQMStore::IBooker& ibook, ebRecHitsEtaPhiMap[i]->setOption("colz"); eePlusRecHitsXYMap[i] = ibook.book2D("eePlusRecHitsEtaPhitMap" + sfx, - "Occupancy map of EE+ rechit (" + lbl + ");ix;iy;Entries", + "Occupancy map of EE+ rechits (" + lbl + ");ix;iy;Entries", 100, 1, 101, @@ -1370,7 +1378,7 @@ void ScoutingCollectionMonitor::bookHistograms(DQMStore::IBooker& ibook, eePlusRecHitsXYMap[i]->setOption("colz"); eeMinusRecHitsXYMap[i] = ibook.book2D("eeMinusRecHitsEtaPhitMap" + sfx, - "Occupancy map of EE- rechit (" + lbl + ");ix;iy;Entries", + "Occupancy map of EE- rechits (" + lbl + ");ix;iy;Entries", 100, 1, 101, @@ -1388,8 +1396,16 @@ void ScoutingCollectionMonitor::bookHistograms(DQMStore::IBooker& ibook, "hbheRechits_energy", "Energy spectrum of hbhe RecHits; Energy of HBHE recHits (GeV); Entries", 100, 0.0, 200.0); hbheRecHitsEtaPhiMap = ibook.book2D( - "hbheRecHitsEtaPhitMap", "Occupancy map of HBHE rechit;ieta;iphi;Entries", 61, -30.5, 30.5, 74, -0.5, 73.5); + "hbheRecHitsEtaPhitMap", "Occupancy map of HBHE rechits;ieta;iphi;Entries", 61, -30.5, 30.5, 74, -0.5, 73.5); hbheRecHitsEtaPhiMap->setOption("colz"); + + hbRecHitsEtaPhiMap = ibook.book2D( + "hbRecHitsEtaPhitMap", "Occupancy map of HB rechits;ieta;iphi;Entries", 83, -41.5, 41.5, 72, 0.5, 72.5); + hbRecHitsEtaPhiMap->setOption("colz"); + + heRecHitsEtaPhiMap = ibook.book2D( + "heRecHitsEtaPhitMap", "Occupancy map of HE rechits;ieta;iphi;Entries", 83, -41.5, 41.5, 72, 0.5, 72.5); + heRecHitsEtaPhiMap->setOption("colz"); } // ------------ method fills 'descriptions' with the allowed parameters for the module ------------ From 649c43bff70693a299e47186bcf60ebee4d50e50 Mon Sep 17 00:00:00 2001 From: Marco Musich Date: Fri, 8 Aug 2025 20:50:54 +0200 Subject: [PATCH 7/7] Refactor ECAL rechit histogram filling to remove code duplication --- .../plugins/ScoutingCollectionMonitor.cc | 97 +++++++++++-------- 1 file changed, 59 insertions(+), 38 deletions(-) diff --git a/DQM/HLTEvF/plugins/ScoutingCollectionMonitor.cc b/DQM/HLTEvF/plugins/ScoutingCollectionMonitor.cc index d99955a6821a9..3c6fe3951a401 100644 --- a/DQM/HLTEvF/plugins/ScoutingCollectionMonitor.cc +++ b/DQM/HLTEvF/plugins/ScoutingCollectionMonitor.cc @@ -841,62 +841,83 @@ void ScoutingCollectionMonitor::analyze(const edm::Event& iEvent, const edm::Eve tk_PV_dz_hist->Fill(best_offset.second); } - // uncleaned calo rechits histograms + // Define helper lambdas for EB and EE rechits + auto fillEBHistograms = [](const auto& rechits, + int index, + dqm::reco::MonitorElement* numberHist[2], + dqm::reco::MonitorElement* etaPhiMap[2], + dqm::reco::MonitorElement* energyHist[2], + dqm::reco::MonitorElement* timeHist[2]) { + numberHist[index]->Fill(rechits.size()); + for (const auto& hit : rechits) { + EBDetId id(hit.detId()); + etaPhiMap[index]->Fill(id.ieta(), id.iphi()); + energyHist[index]->Fill(hit.energy()); + timeHist[index]->Fill(hit.time()); + } + }; + + auto fillEEHistograms = [](const auto& rechits, + int index, + dqm::reco::MonitorElement* numberHist[2], + dqm::reco::MonitorElement* plusXYMap[2], + dqm::reco::MonitorElement* minusXYMap[2], + dqm::reco::MonitorElement* energyHist[2], + dqm::reco::MonitorElement* timeHist[2]) { + numberHist[index]->Fill(rechits.size()); + for (const auto& hit : rechits) { + EEDetId id(hit.detId()); + if (id.zside() > 0) { + plusXYMap[index]->Fill(id.ix(), id.iy()); + } else { + minusXYMap[index]->Fill(id.ix(), id.iy()); + } + energyHist[index]->Fill(hit.energy()); + timeHist[index]->Fill(hit.time()); + } + }; + + // Process uncleaned EB rechits edm::Handle ebRecHitsH; if (!ebRecHitsToken_.isUninitialized() && getValidHandle(iEvent, ebRecHitsToken_, ebRecHitsH, "pfRecHitsEB")) { - ebRecHitsNumber_hist[0]->Fill(ebRecHitsH->size()); - for (const auto& ebRecHit : *ebRecHitsH) { - EBDetId ebid(ebRecHit.detId()); - ebRecHitsEtaPhiMap[0]->Fill(ebid.ieta(), ebid.iphi()); - ebRecHits_energy_hist[0]->Fill(ebRecHit.energy()); - ebRecHits_time_hist[0]->Fill(ebRecHit.time()); - } + fillEBHistograms( + *ebRecHitsH, 0, ebRecHitsNumber_hist, ebRecHitsEtaPhiMap, ebRecHits_energy_hist, ebRecHits_time_hist); } + // Process uncleaned EE rechits edm::Handle eeRecHitsH; if (!eeRecHitsToken_.isUninitialized() && getValidHandle(iEvent, eeRecHitsToken_, eeRecHitsH, "pfRecHitsEE")) { - eeRecHitsNumber_hist[0]->Fill(eeRecHitsH->size()); - for (const auto& eeRecHit : *eeRecHitsH) { - EEDetId eeid(eeRecHit.detId()); - if (eeid.zside() > 0) { - eePlusRecHitsXYMap[0]->Fill(eeid.ix(), eeid.iy()); - } else { - eeMinusRecHitsXYMap[0]->Fill(eeid.ix(), eeid.iy()); - } - eeRecHits_energy_hist[0]->Fill(eeRecHit.energy()); - eeRecHits_time_hist[0]->Fill(eeRecHit.time()); - } + fillEEHistograms(*eeRecHitsH, + 0, + eeRecHitsNumber_hist, + eePlusRecHitsXYMap, + eeMinusRecHitsXYMap, + eeRecHits_energy_hist, + eeRecHits_time_hist); } - // cleaned calo rechits histograms + // Process cleaned EB rechits edm::Handle ebRecHitsCleanedH; if (!ebCleanedRecHitsToken_.isUninitialized() && getValidHandle(iEvent, ebCleanedRecHitsToken_, ebRecHitsCleanedH, "pfCleanedRecHitsEB")) { - ebRecHitsNumber_hist[1]->Fill(ebRecHitsCleanedH->size()); - for (const auto& ebRecHit : *ebRecHitsCleanedH) { - EBDetId ebid(ebRecHit.detId()); - ebRecHitsEtaPhiMap[1]->Fill(ebid.ieta(), ebid.iphi()); - ebRecHits_energy_hist[1]->Fill(ebRecHit.energy()); - ebRecHits_time_hist[1]->Fill(ebRecHit.time()); - } + fillEBHistograms( + *ebRecHitsCleanedH, 1, ebRecHitsNumber_hist, ebRecHitsEtaPhiMap, ebRecHits_energy_hist, ebRecHits_time_hist); } + // Process cleaned EE rechits edm::Handle eeRecHitsCleanedH; if (!eeCleanedRecHitsToken_.isUninitialized() && getValidHandle(iEvent, eeCleanedRecHitsToken_, eeRecHitsCleanedH, "pfCleanedRecHitsEE")) { - eeRecHitsNumber_hist[1]->Fill(eeRecHitsCleanedH->size()); - for (const auto& eeRecHit : *eeRecHitsCleanedH) { - EEDetId eeid(eeRecHit.detId()); - if (eeid.zside() > 0) { - eePlusRecHitsXYMap[1]->Fill(eeid.ix(), eeid.iy()); - } else { - eeMinusRecHitsXYMap[1]->Fill(eeid.ix(), eeid.iy()); - } - eeRecHits_energy_hist[1]->Fill(eeRecHit.energy()); - eeRecHits_time_hist[1]->Fill(eeRecHit.time()); - } + fillEEHistograms(*eeRecHitsCleanedH, + 1, + eeRecHitsNumber_hist, + eePlusRecHitsXYMap, + eeMinusRecHitsXYMap, + eeRecHits_energy_hist, + eeRecHits_time_hist); } + // process the HBHE rechits edm::Handle hbheRecHitsH; if (!hbheRecHitsToken_.isUninitialized() && getValidHandle(iEvent, hbheRecHitsToken_, hbheRecHitsH, "pfRecHitsHBHE")) {