1 import FWCore.ParameterSet.Config
as cms
6 unpackedPatTrigger = cms.EDProducer(
"PATTriggerObjectStandAloneUnpacker",
7 patTriggerObjectsStandAlone = cms.InputTag(
'slimmedPatTrigger'),
8 triggerResults = cms.InputTag(
'TriggerResults::HLT'),
9 unpackFilterLabels = cms.bool(
True)
12 run2_miniAOD_80XLegacy.toModify(
14 patTriggerObjectsStandAlone =
"selectedPatTrigger",
15 unpackFilterLabels =
False
18 triggerObjectTable = cms.EDProducer(
"TriggerObjectTableProducer",
19 name= cms.string(
"TrigObj"),
20 src = cms.InputTag(
"unpackedPatTrigger"),
21 l1EG = cms.InputTag(
"caloStage2Digis",
"EGamma"),
22 l1Sum = cms.InputTag(
"caloStage2Digis",
"EtSum"),
23 l1Jet = cms.InputTag(
"caloStage2Digis",
"Jet"),
24 l1Muon = cms.InputTag(
"gmtStage2Digis",
"Muon"),
25 l1Tau = cms.InputTag(
"caloStage2Digis",
"Tau"),
26 selections = cms.VPSet(
28 name = cms.string(
"Electron (PixelMatched e/gamma)"),
30 sel = cms.string(
"type(92) && pt > 7 && coll('hltEgammaCandidates') && filter('*PixelMatchFilter')"),
31 l1seed = cms.string(
"type(-98)"), l1deltaR = cms.double(0.3),
33 skipObjectsNotPassingQualityBits = cms.bool(
True),
34 qualityBits = cms.string(
35 "filter('*CaloIdLTrackIdLIsoVL*TrackIso*Filter') + " \
36 "2*filter('hltEle*WPTight*TrackIsoFilter*') + " \
37 "4*filter('hltEle*WPLoose*TrackIsoFilter') + " \
38 "8*filter('*OverlapFilter*IsoEle*PFTau*') + " \
39 "16*filter('hltEle*Ele*CaloIdLTrackIdLIsoVL*Filter') + " \
40 "32*filter('hltMu*TrkIsoVVL*Ele*CaloIdLTrackIdLIsoVL*Filter*') + " \
41 "64*filter('hltOverlapFilterIsoEle*PFTau*') + " \
42 "128*filter('hltEle*Ele*Ele*CaloIdLTrackIdLDphiLeg*Filter') + " \
43 "256*max(filter('hltL3fL1Mu*DoubleEG*Filtered*'),filter('hltMu*DiEle*CaloIdLTrackIdLElectronleg*Filter')) + " \
44 "512*max(filter('hltL3fL1DoubleMu*EG*Filter*'),filter('hltDiMu*Ele*CaloIdLTrackIdLElectronleg*Filter')) + " \
45 "1024*min(filter('hltEle32L1DoubleEGWPTightGsfTrackIsoFilter'),filter('hltEGL1SingleEGOrFilter')) + " \
46 "2048*filter('hltEle*CaloIdVTGsfTrkIdTGsfDphiFilter') + " \
47 "4096*path('HLT_Ele*PFJet*') + " \
48 "8192*max(filter('hltEG175HEFilter'),filter('hltEG200HEFilter'))"),
49 qualityBitsDoc = cms.string(
"1 = CaloIdL_TrackIdL_IsoVL, 2 = 1e (WPTight), 4 = 1e (WPLoose), 8 = OverlapFilter PFTau, 16 = 2e, 32 = 1e-1mu, 64 = 1e-1tau, 128 = 3e, 256 = 2e-1mu, 512 = 1e-2mu, 1024 = 1e (32_L1DoubleEG_AND_L1SingleEGOr), 2048 = 1e (CaloIdVT_GsfTrkIdT), 4096 = 1e (PFJet), 8192 = 1e (Photon175_OR_Photon200)"),
52 name = cms.string(
"Photon (PixelMatch-vetoed e/gamma)"),
54 sel = cms.string(
"type(92) && pt > 20 && coll('hltEgammaCandidates') && !filter('*PixelMatchFilter')"),
55 l1seed = cms.string(
"type(-98)"), l1deltaR = cms.double(0.3),
57 skipObjectsNotPassingQualityBits = cms.bool(
True),
58 qualityBits = cms.string(
"0"), qualityBitsDoc = cms.string(
""),
61 name = cms.string(
"Muon"),
63 sel = cms.string(
"type(83) && pt > 5 && (coll('hltIterL3MuonCandidates') || (pt > 45 && coll('hltHighPtTkMuonCands')) || (pt > 95 && coll('hltOldL3MuonCandidates')))"),
64 l1seed = cms.string(
"type(-81)"), l1deltaR = cms.double(0.5),
65 l2seed = cms.string(
"type(83) && coll('hltL2MuonCandidates')"), l2deltaR = cms.double(0.3),
66 skipObjectsNotPassingQualityBits = cms.bool(
True),
67 qualityBits = cms.string(
68 "filter('*RelTrkIsoVVLFiltered0p4') + " \
69 "2*filter('hltL3crIso*Filtered0p07') + " \
70 "4*filter('*OverlapFilterIsoMu*PFTau*') + " \
71 "8*max(filter('hltL3crIsoL1*SingleMu*Filtered0p07'),filter('hltL3crIsoL1sMu*Filtered0p07')) + " \
72 "16*filter('hltDiMuon*Filtered*') + " \
73 "32*filter('hltMu*TrkIsoVVL*Ele*CaloIdLTrackIdLIsoVL*Filter*') + " \
74 "64*filter('hltOverlapFilterIsoMu*PFTau*') + " \
75 "128*filter('hltL3fL1TripleMu*') + " \
76 "256*max(filter('hltL3fL1DoubleMu*EG*Filtered*'),filter('hltDiMu*Ele*CaloIdLTrackIdLElectronleg*Filter')) + " \
77 "512*max(filter('hltL3fL1Mu*DoubleEG*Filtered*'),filter('hltMu*DiEle*CaloIdLTrackIdLElectronleg*Filter')) + " \
78 "1024*max(filter('hltL3fL1sMu*L3Filtered50*'),filter('hltL3fL1sMu*TkFiltered50*')) + " \
79 "2048*max(filter('hltL3fL1sMu*L3Filtered100*'),filter('hltL3fL1sMu*TkFiltered100*'))"),
80 qualityBitsDoc = cms.string(
"1 = TrkIsoVVL, 2 = Iso, 4 = OverlapFilter PFTau, 8 = 1mu, 16 = 2mu, 32 = 1mu-1e, 64 = 1mu-1tau, 128 = 3mu, 256 = 2mu-1e, 512 = 1mu-2e, 1024 = 1mu (Mu50), 2048 = 1mu (Mu100)"),
83 name = cms.string(
"Tau"),
85 sel = cms.string(
"type(84) && pt > 5 && coll('*Tau*') && ( filter('*LooseChargedIso*') || filter('*MediumChargedIso*') || filter('*TightChargedIso*') || filter('*TightOOSCPhotons*') || filter('hltL2TauIsoFilter') || filter('*OverlapFilterIsoMu*') || filter('*OverlapFilterIsoEle*') || filter('*L1HLTMatched*') || filter('*Dz02*') )"),
86 l1seed = cms.string(
"type(-100)"), l1deltaR = cms.double(0.3),
87 l2seed = cms.string(
"type(84) && coll('hltL2TauJetsL1IsoTauSeeded')"), l2deltaR = cms.double(0.3),
88 skipObjectsNotPassingQualityBits = cms.bool(
True),
89 qualityBits = cms.string(
90 "filter('*LooseChargedIso*') + " \
91 "2*filter('*MediumChargedIso*') + " \
92 "4*filter('*TightChargedIso*') + " \
93 "8*filter('*TightOOSCPhotons*') + " \
94 "16*filter('*Hps*') + " \
95 "32*filter('hltSelectedPFTau*MediumChargedIsolationL1HLTMatched*') + " \
96 "64*filter('hltDoublePFTau*TrackPt1*ChargedIsolation*Dz02Reg') + " \
97 "128*filter('hltOverlapFilterIsoEle*PFTau*') + " \
98 "256*filter('hltOverlapFilterIsoMu*PFTau*') + " \
99 "512*filter('hltDoublePFTau*TrackPt1*ChargedIsolation*')"),
100 qualityBitsDoc = cms.string(
"1 = LooseChargedIso, 2 = MediumChargedIso, 4 = TightChargedIso, 8 = TightID OOSC photons, 16 = HPS, 32 = single-tau + tau+MET, 64 = di-tau, 128 = e-tau, 256 = mu-tau, 512 = VBF+di-tau"),
103 name = cms.string(
"Jet"),
105 sel = cms.string(
"( type(0) || type(85) || type(86) || type(-99) )"),
106 l1seed = cms.string(
"type(-99)"), l1deltaR = cms.double(0.3),
107 l2seed = cms.string(
"type(85) || type(86) || type(-99)"), l2deltaR = cms.double(0.3),
108 skipObjectsNotPassingQualityBits = cms.bool(
True),
109 qualityBits = cms.string(
110 "1 * filter('*CrossCleaned*LooseChargedIsoPFTau*') + " \
111 "2 * filter('hltBTagCaloCSVp087Triple') + " \
112 "4 * filter('hltDoubleCentralJet90') + " \
113 "8 * filter('hltDoublePFCentralJetLooseID90') + " \
114 "16 * filter('hltL1sTripleJetVBFIorHTTIorDoubleJetCIorSingleJet') + " \
115 "32 * filter('hltQuadCentralJet30') + " \
116 "64 * filter('hltQuadPFCentralJetLooseID30') + " \
117 "128 * max(filter('hltL1sQuadJetC50IorQuadJetC60IorHTT280IorHTT300IorHTT320IorTripleJet846848VBFIorTripleJet887256VBFIorTripleJet927664VBF'), filter('hltL1sQuadJetCIorTripleJetVBFIorHTT')) + " \
118 "256 * filter('hltQuadCentralJet45') + " \
119 "512 * filter('hltQuadPFCentralJetLooseID45') + " \
120 "1024 * max(filter('hltL1sQuadJetC60IorHTT380IorHTT280QuadJetIorHTT300QuadJet'), filter('hltL1sQuadJetC50to60IorHTT280to500IorHTT250to340QuadJet')) + " \
121 "2048 * max(filter('hltBTagCaloCSVp05Double'), filter('hltBTagCaloDeepCSVp17Double')) + " \
122 "4096 * filter('hltPFCentralJetLooseIDQuad30') + " \
123 "8192 * filter('hlt1PFCentralJetLooseID75') + " \
124 "16384 * filter('hlt2PFCentralJetLooseID60') + " \
125 "32768 * filter('hlt3PFCentralJetLooseID45') + " \
126 "65536 * filter('hlt4PFCentralJetLooseID40') + " \
127 "131072 * max(filter('hltBTagPFCSVp070Triple'), max(filter('hltBTagPFDeepCSVp24Triple'), filter('hltBTagPFDeepCSV4p5Triple')) )"
129 qualityBitsDoc = cms.string(
130 "Jet bits: bit 0 for VBF cross-cleaned from loose iso PFTau, bit 1 for hltBTagCaloCSVp087Triple, bit 2 for hltDoubleCentralJet90, bit 3 for hltDoublePFCentralJetLooseID90," \
131 " bit 4 for hltL1sTripleJetVBFIorHTTIorDoubleJetCIorSingleJet, bit 5 for hltQuadCentralJet30, bit 6 for hltQuadPFCentralJetLooseID30," \
132 " bit 7 for hltL1sQuadJetC50IorQuadJetC60IorHTT280IorHTT300IorHTT320IorTripleJet846848VBFIorTripleJet887256VBFIorTripleJet927664VBF or hltL1sQuadJetCIorTripleJetVBFIorHTT," \
133 " bit 8 for hltQuadCentralJet45, bit 9 for hltQuadPFCentralJetLooseID45," \
134 " bit 10 for hltL1sQuadJetC60IorHTT380IorHTT280QuadJetIorHTT300QuadJet or hltL1sQuadJetC50to60IorHTT280to500IorHTT250to340QuadJet" \
135 " bit 11 for hltBTagCaloCSVp05Double or hltBTagCaloDeepCSVp17Double, bit 12 for hltPFCentralJetLooseIDQuad30, bit 13 for hlt1PFCentralJetLooseID75," \
136 " bit 14 for hlt2PFCentralJetLooseID60, bit 15 for hlt3PFCentralJetLooseID45, bit 16 for hlt4PFCentralJetLooseID40," \
137 " bit 17 for hltBTagPFCSVp070Triple or hltBTagPFDeepCSVp24Triple or hltBTagPFDeepCSV4p5Triple "),
140 name = cms.string(
"FatJet"),
142 sel = cms.string(
"type(85) && pt > 120 && coll('hltAK8PFJetsCorrected')"),
143 l1seed = cms.string(
"type(-99)"), l1deltaR = cms.double(0.3),
144 l2seed = cms.string(
"type(85) && coll('hltAK8CaloJetsCorrectedIDPassed')"), l2deltaR = cms.double(0.3),
145 skipObjectsNotPassingQualityBits = cms.bool(
True),
146 qualityBits = cms.string(
"0"), qualityBitsDoc = cms.string(
""),
149 name = cms.string(
"MET"),
151 sel = cms.string(
"type(87) && pt > 30 && coll('hltPFMETProducer')"),
152 l1seed = cms.string(
"type(-87) && coll('L1ETM')"), l1deltaR = cms.double(9999),
153 l1seed_2 = cms.string(
"type(-87) && coll('L1ETMHF')"), l1deltaR_2 = cms.double(9999),
154 l2seed = cms.string(
"type( 87) && coll('hltMetClean')"), l2deltaR = cms.double(9999),
155 skipObjectsNotPassingQualityBits = cms.bool(
True),
156 qualityBits = cms.string(
"0"), qualityBitsDoc = cms.string(
""),
159 name = cms.string(
"HT"),
161 sel = cms.string(
"type(89) || type(-89)"),
162 l1seed = cms.string(
"type(-89) && coll('L1HTT')"), l1deltaR = cms.double(9999),
163 l1seed_2 = cms.string(
"type(-89) && coll('L1HTTHF')"), l1deltaR_2 = cms.double(9999),
164 l2seed = cms.string(
"type(89) && coll('hltHtMhtJet30')"), l2deltaR = cms.double(9999),
165 skipObjectsNotPassingQualityBits = cms.bool(
True),
166 qualityBits = cms.string(
167 "1 * filter('hltL1sTripleJetVBFIorHTTIorDoubleJetCIorSingleJet') + " \
168 "2 * max(filter('hltL1sQuadJetC50IorQuadJetC60IorHTT280IorHTT300IorHTT320IorTripleJet846848VBFIorTripleJet887256VBFIorTripleJet927664VBF'), filter('hltL1sQuadJetCIorTripleJetVBFIorHTT')) + " \
169 "4 * max(filter('hltL1sQuadJetC60IorHTT380IorHTT280QuadJetIorHTT300QuadJet'), filter('hltL1sQuadJetC50to60IorHTT280to500IorHTT250to340QuadJet')) + " \
170 "8 * max(filter('hltCaloQuadJet30HT300'), filter('hltCaloQuadJet30HT320')) + " \
171 "16 * max(filter('hltPFCentralJetsLooseIDQuad30HT300'), filter('hltPFCentralJetsLooseIDQuad30HT330'))"
173 qualityBitsDoc = cms.string(
174 "HT bits: bit 0 for hltL1sTripleJetVBFIorHTTIorDoubleJetCIorSingleJet, bit 1 for hltL1sQuadJetC50IorQuadJetC60IorHTT280IorHTT300IorHTT320IorTripleJet846848VBFIorTripleJet887256VBFIorTripleJet927664VBF or hltL1sQuadJetCIorTripleJetVBFIorHTT, " \
175 "bit 2 for hltL1sQuadJetC60IorHTT380IorHTT280QuadJetIorHTT300QuadJet or hltL1sQuadJetC50to60IorHTT280to500IorHTT250to340QuadJet, " \
176 "bit 3 for hltCaloQuadJet30HT300 or hltCaloQuadJet30HT320, bit 4 for hltPFCentralJetsLooseIDQuad30HT300 or hltPFCentralJetsLooseIDQuad30HT330"
180 name = cms.string(
"MHT"),
182 sel = cms.string(
"type(90)"),
183 l1seed = cms.string(
"type(-90) && coll('L1HTM')"), l1deltaR = cms.double(9999),
184 l1seed_2 = cms.string(
"type(-90) && coll('L1HTMHF')"), l1deltaR_2 = cms.double(9999),
185 l2seed = cms.string(
"type(90) && coll('hltHtMhtJet30')"), l2deltaR = cms.double(9999),
186 skipObjectsNotPassingQualityBits = cms.bool(
True),
187 qualityBits = cms.string(
188 "1 * max(filter('hltCaloQuadJet30HT300'), filter('hltCaloQuadJet30HT320')) + " \
189 "2 * max(filter('hltPFCentralJetsLooseIDQuad30HT300'), filter('hltPFCentralJetsLooseIDQuad30HT330'))"
191 qualityBitsDoc = cms.string
193 "MHT bits: bit 0 for hltCaloQuadJet30HT300 or hltCaloQuadJet30HT320, bit 1 for hltPFCentralJetsLooseIDQuad30HT300 or hltPFCentralJetsLooseIDQuad30HT330"
203 selections2016 = copy.deepcopy(triggerObjectTable.selections)
204 for sel
in selections2016:
206 sel.sel = cms.string(
"type(83) && pt > 5 && (coll('hlt*L3MuonCandidates') || coll('hlt*TkMuonCands') || coll('hlt*TrkMuonCands'))")
207 sel.qualityBits = cms.string(
"filter('*RelTrkIso*Filtered0p4') + 2*filter('hltL3cr*IsoFiltered0p09') + 4*filter('*OverlapFilter*IsoMu*PFTau*') + 8*filter('hltL3f*IsoFiltered0p09') + 1024*max(filter('hltL3fL1sMu*L3Filtered50*'),filter('hltL3fL1sMu*TkFiltered50*'))")
208 sel.qualityBitsDoc = cms.string(
"1 = TrkIsoVVL, 2 = Iso, 4 = OverlapFilter PFTau, 8 = IsoTkMu, 1024 = 1mu (Mu50)")
209 elif sel.name==
'Tau':
210 sel.sel = cms.string(
"type(84) && pt > 5 && coll('*Tau*') && ( filter('*LooseIso*') || filter('*MediumIso*') || filter('*MediumComb*Iso*') || filter('hltL2TauIsoFilter') || filter('*OverlapFilter*IsoMu*') || filter('*OverlapFilter*IsoEle*') || filter('*L1HLTMatched*') || filter('*Dz02*') )")
211 sel.qualityBits = cms.string(
"(filter('*LooseIso*')-filter('*VLooseIso*'))+2*filter('*Medium*Iso*')+4*filter('*VLooseIso*')+8*0+16*filter('hltL2TauIsoFilter')+32*filter('*OverlapFilter*IsoMu*')+64*filter('*OverlapFilter*IsoEle*')+128*filter('*L1HLTMatched*')+256*filter('*Dz02*')")
212 sel.qualityBitsDoc = cms.string(
"1 = LooseIso, 2 = Medium(Comb)Iso, 4 = VLooseIso, 8 = None, 16 = L2p5 pixel iso, 32 = OverlapFilter IsoMu, 64 = OverlapFilter IsoEle, 128 = L1-HLT matched, 256 = Dz")
214 run2_HLTconditions_2016.toModify(
216 selections = selections2016
219 from PhysicsTools.PatUtils.L1PrefiringWeightProducer_cff
import prefiringweight
221 (run2_muon_2016 & tracker_apv_vfp30_2016).toModify( prefiringweight, DataEraECAL = cms.string(
"UL2016preVFP"), DataEraMuon = cms.string(
"2016preVFP"))
222 (run2_muon_2016 & ~tracker_apv_vfp30_2016).toModify( prefiringweight, DataEraECAL = cms.string(
"UL2016postVFP"), DataEraMuon = cms.string(
"2016postVFP"))
224 run2_jme_2017.toModify( prefiringweight, DataEraECAL = cms.string(
"UL2017BtoF"), DataEraMuon = cms.string(
"20172018"))
226 run2_muon_2018.toModify( prefiringweight, DataEraECAL = cms.string(
"None"), DataEraMuon = cms.string(
"20172018"))
229 for modifier
in run2_nanoAOD_94XMiniAODv1, run2_nanoAOD_94XMiniAODv2:
230 modifier.toModify( prefiringweight, DataEraECAL = cms.string(
"2017BtoF"), DataEraMuon = cms.string(
"20172018"))
231 modifier.toModify( prefiringweight, JetMaxMuonFraction = cms.double(-1.) )
233 run2_nanoAOD_94X2016.toModify( prefiringweight, DataEraECAL = cms.string(
"2016BtoH"), DataEraMuon = cms.string(
"2016") )
234 run2_nanoAOD_94X2016.toModify( prefiringweight, JetMaxMuonFraction = cms.double(-1.) )
236 l1PreFiringEventWeightTable = cms.EDProducer(
"GlobalVariablesTableProducer",
237 name = cms.string(
"L1PreFiringWeight"),
238 variables = cms.PSet(
239 Nom =
ExtVar(cms.InputTag(
"prefiringweight:nonPrefiringProb"),
"float", doc =
"L1 pre-firing event correction weight (1-probability)", precision=8),
240 Up =
ExtVar(cms.InputTag(
"prefiringweight:nonPrefiringProbUp"),
"float", doc =
"L1 pre-firing event correction weight (1-probability), up var.", precision=8),
241 Dn =
ExtVar(cms.InputTag(
"prefiringweight:nonPrefiringProbDown"),
"float", doc =
"L1 pre-firing event correction weight (1-probability), down var.", precision=8),
242 Muon_Nom =
ExtVar(cms.InputTag(
"prefiringweight:nonPrefiringProbMuon"),
"float", doc =
"Muon L1 pre-firing event correction weight (1-probability)", precision=8),
243 Muon_SystUp =
ExtVar(cms.InputTag(
"prefiringweight:nonPrefiringProbMuonSystUp"),
"float", doc =
"Muon L1 pre-firing event correction weight (1-probability), up var. syst.", precision=8),
244 Muon_SystDn =
ExtVar(cms.InputTag(
"prefiringweight:nonPrefiringProbMuonSystDown"),
"float", doc =
"Muon L1 pre-firing event correction weight (1-probability), down var. syst.", precision=8),
245 Muon_StatUp =
ExtVar(cms.InputTag(
"prefiringweight:nonPrefiringProbMuonStatUp"),
"float", doc =
"Muon L1 pre-firing event correction weight (1-probability), up var. stat.", precision=8),
246 Muon_StatDn =
ExtVar(cms.InputTag(
"prefiringweight:nonPrefiringProbMuonStatDown"),
"float", doc =
"Muon L1 pre-firing event correction weight (1-probability), down var. stat.", precision=8),
247 ECAL_Nom =
ExtVar(cms.InputTag(
"prefiringweight:nonPrefiringProbECAL"),
"float", doc =
"ECAL L1 pre-firing event correction weight (1-probability)", precision=8),
248 ECAL_Up =
ExtVar(cms.InputTag(
"prefiringweight:nonPrefiringProbECALUp"),
"float", doc =
"ECAL L1 pre-firing event correction weight (1-probability), up var.", precision=8),
249 ECAL_Dn =
ExtVar(cms.InputTag(
"prefiringweight:nonPrefiringProbECALDown"),
"float", doc =
"ECAL L1 pre-firing event correction weight (1-probability), down var.", precision=8),
253 l1bits=cms.EDProducer(
"L1TriggerResultsConverter",
254 src=cms.InputTag(
"gtStage2Digis"),
255 legacyL1=cms.bool(
False),
256 storeUnprefireableBit=cms.bool(
True),
257 src_ext=cms.InputTag(
"gtStage2Digis"))
259 triggerObjectTablesTask = cms.Task( unpackedPatTrigger,triggerObjectTable,l1bits)
261 _triggerObjectTablesTask_withL1PreFiring = triggerObjectTablesTask.copy()
262 _triggerObjectTablesTask_withL1PreFiring.add(prefiringweight,l1PreFiringEventWeightTable)
263 (run2_HLTconditions_2016 | run2_HLTconditions_2017 | run2_HLTconditions_2018).toReplaceWith(triggerObjectTablesTask,_triggerObjectTablesTask_withL1PreFiring)
265 (run2_miniAOD_80XLegacy | run2_nanoAOD_94X2016 | run2_nanoAOD_94XMiniAODv1 | run2_nanoAOD_94XMiniAODv2 | run2_nanoAOD_102Xv1).toModify(l1bits, storeUnprefireableBit=
False)