15def L1CALOCoreCfg(flags, deriv='L1CALO1', **kwargs):
16 """
17 Core fragment for L1CALO derivations
18 """
19 from AthenaCommon.Logging import logging
20 log = logging.getLogger('L1CALO')
21 log.info('Called L1CaloCore config for derivation %s',deriv)
22
23 streamNameStem = "DAOD_" + deriv
24 streamName = "Stream" + streamNameStem
25
26 acc = ComponentAccumulator()
27
28
29
30 isNotPool = flags.Input.Format is not Format.POOL
31
32 fillSuperCells=False
33
34
35 isL1CaloSim = flags.Trigger.L1.doeFex and flags.Trigger.L1.dojFex and flags.Trigger.L1.dogFex
36
37
38 if isNotPool:
39 from TrigT1CaloByteStream.LVL1CaloRun2ByteStreamConfig import LVL1CaloRun2ReadBSCfg
40 acc.merge(LVL1CaloRun2ReadBSCfg(flags))
41
42
43 thinningTools = []
44
45
46 if 'L1CALO1' in deriv and isNotPool:
47 from TrigT1CaloCalibTools.L1CaloCalibToolsConfig import LegacyTriggerTowerThinningCfg
48 LegacyTowerThinningTool = acc.getPrimaryAndMerge(LegacyTriggerTowerThinningCfg(
49 flags,
50 name = "L1CALOCaloThinningTool",
51 StreamName = streamName,
52 TriggerTowerLocation = "xAODTriggerTowers",
53 MinCaloCellET = 0.8,
54 MinADC = 36,
55 UseRandom = True,
56 MinRandom = 0.01 ) )
57 thinningTools.append(LegacyTowerThinningTool)
58
59
60
61 if isNotPool:
62 from TrigT1CaloCalibTools.L1CaloCalibToolsConfig import LegacyTriggerTowerDecoratorCfg
63 acc.merge(LegacyTriggerTowerDecoratorCfg(flags, name = 'L1CaloTriggerTowerDecorator'))
64
65
66 skimmingTools = []
67 if not isNotPool and not flags.Input.isMC:
68
69 skimmingTool = CompFactory.DerivationFramework.TriggerSkimmingTool(name = "L1CALOSkimmingTool1",
70 TriggerListOR = ["HLT_noalg_L1XE.*"] )
71 acc.addPublicTool(skimmingTool, primary = True)
72 skimmingTools.append(skimmingTool)
73
74
75 augmentationTools = []
76
77
78 DerivationKernel = CompFactory.DerivationFramework.DerivationKernel
79 acc.addEventAlgo(DerivationKernel(
80 name = "DFL1CALO_KERN",
81 AugmentationTools = augmentationTools,
82 ThinningTools = thinningTools,
83 SkimmingTools = skimmingTools,
84 RunSkimmingFirst = not isNotPool,
85 doChronoStat=(flags.Concurrency.NumThreads <= 1),
86 OutputLevel = INFO))
87
88
89
90
91 if isNotPool:
92 from L1CaloFEXSim.L1CaloFEXSimCfg import ReadSCellFromByteStreamCfg
93 acc.merge(ReadSCellFromByteStreamCfg(flags))
94
95
96 emulatedDataTowersKey = "L1_jFexEmulatedTowers"
97 if flags.Trigger.L1.dojFex and isNotPool:
98 from L1CaloFEXAlgos.FexEmulatedTowersConfig import jFexEmulatedTowersCfg
99 acc.merge(jFexEmulatedTowersCfg(flags, writeKey=emulatedDataTowersKey))
100
101
102 extraJfexInfo = False
103 if flags.Trigger.L1.dojFex and isNotPool:
104 from L1CaloFEXAlgos.L1CaloFEXAlgosConfig import L1CalojFEXDecoratorCfg
105 acc.merge(L1CalojFEXDecoratorCfg(flags, ExtraInfo=extraJfexInfo))
106
107
108 if flags.Trigger.L1.dojFex and isNotPool:
109 from L1CaloFEXAlgos.L1CaloFEXAlgosConfig import L1CalojFEXDecoratorCfg
110 acc.merge(L1CalojFEXDecoratorCfg(flags,name='jFexTower2SCellEmulatedDecorator',jTowersReadKey=emulatedDataTowersKey,ExtraInfo=extraJfexInfo))
111
112
113 nsamples=-1
114 if not flags.Input.isMC:
116 runinfo = getLArDTInfoForRun(flags.Input.RunNumbers[0], connstring="COOLONL_LAR/CONDBR2")
117
118 for i in range(0,len(runinfo.streamTypes())):
119 log.info("LAr DT runinfo index: %s type: %s nsamples: %s", i, runinfo.streamTypes()[i], runinfo.streamLengths()[i])
120 if "ADC" in runinfo.streamTypes()[i]:
121 nsamples=runinfo.streamLengths()[i]
122
123
124 if nsamples==6:
125
126 from LArConfiguration.LArElecCalibDBConfig import LArElecCalibDBSCCfg
127 acc.merge(LArElecCalibDBSCCfg(flags, condObjs=["DAC2uA", "HVScaleCorr", "MphysOverMcal", "OFC", "Pedestal", "Ramp", "uA2MeV"]))
128 larLATOMEBuilderAlg=CompFactory.LArLATOMEBuilderAlg("LArLATOMEBuilderAlg2")
129
130 baselineCorr = True
131 larLATOMEBuilderAlg.isADCBas = True if baselineCorr else False
132 larLATOMEBuilderAlg.LArDigitKey = "SC_ADC_BAS" if baselineCorr else 'SC'
133
134 larLATOMEBuilderAlg.LArRawSCKey = "SC_RECO2"
135 acc.addEventAlgo(larLATOMEBuilderAlg)
136
137
138 from LArCellRec.LArRAWtoSuperCellConfig import LArRAWtoSuperCellCfg
139 acc.merge(LArRAWtoSuperCellCfg(flags, name="LArRAWRecotoSuperCell2", mask=True, doReco=True, SCIn="SC_RECO2", SCellContainerOut="SCell_ET") )
140
141 acc.merge(jFexEmulatedTowersCfg(flags, name="jFexEmulatedTowerMakerNoId", SCin="SCell_ET", writeKey="L1_jFexEmulatedNoIdTowers",
142 OfflineCaloCell="AllCalo"))
143 elif flags.Input.isMC:
144
145
146 if isL1CaloSim:
147
148
149 from LArGeoAlgsNV.LArGMConfig import LArGMCfg
150 acc.merge(LArGMCfg(flags))
151
152 from L1CaloFEXAlgos.FexEmulatedTowersConfig import jFexEmulatedTowersCfg
153 acc.merge(jFexEmulatedTowersCfg(flags, name="jFexEmulatedTowerMakerNoId", SCin="SCell", writeKey="L1_jFexEmulatedNoIdTowers",
154 OfflineCaloCell="AllCalo"))
155
156
157 if flags.Trigger.L1.doeFex and isNotPool:
158 from L1CaloFEXAlgos.FexEmulatedTowersConfig import eFexEmulatedTowersCfg
159 eFexEmulatedTool = eFexEmulatedTowersCfg(flags,'L1_eFexEmulatedTowers')
160 acc.merge(eFexEmulatedTool)
161
162
163
164 from L1CaloFEXSim.L1CaloFEXSimCfg import L1CaloFEXSimCfg
165 if isNotPool:
167 elif isL1CaloSim:
168 SCellType = flags.Trigger.L1.L1CaloSuperCellContainerName
169 if SCellType in flags.Input.Collections:
171
172 if flags.Input.isMC:
173 from Campaigns.Utils import Campaign
174 log.info("MC Campaign",flags.Input.MCCampaign)
175 if flags.Input.MCCampaign != Campaign.MC23e:
176 if flags.Trigger.L1.doeFex:
177 from IOVDbSvc.IOVDbSvcConfig import addOverride
178 acc.merge(addOverride(flags, '/TRIGGER/L1Calo/V1/Calibration/EfexNoiseCuts', 'EfexNoiseCuts-RUN3-MCDEFAULT-TEST-00'))
179 acc.merge(addOverride(flags, '/TRIGGER/L1Calo/V1/Calibration/EfexEnergyCalib', 'EfexEnergyCalib-RUN3-MCDEFAULT-TEST-00'))
180 if flags.Trigger.L1.dojFex:
181 from IOVDbSvc.IOVDbSvcConfig import addOverride
182 acc.merge(addOverride(flags, '/TRIGGER/L1Calo/V1/Calibration/JfexSystemSettings', 'JfexSystemSettings-RUN3-MCDEFAULT-TEST'))
183 acc.merge(addOverride(flags, '/TRIGGER/L1Calo/V1/Calibration/JfexModuleSettings', 'JfexModuleSettings-RUN3-MCDEFAULT-TEST'))
184 acc.merge(addOverride(flags, '/TRIGGER/L1Calo/V1/Calibration/JfexNoiseCuts', 'JfexNoiseCuts-RUN3-MCDEFAULT-TEST'))
185
186
187 if flags.Trigger.L1.doeFex and isNotPool:
188
189 from TrigDecisionTool.TrigDecisionToolConfig import getRun3NavigationContainerFromInput
190 ExtraInputs = [('xAOD::TrigCompositeContainer', 'StoreGateSvc+'+getRun3NavigationContainerFromInput(flags))]
191 acc.addEventAlgo( CompFactory.LVL1.eFexTOBDecorator('eFexTOBDecorator',
192 eFexEMRoIContainer = 'L1_eEMRoI',
193 eFexTauRoIContainer = 'L1_eTauRoI',
194 ExtraInputs=ExtraInputs) )
195 acc.addEventAlgo( CompFactory.LVL1.eFexTOBDecorator('eFexTOBDecoratorSim',
196 eFexEMRoIContainer = 'L1_eEMRoISim',
197 eFexTauRoIContainer = 'L1_eTauRoIAltSim',
198 ExtraInputs=[]) )
199
200 if fillSuperCells:
201 acc.addEventAlgo( CompFactory.LVL1.eFexTOBSuperCellDecorator('eFexTOBSuperCellDecoratorSim',
202 eFexEMRoIContainer = 'L1_eEMRoISim',
203 eFexTauRoIContainer = 'L1_eTauxRoISim') )
204
205
206 from DerivationFrameworkCore.SlimmingHelper import SlimmingHelper
207
208 L1CaloSlimmingHelper =
SlimmingHelper(
"L1CaloSlimmingHelper", NamesAndTypes = flags.Input.TypedCollections, flags = flags)
209
210 AllVariables = []
211 StaticContent = []
212 SmartCollections = []
213 ExtraVariables = []
214
215 L1CaloSlimmingHelper.IncludeTriggerNavigation = True
216 L1CaloSlimmingHelper.IncludeAdditionalTriggerContent = False
217
218 L1CaloSlimmingHelper.IncludeEGammaTriggerContent = True
219 L1CaloSlimmingHelper.IncludeJetTriggerContent = True
220 L1CaloSlimmingHelper.IncludeBJetTriggerContent = True
221 L1CaloSlimmingHelper.IncludeTauTriggerContent = True
222 IncludeEtMissTriggerContent = True
223
224
225
226
227
228
229 if flags.Input.isMC and not isL1CaloSim:
230 L1CaloSlimmingHelper.AppendToDictionary.update({"SCell":"CaloCellContainer"})
231 AllVariables += ["SCell"]
232
233
234 if isNotPool and L1CaloSlimmingHelper.IncludeEGammaTriggerContent:
235
236
237 L1CaloSlimmingHelper.IncludeEGammaTriggerContent = False
238 ElToKeep = ['ptcone20', 'ptvarcone20', 'ptcone30', 'ptvarcone30', 'trk_d0','cl_eta2','cl_phi2', 'deltaEta1PearDistortion']
239 ElVars = '.'.join(ElToKeep)
240 StaticContent += ["xAOD::ElectronContainer#HLT_egamma_Electrons"]
241 StaticContent += ["xAOD::ElectronAuxContainer#HLT_egamma_ElectronsAux."+ElVars]
242 StaticContent += ["xAOD::ElectronContainer#HLT_egamma_Electrons_GSF"]
243 StaticContent += ["xAOD::ElectronAuxContainer#HLT_egamma_Electrons_GSFAux."+ElVars]
244
245 L1CaloSlimmingHelper.AppendToDictionary.update({"HLT_CaloEMClusters_Electron":"xAOD::CaloClusterContainer",
246 "HLT_CaloEMClusters_ElectronAux":"xAOD::CaloClusterAuxContainer"})
247 AllVariables += ["HLT_CaloEMClusters_Electron"]
248 L1CaloSlimmingHelper.AppendToDictionary.update({"HLT_IDTrack_Electron_IDTrig":"xAOD::TrackParticleContainer",
249 "HLT_IDTrack_Electron_IDTrigAux":"xAOD::TrackParticleAuxContainer"})
250 AllVariables += ["HLT_IDTrack_Electron_IDTrig"]
251 L1CaloSlimmingHelper.AppendToDictionary.update({"HLT_IDTrack_Electron_GSF":"xAOD::TrackParticleContainer",
252 "HLT_IDTrack_Electron_GSFAux":"xAOD::TrackParticleAuxContainer"})
253 AllVariables += ["HLT_IDTrack_Electron_GSF"]
254
255 if isNotPool and L1CaloSlimmingHelper.IncludeJetTriggerContent:
256
257
258 L1CaloSlimmingHelper.AppendToDictionary.update ({"HLT_AntiKt4EMTopoJets_nojcalib":"xAOD::JetContainer",
259 "HLT_AntiKt4EMTopoJets_nojcalibAux":"xAOD::JetAuxContainer",
260 "HLT_AntiKt4EMTopoJets_nojcalib_ftf":"xAOD::JetContainer",
261 "HLT_AntiKt4EMTopoJets_nojcalib_ftfAux":"xAOD::JetAuxContainer",
262 "HLT_AntiKt4EMTopoJets_subjesIS":"xAOD::JetContainer",
263 "HLT_AntiKt4EMTopoJets_subjesISAux":"xAOD::ShallowAuxContainer",
264 "HLT_AntiKt4EMPFlowJets_nojcalib_ftf":"xAOD::JetContainer",
265 "HLT_AntiKt4EMPFlowJets_nojcalib_ftfAux":"xAOD::JetAuxContainer",
266 "HLT_AntiKt4EMPFlowJets_subresjesgscIS_ftf":"xAOD::JetContainer",
267 "HLT_AntiKt4EMPFlowJets_subresjesgscIS_ftfAux":"xAOD::ShallowAuxContainer",
268 "HLT_AntiKt4EMPFlowJets_subjesgscIS_ftf":"xAOD::JetContainer",
269 "HLT_AntiKt4EMPFlowJets_subjesgscIS_ftfAux":"xAOD::ShallowAuxContainer",
270 "HLT_AntiKt10EMPFlowCSSKSoftDropBeta100Zcut10Jets_jes_ftf":"xAOD::JetContainer",
271 "HLT_AntiKt10EMPFlowCSSKSoftDropBeta100Zcut10Jets_jes_ftfAux":"xAOD::JetAuxContainer",
272 "HLT_IDVertex_FS":"xAOD::VertexContainer",
273 "HLT_IDVertex_FSAux":"xAOD::VertexAuxContainer",
274 "HLT_TCEventInfo_jet":"xAOD::TrigCompositeContainer",
275 "HLT_TCEventInfo_jetAux":"xAOD::TrigCompositeAuxContainer",
276 "HLT_AntiKt4EMPFlowJets_subresjesgscIS_ftf_BTagging": "xAOD::BTaggingContainer",
277 "HLT_AntiKt4EMPFlowJets_subresjesgscIS_ftf_BTaggingAux": "xAOD::BTaggingAuxContainer",
278 "HLT_AntiKt4EMPFlowJets_subresjesgscIS_ftf_bJets": "xAOD::JetContainer",
279 "HLT_AntiKt4EMPFlowJets_subresjesgscIS_ftf_bJetsAux": "xAOD::JetAuxContainer"})
280
281 AllVariables += ["HLT_AntiKt4EMPFlowJets_subresjesgscIS_ftf_BTagging", "HLT_AntiKt4EMPFlowJets_subresjesgscIS_ftf_bJets"]
282
283 if L1CaloSlimmingHelper.IncludeTauTriggerContent:
284 L1CaloSlimmingHelper.AppendToDictionary.update ({"HLT_TrigTauRecMerged_MVA":"xAOD::TauJetContainer",
285 "HLT_TrigTauRecMerged_MVAAux":"xAOD::TauJetAuxContainer",
286 "HLT_TrigTauRecMerged_LLP":"xAOD::TauJetContainer",
287 "HLT_TrigTauRecMerged_LLPAux":"xAOD::TauJetAuxContainer",
288 "HLT_TrigTauRecMerged_LRT":"xAOD::TauJetContainer",
289 "HLT_TrigTauRecMerged_LRTAux":"xAOD::TauJetAuxContainer",
290 "HLT_TrigTauRecMerged_CaloMVAOnly":"xAOD::TauJetContainer",
291 "HLT_TrigTauRecMerged_CaloMVAOnlyAux":"xAOD::TauJetAuxContainer"})
292 AllVariables += ["HLT_TrigTauRecMerged_MVA", "HLT_TrigTauRecMerged_LLP", "HLT_TrigTauRecMerged_LRT", "HLT_TrigTauRecMerged_CaloMVAOnly"]
293
294 if IncludeEtMissTriggerContent:
295 L1CaloSlimmingHelper.AppendToDictionary.update ({"HLT_MET_tcpufit":"xAOD::TrigMissingETContainer",
296 "HLT_MET_tcpufitAux":"xAOD::TrigMissingETAuxContainer",
297 "HLT_MET_cell":"xAOD::TrigMissingETContainer",
298 "HLT_MET_cellAux":"xAOD::TrigMissingETAuxContainer",
299 "HLT_MET_trkmht":"xAOD::TrigMissingETContainer",
300 "HLT_MET_trkmhtAux":"xAOD::TrigMissingETAuxContainer",
301 "HLT_MET_cvfpufit":"xAOD::TrigMissingETContainer",
302 "HLT_MET_cvfpufitAux":"xAOD::TrigMissingETAuxContainer",
303 "HLT_MET_pfopufit":"xAOD::TrigMissingETContainer",
304 "HLT_MET_pfopufitAux":"xAOD::TrigMissingETAuxContainer",
305 "HLT_MET_mhtpufit_em":"xAOD::TrigMissingETContainer",
306 "HLT_MET_mhtpufit_emAux":"xAOD::TrigMissingETAuxContainer",
307 "HLT_MET_mhtpufit_pf":"xAOD::TrigMissingETContainer",
308 "HLT_MET_mhtpufit_pfAux":"xAOD::TrigMissingETAuxContainer",
309 "HLT_MET_pfsum":"xAOD::TrigMissingETContainer",
310 "HLT_MET_pfsumAux":"xAOD::TrigMissingETAuxContainer",
311 "HLT_MET_pfsum_vssk":"xAOD::TrigMissingETContainer",
312 "HLT_MET_pfsum_vsskAux":"xAOD::TrigMissingETAuxContainer",
313 "HLT_MET_pfsum_cssk":"xAOD::TrigMissingETContainer",
314 "HLT_MET_pfsum_csskAux":"xAOD::TrigMissingETAuxContainer",
315 "HLT_MET_nn":"xAOD::TrigMissingETContainer",
316 "HLT_MET_nnAux":"xAOD::TrigMissingETAuxContainer"})
317
318 AllVariables += ["HLT_MET_tcpufit","HLT_MET_cell","HLT_MET_trkmht","HLT_MET_cvfpufit","HLT_MET_pfopufit","HLT_MET_mhtpufit_em","HLT_MET_mhtpufit_pf","HLT_MET_pfsum","HLT_MET_pfsum_vssk","HLT_MET_pfsum_cssk","HLT_MET_nn"]
319
320
321 L1CaloSlimmingHelper.AppendToDictionary.update({"EventInfo":"xAOD::EventInfo","EventInfoAux":"xAOD::EventAuxInfo"})
322
323
324 AllVariables += ["EventInfo","Kt4EMPFlowEventShape"]
325
326
327
328 L1CaloSlimmingHelper.AppendToDictionary.update (
329 {"Muons":"xAOD::MuonContainer", "MuonsAux":"xAOD::MuonAuxContainer",
330 "Photons":"xAOD::PhotonContainer", "PhotonsAux":"xAOD::PhotonAuxContainer",
331 "TauJets":"xAOD::TauJetContainer", "TauJetsAux":"xAOD::TauJetAuxContainer"}
332 )
333 AllVariables += ["AntiKt4EMPFlowJets","AntiKt10LCTopoJets","Muons","Photons"]
334 AllVariables += ["AntiKt10UFOCSSKSoftDropBeta100Zcut10Jets"]
335
336 SmartCollections += ["TauJets"]
337
338
339 L1CaloSlimmingHelper.AppendToDictionary.update (
340 {"Electrons":"xAOD::ElectronContainer", "ElectronsAux":"xAOD::ElectronAuxContainer"} )
341 AllVariables += ["Electrons"]
342
343 L1CaloSlimmingHelper.AppendToDictionary.update (
344 {"ForwardElectrons":"xAOD::ElectronContainer", "ForwardElectronsAux":"xAOD::ElectronAuxContainer"} )
345 AllVariables += ["ForwardElectrons"]
346
347
348 AllVariables += ["METAssoc_AntiKt4EMPFlow"]
349
350
351 if isNotPool:
352 StaticContent += ["xAOD::MissingETContainer#MET_Reference_AntiKt4EMPFlow"]
353 StaticContent += ["xAOD::MissingETAuxContainer#MET_Reference_AntiKt4EMPFlowAux.-ConstitObjectLinks.-ConstitObjectWeights"]
354
355 StaticContent += ["xAOD::MissingETContainer#MET_Core_AntiKt4EMPFlow"]
356 StaticContent += ["xAOD::MissingETAuxContainer#MET_Core_AntiKt4EMPFlowAux.name.mpx.mpy.sumet.source"]
357
358 StaticContent += ["xAOD::MissingETContainer#MET_Track"]
359 StaticContent += ["xAOD::MissingETAuxContainer#MET_TrackAux.name.mpx.mpy"]
360 else:
361 AllVariables += ["MET_Reference_AntiKt4EMPFlow"]
362 AllVariables += ["MET_Core_AntiKt4EMPFlow"]
363 L1CaloSlimmingHelper.AppendToDictionary.update (
364 {"MET_Track":"xAOD::MissingETContainer", "MET_TrackAux":"xAOD::MissingETAuxContainer"} )
365 AllVariables += ["MET_Track"]
366
367
368 if isNotPool:
369 StaticContent += ["xAOD::VertexContainer#PrimaryVertices"]
370 StaticContent += ["xAOD::VertexAuxContainer#PrimaryVerticesAux.-vxTrackAtVertex.-MvfFitInfo.-isInitialized.-VTAV"]
371 else:
372 L1CaloSlimmingHelper.AppendToDictionary.update(
373 {"PrimaryVertices":"xAOD::VertexContainer","PrimaryVerticesAux":"xAOD::VertexAuxContainer"}
374 )
375 AllVariables += ["PrimaryVertices"]
376
377
378
379 L1CaloSlimmingHelper.AppendToDictionary.update (
380 {"egammaTopoSeededClusters":"xAOD::CaloClusterContainer","egammaTopoSeededClustersAux":"xAOD::CaloClusterAuxContainer"}
381 )
382 AllVariables += ["egammaTopoSeededClusters"]
383
384
385 if isNotPool:
386 StaticContent += ["xAOD::VertexContainer#GSFConversionVertices"]
387
388 StaticContent += ["xAOD::VertexAuxContainer#GSFConversionVerticesAux.-vxTrackAtVertex"]
389
390 trackParticleAuxExclusions="-caloExtension.-cellAssociation.-clusterAssociation.-trackParameterCovarianceMatrices.-parameterX.-parameterY.-parameterZ.-parameterPX.-parameterPY.-parameterPZ.-parameterPosition"
391 StaticContent += ["xAOD::TrackParticleContainer#GSFTrackParticles"]
392 StaticContent += ["xAOD::TrackParticleAuxContainer#GSFTrackParticlesAux."+trackParticleAuxExclusions]
393 else:
394 L1CaloSlimmingHelper.AppendToDictionary.update (
395 {"GSFConversionVertices":"xAOD::VertexContainer",
396 "GSFConversionVerticesAux":"xAOD::VertexAuxContainer",
397 "GSFTrackParticles":"xAOD::TrackParticleContainer",
398 "GSFTrackParticlesAux":"xAOD::TrackParticleAuxContainer"}
399 )
400 AllVariables += ["GSFConversionVertices","GSFTrackParticles"]
401
402 L1CaloSlimmingHelper.AppendToDictionary.update (
403 {"egammaClusters":"xAOD::CaloClusterContainer",
404 "egammaClustersAux":"xAOD::CaloClusterAuxContainer",
405 "TauPi0Clusters":"xAOD::CaloClusterContainer",
406 "TauPi0ClustersAux":"xAOD::CaloClusterAuxContainer",
407 "CaloCalTopoClusters":"xAOD::CaloClusterContainer",
408 "CaloCalTopoClustersAux":"xAOD::CaloClusterAuxContainer",
409 "MuonSegments":"xAOD::MuonSegmentContainer",
410 "MuonSegmentsAux":"xAOD::MuonSegmentAuxContainer"}
411 )
412 AllVariables += ["egammaClusters","TauPi0Clusters","CaloCalTopoClusters","MuonSegments"]
413
414
415 ExtraVariables += [
416 'BTagging_AntiKt4EMPFlow.DL1dv01_pu.DL1dv01_pc.DL1dv01_pb.GN2v00_pu.GN2v00_pc.GN2v00_pb'
417 ]
418
419
420
421 L1CaloSlimmingHelper.AppendToDictionary.update (
422 {"LVL1EmTauRoIs":"xAOD::EmTauRoIContainer",
423 "LVL1EmTauRoIsAux":"xAOD::EmTauRoIAuxContainer",
424 "LVL1EnergySumRoI":"xAOD::EnergySumRoI",
425 "LVL1EnergySumRoIAux":"xAOD::EnergySumRoIAuxInfo",
426 "LVL1JetEtRoI":"xAOD::JetEtRoI",
427 "LVL1JetEtRoIAux":"xAOD::JetEtRoIAuxInfo",
428 "LVL1JetRoIs":"xAOD::JetRoIContainer",
429 "LVL1JetRoIsAux":"xAOD::JetRoIAuxContainer",
430 "LVL1MuonRoIs":"xAOD::MuonRoIContainer",
431 "LVL1MuonRoIsAux":"xAOD::MuonRoIAuxContainer"}
432 )
433 AllVariables += [ "LVL1EmTauRoIs","LVL1EnergySumRoI","LVL1JetEtRoI","LVL1JetRoIs","LVL1MuonRoIs"]
434
435
436 L1CaloSlimmingHelper.AppendToDictionary.update (
437 {"JEMTobRoIsRoIB":"xAOD::JEMTobRoIContainer",
438 "JEMTobRoIsRoIBAux":"xAOD::JEMTobRoIAuxContainer",
439 "JEMTobRoIs":"xAOD::JEMTobRoIContainer",
440 "JEMTobRoIsAux":"xAOD::JEMTobRoIAuxContainer",
441 "JEMEtSums":"xAOD::JEMEtSumsContainer",
442 "JEMEtSumsAux":"xAOD::JEMEtSumsAuxContainer"}
443 )
444 AllVariables += ["JEMTobRoIsRoIB",
445 "JEMTobRoIs",
446 "JEMEtSums"]
447
448 L1CaloSlimmingHelper.AppendToDictionary.update (
449 {"CMXCPHits":"xAOD::CMXCPHitsContainer",
450 "CMXCPHitsAux":"xAOD::CMXCPHitsAuxContainer",
451 "CMXCPTobs":"xAOD::CMXCPTobContainer",
452 "CMXCPTobsAux":"xAOD::CMXCPTobAuxContainer",
453 "CMXEtSums":"xAOD::CMXEtSumsContainer",
454 "CMXEtSumsAux":"xAOD::CMXEtSumsAuxContainer",
455 "CMXJetHits":"xAOD::CMXJetHitsContainer",
456 "CMXJetHitsAux":"xAOD::CMXJetHitsAuxContainer",
457 "CMXJetTobs":"xAOD::CMXJetTobContainer",
458 "CMXJetTobsAux":"xAOD::CMXJetTobAuxContainer",
459 "CMXRoIs":"xAOD::CMXRoIContainer",
460 "CMXRoIsAux":"xAOD::CMXRoIAuxContainer"}
461 )
462 AllVariables += ["CMXCPHits",
463 "CMXCPTobs",
464 "CMXEtSums",
465 "CMXJetHits",
466 "CMXJetTobs",
467 "CMXRoIs"]
468
469
470 L1CaloSlimmingHelper.AppendToDictionary.update (
471 {"CPMTobRoIs":"xAOD::CPMTobRoIContainer",
472 "CPMTobRoIsAux":"xAOD::CPMTobRoIAuxContainer",
473 "CPMTobRoIsRoIB":"xAOD::CPMTobRoIContainer",
474 "CPMTobRoIsRoIBAux":"xAOD::CPMTobRoIAuxContainer",
475 "CPMTowers":"xAOD::CPMTowerContainer",
476 "CPMTowersAux":"xAOD::CPMTowerAuxContainer",
477 "CPMTowersOverlap":"xAOD::CPMTowerContainer",
478 "CPMTowersOverlapAux":"xAOD::CPMTowerAuxContainer",
479 "RODHeaders":"xAOD::RODHeaderContainer",
480 "RODHeadersAux":"xAOD::RODHeaderAuxContainer",
481 "xAODTriggerTowers":"xAOD::TriggerTowerContainer",
482 "xAODTriggerTowersAux":"xAOD::TriggerTowerAuxContainer",
483 "JetElements":"xAOD::JetElementContainer",
484 "JetElementsAux":"xAOD::JetElementAuxContainer",
485 "JetElementsOverlap":"xAOD::JetElementContainer",
486 "JetElementsOverlapAux":"xAOD::JetElementAuxContainer",
487 "L1TopoRawData":"xAOD::L1TopoRawDataContainer",
488 "L1TopoRawDataAux":"xAOD::L1TopoRawDataAuxContainer",
489 "L1_Phase1L1TopoRAWData":"xAOD::L1TopoRawDataContainer",
490 "L1_Phase1L1TopoRAWDataAux":"xAOD::L1TopoRawDataAuxContainer"}
491 )
492 AllVariables += ["CPMTobRoIs",
493 "CPMTobRoIsRoIB",
494 "CPMTowers",
495 "CPMTowersOverlap",
496 "RODHeaders",
497 "xAODTriggerTowers",
498 "JetElements",
499 "JetElementsOverlap",
500 "L1TopoRawData",
501 "L1_Phase1L1TopoRAWData"]
502
503
504
505
506 L1CaloSlimmingHelper,AllVariables = addEfexTOBs(L1CaloSlimmingHelper, AllVariables)
507 L1CaloSlimmingHelper,AllVariables = addJfexTOBs(L1CaloSlimmingHelper, AllVariables)
508 L1CaloSlimmingHelper,AllVariables = addGfexTOBs(L1CaloSlimmingHelper, AllVariables)
509
510
511 L1CaloSlimmingHelper,AllVariables = addEfexTOBs(L1CaloSlimmingHelper, AllVariables, "Sim")
512 L1CaloSlimmingHelper,AllVariables = addJfexTOBs(L1CaloSlimmingHelper, AllVariables, "Sim")
513 L1CaloSlimmingHelper,AllVariables = addGfexTOBs(L1CaloSlimmingHelper, AllVariables, "Sim")
514
515
516
517 L1CaloSlimmingHelper.AppendToDictionary.update (
518 {"L1_eFexDataTowers":"xAOD::eFexTowerContainer",
519 "L1_eFexDataTowersAux":"xAOD::eFexTowerAuxContainer",
520 "L1_jFexDataTowers":"xAOD::jFexTowerContainer",
521 "L1_jFexDataTowersAux":"xAOD::jFexTowerAuxContainer",
522 "L1_gFexDataTowers":"xAOD::gFexTowerContainer",
523 "L1_gFexDataTowersAux":"xAOD::gFexTowerAuxContainer"}
524 )
525 AllVariables += ["L1_eFexDataTowers","L1_jFexDataTowers","L1_gFexDataTowers"]
526
527
528 L1CaloSlimmingHelper.AppendToDictionary.update (
529 {"L1_eFexEmulatedTowers":"xAOD::eFexTowerContainer",
530 "L1_eFexEmulatedTowersAux":"xAOD::eFexTowerAuxContainer"}
531 )
532 AllVariables += ["L1_eFexEmulatedTowers"]
533
534
535 L1CaloSlimmingHelper.AppendToDictionary.update (
536 {"L1_jFexEmulatedTowers":"xAOD::jFexTowerContainer",
537 "L1_jFexEmulatedTowersAux":"xAOD::jFexTowerAuxContainer"}
538 )
539 AllVariables += ["L1_jFexEmulatedTowers"]
540
541
542 L1CaloSlimmingHelper.AppendToDictionary.update (
543 {"L1_jFexEmulatedNoIdTowers":"xAOD::jFexTowerContainer",
544 "L1_jFexEmulatedNoIdTowersAux":"xAOD::jFexTowerAuxContainer"}
545 )
546 AllVariables += ["L1_jFexEmulatedNoIdTowers"]
547
548
549 if flags.Input.isMC:
550 L1CaloSlimmingHelper.AppendToDictionary.update (
551 {"L1_gFexEmulatedTowers":"xAOD::gFexTowerContainer",
552 "L1_gFexEmulatedTowersAux":"xAOD::gFexTowerAuxContainer"}
553 )
554 AllVariables += [ "L1_gFexEmulatedTowers" ]
555
556
557 if flags.Input.isMC:
558 from JetRecConfig.StandardSmallRJets import AntiKt4EMPFlow
559 from JetRecConfig.StandardLargeRJets import AntiKt10LCTopo_noVR, AntiKt10UFOCSSKSoftDrop_trigger
560 jets_to_schedule = [jet for jet in (AntiKt4EMPFlow, AntiKt10LCTopo_noVR, AntiKt10UFOCSSKSoftDrop_trigger)
561 if jet.fullname() not in flags.Input.Collections]
562
563 if jets_to_schedule:
564 from JetRecConfig.JetRecConfig import JetRecCfg
565 for container in jets_to_schedule:
566 acc.merge(JetRecCfg(flags, container))
567
568 jet_collections =
set([_.fullname().
replace(
'Jets',
'')
for _
in jets_to_schedule])
569 btag_jet_collections =
set([
'AntiKt4EMPFlow'])
570 met_jet_collections =
set([
'AntiKt4EMPFlow'])
571
572 if jet_collections & btag_jet_collections:
573 log.info('Scheduling b-tagging of rebuilt jets')
574 from BeamSpotConditions.BeamSpotConditionsConfig import BeamSpotCondAlgCfg
575 acc.merge(BeamSpotCondAlgCfg(flags))
576 from BTagging.BTagConfig import BTagRecoSplitCfg
577
578 for container in jet_collections & btag_jet_collections:
579 acc.merge(BTagRecoSplitCfg(flags, [container]))
580
581
582 if jet_collections & met_jet_collections:
583 log.info('Scheduling rebuild of standard MET')
584 from METReconstruction.METAssociatorCfg import METAssociatorCfg
585 from METUtilities.METMakerConfig import getMETMakerAlg
586 for container in jet_collections & met_jet_collections:
587 if container == 'AntiKt4EMPFlow':
588
589 log.info('Scheduling FlowElement linking')
590 from eflowRec.PFCfg import PFGlobalFlowElementLinkingCfg
591 acc.merge(PFGlobalFlowElementLinkingCfg(flags))
593 acc.addEventAlgo(getMETMakerAlg(container))
594 from CaloTools.CaloNoiseCondAlgConfig import CaloNoiseCondAlgCfg
595 acc.merge(CaloNoiseCondAlgCfg(flags))
596 from METReconstruction.METCalo_Cfg import METCalo_Cfg
598
599
600
601 if flags.Input.isMC:
602 from DerivationFrameworkMCTruth.MCTruthCommonConfig import PreJetMCTruthAugmentationsCfg
603 from DerivationFrameworkMCTruth.MCTruthCommonConfig import AddTruthCollectionNavigationDecorationsCfg,AddBornLeptonCollectionCfg
604 from DerivationFrameworkMCTruth.MCTruthCommonConfig import PostJetMCTruthAugmentationsCfg
605
606 acc.merge(PreJetMCTruthAugmentationsCfg(flags,decorationDressing = 'dressedPhoton'))
607
608 from JetRecConfig.StandardSmallRJets import AntiKt4Truth,AntiKt4TruthWZ,AntiKt4TruthDressedWZ,AntiKtVRTruthCharged
609 from JetRecConfig.StandardLargeRJets import AntiKt10TruthTrimmed,AntiKt10TruthSoftDrop
610 from JetRecConfig.JetRecConfig import JetRecCfg
611 jetList = [AntiKt4Truth,AntiKt4TruthWZ,AntiKt4TruthDressedWZ,AntiKtVRTruthCharged,
612 AntiKt10TruthTrimmed,AntiKt10TruthSoftDrop]
613
614 for jd in jetList:
615 if jd.fullname() not in flags.Input.Collections:
616 acc.merge(JetRecCfg(flags,jd))
617
618 if ( "xAOD::MissingETContainer#MET_Truth") not in flags.Input.TypedCollections:
619 from METReconstruction.METTruth_Cfg import METTruth_Cfg
621
622 acc.merge(PostJetMCTruthAugmentationsCfg(flags, decorationDressing = 'dressedPhoton'))
623 acc.addEventAlgo(CompFactory.DerivationFramework.LockDecorations(name ="L1CALOTruthContentsLockDecoration", Decorations = ['TruthParticles.dressedPhoton']))
624 acc.merge(AddTruthCollectionNavigationDecorationsCfg(flags, ["TruthElectrons", "TruthMuons", "TruthPhotons", "TruthTaus", "TruthNeutrinos"]))
625
626 acc.merge(AddBornLeptonCollectionCfg(flags))
627
628 AllVariables += [
629 "TruthElectrons",
630 "TruthMuons",
631 "TruthPhotons",
632 "TruthTaus",
633 "TruthNeutrinos",
634 "BornLeptons",
635 "MET_Truth",
636 "AntiKt4TruthJets",
637 "AntiKt4TruthWZJets",
638 "AntiKt10TruthTrimmedPtFrac5SmallR20Jets",
639 "AntiKt10TruthSoftDropBeta100Zcut10Jets"
640 ]
641
642 L1CaloSlimmingHelper.AllVariables = AllVariables
643 L1CaloSlimmingHelper.StaticContent = StaticContent
644 L1CaloSlimmingHelper.SmartCollections = SmartCollections
645 L1CaloSlimmingHelper.ExtraVariables = ExtraVariables
646
647
648 L1CaloItemList = L1CaloSlimmingHelper.GetItemList()
649 acc.merge(OutputStreamCfg(flags, streamNameStem, ItemList=L1CaloItemList, AcceptAlgs=["DFL1CALO_KERN"]))
650 acc.merge(SetupMetaDataForStreamCfg(flags, streamNameStem, AcceptAlgs=["DFL1CALO_KERN"], createMetadata=[MetadataCategory.CutFlowMetaData,MetadataCategory.TriggerMenuMetaData]))
651
652 return acc
653
654
std::string replace(std::string s, const std::string &s2, const std::string &s3)