Skip to content

Commit 53f6025

Browse files
authored
Merge pull request #5 from silviodonato/scoutingDqmEgmMuo
Merge MUO and EGM scouting DQM (solve conflicts)
2 parents 2289ea5 + bf2a4ee commit 53f6025

23 files changed

+2787
-336
lines changed

DQMOffline/Configuration/python/autoDQM.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,11 @@
1414
'PostDQMOffline',
1515
'@dcs+@DQMMessageLogger+@stripCommon+@pixel+@tracking+@hlt+@beam+@fed+dqmFastTimerServiceClient'],
1616

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+
21+
1722
'commonFakeHLT': ['@dcs+@DQMMessageLogger+@stripCommon+@pixel+@tracking+@beam+@castor+@physics',
1823
'PostDQMOffline',
1924
'@dcs+@DQMMessageLogger+@stripCommon+@pixel+@tracking+@beam+@fed+dqmFastTimerServiceClient'],

DQMOffline/HLTScouting/BuildFile.xml

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,6 @@
1010
<use name="HLTrigger/HLTcore"/>
1111
<use name="HLTriggerOffline/Scouting"/>
1212
<use name="DataFormats/JetReco"/>
13-
<use name="DataFormats/JetReco"/>
1413
<use name="DataFormats/METReco"/>
1514
<use name="DataFormats/CaloTowers"/>
1615
<use name="DataFormats/HcalRecHit"/>
@@ -42,8 +41,6 @@
4241
<use name="CalibFormats/SiStripObjects"/>
4342
<use name="CondFormats/SiStripObjects"/>
4443
<use name="CondFormats/DTObjects"/>
45-
<use name="CondFormats/CSCObjects"/>
46-
<use name="CondFormats/DataRecord"/>
4744
<use name="CalibTracker/Records"/>
4845
<use name="CondFormats/DataRecord"/>
4946
<use name="CommonTools/TriggerUtils"/>

DQMOffline/HLTScouting/python/HLTScoutingDqmOffline_cff.py

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -3,17 +3,21 @@
33
# #
44
# used by DQM GUI: DQMOffline/Configuration #
55
# ------------------------------------------- #
6-
76
import FWCore.ParameterSet.Config as cms
87
from DQMServices.Core.DQMEDHarvester import DQMEDHarvester
98

9+
import FWCore.ParameterSet.Config as cms
10+
from DQMServices.Core.DQMEDHarvester import DQMEDHarvester
11+
1012
from HLTriggerOffline.Scouting.ScoutingMuonTriggerAnalyzer_cfi import *
1113
from HLTriggerOffline.Scouting.ScoutingMuonTagProbeAnalyzer_cfi import *
1214
from HLTriggerOffline.Scouting.ScoutingMuonMonitoring_Client_cff import *
1315

14-
hltScoutingMuonDqmOffline = cms.Sequence(scoutingMonitoringTagProbeMuonNoVtx
15-
* scoutingMonitoringTagProbeMuonVtx
16-
* scoutingMonitoringTriggerMuon
17-
)
16+
from HLTriggerOffline.Scouting.HLTScoutingEGammaDqmOffline_cff import *
17+
18+
hltScoutingMuonDqmOffline = cms.Sequence(scoutingMonitoringTagProbeMuonNoVtx
19+
* scoutingMonitoringTagProbeMuonVtx
20+
* scoutingMonitoringTriggerMuon
21+
)
1822

19-
hltScoutingDqmOffline = cms.Sequence(hltScoutingMuonDqmOffline)
23+
hltScoutingDqmOffline = cms.Sequence(hltScoutingMuonDqmOffline + hltScoutingEGammaDqmOffline)

DQMOffline/HLTScouting/python/hltScoutingPostProcessing_cff.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,11 @@
22
from DQMServices.Core.DQMEDHarvester import DQMEDHarvester
33
from DQMOffline.HLTScouting.HLTScoutingDqmOffline_cff import *
44
from HLTriggerOffline.Scouting.ScoutingMuonMonitoring_Client_cff import *
5+
from HLTriggerOffline.Scouting.HLTScoutingEGammaPostProcessing_cff import *
56

67
hltScoutingMuonPostProcessing = cms.Sequence(muonEfficiencyNoVtx
78
* muonEfficiencyVtx
89
* muonTriggerEfficiency
910
)
1011

11-
hltScoutingPostProcessing = cms.Sequence(hltScoutingMuonPostProcessing)
12+
hltScoutingPostProcessing = cms.Sequence(hltScoutingMuonPostProcessing + hltScoutingEGammaPostProcessing)

HLTriggerOffline/Scouting/plugins/BuildFile.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,4 +11,4 @@
1111
<use name="TrackingTools/Records"/>
1212
<use name="HLTrigger/HLTcore"/>
1313
<use name="DataFormats/HLTReco"/>
14-
<flags EDM_PLUGIN="1"/>
14+
<flags EDM_PLUGIN="1"/>
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)