From 34f6ca740e2fe103a9808a58e800e28ff88fdbe2 Mon Sep 17 00:00:00 2001 From: HLT Optimal Calibrations Date: Sun, 15 Mar 2026 17:36:07 +0100 Subject: [PATCH 1/2] improve scouting electron and photon monitoring --- .../plugins/ScoutingCollectionMonitor.cc | 20 +++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/DQM/HLTEvF/plugins/ScoutingCollectionMonitor.cc b/DQM/HLTEvF/plugins/ScoutingCollectionMonitor.cc index 029b3ed11520d..a9060de96e72d 100644 --- a/DQM/HLTEvF/plugins/ScoutingCollectionMonitor.cc +++ b/DQM/HLTEvF/plugins/ScoutingCollectionMonitor.cc @@ -271,6 +271,9 @@ class ScoutingCollectionMonitor : public DQMEDAnalyzer { dqm::reco::MonitorElement* r9_ele_hist; dqm::reco::MonitorElement* sMin_ele_hist; dqm::reco::MonitorElement* sMaj_ele_hist; + dqm::reco::MonitorElement* nClusters_ele_hist; + dqm::reco::MonitorElement* nCrystals_ele_hist; + dqm::reco::MonitorElement* rechitZeroSuppression_ele_hist; // muon histograms (index 0: noVtx, index1: Vtx) dqm::reco::MonitorElement* pt_mu_hist[2]; @@ -667,6 +670,9 @@ void ScoutingCollectionMonitor::analyze(const edm::Event& iEvent, const edm::Eve r9_pho_hist->Fill(pho.r9()); sMin_pho_hist->Fill(pho.sMin()); sMaj_pho_hist->Fill(pho.sMaj()); + nClusters_pho_hist->Fill(pho.nClusters()); + nCrystals_pho_hist->Fill(pho.nCrystals()); + rechitZeroSuppression_pho_hist->Fill(pho.rechitZeroSuppression() ? -1. : 1.); } // fill all the electron histograms @@ -690,6 +696,9 @@ void ScoutingCollectionMonitor::analyze(const edm::Event& iEvent, const edm::Eve r9_ele_hist->Fill(ele.r9()); sMin_ele_hist->Fill(ele.sMin()); sMaj_ele_hist->Fill(ele.sMaj()); + nClusters_ele_hist->Fill(ele.nClusters()); + nCrystals_ele_hist->Fill(ele.nCrystals()); + rechitZeroSuppression_ele_hist->Fill(ele.rechitZeroSuppression() ? -1. : 1.); } // Apply to both collections @@ -1198,6 +1207,11 @@ void ScoutingCollectionMonitor::bookHistograms(DQMStore::IBooker& ibook, r9_pho_hist = ibook.book1DD("r9_pho", "R9; R9; Entries", 100, 0.0, 5); sMin_pho_hist = ibook.book1DD("sMin_pho", "sMin Photon; sMin; Entries", 100, 0.0, 3); sMaj_pho_hist = ibook.book1DD("sMaj_pho", "sMaj Photon; sMaj; Entries", 100, 0.0, 3); + nClusters_pho_hist = + ibook.book1I("nClusters_pho", "nunmber of Clusters Photon; n. Clusters; Entries", 20, -0.5, 19.5); + nCrystals_pho_hist = ibook.book1I("nCrystals_pho", "number of Crystals Photon; n. Crystals; Entries", 100, -0.5, 99.5); + rechitZeroSuppression_pho_hist = + ibook.book1I("rechitZS_pho", "recHit ZS Photon; recHit ZeroSuppression (-1=True,1=False); Entries", 3, -1.5, 1.5); ibook.setCurrentFolder(topfoldername_ + "/Electron"); pt_ele_hist = ibook.book1DD("pt_ele", "Electron p_{T}; p_{T} (GeV); Entries", 100, 0.0, 100.0); @@ -1223,6 +1237,12 @@ void ScoutingCollectionMonitor::bookHistograms(DQMStore::IBooker& ibook, r9_ele_hist = ibook.book1DD("r9_ele", "R9 Electron; R9; Entries", 100, 0.0, 5); sMin_ele_hist = ibook.book1DD("sMin_ele", "sMin Electron; sMin; Entries", 100, 0.0, 3); sMaj_ele_hist = ibook.book1DD("sMaj_ele", "sMaj Electron; sMaj; Entries", 100, 0.0, 3); + nClusters_ele_hist = + ibook.book1I("nClusters_ele", "nunmber of Clusters Electron; n. Clusters; Entries", 20, -0.5, 19.5); + nCrystals_ele_hist = + ibook.book1I("nCrystals_ele", "number of Crystals Electron; n. Crystals; Entries", 100, -0.5, 99.5); + rechitZeroSuppression_ele_hist = + ibook.book1I("rechitZS_ele", "recHit ZS Electron; recHit ZeroSuppression (-1=True,1=False); Entries", 3, -1.5, 1.5); // book the muon histograms (noVtx and Vtx collections) const std::array muonLabels = {{"muonsNoVtx", "muonsVtx"}}; From 937f5aa0b346c432f91106e51192a76bf90ef06a Mon Sep 17 00:00:00 2001 From: HLT Optimal Calibrations Date: Sun, 15 Mar 2026 18:46:23 +0100 Subject: [PATCH 2/2] introduce monitoring of the electrontrack variables --- .../plugins/ScoutingCollectionMonitor.cc | 131 +++++++++++++++++- .../python/ScoutingCollectionMonitor_cfi.py | 12 ++ .../clients/ngt_dqm_sourceclient-live_cfg.py | 5 + .../scouting_dqm_sourceclient-live_cfg.py | 5 + .../python/HLTScoutingDqmOffline_cff.py | 4 + 5 files changed, 153 insertions(+), 4 deletions(-) diff --git a/DQM/HLTEvF/plugins/ScoutingCollectionMonitor.cc b/DQM/HLTEvF/plugins/ScoutingCollectionMonitor.cc index a9060de96e72d..2436d574792f9 100644 --- a/DQM/HLTEvF/plugins/ScoutingCollectionMonitor.cc +++ b/DQM/HLTEvF/plugins/ScoutingCollectionMonitor.cc @@ -120,6 +120,23 @@ class ScoutingCollectionMonitor : public DQMEDAnalyzer { const edm::EDGetTokenT> tracksToken_; const edm::EDGetTokenT onlineMetaDataDigisToken_; const edm::EDGetTokenT beamSpotToken_; + + // best electron tracks tokens + // One ValueMap per track variable: each map is keyed on the electron + // collection and already holds the best-track scalar for every electron. + const edm::EDGetTokenT> vmBestTrackIndexToken_; + const edm::EDGetTokenT> vmTrkd0Token_; + const edm::EDGetTokenT> vmTrkdzToken_; + const edm::EDGetTokenT> vmTrkptToken_; + const edm::EDGetTokenT> vmTrketaToken_; + const edm::EDGetTokenT> vmTrkphiToken_; + const edm::EDGetTokenT> vmTrkpModeToken_; + const edm::EDGetTokenT> vmTrketaModeToken_; + const edm::EDGetTokenT> vmTrkphiModeToken_; + const edm::EDGetTokenT> vmTrkqoverpModeErrorToken_; + const edm::EDGetTokenT> vmTrkchi2overndfToken_; + const edm::EDGetTokenT> vmTrkchargeToken_; + const std::string topfoldername_; // calo rechits (only 2025 V1.3 onwards, see https://its.cern.ch/jira/browse/CMSHLT-3607) @@ -274,6 +291,20 @@ class ScoutingCollectionMonitor : public DQMEDAnalyzer { dqm::reco::MonitorElement* nClusters_ele_hist; dqm::reco::MonitorElement* nCrystals_ele_hist; dqm::reco::MonitorElement* rechitZeroSuppression_ele_hist; + dqm::reco::MonitorElement* nTracks_ele_hist; + // ---- electron best track variables + dqm::reco::MonitorElement* trkBestIdx_ele_hist; + dqm::reco::MonitorElement* trkd0_ele_hist; + dqm::reco::MonitorElement* trkdz_ele_hist; + dqm::reco::MonitorElement* trkpt_ele_hist; + dqm::reco::MonitorElement* trketa_ele_hist; + dqm::reco::MonitorElement* trkphi_els_hist; + dqm::reco::MonitorElement* trkpMode_ele_hist; + dqm::reco::MonitorElement* trketaMode_ele_hist; + dqm::reco::MonitorElement* trkphiMode_ele_hist; + dqm::reco::MonitorElement* trkqoverpModeError_ele_hist; + dqm::reco::MonitorElement* trkchi2overndf_ele_hist; + dqm::reco::MonitorElement* trkcharge_ele_hist; // muon histograms (index 0: noVtx, index1: Vtx) dqm::reco::MonitorElement* pt_mu_hist[2]; @@ -472,6 +503,20 @@ ScoutingCollectionMonitor::ScoutingCollectionMonitor(const edm::ParameterSet& iC tracksToken_(consumes>(iConfig.getParameter("tracks"))), onlineMetaDataDigisToken_(consumes(iConfig.getParameter("onlineMetaDataDigis"))), beamSpotToken_(consumes(iConfig.getParameter("beamSpot"))), + // ---- ValueMap tokens: instanceLabel must match what the producer puts ---- + vmBestTrackIndexToken_(consumes>(iConfig.getParameter("vmBestTrackIndex"))), + vmTrkd0Token_(consumes>(iConfig.getParameter("vmTrkd0"))), + vmTrkdzToken_(consumes>(iConfig.getParameter("vmTrkdz"))), + vmTrkptToken_(consumes>(iConfig.getParameter("vmTrkpt"))), + vmTrketaToken_(consumes>(iConfig.getParameter("vmTrketa"))), + vmTrkphiToken_(consumes>(iConfig.getParameter("vmTrkphi"))), + vmTrkpModeToken_(consumes>(iConfig.getParameter("vmTrkpMode"))), + vmTrketaModeToken_(consumes>(iConfig.getParameter("vmTrketaMode"))), + vmTrkphiModeToken_(consumes>(iConfig.getParameter("vmTrkphiMode"))), + vmTrkqoverpModeErrorToken_( + consumes>(iConfig.getParameter("vmTrkqoverpModeError"))), + vmTrkchi2overndfToken_(consumes>(iConfig.getParameter("vmTrkchi2overndf"))), + vmTrkchargeToken_(consumes>(iConfig.getParameter("vmTrkcharge"))), topfoldername_(iConfig.getParameter("topfoldername")) { setToken(ebRecHitsToken_, iConfig, "pfRecHitsEB"); setToken(eeRecHitsToken_, iConfig, "pfRecHitsEE"); @@ -675,8 +720,26 @@ void ScoutingCollectionMonitor::analyze(const edm::Event& iEvent, const edm::Eve rechitZeroSuppression_pho_hist->Fill(pho.rechitZeroSuppression() ? -1. : 1.); } + // --- ValueMaps --- + const auto& vmBestIdx = iEvent.get(vmBestTrackIndexToken_); + const auto& vmD0 = iEvent.get(vmTrkd0Token_); + const auto& vmDz = iEvent.get(vmTrkdzToken_); + const auto& vmPt = iEvent.get(vmTrkptToken_); + const auto& vmEta = iEvent.get(vmTrketaToken_); + const auto& vmPhi = iEvent.get(vmTrkphiToken_); + const auto& vmPMode = iEvent.get(vmTrkpModeToken_); + const auto& vmEtaMode = iEvent.get(vmTrketaModeToken_); + const auto& vmPhiMode = iEvent.get(vmTrkphiModeToken_); + const auto& vmQoverpModeErr = iEvent.get(vmTrkqoverpModeErrorToken_); + const auto& vmChi2 = iEvent.get(vmTrkchi2overndfToken_); + const auto& vmCharge = iEvent.get(vmTrkchargeToken_); + // fill all the electron histograms - for (const auto& ele : *electronsH) { + for (std::size_t iEl = 0; iEl < electronsH->size(); ++iEl) { + // Ref needed to index into the ValueMaps + const edm::Ref elRef(electronsH, iEl); + const Run3ScoutingElectron& ele = *elRef; + pt_ele_hist->Fill(ele.pt()); eta_ele_hist->Fill(ele.eta()); phi_ele_hist->Fill(ele.phi()); @@ -699,6 +762,32 @@ void ScoutingCollectionMonitor::analyze(const edm::Event& iEvent, const edm::Eve nClusters_ele_hist->Fill(ele.nClusters()); nCrystals_ele_hist->Fill(ele.nCrystals()); rechitZeroSuppression_ele_hist->Fill(ele.rechitZeroSuppression() ? -1. : 1.); + + // ----- Track-vector size ----- + nTracks_ele_hist->Fill(static_cast(ele.trkpt().size())); + + // ----- Best-track scalars from ValueMaps ----- + // The producer sets the value to numeric_limits::max() when no + // best track was found (index == -1), so guard before filling. + const int bestIdx = vmBestIdx[elRef]; + trkBestIdx_ele_hist->Fill(static_cast(bestIdx)); + + if (bestIdx < 0) + continue; // no valid track for this electron + + // All float maps are safe to fill: the producer guarantees they hold the + // best-track value whenever bestIdx >= 0. + trkd0_ele_hist->Fill(vmD0[elRef]); + trkdz_ele_hist->Fill(vmDz[elRef]); + trkpt_ele_hist->Fill(vmPt[elRef]); + trketa_ele_hist->Fill(vmEta[elRef]); + trkphi_els_hist->Fill(vmPhi[elRef]); + trkpMode_ele_hist->Fill(vmPMode[elRef]); + trketaMode_ele_hist->Fill(vmEtaMode[elRef]); + trkphiMode_ele_hist->Fill(vmPhiMode[elRef]); + trkqoverpModeError_ele_hist->Fill(vmQoverpModeErr[elRef]); + trkchi2overndf_ele_hist->Fill(vmChi2[elRef]); + trkcharge_ele_hist->Fill(static_cast(vmCharge[elRef])); } // Apply to both collections @@ -1209,7 +1298,8 @@ void ScoutingCollectionMonitor::bookHistograms(DQMStore::IBooker& ibook, sMaj_pho_hist = ibook.book1DD("sMaj_pho", "sMaj Photon; sMaj; Entries", 100, 0.0, 3); nClusters_pho_hist = ibook.book1I("nClusters_pho", "nunmber of Clusters Photon; n. Clusters; Entries", 20, -0.5, 19.5); - nCrystals_pho_hist = ibook.book1I("nCrystals_pho", "number of Crystals Photon; n. Crystals; Entries", 100, -0.5, 99.5); + nCrystals_pho_hist = + ibook.book1I("nCrystals_pho", "number of Crystals Photon; n. Crystals; Entries", 100, -0.5, 99.5); rechitZeroSuppression_pho_hist = ibook.book1I("rechitZS_pho", "recHit ZS Photon; recHit ZeroSuppression (-1=True,1=False); Entries", 3, -1.5, 1.5); @@ -1241,8 +1331,25 @@ void ScoutingCollectionMonitor::bookHistograms(DQMStore::IBooker& ibook, ibook.book1I("nClusters_ele", "nunmber of Clusters Electron; n. Clusters; Entries", 20, -0.5, 19.5); nCrystals_ele_hist = ibook.book1I("nCrystals_ele", "number of Crystals Electron; n. Crystals; Entries", 100, -0.5, 99.5); - rechitZeroSuppression_ele_hist = - ibook.book1I("rechitZS_ele", "recHit ZS Electron; recHit ZeroSuppression (-1=True,1=False); Entries", 3, -1.5, 1.5); + rechitZeroSuppression_ele_hist = ibook.book1I( + "rechitZS_ele", "recHit ZS Electron; recHit ZeroSuppression (-1=True,1=False); Entries", 3, -1.5, 1.5); + nTracks_ele_hist = ibook.book1D("nTracksPerElectron", "Number of tracks per electron;N_{trk};Electrons", 20, 0, 20); + + // --- Best-track variables (from ValueMaps) --- + trkBestIdx_ele_hist = ibook.book1D("trkBestIdx", "Best-track index;index;Electrons", 20, 0, 20); + trkd0_ele_hist = ibook.book1D("trkd0", "Best-track d_{0};d_{0} [cm];Electrons", 100, -0.5, 0.5); + trkdz_ele_hist = ibook.book1D("trkdz", "Best-track d_{z};d_{z} [cm];Electrons", 100, -25, 25); + trkpt_ele_hist = ibook.book1D("trkpt", "Best-track p_{T};p_{T} [GeV];Electrons", 100, 0, 200); + trketa_ele_hist = ibook.book1D("trketa", "Best-track #eta;#eta;Electrons", 60, -3, 3); + trkphi_els_hist = ibook.book1D("trkphi", "Best-track #phi;#phi [rad];Electrons", 64, -3.2, 3.2); + trkpMode_ele_hist = ibook.book1D("trkpMode", "Best-track p (mode);p_{mode} [GeV];Electrons", 100, 0, 200); + trketaMode_ele_hist = ibook.book1D("trketaMode", "Best-track #eta (mode);#eta_{mode};Electrons", 60, -3, 3); + trkphiMode_ele_hist = ibook.book1D("trkphiMode", "Best-track #phi (mode);#phi_{mode} [rad];Electrons", 64, -3.2, 3.2); + trkqoverpModeError_ele_hist = ibook.book1D( + "trkqoverpModeError", "Best-track #sigma(q/p) (mode);#sigma(q/p)_{mode} [GeV^{-1}];Electrons", 100, 0, 0.01); + trkchi2overndf_ele_hist = + ibook.book1D("trkchi2overndf", "Best-track #chi^{2}/ndof;#chi^{2}/ndof;Electrons", 100, 0, 10); + trkcharge_ele_hist = ibook.book1D("trkcharge", "Best-track charge;charge;Electrons", 3, -1.5, 1.5); // book the muon histograms (noVtx and Vtx collections) const std::array muonLabels = {{"muonsNoVtx", "muonsVtx"}}; @@ -1674,6 +1781,22 @@ void ScoutingCollectionMonitor::fillDescriptions(edm::ConfigurationDescriptions& desc.add("pfRecHitsHBHE", edm::InputTag("hltScoutingRecHitPacker", "HBHE")); desc.add("pfCleanedRecHitsEB", edm::InputTag("hltScoutingRecHitPacker", "EBCleaned")); desc.add("pfCleanedRecHitsEE", edm::InputTag("hltScoutingRecHitPacker", "EECleaned")); + + // Each InputTag is ("producerLabel", "instanceLabel") + const std::string prod = "run3ScoutingElectronBestTrack"; + desc.add("vmBestTrackIndex", edm::InputTag(prod, "Run3ScoutingElectronBestTrackIndex")); + desc.add("vmTrkd0", edm::InputTag(prod, "Run3ScoutingElectronTrackd0")); + desc.add("vmTrkdz", edm::InputTag(prod, "Run3ScoutingElectronTrackdz")); + desc.add("vmTrkpt", edm::InputTag(prod, "Run3ScoutingElectronTrackpt")); + desc.add("vmTrketa", edm::InputTag(prod, "Run3ScoutingElectronTracketa")); + desc.add("vmTrkphi", edm::InputTag(prod, "Run3ScoutingElectronTrackphi")); + desc.add("vmTrkpMode", edm::InputTag(prod, "Run3ScoutingElectronTrackpMode")); + desc.add("vmTrketaMode", edm::InputTag(prod, "Run3ScoutingElectronTracketaMode")); + desc.add("vmTrkphiMode", edm::InputTag(prod, "Run3ScoutingElectronTrackphiMode")); + desc.add("vmTrkqoverpModeError", edm::InputTag(prod, "Run3ScoutingElectronTrackqoverpModeError")); + desc.add("vmTrkchi2overndf", edm::InputTag(prod, "Run3ScoutingElectronTrackchi2overndf")); + desc.add("vmTrkcharge", edm::InputTag(prod, "Run3ScoutingElectronTrackcharge")); + 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 a4092a741e98a..3e534ec8f1d26 100644 --- a/DQM/HLTEvF/python/ScoutingCollectionMonitor_cfi.py +++ b/DQM/HLTEvF/python/ScoutingCollectionMonitor_cfi.py @@ -18,6 +18,18 @@ pfMetPt = cms.InputTag("hltScoutingPFPacker","pfMetPt"), pfMetPhi = cms.InputTag("hltScoutingPFPacker","pfMetPhi"), rho = cms.InputTag("hltScoutingPFPacker","rho"), + vmBestTrackIndex = cms.InputTag('run3ScoutingElectronBestTrack', 'Run3ScoutingElectronBestTrackIndex'), + vmTrkd0 = cms.InputTag('run3ScoutingElectronBestTrack', 'Run3ScoutingElectronTrackd0'), + vmTrkdz = cms.InputTag('run3ScoutingElectronBestTrack', 'Run3ScoutingElectronTrackdz'), + vmTrkpt = cms.InputTag('run3ScoutingElectronBestTrack', 'Run3ScoutingElectronTrackpt'), + vmTrketa = cms.InputTag('run3ScoutingElectronBestTrack', 'Run3ScoutingElectronTracketa'), + vmTrkphi = cms.InputTag('run3ScoutingElectronBestTrack', 'Run3ScoutingElectronTrackphi'), + vmTrkpMode = cms.InputTag('run3ScoutingElectronBestTrack', 'Run3ScoutingElectronTrackpMode'), + vmTrketaMode = cms.InputTag('run3ScoutingElectronBestTrack', 'Run3ScoutingElectronTracketaMode'), + vmTrkphiMode = cms.InputTag('run3ScoutingElectronBestTrack', 'Run3ScoutingElectronTrackphiMode'), + vmTrkqoverpModeError = cms.InputTag('run3ScoutingElectronBestTrack', 'Run3ScoutingElectronTrackqoverpModeError'), + vmTrkchi2overndf = cms.InputTag('run3ScoutingElectronBestTrack', 'Run3ScoutingElectronTrackchi2overndf'), + vmTrkcharge = cms.InputTag('run3ScoutingElectronBestTrack', 'Run3ScoutingElectronTrackcharge'), pfRecHitsEB = cms.InputTag(""), pfRecHitsEE = cms.InputTag(""), pfCleanedRecHitsEB = cms.InputTag(""), diff --git a/DQM/Integration/python/clients/ngt_dqm_sourceclient-live_cfg.py b/DQM/Integration/python/clients/ngt_dqm_sourceclient-live_cfg.py index 22fe9cbbabf89..3cc937f93bb07 100644 --- a/DQM/Integration/python/clients/ngt_dqm_sourceclient-live_cfg.py +++ b/DQM/Integration/python/clients/ngt_dqm_sourceclient-live_cfg.py @@ -76,8 +76,13 @@ process.dqmcommon = cms.Sequence(process.dqmEnv * process.dqmSaver)#*process.dqmSaverPB) +## best electron track producer +from PhysicsTools.Scouting.Run3ScoutingElectronBestTrackProducer_cfi import Run3ScoutingElectronBestTrackProducer as _Run3ScoutingElectronBestTrackProducer +process.run3ScoutingElectronBestTrack = _Run3ScoutingElectronBestTrackProducer.clone() + process.p = cms.Path(process.dqmcommon * process.hltOnlineBeamSpot * + process.run3ScoutingElectronBestTrack * process.scoutingCollectionMonitor * process.ScoutingDileptonMonitorOnline * process.ScoutingPi0MonitorOnline) diff --git a/DQM/Integration/python/clients/scouting_dqm_sourceclient-live_cfg.py b/DQM/Integration/python/clients/scouting_dqm_sourceclient-live_cfg.py index 75486f25ec32f..28fee875e61d7 100644 --- a/DQM/Integration/python/clients/scouting_dqm_sourceclient-live_cfg.py +++ b/DQM/Integration/python/clients/scouting_dqm_sourceclient-live_cfg.py @@ -60,8 +60,13 @@ process.load("DQM.HLTEvF.ScoutingDileptonMonitor_cfi") process.load("DQM.HLTEvF.ScoutingPi0Monitor_cfi") +## best electron track producer +from PhysicsTools.Scouting.Run3ScoutingElectronBestTrackProducer_cfi import Run3ScoutingElectronBestTrackProducer as _Run3ScoutingElectronBestTrackProducer +process.run3ScoutingElectronBestTrack = _Run3ScoutingElectronBestTrackProducer.clone() + process.p = cms.Path(process.dqmcommon * process.hltOnlineBeamSpot * + process.run3ScoutingElectronBestTrack * process.scoutingCollectionMonitor * process.ScoutingMuonMonitoring * process.ScoutingJetMonitoring * diff --git a/DQMOffline/HLTScouting/python/HLTScoutingDqmOffline_cff.py b/DQMOffline/HLTScouting/python/HLTScoutingDqmOffline_cff.py index 38d24c235f7d7..99785086b6c5a 100644 --- a/DQMOffline/HLTScouting/python/HLTScoutingDqmOffline_cff.py +++ b/DQMOffline/HLTScouting/python/HLTScoutingDqmOffline_cff.py @@ -18,6 +18,9 @@ ### Jets Monitoring from DQMOffline.JetMET.jetMETDQMOfflineSource_cff import * +### Electron best track producer +from PhysicsTools.Scouting.Run3ScoutingElectronBestTrackProducer_cfi import Run3ScoutingElectronBestTrackProducer as run3ScoutingElectronBestTrack + ### Miscellaneous monitoring from DQM.HLTEvF.ScoutingCollectionMonitor_cfi import * @@ -49,6 +52,7 @@ hltScoutingJetDqmOffline + hltScoutingDileptonMonitor + hltScoutingPi0Monitor + + run3ScoutingElectronBestTrack + hltScoutingCollectionMonitor) ## Add the scouting rechits monitoring (only for 2025, integrated in menu GRun 2025 V1.3)