-
Notifications
You must be signed in to change notification settings - Fork 4.4k
/
Copy pathSimL1Emulator_cff.py
280 lines (231 loc) · 11.4 KB
/
SimL1Emulator_cff.py
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
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
import FWCore.ParameterSet.Config as cms
# Defines the L1 Emulator sequence for simulation use-case subsystem emulators
# run on the results of previous (in the hardware chain) subsystem emulator:
#
# SimL1Emulator = cms.Sequence(...)
#
# properly configured for the current Era (e.g. Run1, 2015, or 2016). Also
# configures event setup producers appropriate to the current Era, to handle
# conditions which are not yet available in the GT.
#
# Author List
# Jim Brooke, 24 April 2008
# Vasile Mihai Ghete, 2009
# Jim Brooke, Michael Mulhearn, 2015
# Vladimir Rekovic 2016,2017
# Notes on Inputs:
# ECAL TPG emulator and HCAL TPG run in the simulation sequence in order to be able
# to use unsuppressed digis produced by ECAL and HCAL simulation, respectively
# in Configuration/StandardSequences/python/Digi_cff.py
# SimCalorimetry.Configuration.SimCalorimetry_cff
# which calls
# SimCalorimetry.Configuration.ecalDigiSequence_cff
# SimCalorimetry.Configuration.hcalDigiSequence_cff
#
# At the moment, there is no emulator available for upgrade HF Trigger Primitives,
# so these missing (required!) inputs are presently ignored by downstream modules.
#
from L1Trigger.L1TCalorimeter.simDigis_cff import *
from L1Trigger.L1TMuon.simDigis_cff import *
from L1Trigger.Configuration.SimL1TechnicalTriggers_cff import *
from L1Trigger.L1TZDC.L1TZDCEmulation_cff import *
from L1Trigger.L1TGlobal.simDigis_cff import *
# define a core which can be extented in customizations:
SimL1EmulatorCoreTask = cms.Task(
SimL1TCalorimeterTask,
SimL1TMuonTask,
SimL1TechnicalTriggersTask,
L1TZDCEmulationTask,
SimL1TGlobalTask
)
SimL1EmulatorCore = cms.Sequence(SimL1EmulatorCoreTask)
SimL1EmulatorTask = cms.Task(SimL1EmulatorCoreTask)
SimL1Emulator = cms.Sequence( SimL1EmulatorTask )
#
# Emulators are configured from DB (GlobalTags)
#
from L1Trigger.L1TGlobal.GlobalParameters_cff import *
# 2017 EMTF and TwinMux emulator use payloads from DB, not yet in GT,
# soon to be removed when availble in GTs
from L1Trigger.L1TTwinMux.fakeTwinMuxParams_cff import *
_phase2_siml1emulator = SimL1EmulatorTask.copy()
# ########################################################################
# ########################################################################
#
# Phase-2
#
# ########################################################################
# ########################################################################
# ########################################################################
# Phase-2 Trigger Primitives
# ########################################################################
from L1Trigger.DTTriggerPhase2.CalibratedDigis_cfi import *
CalibratedDigis.dtDigiTag = "simMuonDTDigis"
_phase2_siml1emulator.add(CalibratedDigis)
from L1Trigger.DTTriggerPhase2.dtTriggerPhase2PrimitiveDigis_cfi import *
_phase2_siml1emulator.add(dtTriggerPhase2PrimitiveDigis)
# HGCAL TP
# ########################################################################
from L1Trigger.L1THGCal.hgcalTriggerPrimitives_cff import *
_phase2_siml1emulator.add(L1THGCalTriggerPrimitivesTask)
# ########################################################################
# Phase 2 L1T
# ########################################################################
# Barrel and EndCap EGamma
# ########################################################################
from L1Trigger.L1CaloTrigger.l1tEGammaCrystalsEmulatorProducer_cfi import *
_phase2_siml1emulator.add(l1tEGammaClusterEmuProducer)
from L1Trigger.L1CaloTrigger.l1tPhase2L1CaloEGammaEmulator_cfi import *
_phase2_siml1emulator.add(l1tPhase2L1CaloEGammaEmulator)
# Barrel and EndCap CaloJet/HT/NNCaloTau
# ########################################################################
# ---- Produce the calibrated tower collection combining Barrel, HGCal, HF
from L1Trigger.L1CaloTrigger.l1tTowerCalibrationProducer_cfi import *
l1tTowerCalibration = l1tTowerCalibrationProducer.clone(
L1HgcalTowersInputTag = ("l1tHGCalTowerProducer","HGCalTowerProcessor",""),
l1CaloTowers = ("l1tEGammaClusterEmuProducer","L1CaloTowerCollection","")
)
# ---- Produce the simulated L1CaloJets
from L1Trigger.L1CaloTrigger.l1tCaloJetProducer_cfi import *
l1tCaloJet = l1tCaloJetProducer.clone (
l1CaloTowers = ("l1tTowerCalibration","L1CaloTowerCalibratedCollection",""),
L1CrystalClustersInputTag = ("l1tEGammaClusterEmuProducer", "","")
)
# ---- Produce the simulated CaloJet HTT Sums
from L1Trigger.L1CaloTrigger.l1tCaloJetHTTProducer_cfi import *
l1tCaloJetHTT = l1tCaloJetHTTProducer.clone(
BXVCaloJetsInputTag = ("L1CaloJet", "CaloJets")
)
# ---- Produce the NNCaloTau
from L1Trigger.L1CaloTrigger.l1tNNCaloTauProducer_cfi import *
_phase2_siml1emulator.add(l1tNNCaloTauProducer)
from L1Trigger.L1CaloTrigger.l1tNNCaloTauEmulator_cfi import *
_phase2_siml1emulator.add(l1tNNCaloTauEmulator)
# ---- Produce the emulated CaloJets and Taus
from L1Trigger.L1CaloTrigger.l1tPhase2CaloJetEmulator_cff import *
_phase2_siml1emulator.add(l1tTowerCalibration)
_phase2_siml1emulator.add(l1tCaloJet)
_phase2_siml1emulator.add(l1tCaloJetHTT)
_phase2_siml1emulator.add(l1tCaloJetsTausTask)
# Overlap and EndCap Muon Track Finder
# ########################################################################
from L1Trigger.L1TMuonOverlapPhase2.simOmtfPhase2Digis_cfi import *
_phase2_siml1emulator.add(simOmtfPhase2Digis)
from L1Trigger.L1TMuonEndCapPhase2.simCscTriggerPrimitiveDigisForEMTF_cfi import *
from L1Trigger.L1TMuonEndCapPhase2.rpcRecHitsForEMTF_cfi import *
from L1Trigger.L1TMuonEndCapPhase2.simEmtfDigisPhase2_cfi import *
_phase2_siml1emulator.add(simCscTriggerPrimitiveDigisForEMTF)
_phase2_siml1emulator.add(rpcRecHitsForEMTF)
_phase2_siml1emulator.add(simEmtfDigisPhase2)
# ########################################################################
# Phase-2 L1T - TrackTrigger dependent modules
# ########################################################################
from L1Trigger.L1TTrackMatch.l1tGTTInputProducer_cfi import *
from L1Trigger.L1TTrackMatch.l1tTrackSelectionProducer_cfi import *
from L1Trigger.L1TTrackMatch.l1tTrackVertexAssociationProducer_cfi import *
from L1Trigger.VertexFinder.l1tVertexProducer_cfi import *
# Track Conversion, Track Selection, Vertex Finding
_phase2_siml1emulator.add(l1tGTTInputProducer)
_phase2_siml1emulator.add(l1tGTTInputProducerExtended)
_phase2_siml1emulator.add(l1tTrackSelectionProducer)
_phase2_siml1emulator.add(l1tTrackSelectionProducerExtended)
_phase2_siml1emulator.add(l1tVertexFinder)
_phase2_siml1emulator.add(l1tVertexProducer)
_phase2_siml1emulator.add(l1tVertexFinderEmulator)
# Emulated GMT Muons (Tk + Stub, Tk + MuonTFT, StandaloneMuon)
# ########################################################################
from L1Trigger.Phase2L1GMT.gmt_cfi import *
l1tStubsGmt = gmtStubs.clone()
l1tKMTFMuonsGmt = gmtKMTFMuons.clone(
stubs = cms.InputTag('l1tStubsGmt','kmtf'),
)
l1tFwdMuonsGmt = gmtFwdMuons.clone(
stubs = 'l1tStubsGmt:tps'
)
l1tSAMuonsGmt = gmtSAMuons.clone(
barrelPrompt = cms.InputTag('l1tKMTFMuonsGmt:prompt'),
barrelDisp = cms.InputTag('l1tKMTFMuonsGmt:displaced'),
forwardPrompt = cms.InputTag('l1tFwdMuonsGmt:prompt'),
forwardDisp = cms.InputTag('l1tFwdMuonsGmt:displaced')
)
l1tTkMuonsGmt = gmtTkMuons.clone(
srcStubs = 'l1tStubsGmt:tps'
)
_phase2_siml1emulator.add( l1tStubsGmt )
_phase2_siml1emulator.add( l1tKMTFMuonsGmt )
_phase2_siml1emulator.add( l1tFwdMuonsGmt )
_phase2_siml1emulator.add( l1tSAMuonsGmt )
_phase2_siml1emulator.add( l1tTkMuonsGmt )
# Tracker Objects
# ########################################################################
from L1Trigger.L1TTrackMatch.l1tTrackJets_cfi import *
from L1Trigger.L1TTrackMatch.l1tTrackFastJets_cfi import *
from L1Trigger.L1TTrackMatch.l1tTrackerEtMiss_cfi import *
from L1Trigger.L1TTrackMatch.l1tTrackerHTMiss_cfi import *
#Selected and Associated tracks for Jets and Emulated Jets
_phase2_siml1emulator.add(l1tTrackSelectionProducerForJets)
_phase2_siml1emulator.add(l1tTrackSelectionProducerExtendedForJets)
_phase2_siml1emulator.add(l1tTrackVertexAssociationProducerForJets)
_phase2_siml1emulator.add(l1tTrackVertexAssociationProducerExtendedForJets)
#Selected and Associated tracks for EtMiss and Emulated EtMiss
_phase2_siml1emulator.add(l1tTrackSelectionProducerForEtMiss)
_phase2_siml1emulator.add(l1tTrackSelectionProducerExtendedForEtMiss)
_phase2_siml1emulator.add(l1tTrackVertexAssociationProducerForEtMiss)
_phase2_siml1emulator.add(l1tTrackVertexAssociationProducerExtendedForEtMiss)
#Track Jets, Track Only Et Miss, Track Only HT Miss
_phase2_siml1emulator.add(l1tTrackJets)
_phase2_siml1emulator.add(l1tTrackJetsExtended)
_phase2_siml1emulator.add(l1tTrackFastJets)
_phase2_siml1emulator.add(l1tTrackerEtMiss)
_phase2_siml1emulator.add(l1tTrackerHTMiss)
#Emulated Track Jets, Track Only Et Miss, Track Only HT Miss
from L1Trigger.L1TTrackMatch.l1tTrackJetsEmulation_cfi import *
_phase2_siml1emulator.add(l1tTrackJetsEmulation)
_phase2_siml1emulator.add(l1tTrackJetsExtendedEmulation)
from L1Trigger.L1TTrackMatch.l1tTrackerEmuEtMiss_cfi import *
_phase2_siml1emulator.add(l1tTrackerEmuEtMiss)
from L1Trigger.L1TTrackMatch.l1tTrackerEmuHTMiss_cfi import *
_phase2_siml1emulator.add(l1tTrackerEmuHTMiss)
_phase2_siml1emulator.add(l1tTrackerEmuHTMissExtended)
from L1Trigger.L1TTrackMatch.l1tTrackTripletEmulation_cfi import *
_phase2_siml1emulator.add(l1tTrackTripletEmulation)
# PF Candidates
# ########################################################################
from L1Trigger.Phase2L1ParticleFlow.l1ctLayer1_cff import *
from L1Trigger.Phase2L1ParticleFlow.l1ctLayer2EG_cff import *
_phase2_siml1emulator.add(L1TLayer1TaskInputsTask, L1TLayer1Task, L1TLayer2EGTask)
# PF Jet
# ########################################################################
# Describe here l1PFJets_a_la_Phase1 Task
# ###############################
from L1Trigger.L1CaloTrigger.Phase1L1TJets_9x9_cff import *
L1TPFJetsPhase1Task_9x9 = cms.Task( l1tPhase1JetProducer9x9, l1tPhase1JetCalibrator9x9, l1tPhase1JetSumsProducer9x9)
_phase2_siml1emulator.add(L1TPFJetsPhase1Task_9x9)
from L1Trigger.L1CaloTrigger.Phase1L1TJets_9x9trimmed_cff import *
L1TPFJetsPhase1Task_9x9trimmed = cms.Task( l1tPhase1JetProducer9x9trimmed, l1tPhase1JetCalibrator9x9trimmed, l1tPhase1JetSumsProducer9x9trimmed)
_phase2_siml1emulator.add(L1TPFJetsPhase1Task_9x9trimmed)
from L1Trigger.Phase2L1ParticleFlow.l1tHPSPFTauProducer_cfi import *
_phase2_siml1emulator.add(l1tHPSPFTauProducer)
# PF MET
# ########################################################################
from L1Trigger.Phase2L1ParticleFlow.l1pfJetMet_cff import *
_phase2_siml1emulator.add(L1TPFJetsTask)
_phase2_siml1emulator.add(L1TPFJetsEmulationTask)
from L1Trigger.Phase2L1ParticleFlow.l1tMETPFProducer_cfi import *
_phase2_siml1emulator.add(l1tMETPFProducer)
_phase2_siml1emulator.add(l1tMETMLProducer)
# NNTaus
# ########################################################################
from L1Trigger.Phase2L1ParticleFlow.L1NNTauProducer_cff import *
_phase2_siml1emulator.add(l1tNNTauProducerPuppi)
# BJets
# ########################################################################
from L1Trigger.Phase2L1ParticleFlow.L1BJetProducer_cff import *
_phase2_siml1emulator.add(L1TBJetsTask)
# LLPJets
# ########################################################################
from L1Trigger.Phase2L1ParticleFlow.TOoLLiPProducer_cff import *
_phase2_siml1emulator.add(L1TTOoLLiPTask)
# --> add modules
from Configuration.Eras.Modifier_phase2_trigger_cff import phase2_trigger
phase2_trigger.toReplaceWith( SimL1EmulatorTask , _phase2_siml1emulator)