210 """Configure the derivation framework driving algorithm (kernel)
212 acc = ComponentAccumulator()
215 from JetRecConfig.StandardSmallRJets
import AntiKt4PV0Track
216 from JetRecConfig.JetRecConfig
import JetRecCfg
218 jetList = [AntiKt4PV0Track]
220 acc.merge(JetRecCfg(flags, jd))
223 from DerivationFrameworkPhys.PhysCommonConfig
import PhysCommonAugmentationsCfg
226 PhysCommonAugmentationsCfg(
227 flags, TriggerListsHelper=kwargs[
"TriggerListsHelper"]
232 augmentationTools = []
238 acc.addPublicTool(EGAM1ZeeMassTool1)
239 augmentationTools.append(EGAM1ZeeMassTool1)
242 acc.addPublicTool(EGAM1ZeeMassTool2)
243 augmentationTools.append(EGAM1ZeeMassTool2)
246 acc.addPublicTool(EGAM1ZeeMassTool3)
247 augmentationTools.append(EGAM1ZeeMassTool3)
250 acc.addPublicTool(EGAM1ZegMassTool)
251 augmentationTools.append(EGAM1ZegMassTool)
256 from DerivationFrameworkCalo.DerivationFrameworkCaloConfig
import (
257 CaloDecoratorKernelCfg)
258 acc.merge(CaloDecoratorKernelCfg(flags))
262 streamName = kwargs[
"StreamName"]
265 if flags.Derivation.Egamma.doTrackThinning:
266 from DerivationFrameworkInDet.InDetToolsConfig
import (
267 TrackParticleThinningCfg,
268 MuonTrackParticleThinningCfg,
269 TauTrackParticleThinningCfg,
272 TrackThinningKeepElectronTracks =
True
273 TrackThinningKeepPhotonTracks =
True
274 TrackThinningKeepAllElectronTracks =
True
275 TrackThinningKeepJetTracks =
False
276 TrackThinningKeepMuonTracks =
False
277 TrackThinningKeepTauTracks =
False
278 TrackThinningKeepPVTracks =
True
281 if TrackThinningKeepElectronTracks:
282 EGAM1ElectronTPThinningTool = (
283 CompFactory.DerivationFramework.EgammaTrackParticleThinning(
284 name=
"EGAM1ElectronTPThinningTool",
285 StreamName=streamName,
287 GSFTrackParticlesKey=
"GSFTrackParticles",
288 InDetTrackParticlesKey=
"InDetTrackParticles",
289 SelectionString=
"Electrons.pt > 0*GeV",
294 acc.addPublicTool(EGAM1ElectronTPThinningTool)
295 thinningTools.append(EGAM1ElectronTPThinningTool)
299 if TrackThinningKeepAllElectronTracks:
300 EGAM1ElectronTPThinningTool2 = (
301 CompFactory.DerivationFramework.EgammaTrackParticleThinning(
302 name=
"EGAM1ElectronTPThinningTool2",
303 StreamName=streamName,
305 GSFTrackParticlesKey=
"GSFTrackParticles",
306 InDetTrackParticlesKey=
"InDetTrackParticles",
307 SelectionString=
"Electrons.pt > 4*GeV",
312 acc.addPublicTool(EGAM1ElectronTPThinningTool2)
313 thinningTools.append(EGAM1ElectronTPThinningTool2)
316 if TrackThinningKeepPhotonTracks:
317 EGAM1PhotonTPThinningTool = (
318 CompFactory.DerivationFramework.EgammaTrackParticleThinning(
319 name=
"EGAM1PhotonTPThinningTool",
320 StreamName=streamName,
322 GSFTrackParticlesKey=
"GSFTrackParticles",
323 InDetTrackParticlesKey=
"InDetTrackParticles",
324 GSFConversionVerticesKey=
"GSFConversionVertices",
325 SelectionString=
"Photons.pt > 0*GeV",
330 acc.addPublicTool(EGAM1PhotonTPThinningTool)
331 thinningTools.append(EGAM1PhotonTPThinningTool)
334 if TrackThinningKeepJetTracks:
335 EGAM1JetTPThinningTool = (
336 CompFactory.DerivationFramework.JetTrackParticleThinning(
337 name=
"EGAM1JetTPThinningTool",
338 StreamName=streamName,
339 JetKey=
"AntiKt4EMPFlowJets",
340 InDetTrackParticlesKey=
"InDetTrackParticles",
343 acc.addPublicTool(EGAM1JetTPThinningTool)
344 thinningTools.append(EGAM1JetTPThinningTool)
347 if TrackThinningKeepMuonTracks:
348 EGAM1MuonTPThinningTool = acc.getPrimaryAndMerge(
349 MuonTrackParticleThinningCfg(
351 name=
"EGAM1MuonTPThinningTool",
352 StreamName=streamName,
354 InDetTrackParticlesKey=
"InDetTrackParticles",
357 thinningTools.append(EGAM1MuonTPThinningTool)
360 if TrackThinningKeepTauTracks:
361 EGAM1TauTPThinningTool = acc.getPrimaryAndMerge(
362 TauTrackParticleThinningCfg(
364 name=
"EGAM1TauTPThinningTool",
365 StreamName=streamName,
368 InDetTrackParticlesKey=
"InDetTrackParticles",
369 DoTauTracksThinning=
True,
370 TauTracksKey=
"TauTracks",
373 thinningTools.append(EGAM1TauTPThinningTool)
376 thinning_expression =
" && ".join(
378 "(InDetTrackParticles.DFCommonTightPrimary)",
379 "(abs(DFCommonInDetTrackZ0AtPV)*sin(InDetTrackParticles.theta)<3*mm)",
380 "(InDetTrackParticles.pt>10*GeV)",
383 if TrackThinningKeepPVTracks:
384 EGAM1TPThinningTool = acc.getPrimaryAndMerge(
385 TrackParticleThinningCfg(
387 name=
"EGAM1TPThinningTool",
388 StreamName=streamName,
389 SelectionString=thinning_expression,
390 InDetTrackParticlesKey=
"InDetTrackParticles",
393 thinningTools.append(EGAM1TPThinningTool)
396 from DerivationFrameworkCalo.DerivationFrameworkCaloConfig
import (
397 CaloClusterThinningCfg,
400 EGAM1CCTCThinningTool = acc.getPrimaryAndMerge(
401 CaloClusterThinningCfg(
403 name=
"EGAM1CCTCThinningTool",
404 StreamName=streamName,
406 SelectionString=
"Electrons.pt>4*GeV",
407 TopoClCollectionSGKey=
"CaloCalTopoClusters",
411 thinningTools.append(EGAM1CCTCThinningTool)
416 truth_cond_WZH =
" && ".join(
417 [
"(abs(TruthParticles.pdgId) >= 23)",
"(abs(TruthParticles.pdgId) <= 25)"]
420 truth_cond_lep =
" && ".join(
421 [
"(abs(TruthParticles.pdgId) >= 11)",
"(abs(TruthParticles.pdgId) <= 16)"]
424 truth_cond_top =
"(abs(TruthParticles.pdgId) == 6)"
426 truth_cond_gam =
" && ".join(
427 [
"(abs(TruthParticles.pdgId) == 22)",
"(TruthParticles.pt > 1*GeV)"]
430 truth_cond_finalState =
"(TruthParticles.isGenStable)"
445 + truth_cond_finalState
448 print(
"EGAM1 truth thinning expression: ", truth_expression)
450 EGAM1TruthThinningTool = CompFactory.DerivationFramework.GenericTruthThinning(
451 name=
"EGAM1TruthThinningTool",
452 StreamName=streamName,
453 ParticleSelectionString=truth_expression,
454 PreserveDescendants=
False,
455 PreserveGeneratorDescendants=
True,
456 PreserveAncestors=
True,
458 acc.addPublicTool(EGAM1TruthThinningTool)
459 thinningTools.append(EGAM1TruthThinningTool)
463 acc.addPublicTool(skimmingTool)
467 CompFactory.DerivationFramework.DerivationKernel(
469 SkimmingTools=[skimmingTool],
470 AugmentationTools=augmentationTools,
471 ThinningTools=thinningTools,
479 acc = ComponentAccumulator()
488 from DerivationFrameworkPhys.TriggerListsHelper
import TriggerListsHelper
489 EGAM1TriggerListsHelper = TriggerListsHelper(flags)
496 StreamName=
"StreamDAOD_EGAM1",
497 TriggerListsHelper=EGAM1TriggerListsHelper,
502 from OutputStreamAthenaPool.OutputStreamConfig
import OutputStreamCfg
503 from xAODMetaDataCnv.InfileMetaDataConfig
import SetupMetaDataForStreamCfg
504 from DerivationFrameworkCore.SlimmingHelper
import SlimmingHelper
507 "EGAM1SlimmingHelper",
508 NamesAndTypes=flags.Input.TypedCollections,
517 EGAM1SlimmingHelper.AllVariables = [
521 "CaloCalTopoClusters",
526 if flags.Trigger.EDMVersion == 2:
528 elif flags.Trigger.EDMVersion == 3:
531 EGAM1SlimmingHelper.AllVariables += ExtraContainersTrigger[MenuType]
532 EGAM1SlimmingHelper.AllVariables += ExtraContainersElectronTrigger[MenuType]
536 EGAM1SlimmingHelper.AllVariables += [
540 "egammaTruthParticles",
551 EGAM1SlimmingHelper.SmartCollections = [
557 "InDetTrackParticles",
558 "AntiKt4EMPFlowJets",
560 "MET_Baseline_AntiKt4EMPFlow",
563 EGAM1SlimmingHelper.SmartCollections += [
565 "AntiKt4TruthDressedWZJets",
571 EGAM1SlimmingHelper.ExtraVariables += [
572 "Muons.ptcone20.ptcone30.ptcone40.etcone20.etcone30.etcone40"
576 EGAM1SlimmingHelper.ExtraVariables += [
577 "GSFConversionVertices.x.y.z.px.py.pz.pt1.pt2.etaAtCalo.phiAtCalo",
578 "GSFConversionVertices.trackParticleLinks",
582 EGAM1SlimmingHelper.ExtraVariables += [
"PrimaryVertices.sumPt2"]
585 EGAM1SlimmingHelper.ExtraVariables += [
586 "AntiKt4PV0TrackJets.pt.eta.phi.e.m.btaggingLink.constituentLinks"
590 EGAM1SlimmingHelper.ExtraVariables += [
591 "TopoClusterIsoCentralEventShape.Density",
592 "TopoClusterIsoForwardEventShape.Density",
593 "NeutralParticleFlowIsoCentralEventShape.Density",
594 "NeutralParticleFlowIsoForwardEventShape.Density",
597 from DerivationFrameworkEGamma
import EGammaIsoConfig
604 ) = EGammaIsoConfig.makeEGammaCommonIsoCfg(flags)
606 EGAM1SlimmingHelper.AppendToDictionary.update(densityDict)
607 EGAM1SlimmingHelper.ExtraVariables += densityList
610 EGAM1SlimmingHelper.ExtraVariables += PhotonsCPDetailedContent
613 from DerivationFrameworkCalo.DerivationFrameworkCaloConfig
import (
615 getClusterEnergyPerLayerDecorations,
618 gainDecorations = getGainDecorations(acc, flags,
"EGAM1Kernel")
619 print(
"EGAM1 gain decorations: ", gainDecorations)
620 EGAM1SlimmingHelper.ExtraVariables.extend(gainDecorations)
621 clusterEnergyDecorations = getClusterEnergyPerLayerDecorations(acc,
"EGAM1Kernel")
622 print(
"EGAM1 cluster energy decorations: ", clusterEnergyDecorations)
623 EGAM1SlimmingHelper.ExtraVariables.extend(clusterEnergyDecorations)
627 EGAM1SlimmingHelper.ExtraVariables += [
628 "MuonTruthParticles.e.px.py.pz.status.pdgId.truthOrigin.truthType"
631 EGAM1SlimmingHelper.ExtraVariables += [
632 "Photons.truthOrigin.truthType.truthParticleLink"
636 if flags.Derivation.Egamma.doEventInfoSlimming:
637 EGAM1SlimmingHelper.SmartCollections.append(
"EventInfo")
639 EGAM1SlimmingHelper.AllVariables += [
"EventInfo"]
642 EGAM1SlimmingHelper.IncludeEGammaTriggerContent =
True
646 if flags.Trigger.EDMVersion == 2:
647 from DerivationFrameworkPhys.TriggerMatchingCommonConfig
import AddRun2TriggerMatchingToSlimmingHelper
648 AddRun2TriggerMatchingToSlimmingHelper(SlimmingHelper = EGAM1SlimmingHelper,
649 OutputContainerPrefix =
"TrigMatch_",
650 TriggerList = EGAM1TriggerListsHelper.Run2TriggerNamesNoTau)
652 if flags.Trigger.EDMVersion == 3
or (flags.Trigger.EDMVersion == 2
and flags.Trigger.doEDMVersionConversion):
653 from TrigNavSlimmingMT.TrigNavSlimmingMTConfig
import AddRun3TrigNavSlimmingCollectionsToSlimmingHelper
654 AddRun3TrigNavSlimmingCollectionsToSlimmingHelper(EGAM1SlimmingHelper)
657 EGAM1SlimmingHelper.StaticContent = [
658 "CaloCellContainer#AllCalo",
659 "CaloClusterCellLinkContainer#egammaClusters_links",
663 if flags.Derivation.Egamma.addPLITInputs:
664 from LeptonTaggers.LeptonTaggersConfig
import DecorateImprovedPromptLeptonAlgsCfg, GetExtraImprovedPromptVariablesForDxAOD
665 acc.merge(DecorateImprovedPromptLeptonAlgsCfg(flags))
666 EGAM1SlimmingHelper.ExtraVariables += [ item
for item
in GetExtraImprovedPromptVariablesForDxAOD()
if item.startswith(
"Electrons")]
667 if flags.Derivation.Egamma.addPLITOutputs:
668 from LeptonTaggers.LeptonTaggersConfig
import DecoratePLITAlgsCfg, GetExtraPLITVariablesForDxAOD
669 acc.merge(DecoratePLITAlgsCfg(flags))
670 EGAM1SlimmingHelper.ExtraVariables += [ item
for item
in GetExtraPLITVariablesForDxAOD()
if item.startswith(
"Electrons")]
672 EGAM1ItemList = EGAM1SlimmingHelper.GetItemList()
677 ItemList=EGAM1ItemList,
678 AcceptAlgs=[
"EGAM1Kernel"],
682 SetupMetaDataForStreamCfg(
685 AcceptAlgs=[
"EGAM1Kernel"],
687 MetadataCategory.CutFlowMetaData,
688 MetadataCategory.TruthMetaData,