Skip to content

Commit 2efc2d6

Browse files
authored
Merge branch 'EF_dqm_CMSSW1502' into dev_15_0_X-ScoutingDQM
2 parents ef1b6d8 + 53f6025 commit 2efc2d6

24 files changed

+2570
-5
lines changed

DQMOffline/Configuration/python/DQMOffline_SecondStep_cff.py

Lines changed: 3 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,8 @@
267268

268269
DQMHarvestBTag = cms.Sequence( bTagCollectorSequenceDATA )
269270

271+
DQMHarvestHLTScouting = cms.Sequence( hltScoutingPostProcessing )
272+
270273
from PhysicsTools.NanoAOD.nanoDQM_cff import *
271274
from Validation.RecoParticleFlow.DQMForPF_MiniAOD_cff import *
272275
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: 18 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,13 +2,22 @@
22
'PostDQMOffline',
33
'DQMMessageLoggerClientSeq'],
44

5-
'commonReduced': ['@dcs+@DQMMessageLogger+@hlt+@beam+@castor+@physics',
5+
'commonReduced': ['@dcs+@DQMMessageLogger+@hlt+@beam+@castor+@physics',
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'],
16+
17+
'commonWithScouting': ['@dcs+@DQMMessageLogger+@stripCommon+@pixel+@tracking+@hlt+@beam+@castor+@physics+@hltScouting',
18+
'PostDQMOffline',
19+
'@dcs+@DQMMessageLogger+@stripCommon+@pixel+@tracking+@hlt+@beam+@fed+dqmFastTimerServiceClient'],
20+
1221

1322
'commonFakeHLT': ['@dcs+@DQMMessageLogger+@stripCommon+@pixel+@tracking+@beam+@castor+@physics',
1423
'PostDQMOffline',
@@ -141,7 +150,7 @@
141150
'physics': ['DQMOfflinePhysics',
142151
'PostDQMOffline',
143152
'DQMNone'],
144-
153+
145154
'heavyFlavor': ['DQMOfflineHeavyFlavor',
146155
'PostDQMOffline',
147156
'DQMNone'],
@@ -219,6 +228,10 @@
219228
'PostDQMOffline',
220229
'dqmHarvesting'],
221230

231+
'hltScouting': ['DQMOfflineScouting',
232+
'PostDQMOffline',
233+
'DQMHarvestHLTScouting'],
234+
222235
'standardDQMExpress': ['DQMOfflineExpress',
223236
'PostDQMOffline',
224237
'dqmHarvestingExpress'],
Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
<use name="FWCore/Framework"/>
2+
<use name="FWCore/Utilities"/>
3+
<use name="DQMServices/Core"/>
4+
<use name="FWCore/PluginManager"/>
5+
<use name="MagneticField/Engine"/>
6+
<use name="MagneticField/Records"/>
7+
<use name="Geometry/CaloGeometry"/>
8+
<use name="Geometry/CSCGeometry"/>
9+
<use name="Geometry/HcalTowerAlgo"/>
10+
<use name="HLTrigger/HLTcore"/>
11+
<use name="HLTriggerOffline/Scouting"/>
12+
<use name="DataFormats/JetReco"/>
13+
<use name="DataFormats/METReco"/>
14+
<use name="DataFormats/CaloTowers"/>
15+
<use name="DataFormats/HcalRecHit"/>
16+
<use name="DataFormats/HcalDetId"/>
17+
<use name="DataFormats/EgammaReco"/>
18+
<use name="DataFormats/EgammaCandidates"/>
19+
<use name="DataFormats/CSCRecHit"/>
20+
<use name="DataFormats/EcalDetId"/>
21+
<use name="DataFormats/DetId"/>
22+
<use name="DataFormats/RecoCandidate"/>
23+
<use name="DataFormats/MuonReco"/>
24+
<use name="DataFormats/FEDRawData"/>
25+
<use name="RecoJets/JetProducers"/>
26+
<use name="RecoJets/JetAssociationAlgorithms"/>
27+
<use name="RecoMuon/TrackingTools"/>
28+
<use name="TrackingTools/TransientTrack"/>
29+
<use name="TrackingTools/Records"/>
30+
<use name="DataFormats/TrackReco"/>
31+
<use name="DataFormats/Common"/>
32+
<use name="DataFormats/Math"/>
33+
<use name="DataFormats/CSCDigi"/>
34+
<use name="DataFormats/CSCRecHit"/>
35+
<use name="DataFormats/DTRecHit"/>
36+
<use name="DataFormats/PatCandidates"/>
37+
<use name="DataFormats/TrackingRecHit"/>
38+
<use name="DataFormats/TrackerRecHit2D"/>
39+
<use name="DataFormats/SiStripCluster"/>
40+
<use name="DataFormats/SiStripDetId"/>
41+
<use name="CalibFormats/SiStripObjects"/>
42+
<use name="CondFormats/SiStripObjects"/>
43+
<use name="CondFormats/DTObjects"/>
44+
<use name="CalibTracker/Records"/>
45+
<use name="CondFormats/DataRecord"/>
46+
<use name="CommonTools/TriggerUtils"/>
47+
<use name="JetMETCorrections/JetCorrector"/>
48+
<use name="EventFilter/CSCRawToDigi"/>
49+
<flags EDM_PLUGIN="1"/>
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
# ------------------------------------------- #
2+
# Scouting DQM sequence for offline DQM #
3+
# #
4+
# used by DQM GUI: DQMOffline/Configuration #
5+
# ------------------------------------------- #
6+
import FWCore.ParameterSet.Config as cms
7+
from DQMServices.Core.DQMEDHarvester import DQMEDHarvester
8+
9+
import FWCore.ParameterSet.Config as cms
10+
from DQMServices.Core.DQMEDHarvester import DQMEDHarvester
11+
12+
from HLTriggerOffline.Scouting.ScoutingMuonTriggerAnalyzer_cfi import *
13+
from HLTriggerOffline.Scouting.ScoutingMuonTagProbeAnalyzer_cfi import *
14+
from HLTriggerOffline.Scouting.ScoutingMuonMonitoring_Client_cff import *
15+
16+
from HLTriggerOffline.Scouting.HLTScoutingEGammaDqmOffline_cff import *
17+
18+
hltScoutingMuonDqmOffline = cms.Sequence(scoutingMonitoringTagProbeMuonNoVtx
19+
* scoutingMonitoringTagProbeMuonVtx
20+
* scoutingMonitoringTriggerMuon
21+
)
22+
23+
hltScoutingDqmOffline = cms.Sequence(hltScoutingMuonDqmOffline + hltScoutingEGammaDqmOffline)
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
import FWCore.ParameterSet.Config as cms
2+
from DQMServices.Core.DQMEDHarvester import DQMEDHarvester
3+
from DQMOffline.HLTScouting.HLTScoutingDqmOffline_cff import *
4+
from HLTriggerOffline.Scouting.ScoutingMuonMonitoring_Client_cff import *
5+
from HLTriggerOffline.Scouting.HLTScoutingEGammaPostProcessing_cff import *
6+
7+
hltScoutingMuonPostProcessing = cms.Sequence(muonEfficiencyNoVtx
8+
* muonEfficiencyVtx
9+
* muonTriggerEfficiency
10+
)
11+
12+
hltScoutingPostProcessing = cms.Sequence(hltScoutingMuonPostProcessing + hltScoutingEGammaPostProcessing)
Lines changed: 96 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,96 @@
1+
#include "ElectronEfficiencyPlotter.h"
2+
3+
// Framework
4+
#include <FWCore/Framework/interface/Event.h>
5+
#include "DataFormats/Common/interface/Handle.h"
6+
#include <FWCore/Framework/interface/ESHandle.h>
7+
#include <FWCore/Framework/interface/MakerMacros.h>
8+
#include <FWCore/Framework/interface/EventSetup.h>
9+
#include <FWCore/ParameterSet/interface/ParameterSet.h>
10+
11+
#include "DQMServices/Core/interface/DQMStore.h"
12+
#include "FWCore/MessageLogger/interface/MessageLogger.h"
13+
#include "FWCore/Framework/interface/Run.h"
14+
15+
#include <iostream>
16+
#include <cstdio>
17+
#include <string>
18+
#include <cmath>
19+
#include "TF1.h"
20+
#include "TH1F.h"
21+
22+
using namespace edm;
23+
using namespace std;
24+
25+
ElectronEfficiencyPlotter::ElectronEfficiencyPlotter(const edm::ParameterSet &ps) {
26+
parameters = ps;
27+
28+
ptBin = parameters.getParameter<int>("ptBin");
29+
ptMin = parameters.getParameter<double>("ptMin");
30+
ptMax = parameters.getParameter<double>("ptMax");
31+
32+
ID_ = parameters.getParameter<string>("sctElectronID");
33+
theFolder_ = parameters.getParameter<string>("folder");
34+
sourceFolder_ = parameters.getParameter<string>("srcFolder");
35+
}
36+
37+
ElectronEfficiencyPlotter::~ElectronEfficiencyPlotter() {}
38+
39+
void ElectronEfficiencyPlotter::dqmEndJob(DQMStore::IBooker &ibooker, DQMStore::IGetter &igetter) {
40+
ibooker.setCurrentFolder(theFolder_);
41+
42+
h_eff_pt_EB_ID = ibooker.book1D("Eff_pt_barrel_" + ID_, ID_ + "Eff. vs Pt (barrel)", ptBin, ptMin, ptMax);
43+
h_eff_pt_EE_ID = ibooker.book1D("Eff_pt_endcap_" + ID_, ID_ + "Eff. vs Pt (endcap)", ptBin, ptMin, ptMax);
44+
h_eff_pt_EB_HLT = ibooker.book1D("Eff_pt_barrel_DSTdoubleEG", "DSTdoubleEG Eff. vs Pt (barrel)", ptBin, ptMin, ptMax);
45+
h_eff_pt_EE_HLT = ibooker.book1D("Eff_pt_endcap_DSTdoubleEG", "DSTdoubleEG Eff. vs Pt (endcap)", ptBin, ptMin, ptMax);
46+
47+
// Prevent the ME to be normalized when drawn into the GUI
48+
// h_eff_pt_EB_ID->setEfficiencyFlag();
49+
// h_eff_pt_EE_ID->setEfficiencyFlag();
50+
51+
// Axis title
52+
h_eff_pt_EB_ID->setAxisTitle("p_{T} (GeV)", 1);
53+
h_eff_pt_EE_ID->setAxisTitle("p_{T} (GeV)", 1);
54+
h_eff_pt_EB_HLT->setAxisTitle("p_{T} (GeV)", 1);
55+
h_eff_pt_EE_HLT->setAxisTitle("p_{T} (GeV)", 1);
56+
57+
MonitorElement *Numerator_pt_barrel = igetter.get(sourceFolder_ + "/resonanceAll_Probe_sctElectron_Pt_Barrel_passID");
58+
MonitorElement *Numerator_pt_endcap = igetter.get(sourceFolder_ + "/resonanceAll_Probe_sctElectron_Pt_Endcap_passID");
59+
MonitorElement *Numerator_pt_barrel_hlt =
60+
igetter.get(sourceFolder_ + "/resonanceAll_Probe_sctElectron_Pt_Barrel_passDSTdoubleEG");
61+
MonitorElement *Numerator_pt_endcap_hlt =
62+
igetter.get(sourceFolder_ + "/resonanceAll_Probe_sctElectron_Pt_Endcap_passDSTdoubleEG");
63+
MonitorElement *Denominator_pt_barrel = igetter.get(sourceFolder_ + "/resonanceAll_Probe_sctElectron_Pt_Barrel");
64+
MonitorElement *Denominator_pt_endcap = igetter.get(sourceFolder_ + "/resonanceAll_Probe_sctElectron_Pt_Endcap");
65+
66+
if (Numerator_pt_barrel && Denominator_pt_barrel)
67+
GetEfficiency(Numerator_pt_barrel, Denominator_pt_barrel, h_eff_pt_EB_ID);
68+
if (Numerator_pt_endcap && Denominator_pt_endcap)
69+
GetEfficiency(Numerator_pt_endcap, Denominator_pt_endcap, h_eff_pt_EE_ID);
70+
if (Numerator_pt_barrel_hlt && Denominator_pt_barrel)
71+
GetEfficiency(Numerator_pt_barrel_hlt, Denominator_pt_barrel, h_eff_pt_EB_HLT);
72+
if (Numerator_pt_endcap_hlt && Denominator_pt_endcap)
73+
GetEfficiency(Numerator_pt_endcap_hlt, Denominator_pt_endcap, h_eff_pt_EE_HLT);
74+
}
75+
76+
void ElectronEfficiencyPlotter::GetEfficiency(MonitorElement *Numerator,
77+
MonitorElement *Denominator,
78+
MonitorElement *Efficiency) {
79+
TH1F *h_numerator_pt = Numerator->getTH1F();
80+
TH1F *h_denominator_pt = Denominator->getTH1F();
81+
TH1F *h_eff_pt = Efficiency->getTH1F();
82+
if (h_eff_pt->GetSumw2N() == 0)
83+
h_eff_pt->Sumw2();
84+
85+
// ReBin
86+
int nBins = h_eff_pt->GetNbinsX();
87+
double *binEdges = new double[nBins + 1];
88+
for (int i = 0; i <= nBins; i++)
89+
binEdges[i] = h_eff_pt->GetBinLowEdge(i + 1);
90+
91+
TH1F *h_numerator_pt_rebin = (TH1F *)h_numerator_pt->Rebin(nBins, "num_pt_rebinned", binEdges);
92+
TH1F *h_denominator_pt_rebin = (TH1F *)h_denominator_pt->Rebin(nBins, "num_pt_rebinned", binEdges);
93+
h_eff_pt->Divide(h_numerator_pt_rebin, h_denominator_pt_rebin, 1., 1., "B");
94+
}
95+
96+
DEFINE_FWK_MODULE(ElectronEfficiencyPlotter);
Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,60 @@
1+
#ifndef ElectronEfficiencyPlotter_H
2+
#define ElectronEfficiencyPlotter_H
3+
4+
#include "FWCore/Framework/interface/Frameworkfwd.h"
5+
#include "DQMServices/Core/interface/DQMEDHarvester.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/MakerMacros.h>
10+
#include "FWCore/ParameterSet/interface/ParameterSet.h"
11+
#include <FWCore/Framework/interface/LuminosityBlock.h>
12+
13+
#include "DQMServices/Core/interface/DQMStore.h"
14+
#include "FWCore/ServiceRegistry/interface/Service.h"
15+
#include "FWCore/Framework/interface/Run.h"
16+
17+
#include <memory>
18+
#include <iostream>
19+
#include <string>
20+
#include <vector>
21+
#include <map>
22+
#include "TH1F.h"
23+
24+
class ElectronEfficiencyPlotter : public DQMEDHarvester {
25+
public:
26+
// Constructor
27+
ElectronEfficiencyPlotter(const edm::ParameterSet& ps);
28+
// Destructor
29+
~ElectronEfficiencyPlotter() override;
30+
31+
protected:
32+
// DQM Client Diagnostic
33+
void dqmEndJob(DQMStore::IBooker&, DQMStore::IGetter&) override;
34+
35+
private:
36+
// counters
37+
int nevents;
38+
unsigned int nLumiSegs;
39+
int prescaleFactor;
40+
int run;
41+
42+
edm::ParameterSet parameters;
43+
44+
int ptBin;
45+
double ptMin;
46+
double ptMax;
47+
48+
std::string ID_;
49+
50+
MonitorElement* h_eff_pt_EB_ID;
51+
MonitorElement* h_eff_pt_EE_ID;
52+
MonitorElement* h_eff_pt_EB_HLT;
53+
MonitorElement* h_eff_pt_EE_HLT;
54+
55+
std::string theFolder_;
56+
std::string sourceFolder_;
57+
void GetEfficiency(MonitorElement* Numerator, MonitorElement* Denominator, MonitorElement* Efficiency);
58+
};
59+
60+
#endif

0 commit comments

Comments
 (0)