201 """Configure the derivation framework driving algorithm (kernel)
203 acc = ComponentAccumulator()
206 from DerivationFrameworkPhys.PhysCommonConfig
import PhysCommonAugmentationsCfg
209 PhysCommonAugmentationsCfg(
210 flags, TriggerListsHelper=kwargs[
"TriggerListsHelper"]
215 augmentationTools = []
221 acc.addPublicTool(EGAM3eeMassTool1)
222 augmentationTools.append(EGAM3eeMassTool1)
225 acc.addPublicTool(EGAM3eeMassTool2)
226 augmentationTools.append(EGAM3eeMassTool2)
229 acc.addPublicTool(EGAM3eeMassTool3)
230 augmentationTools.append(EGAM3eeMassTool3)
235 from DerivationFrameworkCalo.DerivationFrameworkCaloConfig
import (
236 CaloDecoratorKernelCfg)
237 acc.merge(CaloDecoratorKernelCfg(flags))
241 streamName = kwargs[
"StreamName"]
244 if flags.Derivation.Egamma.doTrackThinning:
245 from DerivationFrameworkInDet.InDetToolsConfig
import (
246 TrackParticleThinningCfg,
247 MuonTrackParticleThinningCfg,
248 TauTrackParticleThinningCfg,
251 TrackThinningKeepElectronTracks =
True
252 TrackThinningKeepAllElectronTracks =
False
253 TrackThinningKeepPhotonTracks =
True
254 TrackThinningKeepAllPhotonTracks =
True
255 TrackThinningKeepJetTracks =
False
256 TrackThinningKeepMuonTracks =
False
257 TrackThinningKeepTauTracks =
False
258 TrackThinningKeepPVTracks =
True
261 if TrackThinningKeepElectronTracks:
262 EGAM3ElectronTPThinningTool = (
263 CompFactory.DerivationFramework.EgammaTrackParticleThinning(
264 name=
"EGAM3ElectronTPThinningTool",
265 StreamName=streamName,
267 GSFTrackParticlesKey=
"GSFTrackParticles",
268 InDetTrackParticlesKey=
"InDetTrackParticles",
269 SelectionString=
"Electrons.pt > 0*GeV",
274 acc.addPublicTool(EGAM3ElectronTPThinningTool)
275 thinningTools.append(EGAM3ElectronTPThinningTool)
279 if TrackThinningKeepAllElectronTracks:
280 EGAM3ElectronTPThinningTool2 = (
281 CompFactory.DerivationFramework.EgammaTrackParticleThinning(
282 name=
"EGAM3ElectronTPThinningTool2",
283 StreamName=streamName,
285 GSFTrackParticlesKey=
"GSFTrackParticles",
286 InDetTrackParticlesKey=
"InDetTrackParticles",
287 SelectionString=
"Electrons.pt > 4*GeV",
292 acc.addPublicTool(EGAM3ElectronTPThinningTool2)
293 thinningTools.append(EGAM3ElectronTPThinningTool2)
296 if TrackThinningKeepPhotonTracks:
297 EGAM3PhotonTPThinningTool = (
298 CompFactory.DerivationFramework.EgammaTrackParticleThinning(
299 name=
"EGAM3PhotonTPThinningTool",
300 StreamName=streamName,
302 GSFTrackParticlesKey=
"GSFTrackParticles",
303 InDetTrackParticlesKey=
"InDetTrackParticles",
304 GSFConversionVerticesKey=
"GSFConversionVertices",
305 SelectionString=
"Photons.pt > 0*GeV",
310 acc.addPublicTool(EGAM3PhotonTPThinningTool)
311 thinningTools.append(EGAM3PhotonTPThinningTool)
315 if TrackThinningKeepAllPhotonTracks:
316 EGAM3PhotonTPThinningTool2 = (
317 CompFactory.DerivationFramework.EgammaTrackParticleThinning(
318 name=
"EGAM3PhotonTPThinningTool2",
319 StreamName=streamName,
321 GSFTrackParticlesKey=
"GSFTrackParticles",
322 InDetTrackParticlesKey=
"InDetTrackParticles",
323 GSFConversionVerticesKey=
"GSFConversionVertices",
324 SelectionString=
"Photons.pt > 9.5*GeV",
329 acc.addPublicTool(EGAM3PhotonTPThinningTool2)
330 thinningTools.append(EGAM3PhotonTPThinningTool2)
333 if TrackThinningKeepJetTracks:
334 EGAM3JetTPThinningTool = (
335 CompFactory.DerivationFramework.JetTrackParticleThinning(
336 name=
"EGAM3JetTPThinningTool",
337 StreamName=streamName,
338 JetKey=
"AntiKt4EMPFlowJets",
339 InDetTrackParticlesKey=
"InDetTrackParticles",
342 acc.addPublicTool(EGAM3JetTPThinningTool)
343 thinningTools.append(EGAM3JetTPThinningTool)
346 if TrackThinningKeepMuonTracks:
347 EGAM3MuonTPThinningTool = acc.getPrimaryAndMerge(
348 MuonTrackParticleThinningCfg(
350 name=
"EGAM3MuonTPThinningTool",
351 StreamName=streamName,
353 InDetTrackParticlesKey=
"InDetTrackParticles",
356 thinningTools.append(EGAM3MuonTPThinningTool)
359 if TrackThinningKeepTauTracks:
360 EGAM3TauTPThinningTool = acc.getPrimaryAndMerge(
361 TauTrackParticleThinningCfg(
363 name=
"EGAM3TauTPThinningTool",
364 StreamName=streamName,
367 InDetTrackParticlesKey=
"InDetTrackParticles",
368 DoTauTracksThinning=
True,
369 TauTracksKey=
"TauTracks",
372 thinningTools.append(EGAM3TauTPThinningTool)
375 thinning_expression =
" && ".join(
377 "(InDetTrackParticles.DFCommonTightPrimary)",
378 "(abs(DFCommonInDetTrackZ0AtPV)*sin(InDetTrackParticles.theta)<3*mm)",
379 "(InDetTrackParticles.pt>10*GeV)",
382 if TrackThinningKeepPVTracks:
383 EGAM3TPThinningTool = acc.getPrimaryAndMerge(
384 TrackParticleThinningCfg(
386 name=
"EGAM3TPThinningTool",
387 StreamName=streamName,
388 SelectionString=thinning_expression,
389 InDetTrackParticlesKey=
"InDetTrackParticles",
392 thinningTools.append(EGAM3TPThinningTool)
399 CompFactory.DerivationFramework.DerivationKernel(
401 SkimmingTools=[skimmingTool],
402 AugmentationTools=augmentationTools,
403 ThinningTools=thinningTools,
411 acc = ComponentAccumulator()
419 from DerivationFrameworkPhys.TriggerListsHelper
import TriggerListsHelper
421 EGAM3TriggerListsHelper = TriggerListsHelper(flags)
428 StreamName=
"StreamDAOD_EGAM3",
429 TriggerListsHelper=EGAM3TriggerListsHelper,
434 from OutputStreamAthenaPool.OutputStreamConfig
import OutputStreamCfg
435 from xAODMetaDataCnv.InfileMetaDataConfig
import SetupMetaDataForStreamCfg
436 from DerivationFrameworkCore.SlimmingHelper
import SlimmingHelper
439 "EGAM3SlimmingHelper",
440 NamesAndTypes=flags.Input.TypedCollections,
449 EGAM3SlimmingHelper.AllVariables = [
454 "ForwardElectronClusters",
459 if flags.Trigger.EDMVersion == 2:
461 elif flags.Trigger.EDMVersion == 3:
465 EGAM3SlimmingHelper.AllVariables += ExtraContainersTrigger[MenuType]
466 EGAM3SlimmingHelper.AllVariables += ExtraContainersPhotonTrigger[MenuType]
467 EGAM3SlimmingHelper.AllVariables += ExtraContainersElectronTrigger[MenuType]
468 if not flags.Input.isMC:
469 EGAM3SlimmingHelper.AllVariables += ExtraContainersTriggerDataOnly[MenuType]
473 EGAM3SlimmingHelper.AllVariables += [
477 "egammaTruthParticles",
478 "MuonTruthParticles",
489 EGAM3SlimmingHelper.SmartCollections = [
495 "InDetTrackParticles",
496 "AntiKt4EMPFlowJets",
498 "MET_Baseline_AntiKt4EMPFlow",
501 EGAM3SlimmingHelper.SmartCollections += [
503 "AntiKt4TruthDressedWZJets",
505 if flags.Derivation.Egamma.addHLTJets:
506 EGAM3SlimmingHelper.SmartCollections += [
507 "HLT_AntiKt4EMPFlowJets_subresjesgscIS_ftf",
513 EGAM3SlimmingHelper.ExtraVariables += [
"Electrons.Loose.Medium.Tight"]
516 EGAM3SlimmingHelper.ExtraVariables += [
517 "Muons.ptcone20.ptcone30.ptcone40.etcone20.etcone30.etcone40"
521 EGAM3SlimmingHelper.ExtraVariables += [
522 "GSFConversionVertices.x.y.z.px.py.pz.pt1.pt2.etaAtCalo.phiAtCalo",
523 "GSFConversionVertices.trackParticleLinks",
527 EGAM3SlimmingHelper.ExtraVariables += [
"PrimaryVertices.x.y.sumPt2"]
530 EGAM3SlimmingHelper.ExtraVariables += [
531 "TopoClusterIsoCentralEventShape.Density",
532 "TopoClusterIsoForwardEventShape.Density",
533 "NeutralParticleFlowIsoCentralEventShape.Density",
534 "NeutralParticleFlowIsoForwardEventShape.Density",
537 from DerivationFrameworkEGamma
import EGammaIsoConfig
544 ) = EGammaIsoConfig.makeEGammaCommonIsoCfg(flags)
546 EGAM3SlimmingHelper.AppendToDictionary.update(densityDict)
547 EGAM3SlimmingHelper.ExtraVariables += densityList
550 from IsolationAlgs.DerivationTrackIsoConfig
import DerivationTrackIsoCfg
553 DerivationTrackIsoCfg(
554 flags, object_types=(
"Photons",), ptCuts=(500, 1000), postfix=
"Extra"
559 EGAM3SlimmingHelper.ExtraVariables += ElectronsCPDetailedContent
560 EGAM3SlimmingHelper.ExtraVariables += GSFTracksCPDetailedContent
563 from DerivationFrameworkCalo.DerivationFrameworkCaloConfig
import (
565 getClusterEnergyPerLayerDecorations,
568 gainDecorations = getGainDecorations(acc, flags,
"EGAM3Kernel")
569 print(
"EGAM3 gain decorations: ", gainDecorations)
570 EGAM3SlimmingHelper.ExtraVariables.extend(gainDecorations)
571 clusterEnergyDecorations = getClusterEnergyPerLayerDecorations(acc,
"EGAM3Kernel")
572 print(
"EGAM3 cluster energy decorations: ", clusterEnergyDecorations)
573 EGAM3SlimmingHelper.ExtraVariables.extend(clusterEnergyDecorations)
577 EGAM3SlimmingHelper.ExtraVariables += ExtraVariablesHLTPhotons[MenuType]
581 EGAM3SlimmingHelper.ExtraVariables += [
582 "Electrons.truthOrigin.truthType.truthParticleLink"
586 if flags.Derivation.Egamma.doEventInfoSlimming:
587 EGAM3SlimmingHelper.SmartCollections.append(
"EventInfo")
589 EGAM3SlimmingHelper.AllVariables += [
"EventInfo"]
592 EGAM3SlimmingHelper.IncludeEGammaTriggerContent =
True
596 if flags.Trigger.EDMVersion == 2:
597 from DerivationFrameworkPhys.TriggerMatchingCommonConfig
import AddRun2TriggerMatchingToSlimmingHelper
598 AddRun2TriggerMatchingToSlimmingHelper(SlimmingHelper = EGAM3SlimmingHelper,
599 OutputContainerPrefix =
"TrigMatch_",
600 TriggerList = EGAM3TriggerListsHelper.Run2TriggerNamesNoTau)
602 if flags.Trigger.EDMVersion == 3
or (flags.Trigger.EDMVersion == 2
and flags.Trigger.doEDMVersionConversion):
603 from TrigNavSlimmingMT.TrigNavSlimmingMTConfig
import AddRun3TrigNavSlimmingCollectionsToSlimmingHelper
604 AddRun3TrigNavSlimmingCollectionsToSlimmingHelper(EGAM3SlimmingHelper)
607 EGAM3SlimmingHelper.StaticContent = [
608 "CaloCellContainer#AllCalo",
609 "CaloClusterCellLinkContainer#egammaClusters_links",
612 EGAM3ItemList = EGAM3SlimmingHelper.GetItemList()
617 ItemList=EGAM3ItemList,
618 AcceptAlgs=[
"EGAM3Kernel"],
622 SetupMetaDataForStreamCfg(
625 AcceptAlgs=[
"EGAM3Kernel"],
627 MetadataCategory.CutFlowMetaData,
628 MetadataCategory.TruthMetaData,