1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
|
### Configuration Fragment Include for HLTExoticaValidator module.
### In this file we instantiate the HLTExoticaValidator, with
### some default configurations. The specific analyses are loaded
### as cms.PSets, which are then added to this module with
### specific names. The canonical example is
#
# from HLTriggerOffline.Exotica.hltExoticaHighPtDimuon_cff import HighPtDimuonPSet
#
# which is then made known to the module by the line
#
# analysis = cms.vstring("HighPtDimuon"),
#
import FWCore.ParameterSet.Config as cms
# Validation categories (sub-analyses)
from HLTriggerOffline.Exotica.analyses.hltExoticaLowPtTrimuon_cff import LowPtTrimuonPSet
from HLTriggerOffline.Exotica.analyses.hltExoticaHighPtDimuon_cff import HighPtDimuonPSet
from HLTriggerOffline.Exotica.analyses.hltExoticaHighPtDielectron_cff import HighPtDielectronPSet
from HLTriggerOffline.Exotica.analyses.hltExoticaLowPtDimuon_cff import LowPtDimuonPSet
from HLTriggerOffline.Exotica.analyses.hltExoticaLowPtDielectron_cff import LowPtDielectronPSet
from HLTriggerOffline.Exotica.analyses.hltExoticaHighPtElectron_cff import HighPtElectronPSet
from HLTriggerOffline.Exotica.analyses.hltExoticaLowPtElectron_cff import LowPtElectronPSet
from HLTriggerOffline.Exotica.analyses.hltExoticaHighPtPhoton_cff import HighPtPhotonPSet
from HLTriggerOffline.Exotica.analyses.hltExoticaDiPhoton_cff import DiPhotonPSet
from HLTriggerOffline.Exotica.analyses.hltExoticaDisplacedDiPhoton_cff import DisplacedDiPhotonPSet
from HLTriggerOffline.Exotica.analyses.hltExoticaPFHT_cff import PFHTPSet
from HLTriggerOffline.Exotica.analyses.hltExoticaCaloHT_cff import CaloHTPSet
from HLTriggerOffline.Exotica.analyses.hltExoticaJetNoBptx_cff import JetNoBptxPSet
from HLTriggerOffline.Exotica.analyses.hltExoticaMuonNoBptx_cff import MuonNoBptxPSet
from HLTriggerOffline.Exotica.analyses.hltExoticaDisplacedMuEG_cff import DisplacedMuEGPSet
from HLTriggerOffline.Exotica.analyses.hltExoticaDisplacedDimuon_cff import DisplacedDimuonPSet
from HLTriggerOffline.Exotica.analyses.hltExoticaDisplacedL2Dimuon_cff import DisplacedL2DimuonPSet
from HLTriggerOffline.Exotica.analyses.hltExoticaPureMET_cff import PureMETPSet
from HLTriggerOffline.Exotica.analyses.hltExoticaMETplusTrack_cff import METplusTrackPSet
from HLTriggerOffline.Exotica.analyses.hltExoticaMonojet_cff import MonojetPSet
from HLTriggerOffline.Exotica.analyses.hltExoticaMonojetBackup_cff import MonojetBackupPSet
from HLTriggerOffline.Exotica.analyses.hltExoticaEleMu_cff import EleMuPSet
from HLTriggerOffline.Exotica.analyses.hltExoticaHTDisplacedJets_cff import HTDisplacedJetsPSet
from HLTriggerOffline.Exotica.analyses.hltExoticaPhotonMET_cff import PhotonMETPSet
from HLTriggerOffline.Exotica.analyses.hltExoticaSingleMuon_cff import SingleMuonPSet
from HLTriggerOffline.Exotica.analyses.hltExoticaDSTJets_cff import DSTJetsPSet
from HLTriggerOffline.Exotica.analyses.hltExoticaDSTMuons_cff import DSTMuonsPSet
from HLTriggerOffline.Exotica.analyses.hltExoticaTracklessJets_cff import TracklessJetsPSet
from DQMServices.Core.DQMEDAnalyzer import DQMEDAnalyzer
hltExoticaValidator = DQMEDAnalyzer(
"HLTExoticaValidator",
hltProcessName = cms.string("HLT"),
# -- The name of the analysis. This is the name that
# appears in Run summary/Exotica/ANALYSIS_NAME
analyses = cms.vstring(
"LowPtTrimuon",
"HighPtDimuon",
"HighPtDielectron",
"LowPtDimuon",
"LowPtDielectron",
"HighPtElectron",
"LowPtElectron",
"HighPtPhoton",
"DiPhoton",
"DisplacedDiPhoton",
"SingleMuon",
"JetNoBptx",
"MuonNoBptx",
"PFHT",
"CaloHT",
"DisplacedMuEG",
"DisplacedDimuon",
"DisplacedL2Dimuon",
"PureMET",
"METplusTrack",
"Monojet",
"MonojetBackup",
"EleMu",
"PhotonMET",
"HTDisplacedJets",
"DSTJets",
"DSTMuons",
"TracklessJets"
),
# -- The instance name of the reco::GenParticles collection
genParticleLabel = cms.string("genParticles"),
# -- The instance name of the reco::BeamSpot collection
beamSpotLabel = cms.string("offlineBeamSpot"),
# -- The binning of the Pt efficiency plots
# NOTICE: these DEFINITELY should be tuned for the different analyses.
# What we have there is a generic, 0-100 GeV uniform binning.
parametersTurnOn = cms.vdouble( 0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20,
22, 24, 26, 28, 30, 32, 34, 36, 38, 40,
42, 44, 46, 48, 50, 52, 54, 56, 58, 60,
62, 64, 66, 68, 70, 72, 74, 76, 78, 80,
82, 84, 86, 88, 90, 92, 94, 96, 98, 100,
),
# TurnOn for SumEt
parametersTurnOnSumEt = cms.vdouble( 0, 100, 200, 300, 400, 500, 600, 700, 800, 900,
1000, 1100, 1200, 1300, 1400, 1500, 1600, 1700, 1800, 1900,
2000, 2100, 2200, 2300, 2400, 2500, 2600, 2700, 2800, 2900,
3000, 3100, 3200, 3300, 3400, 3500, 3600, 3700, 3800, 3900,
4000, 4100, 4200, 4300, 4400, 4500, 4600, 4700, 4800, 4900,
5000, 5100, 5200, 5300, 5400, 5500, 5600, 5700, 5800, 5900,
6000, 6100, 6200, 6300, 6400, 6500, 6600, 6700, 6800, 6900,
7000
),
# -- (NBins, minVal, maxValue) for the Eta and Phi efficiency plots
parametersEta = cms.vdouble(48, -2.400, 2.400),
parametersPhi = cms.vdouble(50, -3.142, 3.142),
parametersDxy = cms.vdouble(50, -0.015, 0.015),
# Definition of generic cuts on generated and reconstructed objects (note that
# these cuts can be overloaded inside a particular analysis)
# Objects recognized: Mu Ele Photon PFTau Jet MET => recognized by the method EVTColContainer::getTypeString
# Syntax in the strings: valid syntax of the StringCutObjectSelector class
# --- Muons
Mu_genCut = cms.string("pt > 10 && abs(eta) < 2.4 && abs(pdgId) == 13 && (isPromptFinalState || isDirectPromptTauDecayProductFinalState)"),
Mu_recCut = cms.string("pt > 10 && abs(eta) < 2.4 && isPFMuon && (isTrackerMuon || isGlobalMuon)"), # Loose Muon
# --- MuonTracks
#refittedStandAloneMuons_genCut = cms.string("pt > 10 && abs(eta) < 2.4 && abs(pdgId) == 13 && status == 1"),
refittedStandAloneMuons_genCut = cms.string("pt > 10 && abs(eta) < 2.4"),
#refittedStandAloneMuons_recCut = cms.string("pt > 10 && abs(eta) < 2.4 && isPFMuon && (isTrackerMuon || isGlobalMuon)"), # Loose Muon
refittedStandAloneMuons_recCut = cms.string("pt > 10 && abs(eta) < 2.4"),
# --- Electrons
Ele_genCut = cms.string("pt > 10 && (abs(eta)<1.444 || abs(eta)>1.566) && abs(eta)<2.5 && abs(pdgId) == 11 && (isPromptFinalState||isDirectPromptTauDecayProductFinalState)"),
Ele_recCut = cms.string(
"pt > 10 && (abs(eta)<1.444 || abs(eta)>1.566) && abs(eta)< 2.5 "+
" && hadronicOverEm < 0.05 "+ #&& eSuperClusterOverP > 0.5 && eSuperClusterOverP < 1.5 "+
" && abs(deltaEtaSuperClusterTrackAtVtx)<0.007 && abs(deltaPhiSuperClusterTrackAtVtx)<0.06 "+
" && sigmaIetaIeta<0.03 "+
" && (pfIsolationVariables.sumChargedParticlePt + pfIsolationVariables.sumNeutralHadronEtHighThreshold + pfIsolationVariables.sumPhotonEtHighThreshold )/pt < 0.10 "+
" && abs(1/energy - 1/p)<0.05"),
#" && abs(trackPositionAtVtx.z-vertexPosition.z)<"),
#" && "), # Loose-like electron
# --- Photons
Photon_genCut = cms.string("pt > 20 && abs(eta) < 2.4 && abs(pdgId) == 22 && isPromptFinalState"),
Photon_recCut = cms.string("pt > 20 && abs(eta) < 2.4"), # STILL MISSING THIS INFO
Photon_genCut_leading = cms.string("pt > 150 "),
Photon_recCut_leading = cms.string("pt > 150 "),
# --- Taus:
PFTau_genCut = cms.string("pt > 20 && abs(eta) < 2.4 && abs(pdgId) == 15 && isPromptDecayed"),
PFTau_recCut = cms.string("pt > 20 && abs(eta) < 2.4"), # STILL MISSING THIS INFO
# --- Jets:
PFJet_genCut = cms.string("pt > 30 && abs(eta) < 2.4"),
PFJet_recCut = cms.string("pt > 30 && abs(eta) < 2.4 &&"+
"(neutralHadronEnergy + HFHadronEnergy)/energy < 0.99 &&"+
"neutralEmEnergyFraction < 0.99 &&"+
"numberOfDaughters > 1 &&"+
"chargedHadronEnergyFraction > 0 &&"+
"chargedMultiplicity > 0 && "+
"chargedEmEnergyFraction < 0.99"), # Loose PFJet
CaloJet_genCut = cms.string("pt > 30 && abs(eta) < 2.4"),
CaloJet_recCut = cms.string("pt > 30 && abs(eta) < 2.4"), # find realistic cuts
# --- MET
MET_genCut = cms.string("pt > 75"),
MET_recCut = cms.string("pt > 75"),
PFMET_genCut = cms.string("pt > 75"),
PFMET_recCut = cms.string("pt > 75"),
PFMHT_genCut = cms.string("pt > 75"),
PFMHT_recCut = cms.string("pt > 75"),
GenMET_genCut = cms.string("pt > 75"),
GenMET_recCut = cms.string("pt > 75"),
Track_genCut = cms.string("pt > 50"),
Track_recCut = cms.string("pt > 50"),
CaloMET_genCut = cms.string("pt > 75"),
CaloMET_recCut = cms.string("pt > 75"),
CaloMHT_genCut = cms.string("pt > 75"),
CaloMHT_recCut = cms.string("pt > 75"),
hltMET_genCut = cms.string("pt > 75"),
hltMET_recCut = cms.string("pt > 75"),
# The specific parameters per analysis: the name of the parameter set has to be
# the same as the defined ones in the 'analysis' datamember. Each analysis is a PSet
# with the mandatory attributes:
# - hltPathsToCheck (cms.vstring) : a list of all the trigger pats to be checked
# in this analysis. Up to the version number _v, but not including
# the number in order to avoid this version dependence. Example: HLT_Mu18_v
# - recVarLabel (cms.string): where Var is Mu, Ele, Photon, MET, Jet, PFTau, MET. This
# attribute is the name of the INSTANCE LABEL for each RECO collection to
# be considered in the analysis. Note that the trigger paths rely on some
# objects which need to be defined here, otherwise the code will complain.
# - minCandidates (cms.uint32): the minimum number of GEN/RECO objects in the event
# Besides the mandatory attributes, you can redefine the generation and reconstruction cuts
# for any object you want.
# * Var_genCut, Var_recCut (cms.string): where Var=Mu, Ele, Photon, Jet, PFTau, MET (see above)
LowPtTrimuon = LowPtTrimuonPSet,
HighPtDimuon = HighPtDimuonPSet,
HighPtDielectron = HighPtDielectronPSet,
LowPtDimuon = LowPtDimuonPSet,
LowPtDielectron = LowPtDielectronPSet,
HighPtElectron = HighPtElectronPSet,
LowPtElectron = LowPtElectronPSet,
HighPtPhoton = HighPtPhotonPSet,
DiPhoton = DiPhotonPSet,
DisplacedDiPhoton = DisplacedDiPhotonPSet,
SingleMuon = SingleMuonPSet,
JetNoBptx = JetNoBptxPSet,
MuonNoBptx = MuonNoBptxPSet,
DisplacedMuEG = DisplacedMuEGPSet,
DisplacedDimuon = DisplacedDimuonPSet,
DisplacedL2Dimuon = DisplacedL2DimuonPSet,
PureMET = PureMETPSet,
METplusTrack = METplusTrackPSet,
Monojet = MonojetPSet,
MonojetBackup = MonojetBackupPSet,
PFHT = PFHTPSet,
CaloHT = CaloHTPSet,
EleMu = EleMuPSet,
PhotonMET = PhotonMETPSet,
HTDisplacedJets = HTDisplacedJetsPSet,
DSTJets = DSTJetsPSet,
DSTMuons = DSTMuonsPSet,
TracklessJets = TracklessJetsPSet
)
|