Skip to content

Commit 11d4ed4

Browse files
committed
add Ecal cleaned rechit monitoring and occupancy maps of calo pf rechits
1 parent d01c266 commit 11d4ed4

File tree

2 files changed

+165
-47
lines changed

2 files changed

+165
-47
lines changed

DQM/HLTEvF/plugins/ScoutingCollectionMonitor.cc

Lines changed: 161 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -24,20 +24,23 @@ It is based on the preexisting work of the scouting group and can be found at gi
2424

2525
// user include files
2626
#include "DQMServices/Core/interface/DQMEDAnalyzer.h"
27+
#include "DataFormats/EcalDetId/interface/EBDetId.h"
28+
#include "DataFormats/EcalDetId/interface/EEDetId.h"
29+
#include "DataFormats/HcalDetId/interface/HcalDetId.h"
2730
#include "DataFormats/L1TGlobal/interface/GlobalAlgBlk.h"
2831
#include "DataFormats/OnlineMetaData/interface/OnlineLuminosityRecord.h"
2932
#include "DataFormats/PatCandidates/interface/PackedTriggerPrescales.h"
3033
#include "DataFormats/PatCandidates/interface/TriggerObjectStandAlone.h"
34+
#include "DataFormats/Scouting/interface/Run3ScoutingEBRecHit.h"
35+
#include "DataFormats/Scouting/interface/Run3ScoutingEERecHit.h"
3136
#include "DataFormats/Scouting/interface/Run3ScoutingElectron.h"
37+
#include "DataFormats/Scouting/interface/Run3ScoutingHBHERecHit.h"
3238
#include "DataFormats/Scouting/interface/Run3ScoutingMuon.h"
3339
#include "DataFormats/Scouting/interface/Run3ScoutingPFJet.h"
3440
#include "DataFormats/Scouting/interface/Run3ScoutingParticle.h"
3541
#include "DataFormats/Scouting/interface/Run3ScoutingPhoton.h"
3642
#include "DataFormats/Scouting/interface/Run3ScoutingTrack.h"
3743
#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"
4144
#include "FWCore/Common/interface/TriggerNames.h"
4245
#include "FWCore/Framework/interface/Event.h"
4346
#include "FWCore/Framework/interface/Frameworkfwd.h"
@@ -116,10 +119,11 @@ class ScoutingCollectionMonitor : public DQMEDAnalyzer {
116119
const edm::EDGetTokenT<OnlineLuminosityRecord> onlineMetaDataDigisToken_;
117120
const std::string topfoldername_;
118121

119-
// calo rechits (only 2025 V1.3 onwards, see )
120-
//edm::EDGetTokenT<std::vector<Run3ScoutingEBRecHitCollection>> ebRecHitsToken_;
122+
// calo rechits (only 2025 V1.3 onwards, see https://its.cern.ch/jira/browse/CMSHLT-3607)
121123
edm::EDGetTokenT<Run3ScoutingEBRecHitCollection> ebRecHitsToken_;
122124
edm::EDGetTokenT<Run3ScoutingEERecHitCollection> eeRecHitsToken_;
125+
edm::EDGetTokenT<Run3ScoutingEBRecHitCollection> ebCleanedRecHitsToken_;
126+
edm::EDGetTokenT<Run3ScoutingEERecHitCollection> eeCleanedRecHitsToken_;
123127
edm::EDGetTokenT<Run3ScoutingHBHERecHitCollection> hbheRecHitsToken_;
124128

125129
// pv vs PU and rho vs PU plots
@@ -402,16 +406,19 @@ class ScoutingCollectionMonitor : public DQMEDAnalyzer {
402406
dqm::reco::MonitorElement* tk_PV_dxy_hist;
403407
dqm::reco::MonitorElement* tk_PV_dz_hist;
404408

405-
// calo rechits histrograms
406-
dqm::reco::MonitorElement* ebRecHitsNumber;
407-
dqm::reco::MonitorElement* ebRecHits_energy_hist;
408-
dqm::reco::MonitorElement* ebRecHits_time_hist;
409-
dqm::reco::MonitorElement* eeRecHitsNumber;
410-
dqm::reco::MonitorElement* eeRecHits_energy_hist;
411-
dqm::reco::MonitorElement* eeRecHits_time_hist;
412-
dqm::reco::MonitorElement* hbheRecHitsNumber;
409+
// calo rechits histrograms (ECAL has two version, cleaned and unclean)
410+
dqm::reco::MonitorElement* ebRecHitsNumber_hist[2];
411+
dqm::reco::MonitorElement* ebRecHits_energy_hist[2];
412+
dqm::reco::MonitorElement* ebRecHits_time_hist[2];
413+
dqm::reco::MonitorElement* ebRecHitsEtaPhiMap[2];
414+
dqm::reco::MonitorElement* eeRecHitsNumber_hist[2];
415+
dqm::reco::MonitorElement* eeRecHits_energy_hist[2];
416+
dqm::reco::MonitorElement* eeRecHits_time_hist[2];
417+
dqm::reco::MonitorElement* eePlusRecHitsXYMap[2];
418+
dqm::reco::MonitorElement* eeMinusRecHitsXYMap[2];
419+
dqm::reco::MonitorElement* hbheRecHitsNumber_hist;
413420
dqm::reco::MonitorElement* hbheRecHits_energy_hist;
414-
421+
dqm::reco::MonitorElement* hbheRecHitsEtaPhiMap;
415422
};
416423

417424
//
@@ -439,6 +446,8 @@ ScoutingCollectionMonitor::ScoutingCollectionMonitor(const edm::ParameterSet& iC
439446
topfoldername_(iConfig.getParameter<std::string>("topfoldername")) {
440447
setToken(ebRecHitsToken_, iConfig, "pfRecHitsEB");
441448
setToken(eeRecHitsToken_, iConfig, "pfRecHitsEE");
449+
setToken(ebCleanedRecHitsToken_, iConfig, "pfCleanedRecHitsEB");
450+
setToken(eeCleanedRecHitsToken_, iConfig, "pfCleanedRecHitsEE");
442451
setToken(hbheRecHitsToken_, iConfig, "pfRecHitsHBHE");
443452
}
444453

@@ -480,7 +489,6 @@ void ScoutingCollectionMonitor::analyze(const edm::Event& iEvent, const edm::Eve
480489
edm::Handle<std::vector<Run3ScoutingTrack>> tracksH;
481490
edm::Handle<OnlineLuminosityRecord> onlineMetaDataDigisHandle;
482491

483-
484492
if (!getValidHandle(iEvent, rhoToken_, rhoH, "rho") ||
485493
!getValidHandle(iEvent, pfMetPhiToken_, pfMetPhiH, "MET phi") ||
486494
!getValidHandle(iEvent, pfMetPtToken_, pfMetPtH, "MET pT") ||
@@ -831,34 +839,72 @@ void ScoutingCollectionMonitor::analyze(const edm::Event& iEvent, const edm::Eve
831839
tk_PV_dz_hist->Fill(best_offset.second);
832840
}
833841

834-
842+
// uncleaned calo rechits histograms
835843
edm::Handle<Run3ScoutingEBRecHitCollection> ebRecHitsH;
836844
if (!ebRecHitsToken_.isUninitialized() && getValidHandle(iEvent, ebRecHitsToken_, ebRecHitsH, "pfRecHitsEB")) {
837-
ebRecHitsNumber->Fill(ebRecHitsH->size());
838-
for (const auto& ebRecHit : *ebRecHitsH) {
839-
ebRecHits_energy_hist->Fill(ebRecHit.energy());
840-
ebRecHits_time_hist->Fill(ebRecHit.time());
841-
}
845+
ebRecHitsNumber_hist[0]->Fill(ebRecHitsH->size());
846+
for (const auto& ebRecHit : *ebRecHitsH) {
847+
EBDetId ebid(ebRecHit.detId());
848+
ebRecHitsEtaPhiMap[0]->Fill(ebid.ieta(), ebid.iphi());
849+
ebRecHits_energy_hist[0]->Fill(ebRecHit.energy());
850+
ebRecHits_time_hist[0]->Fill(ebRecHit.time());
851+
}
842852
}
843853

844-
edm::Handle<Run3ScoutingEERecHitCollection> eeRecHitsH;
845-
if (!eeRecHitsToken_.isUninitialized() && getValidHandle(iEvent, eeRecHitsToken_, eeRecHitsH, "pfRecHitsEE")) {
846-
eeRecHitsNumber->Fill(eeRecHitsH->size());
854+
edm::Handle<Run3ScoutingEERecHitCollection> eeRecHitsH;
855+
if (!eeRecHitsToken_.isUninitialized() && getValidHandle(iEvent, eeRecHitsToken_, eeRecHitsH, "pfRecHitsEE")) {
856+
eeRecHitsNumber_hist[0]->Fill(eeRecHitsH->size());
847857
for (const auto& eeRecHit : *eeRecHitsH) {
848-
eeRecHits_energy_hist->Fill(eeRecHit.energy());
849-
eeRecHits_time_hist->Fill(eeRecHit.time());
858+
EEDetId eeid(eeRecHit.detId());
859+
if (eeid.zside() > 0) {
860+
eePlusRecHitsXYMap[0]->Fill(eeid.ix(), eeid.iy());
861+
} else {
862+
eeMinusRecHitsXYMap[0]->Fill(eeid.ix(), eeid.iy());
863+
}
864+
eeRecHits_energy_hist[0]->Fill(eeRecHit.energy());
865+
eeRecHits_time_hist[0]->Fill(eeRecHit.time());
850866
}
851-
}
867+
}
852868

853-
edm::Handle<Run3ScoutingHBHERecHitCollection> hbheRecHitsH;
854-
if (!hbheRecHitsToken_.isUninitialized() && getValidHandle(iEvent, hbheRecHitsToken_, hbheRecHitsH, "pfRecHitsHBHE")) {
855-
hbheRecHitsNumber->Fill(hbheRecHitsH->size());
856-
for (const auto& hbheRecHit : *hbheRecHitsH) {
857-
hbheRecHits_energy_hist->Fill(hbheRecHit.energy());
869+
// cleaned calo rechits histograms
870+
edm::Handle<Run3ScoutingEBRecHitCollection> ebRecHitsCleanedH;
871+
if (!ebCleanedRecHitsToken_.isUninitialized() &&
872+
getValidHandle(iEvent, ebCleanedRecHitsToken_, ebRecHitsCleanedH, "pfCleanedRecHitsEB")) {
873+
ebRecHitsNumber_hist[1]->Fill(ebRecHitsCleanedH->size());
874+
for (const auto& ebRecHit : *ebRecHitsCleanedH) {
875+
EBDetId ebid(ebRecHit.detId());
876+
ebRecHitsEtaPhiMap[1]->Fill(ebid.ieta(), ebid.iphi());
877+
ebRecHits_energy_hist[1]->Fill(ebRecHit.energy());
878+
ebRecHits_time_hist[1]->Fill(ebRecHit.time());
858879
}
859-
}
880+
}
860881

882+
edm::Handle<Run3ScoutingEERecHitCollection> eeRecHitsCleanedH;
883+
if (!eeCleanedRecHitsToken_.isUninitialized() &&
884+
getValidHandle(iEvent, eeCleanedRecHitsToken_, eeRecHitsCleanedH, "pfCleanedRecHitsEE")) {
885+
eeRecHitsNumber_hist[1]->Fill(eeRecHitsCleanedH->size());
886+
for (const auto& eeRecHit : *eeRecHitsCleanedH) {
887+
EEDetId eeid(eeRecHit.detId());
888+
if (eeid.zside() > 0) {
889+
eePlusRecHitsXYMap[1]->Fill(eeid.ix(), eeid.iy());
890+
} else {
891+
eeMinusRecHitsXYMap[1]->Fill(eeid.ix(), eeid.iy());
892+
}
893+
eeRecHits_energy_hist[1]->Fill(eeRecHit.energy());
894+
eeRecHits_time_hist[1]->Fill(eeRecHit.time());
895+
}
896+
}
861897

898+
edm::Handle<Run3ScoutingHBHERecHitCollection> hbheRecHitsH;
899+
if (!hbheRecHitsToken_.isUninitialized() &&
900+
getValidHandle(iEvent, hbheRecHitsToken_, hbheRecHitsH, "pfRecHitsHBHE")) {
901+
hbheRecHitsNumber_hist->Fill(hbheRecHitsH->size());
902+
for (const auto& hbheRecHit : *hbheRecHitsH) {
903+
hbheRecHits_energy_hist->Fill(hbheRecHit.energy());
904+
HcalDetId hcalid(hbheRecHit.detId());
905+
hbheRecHitsEtaPhiMap->Fill(hcalid.ieta(), hcalid.iphi());
906+
}
907+
}
862908
}
863909

864910
// ------------ method called once each job just before starting event loop ------------
@@ -1266,16 +1312,84 @@ void ScoutingCollectionMonitor::bookHistograms(DQMStore::IBooker& ibook,
12661312
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);
12671313
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);
12681314

1269-
ibook.setCurrentFolder(topfoldername_ + "/CaloRecHits");
1270-
ebRecHitsNumber = ibook.book1D("ebRechitsN", "Number of eb RecHits; number of EB recHits; Entries", 100, 0.0, 1000.0);
1271-
ebRecHits_energy_hist = ibook.book1D("ebRechits_energy", "Energy spectrum of eb RecHits; Energy of EB recHits (Gev); Entries", 100, 0.0, 500.0);
1272-
ebRecHits_time_hist = ibook.book1D("ebRechits_time", "Time of eb RecHits; Energy of EB recHits (ps); Entries", 100, 0.0, 1000.0);
1273-
eeRecHitsNumber = ibook.book1D("eeRechitsN", "Number of ee RecHits; number of EE recHits; Entries", 100, 0.0, 1000.0);
1274-
eeRecHits_energy_hist = ibook.book1D("eeRechits_energy", "Energy spectrum of ee RecHits; Energy of EE recHits (GeV); Entries", 100, 0.0, 1000.0);
1275-
eeRecHits_time_hist = ibook.book1D("eeRechits_time", "Time of ee RecHits; Time of EE recHits (ps); Entries", 100, 0.0, 1000.0);
1276-
hbheRecHitsNumber =
1315+
// book the calo rechits histograms
1316+
const std::array<std::string, 2> caloLabels = {{"All", "Cleaned"}};
1317+
const std::array<std::string, 2> caloSuffixes = {{"", "_clean"}};
1318+
for (int i = 0; i < 2; ++i) {
1319+
ibook.setCurrentFolder(topfoldername_ + "/CaloRecHits" + caloLabels[i]);
1320+
1321+
const std::string& lbl = caloLabels[i];
1322+
const std::string& sfx = caloSuffixes[i];
1323+
1324+
ebRecHitsNumber_hist[i] = ibook.book1D(
1325+
"ebRechitsN" + sfx, "Number of EB RecHits (" + lbl + "); number of EB recHits; Entries", 100, 0.0, 1000.0);
1326+
1327+
ebRecHits_energy_hist[i] =
1328+
ibook.book1D("ebRechits_energy" + sfx,
1329+
"Energy spectrum of EB RecHits (" + lbl + "); Energy of EB recHits (Gev); Entries",
1330+
100,
1331+
0.0,
1332+
500.0);
1333+
1334+
ebRecHits_time_hist[i] = ibook.book1D("ebRechits_time" + sfx,
1335+
"Time of EB RecHits (" + lbl + "); Energy of EB recHits (ps); Entries",
1336+
100,
1337+
0.0,
1338+
1000.0);
1339+
eeRecHitsNumber_hist[i] = ibook.book1D(
1340+
"eeRechitsN" + sfx, "Number of EE RecHits (" + lbl + "); number of EE recHits; Entries", 100, 0.0, 1000.0);
1341+
eeRecHits_energy_hist[i] =
1342+
ibook.book1D("eeRechits_energy" + sfx,
1343+
"Energy spectrum of EE RecHits (" + lbl + "); Energy of EE recHits (GeV); Entries",
1344+
100,
1345+
0.0,
1346+
1000.0);
1347+
eeRecHits_time_hist[i] = ibook.book1D(
1348+
"eeRechits_time" + sfx, "Time of EE RecHits (" + lbl + "); Time of EE recHits (ps); Entries", 100, 0.0, 1000.0);
1349+
1350+
ebRecHitsEtaPhiMap[i] = ibook.book2D("ebRecHitsEtaPhitMap" + sfx,
1351+
"Occupancy map of EB rechit (" + lbl + ");ieta;iphi;Entries",
1352+
171,
1353+
-85.5,
1354+
85.5,
1355+
361,
1356+
0.,
1357+
361);
1358+
1359+
ebRecHitsEtaPhiMap[i]->setOption("colz");
1360+
1361+
eePlusRecHitsXYMap[i] = ibook.book2D("eePlusRecHitsEtaPhitMap" + sfx,
1362+
"Occupancy map of EE+ rechit (" + lbl + ");ix;iy;Entries",
1363+
100,
1364+
1,
1365+
101,
1366+
100,
1367+
1,
1368+
101);
1369+
1370+
eePlusRecHitsXYMap[i]->setOption("colz");
1371+
1372+
eeMinusRecHitsXYMap[i] = ibook.book2D("eeMinusRecHitsEtaPhitMap" + sfx,
1373+
"Occupancy map of EE- rechit (" + lbl + ");ix;iy;Entries",
1374+
100,
1375+
1,
1376+
101,
1377+
100,
1378+
1,
1379+
101);
1380+
1381+
eeMinusRecHitsXYMap[i]->setOption("colz");
1382+
}
1383+
1384+
ibook.setCurrentFolder(topfoldername_ + "/CaloRecHitsAll");
1385+
hbheRecHitsNumber_hist =
12771386
ibook.book1D("hbheRechitsN", "number of hbhe RecHits; Number of HBHE recHits; Entries", 100, 0.0, 2000.0);
1278-
hbheRecHits_energy_hist = ibook.book1D("hbheRechits_energy", "Energy spectrum of hbhe RecHits; Energy of HBHE recHits (GeV); Entries", 100, 0.0, 200.0);
1387+
hbheRecHits_energy_hist = ibook.book1D(
1388+
"hbheRechits_energy", "Energy spectrum of hbhe RecHits; Energy of HBHE recHits (GeV); Entries", 100, 0.0, 200.0);
1389+
1390+
hbheRecHitsEtaPhiMap = ibook.book2D(
1391+
"hbheRecHitsEtaPhitMap", "Occupancy map of HBHE rechit;ieta;iphi;Entries", 61, -30.5, 30.5, 74, -0.5, 73.5);
1392+
hbheRecHitsEtaPhiMap->setOption("colz");
12791393
}
12801394
// ------------ method fills 'descriptions' with the allowed parameters for the module ------------
12811395

@@ -1296,9 +1410,11 @@ void ScoutingCollectionMonitor::fillDescriptions(edm::ConfigurationDescriptions&
12961410
desc.add<edm::InputTag>("pfMetPhi", edm::InputTag("hltScoutingPFPacker", "pfMetPhi"));
12971411
desc.add<edm::InputTag>("rho", edm::InputTag("hltScoutingPFPacker", "rho"));
12981412
desc.add<edm::InputTag>("onlineMetaDataDigis", edm::InputTag("onlineMetaDataDigis"));
1299-
desc.add<edm::InputTag>("pfRecHitsEB", edm::InputTag("hltScoutingRecHitPacker","EB"));
1300-
desc.add<edm::InputTag>("pfRecHitsEE", edm::InputTag("hltScoutingRecHitPacker","EE"));
1301-
desc.add<edm::InputTag>("pfRecHitsHBHE", edm::InputTag("hltScoutingRecHitPacker","HBHE"));
1413+
desc.add<edm::InputTag>("pfRecHitsEB", edm::InputTag("hltScoutingRecHitPacker", "EB"));
1414+
desc.add<edm::InputTag>("pfRecHitsEE", edm::InputTag("hltScoutingRecHitPacker", "EE"));
1415+
desc.add<edm::InputTag>("pfRecHitsHBHE", edm::InputTag("hltScoutingRecHitPacker", "HBHE"));
1416+
desc.add<edm::InputTag>("pfCleanedRecHitsEB", edm::InputTag("hltScoutingRecHitPacker", "EBCleaned"));
1417+
desc.add<edm::InputTag>("pfCleanedRecHitsEE", edm::InputTag("hltScoutingRecHitPacker", "EECleaned"));
13021418
desc.add<std::string>("topfoldername", "HLT/ScoutingOffline/Miscellaneous");
13031419
descriptions.addWithDefaultLabel(desc);
13041420
}

DQM/HLTEvF/python/ScoutingCollectionMonitor_cfi.py

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,8 @@
22
from DQMServices.Core.DQMEDAnalyzer import DQMEDAnalyzer
33

44
scoutingCollectionMonitor = DQMEDAnalyzer('ScoutingCollectionMonitor',
5-
onlyScouting = cms.bool(False),
5+
topfoldername = cms.string("HLT/ScoutingOffline/Miscellaneous"),
6+
onlyScouting = cms.bool(False),
67
onlineMetaDataDigis = cms.InputTag("onlineMetaDataDigis"),
78
muons = cms.InputTag("hltScoutingMuonPackerNoVtx"),
89
muonsVtx = cms.InputTag("hltScoutingMuonPackerVtx"),
@@ -17,8 +18,9 @@
1718
pfMetPt = cms.InputTag("hltScoutingPFPacker","pfMetPt"),
1819
pfMetPhi = cms.InputTag("hltScoutingPFPacker","pfMetPhi"),
1920
rho = cms.InputTag("hltScoutingPFPacker","rho"),
20-
topfoldername = cms.string("HLT/ScoutingOffline/Miscellaneous"),
2121
pfRecHitsEB = cms.InputTag("hltScoutingRecHitPacker", "EB"),
2222
pfRecHitsEE = cms.InputTag("hltScoutingRecHitPacker", "EE"),
23+
pfCleanedRecHitsEB = cms.InputTag("hltScoutingRecHitPacker", "EBCleaned"),
24+
pfCleanedRecHitsEE = cms.InputTag("hltScoutingRecHitPacker", "EECleaned"),
2325
pfRecHitsHBHE = cms.InputTag("hltScoutingRecHitPacker", "HBHE"))
2426

0 commit comments

Comments
 (0)