@@ -35,6 +35,9 @@ It is based on the preexisting work of the scouting group and can be found at gi
3535#include " DataFormats/Scouting/interface/Run3ScoutingPhoton.h"
3636#include " DataFormats/Scouting/interface/Run3ScoutingTrack.h"
3737#include " DataFormats/Scouting/interface/Run3ScoutingVertex.h"
38+ #include " DataFormats/Scouting/interface/Run3ScoutingEBRecHit.h"
39+ #include " DataFormats/Scouting/interface/Run3ScoutingEERecHit.h"
40+ #include " DataFormats/Scouting/interface/Run3ScoutingHBHERecHit.h"
3841#include " FWCore/Common/interface/TriggerNames.h"
3942#include " FWCore/Framework/interface/Event.h"
4043#include " FWCore/Framework/interface/Frameworkfwd.h"
@@ -62,6 +65,14 @@ class ScoutingCollectionMonitor : public DQMEDAnalyzer {
6265 void analyze (const edm::Event&, const edm::EventSetup&) override ;
6366 void bookHistograms (DQMStore::IBooker&, edm::Run const &, edm::EventSetup const &) override ;
6467
68+ template <typename T>
69+ void setToken (edm::EDGetTokenT<T>& token, const edm::ParameterSet& iConfig, std::string name) {
70+ const auto inputTag = iConfig.getParameter <edm::InputTag>(name);
71+ if (!inputTag.encode ().empty ()) {
72+ token = consumes (inputTag);
73+ }
74+ }
75+
6576 template <typename T>
6677 bool getValidHandle (const edm::Event& iEvent,
6778 const edm::EDGetTokenT<T>& token,
@@ -105,6 +116,11 @@ class ScoutingCollectionMonitor : public DQMEDAnalyzer {
105116 const edm::EDGetTokenT<OnlineLuminosityRecord> onlineMetaDataDigisToken_;
106117 const std::string topfoldername_;
107118
119+ // calo rechits (only 2025 V1.3 onwards, see )
120+ edm::EDGetTokenT<std::vector<Run3ScoutingEBRecHitCollection>> ebRecHitsToken_;
121+ edm::EDGetTokenT<std::vector<Run3ScoutingEERecHitCollection>> eeRecHitsToken_;
122+ edm::EDGetTokenT<std::vector<Run3ScoutingHBHERecHitCollection>> hbheRecHitsToken_;
123+
108124 // pv vs PU and rho vs PU plots
109125 int primaryVertex_counter = 0 ;
110126 float avgPileUp;
@@ -384,6 +400,11 @@ class ScoutingCollectionMonitor : public DQMEDAnalyzer {
384400 dqm::reco::MonitorElement* tk_chi2_prob_hist;
385401 dqm::reco::MonitorElement* tk_PV_dxy_hist;
386402 dqm::reco::MonitorElement* tk_PV_dz_hist;
403+
404+ // calo rechits histrograms
405+ dqm::reco::MonitorElement* ebRecHitsNumber;
406+ dqm::reco::MonitorElement* eeRecHitsNumber;
407+ dqm::reco::MonitorElement* hbheRecHitsNumber;
387408};
388409
389410//
@@ -408,7 +429,11 @@ ScoutingCollectionMonitor::ScoutingCollectionMonitor(const edm::ParameterSet& iC
408429 pfjetsToken_(consumes<std::vector<Run3ScoutingPFJet>>(iConfig.getParameter<edm::InputTag>(" pfjets" ))),
409430 tracksToken_(consumes<std::vector<Run3ScoutingTrack>>(iConfig.getParameter<edm::InputTag>(" tracks" ))),
410431 onlineMetaDataDigisToken_(consumes(iConfig.getParameter<edm::InputTag>(" onlineMetaDataDigis" ))),
411- topfoldername_(iConfig.getParameter<std::string>(" topfoldername" )) {}
432+ topfoldername_(iConfig.getParameter<std::string>(" topfoldername" )) {
433+ setToken (ebRecHitsToken_, iConfig, " pfRecHitsEB" );
434+ setToken (eeRecHitsToken_, iConfig, " pfRecHitsEE" );
435+ setToken (hbheRecHitsToken_, iConfig, " pfRecHitsHBHE" );
436+ }
412437
413438//
414439// member functions
@@ -797,6 +822,21 @@ void ScoutingCollectionMonitor::analyze(const edm::Event& iEvent, const edm::Eve
797822 tk_PV_dxy_hist->Fill (best_offset.first );
798823 tk_PV_dz_hist->Fill (best_offset.second );
799824 }
825+
826+ if (!ebRecHitsToken_.isUninitialized ()) {
827+ auto const & ebRecHits = iEvent.get (ebRecHitsToken_);
828+ ebRecHitsNumber->Fill (ebRecHits.size ());
829+ }
830+
831+ if (!eeRecHitsToken_.isUninitialized ()) {
832+ auto const & eeRecHits = iEvent.get (eeRecHitsToken_);
833+ eeRecHitsNumber->Fill (eeRecHits.size ());
834+ }
835+
836+ if (!hbheRecHitsToken_.isUninitialized ()) {
837+ auto const & hbheRecHits = iEvent.get (hbheRecHitsToken_);
838+ hbheRecHitsNumber->Fill (hbheRecHits.size ());
839+ }
800840}
801841
802842// ------------ method called once each job just before starting event loop ------------
@@ -1203,6 +1243,12 @@ void ScoutingCollectionMonitor::bookHistograms(DQMStore::IBooker& ibook,
12031243 tk_chi2_prob_hist = ibook.book1DD (" tk_chi2_prob_hist" , " p(#chi^{2}, NDOF); p(#chi^{2}, NDOF); Entries" , 100 , 0 , 1 );
12041244 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 );
12051245 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 );
1246+
1247+ ibook.setCurrentFolder (topfoldername_ + " /CaloRecHits" );
1248+ ebRecHitsNumber = ibook.book1D (" ebRechitsN" , " number of eb RecHits; number of EB recHits; events" , 100 , 0.0 , 1000.0 );
1249+ eeRecHitsNumber = ibook.book1D (" eeRechitsN" , " number of ee RecHits; number of EE recHits; events" , 100 , 0.0 , 1000.0 );
1250+ hbheRecHitsNumber =
1251+ ibook.book1D (" hbheRechitsN" , " number of hbhe RecHits; number of HBHE recHits; events" , 100 , 0.0 , 1000.0 );
12061252}
12071253// ------------ method fills 'descriptions' with the allowed parameters for the module ------------
12081254
@@ -1223,6 +1269,9 @@ void ScoutingCollectionMonitor::fillDescriptions(edm::ConfigurationDescriptions&
12231269 desc.add <edm::InputTag>(" pfMetPhi" , edm::InputTag (" hltScoutingPFPacker" , " pfMetPhi" ));
12241270 desc.add <edm::InputTag>(" rho" , edm::InputTag (" hltScoutingPFPacker" , " rho" ));
12251271 desc.add <edm::InputTag>(" onlineMetaDataDigis" , edm::InputTag (" onlineMetaDataDigis" ));
1272+ desc.add <edm::InputTag>(" pfRecHitsEB" , edm::InputTag (" " ));
1273+ desc.add <edm::InputTag>(" pfRecHitsEE" , edm::InputTag (" " ));
1274+ desc.add <edm::InputTag>(" pfRecHitsHBHE" , edm::InputTag (" " ));
12261275 desc.add <std::string>(" topfoldername" , " HLT/ScoutingOffline/Miscellaneous" );
12271276 descriptions.addWithDefaultLabel (desc);
12281277}
0 commit comments