Skip to content

Commit 76f52bd

Browse files
committed
Merged EF_dqm_CMSSW1502 from repository elfontan with cms-merge-topic
2 parents e40866a + cbcad39 commit 76f52bd

32 files changed

+3881
-4
lines changed

DQMOffline/Configuration/python/DQMOffline_SecondStep_cff.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -84,6 +84,7 @@
8484
from DQM.TrackingMonitorClient.TrackingClientConfig_Tier0_cff import *
8585
from DQMOffline.Muon.muonQualityTests_cff import *
8686
from DQMOffline.EGamma.egammaPostProcessing_cff import *
87+
from DQMOffline.HLTScouting.HLTScoutingPostProcessing_cff import *
8788
from DQMOffline.Trigger.DQMOffline_Trigger_Client_cff import *
8889
from DQMOffline.Trigger.DQMOffline_HLT_Client_cff import *
8990
from DQMOffline.RecoB.dqmCollector_cff import *
@@ -267,6 +268,9 @@
267268

268269
DQMHarvestBTag = cms.Sequence( bTagCollectorSequenceDATA )
269270

271+
# HLT Scouting trigger sequence
272+
DQMHarvestHLTScouting = cms.Sequence( HLTScoutingPostProcessing )
273+
270274
from PhysicsTools.NanoAOD.nanoDQM_cff import *
271275
from Validation.RecoParticleFlow.DQMForPF_MiniAOD_cff import *
272276
from DQMOffline.RecoB.bTagMiniDQM_cff import *

DQMOffline/Configuration/python/DQMOffline_cff.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
from DQMServices.Components.DQMProvInfo_cfi import *
55
from DQMServices.Components.DQMFastTimerService_cff import *
66

7+
from DQMOffline.HLTScouting.HLTScoutingDqmOffline_cff import *
78
from DQMOffline.L1Trigger.L1TriggerDqmOffline_cff import *
89
from DQMOffline.Ecal.ecal_dqm_source_offline_cff import *
910
from DQM.EcalPreshowerMonitorModule.es_dqm_source_offline_cff import *
@@ -28,6 +29,9 @@
2829
dqmProvInfo.dcsRecord = cms.untracked.InputTag("onlineMetaDataDigis")
2930
DQMOfflineDCS = cms.Sequence( dqmProvInfo )
3031

32+
# HLT Scouting trigger sequence
33+
DQMOfflineScouting = cms.Sequence( hltScoutingDqmOffline )
34+
3135
# L1 trigger sequences
3236
DQMOfflineL1T = cms.Sequence( l1TriggerDqmOffline ) # L1 emulator is run within this sequence for real data
3337

DQMOffline/Configuration/python/autoDQM.py

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,13 @@
66
'PostDQMOffline',
77
'@dcs+@DQMMessageLogger+@hlt+@beam+@fed+dqmFastTimerServiceClient'],
88

9-
'common': ['@dcs+@DQMMessageLogger+@stripCommon+@pixel+@tracking+@hlt+@beam+@castor+@physics',
10-
'PostDQMOffline',
11-
'@dcs+@DQMMessageLogger+@stripCommon+@pixel+@tracking+@hlt+@beam+@fed+dqmFastTimerServiceClient'],
9+
'common': ['@dcs+@DQMMessageLogger+@stripCommon+@pixel+@tracking+@hlt+@beam+@castor+@physics',
10+
'PostDQMOffline',
11+
'@dcs+@DQMMessageLogger+@stripCommon+@pixel+@tracking+@hlt+@beam+@fed+dqmFastTimerServiceClient'],
12+
13+
'commonWithScouting': ['@dcs+@DQMMessageLogger+@stripCommon+@pixel+@tracking+@hlt+@beam+@castor+@physics+@hltScouting',
14+
'PostDQMOffline',
15+
'@dcs+@DQMMessageLogger+@stripCommon+@pixel+@tracking+@hlt+@beam+@fed+dqmFastTimerServiceClient'],
1216

1317
'commonFakeHLT': ['@dcs+@DQMMessageLogger+@stripCommon+@pixel+@tracking+@beam+@castor+@physics',
1418
'PostDQMOffline',
@@ -141,7 +145,7 @@
141145
'physics': ['DQMOfflinePhysics',
142146
'PostDQMOffline',
143147
'DQMNone'],
144-
148+
145149
'heavyFlavor': ['DQMOfflineHeavyFlavor',
146150
'PostDQMOffline',
147151
'DQMNone'],
@@ -219,6 +223,10 @@
219223
'PostDQMOffline',
220224
'dqmHarvesting'],
221225

226+
'hltScouting': ['DQMOfflineScouting',
227+
'PostDQMOffline',
228+
'DQMHarvestHLTScouting'],
229+
222230
'standardDQMExpress': ['DQMOfflineExpress',
223231
'PostDQMOffline',
224232
'dqmHarvestingExpress'],
Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
<use name="CalibFormats/SiStripObjects"/>
2+
<use name="CalibTracker/Records"/>
3+
<use name="CommonTools/TriggerUtils"/>
4+
<use name="CondFormats/DTObjects"/>
5+
<use name="CondFormats/DataRecord"/>
6+
<use name="CondFormats/SiStripObjects"/>
7+
<use name="DQMServices/Core"/>
8+
<use name="DataFormats/CaloTowers"/>
9+
<use name="DataFormats/CSCRecHit"/>
10+
<use name="DataFormats/CSCDigi"/>
11+
<use name="DataFormats/CSCRecHit"/>
12+
<use name="DataFormats/DTRecHit"/>
13+
<use name="DataFormats/DetId"/>
14+
<use name="DataFormats/EcalDetId"/>
15+
<use name="DataFormats/EgammaCandidates"/>
16+
<use name="DataFormats/EgammaReco"/>
17+
<use name="DataFormats/FEDRawData"/>
18+
<use name="DataFormats/HcalDetId"/>
19+
<use name="DataFormats/HcalRecHit"/>
20+
<use name="DataFormats/JetReco"/>
21+
<use name="DataFormats/METReco"/>
22+
<use name="DataFormats/Math"/>
23+
<use name="DataFormats/MuonReco"/>
24+
<use name="DataFormats/PatCandidates"/>
25+
<use name="DataFormats/RecoCandidate"/>
26+
<use name="DataFormats/SiStripCluster"/>
27+
<use name="DataFormats/SiStripDetId"/>
28+
<use name="DataFormats/TrackReco"/>
29+
<use name="DataFormats/TrackerRecHit2D"/>
30+
<use name="DataFormats/TrackingRecHit"/>
31+
<use name="EventFilter/CSCRawToDigi"/>
32+
<use name="FWCore/Framework"/>
33+
<use name="FWCore/PluginManager"/>
34+
<use name="FWCore/Utilities"/>
35+
<use name="Geometry/CaloGeometry"/>
36+
<use name="Geometry/CSCGeometry"/>
37+
<use name="Geometry/HcalTowerAlgo"/>
38+
<use name="HLTrigger/HLTcore"/>
39+
<use name="HLTriggerOffline/Scouting"/>
40+
<use name="JetMETCorrections/JetCorrector"/>
41+
<use name="MagneticField/Engine"/>
42+
<use name="MagneticField/Records"/>
43+
<use name="RecoJets/JetAssociationAlgorithms"/>
44+
<use name="RecoJets/JetProducers"/>
45+
<use name="RecoMuon/TrackingTools"/>
46+
<use name="TrackingTools/Records"/>
47+
<use name="TrackingTools/TransientTrack"/>
48+
<flags EDM_PLUGIN="1"/>
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
'''
2+
Scouting DQM sequences for offline DQM developed for 2025 pp data-taking
3+
and used by DQM GUI (DQMOffline/Configuration):
4+
currently running EGM and MUO monitoring modules.
5+
'''
6+
7+
import FWCore.ParameterSet.Config as cms
8+
from DQMServices.Core.DQMEDHarvester import DQMEDHarvester
9+
10+
from HLTriggerOffline.Scouting.ScoutingMuonTriggerAnalyzer_cfi import *
11+
from HLTriggerOffline.Scouting.ScoutingMuonTagProbeAnalyzer_cfi import *
12+
from HLTriggerOffline.Scouting.ScoutingMuonMonitoring_Client_cff import *
13+
14+
from HLTriggerOffline.Scouting.HLTScoutingEGammaDqmOffline_cff import *
15+
16+
hltScoutingMuonDqmOffline = cms.Sequence(scoutingMonitoringTagProbeMuonNoVtx
17+
* scoutingMonitoringTagProbeMuonVtx
18+
* scoutingMonitoringTriggerMuon
19+
)
20+
21+
hltScoutingDqmOffline = cms.Sequence(hltScoutingMuonDqmOffline + hltScoutingEGammaDqmOffline)
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
'''
2+
Scouting DQM sequences for offline DQM developed for 2025 pp data-taking
3+
and used by DQM GUI (DQMOffline/Configuration):
4+
currently running EGM and MUO monitoring modules.
5+
'''
6+
7+
import FWCore.ParameterSet.Config as cms
8+
from DQMServices.Core.DQMEDHarvester import DQMEDHarvester
9+
from DQMOffline.HLTScouting.HLTScoutingDqmOffline_cff import *
10+
11+
from HLTriggerOffline.Scouting.ScoutingMuonMonitoring_Client_cff import *
12+
from HLTriggerOffline.Scouting.HLTScoutingEGammaPostProcessing_cff import *
13+
14+
hltScoutingMuonPostProcessing = cms.Sequence(muonEfficiencyNoVtx
15+
* muonEfficiencyVtx
16+
* muonTriggerEfficiency
17+
)
18+
19+
hLTScoutingPostProcessing = cms.Sequence(hltScoutingMuonPostProcessing + hltScoutingEGammaPostProcessing)
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
<use name="FWCore/Framework"/>
2+
<use name="FWCore/PluginManager"/>
3+
<use name="FWCore/ParameterSet"/>
4+
<use name="DQMServices/Core"/>
5+
<use name="CLHEP"/>
6+
<use name="DataFormats/PatCandidates"/>
7+
<use name="DataFormats/Scouting"/>
8+
<use name="L1Trigger/L1TGlobal"/>
9+
<use name="DataFormats/L1TGlobal"/>
10+
<use name="FWCore/Utilities"/>
11+
<use name="TrackingTools/Records"/>
12+
<use name="HLTrigger/HLTcore"/>
13+
<use name="DataFormats/HLTReco"/>
14+
<flags EDM_PLUGIN="1"/>
Lines changed: 111 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,111 @@
1+
#include "ElectronEfficiencyPlotter.h"
2+
3+
// Framework
4+
#include <cmath>
5+
#include <string>
6+
7+
#include "DQMServices/Core/interface/DQMStore.h"
8+
#include "DataFormats/Common/interface/Handle.h"
9+
#include "FWCore/Framework/interface/ESHandle.h"
10+
#include "FWCore/Framework/interface/Event.h"
11+
#include "FWCore/Framework/interface/EventSetup.h"
12+
#include "FWCore/Framework/interface/MakerMacros.h"
13+
#include "FWCore/MessageLogger/interface/MessageLogger.h"
14+
#include "FWCore/ParameterSet/interface/ParameterSet.h"
15+
#include "TF1.h"
16+
#include "TH1F.h"
17+
18+
using namespace edm;
19+
using namespace std;
20+
21+
// Constructor
22+
ElectronEfficiencyPlotter::ElectronEfficiencyPlotter(
23+
const edm::ParameterSet &ps) {
24+
ptBin_ = ps.getParameter<int>("ptBin");
25+
ptMin_ = ps.getParameter<double>("ptMin");
26+
ptMax_ = ps.getParameter<double>("ptMax");
27+
28+
ID_ = ps.getParameter<string>("sctElectronID");
29+
theFolder_ = ps.getParameter<string>("folder");
30+
sourceFolder_ = ps.getParameter<string>("srcFolder");
31+
}
32+
33+
void ElectronEfficiencyPlotter::dqmEndJob(DQMStore::IBooker &ibooker,
34+
DQMStore::IGetter &igetter) {
35+
ibooker.setCurrentFolder(theFolder_);
36+
37+
h_eff_pt_EB_doubleEG_HLT =
38+
ibooker.book1D("Eff_pt_barrel_DSTdoubleEG",
39+
"DSTdoubleEG Eff. vs Pt (barrel)", ptBin_, ptMin_, ptMax_);
40+
h_eff_pt_EE_doubleEG_HLT =
41+
ibooker.book1D("Eff_pt_endcap_DSTdoubleEG",
42+
"DSTdoubleEG Eff. vs Pt (endcap)", ptBin_, ptMin_, ptMax_);
43+
h_eff_pt_EB_singlePhoton_HLT = ibooker.book1D(
44+
"Eff_pt_barrel_DSTsinglePhoton", "DSTsinglePhoton Eff. vs Pt (barrel)",
45+
ptBin_, ptMin_, ptMax_);
46+
h_eff_pt_EE_singlePhoton_HLT = ibooker.book1D(
47+
"Eff_pt_endcap_DSTsinglePhoton", "DSTsinglePhoton Eff. vs Pt (endcap)",
48+
ptBin_, ptMin_, ptMax_);
49+
50+
// Axis title
51+
h_eff_pt_EB_singlePhoton_HLT->setAxisTitle("p_{T} (GeV)", 1);
52+
h_eff_pt_EE_singlePhoton_HLT->setAxisTitle("p_{T} (GeV)", 1);
53+
h_eff_pt_EB_doubleEG_HLT->setAxisTitle("p_{T} (GeV)", 1);
54+
h_eff_pt_EE_doubleEG_HLT->setAxisTitle("p_{T} (GeV)", 1);
55+
56+
MonitorElement *Numerator_pt_barrel_doubleEG_hlt =
57+
igetter.get(sourceFolder_ +
58+
"/resonanceZ_Tag_pat_Probe_sctElectron_passDoubleEG_DST_"
59+
"fireTrigObj_Pt_Barrel");
60+
MonitorElement *Numerator_pt_endcap_doubleEG_hlt =
61+
igetter.get(sourceFolder_ +
62+
"/resonanceZ_Tag_pat_Probe_sctElectron_passDoubleEG_DST_"
63+
"fireTrigObj_Pt_Endcap");
64+
MonitorElement *Numerator_pt_barrel_singlePhoton_hlt =
65+
igetter.get(sourceFolder_ +
66+
"/resonanceZ_Tag_pat_Probe_sctElectron_passSinglePhoton_DST_"
67+
"fireTrigObj_Pt_Barrel");
68+
MonitorElement *Numerator_pt_endcap_singlePhoton_hlt =
69+
igetter.get(sourceFolder_ +
70+
"/resonanceZ_Tag_pat_Probe_sctElectron_passSinglePhoton_DST_"
71+
"fireTrigObj_Pt_Endcap");
72+
MonitorElement *Denominator_pt_barrel = igetter.get(
73+
sourceFolder_ + "/resonanceZ_Tag_pat_Probe_sctElectron_Pt_Barrel");
74+
MonitorElement *Denominator_pt_endcap = igetter.get(
75+
sourceFolder_ + "/resonanceZ_Tag_pat_Probe_sctElectron_Pt_Endcap");
76+
77+
if (Numerator_pt_barrel_doubleEG_hlt && Denominator_pt_barrel)
78+
calculateEfficiency(Numerator_pt_barrel_doubleEG_hlt, Denominator_pt_barrel,
79+
h_eff_pt_EB_doubleEG_HLT);
80+
if (Numerator_pt_endcap_doubleEG_hlt && Denominator_pt_endcap)
81+
calculateEfficiency(Numerator_pt_endcap_doubleEG_hlt, Denominator_pt_endcap,
82+
h_eff_pt_EE_doubleEG_HLT);
83+
if (Numerator_pt_barrel_singlePhoton_hlt && Denominator_pt_barrel)
84+
calculateEfficiency(Numerator_pt_barrel_singlePhoton_hlt,
85+
Denominator_pt_barrel, h_eff_pt_EB_singlePhoton_HLT);
86+
if (Numerator_pt_endcap_singlePhoton_hlt && Denominator_pt_endcap)
87+
calculateEfficiency(Numerator_pt_endcap_singlePhoton_hlt,
88+
Denominator_pt_endcap, h_eff_pt_EE_singlePhoton_HLT);
89+
}
90+
91+
void ElectronEfficiencyPlotter::calculateEfficiency(
92+
MonitorElement *Numerator, MonitorElement *Denominator,
93+
MonitorElement *Efficiency) {
94+
TH1F *h_numerator_pt = Numerator->getTH1F();
95+
TH1F *h_denominator_pt = Denominator->getTH1F();
96+
TH1F *h_eff_pt = Efficiency->getTH1F();
97+
if (h_eff_pt->GetSumw2N() == 0) h_eff_pt->Sumw2();
98+
99+
// ReBin
100+
int nBins = h_eff_pt->GetNbinsX();
101+
double *binEdges = new double[nBins + 1];
102+
for (int i = 0; i <= nBins; i++) binEdges[i] = h_eff_pt->GetBinLowEdge(i + 1);
103+
104+
TH1F *h_numerator_pt_rebin =
105+
(TH1F *)h_numerator_pt->Rebin(nBins, "num_pt_rebinned", binEdges);
106+
TH1F *h_denominator_pt_rebin =
107+
(TH1F *)h_denominator_pt->Rebin(nBins, "num_pt_rebinned", binEdges);
108+
h_eff_pt->Divide(h_numerator_pt_rebin, h_denominator_pt_rebin, 1., 1., "B");
109+
}
110+
111+
DEFINE_FWK_MODULE(ElectronEfficiencyPlotter);
Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
#ifndef HLTriggerOffline_Scouting_ElectronEfficiencyPlotter_H
2+
#define HLTriggerOffline_Scouting_ElectronEfficiencyPlotter_H
3+
4+
#include "DQMServices/Core/interface/DQMEDHarvester.h"
5+
#include "DQMServices/Core/interface/DQMStore.h"
6+
#include "DataFormats/Common/interface/Handle.h"
7+
#include "FWCore/Framework/interface/ESHandle.h"
8+
#include "FWCore/Framework/interface/Event.h"
9+
#include "FWCore/Framework/interface/Frameworkfwd.h"
10+
#include "FWCore/Framework/interface/LuminosityBlock.h"
11+
#include "FWCore/Framework/interface/MakerMacros.h"
12+
#include "FWCore/ParameterSet/interface/ParameterSet.h"
13+
#include "FWCore/ServiceRegistry/interface/Service.h"
14+
15+
class ElectronEfficiencyPlotter : public DQMEDHarvester {
16+
public:
17+
// Constructor
18+
ElectronEfficiencyPlotter(const edm::ParameterSet& ps);
19+
// Destructor
20+
~ElectronEfficiencyPlotter() override = default;
21+
22+
protected:
23+
// DQM Client Diagnostic
24+
void dqmEndJob(DQMStore::IBooker&, DQMStore::IGetter&) override;
25+
26+
private:
27+
// counters
28+
29+
int ptBin_;
30+
double ptMin_;
31+
double ptMax_;
32+
33+
std::string ID_;
34+
35+
MonitorElement* h_eff_pt_EB_doubleEG_HLT;
36+
MonitorElement* h_eff_pt_EE_doubleEG_HLT;
37+
MonitorElement* h_eff_pt_EB_singlePhoton_HLT;
38+
MonitorElement* h_eff_pt_EE_singlePhoton_HLT;
39+
40+
std::string theFolder_;
41+
std::string sourceFolder_;
42+
void calculateEfficiency(MonitorElement* Numerator,
43+
MonitorElement* Denominator,
44+
MonitorElement* Efficiency);
45+
};
46+
47+
#endif

0 commit comments

Comments
 (0)