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