205 """Configure the derivation framework driving algorithm (kernel)
207 acc = ComponentAccumulator()
210 from JetRecConfig.StandardSmallRJets
import AntiKt4PV0Track
211 from JetRecConfig.JetRecConfig
import JetRecCfg
213 jetList = [AntiKt4PV0Track]
215 acc.merge(JetRecCfg(flags, jd))
218 from DerivationFrameworkPhys.PhysCommonConfig
import PhysCommonAugmentationsCfg
221 PhysCommonAugmentationsCfg(
222 flags, TriggerListsHelper=kwargs[
"TriggerListsHelper"]
227 augmentationTools = []
233 acc.addPublicTool(EGAM1ZeeMassTool1)
234 augmentationTools.append(EGAM1ZeeMassTool1)
237 acc.addPublicTool(EGAM1ZeeMassTool2)
238 augmentationTools.append(EGAM1ZeeMassTool2)
241 acc.addPublicTool(EGAM1ZeeMassTool3)
242 augmentationTools.append(EGAM1ZeeMassTool3)
245 acc.addPublicTool(EGAM1ZegMassTool)
246 augmentationTools.append(EGAM1ZegMassTool)
251 from DerivationFrameworkCalo.DerivationFrameworkCaloConfig
import (
252 CaloDecoratorKernelCfg)
253 acc.merge(CaloDecoratorKernelCfg(flags))
257 streamName = kwargs[
"StreamName"]
260 if flags.Derivation.Egamma.doTrackThinning:
261 from DerivationFrameworkInDet.InDetToolsConfig
import (
262 TrackParticleThinningCfg,
263 MuonTrackParticleThinningCfg,
264 TauTrackParticleThinningCfg,
267 TrackThinningKeepElectronTracks =
True
268 TrackThinningKeepPhotonTracks =
True
269 TrackThinningKeepAllElectronTracks =
True
270 TrackThinningKeepJetTracks =
False
271 TrackThinningKeepMuonTracks =
False
272 TrackThinningKeepTauTracks =
False
273 TrackThinningKeepPVTracks =
True
276 if TrackThinningKeepElectronTracks:
277 EGAM1ElectronTPThinningTool = (
278 CompFactory.DerivationFramework.EgammaTrackParticleThinning(
279 name=
"EGAM1ElectronTPThinningTool",
280 StreamName=streamName,
282 GSFTrackParticlesKey=
"GSFTrackParticles",
283 InDetTrackParticlesKey=
"InDetTrackParticles",
284 SelectionString=
"Electrons.pt > 0*GeV",
289 acc.addPublicTool(EGAM1ElectronTPThinningTool)
290 thinningTools.append(EGAM1ElectronTPThinningTool)
294 if TrackThinningKeepAllElectronTracks:
295 EGAM1ElectronTPThinningTool2 = (
296 CompFactory.DerivationFramework.EgammaTrackParticleThinning(
297 name=
"EGAM1ElectronTPThinningTool2",
298 StreamName=streamName,
300 GSFTrackParticlesKey=
"GSFTrackParticles",
301 InDetTrackParticlesKey=
"InDetTrackParticles",
302 SelectionString=
"Electrons.pt > 4*GeV",
307 acc.addPublicTool(EGAM1ElectronTPThinningTool2)
308 thinningTools.append(EGAM1ElectronTPThinningTool2)
311 if TrackThinningKeepPhotonTracks:
312 EGAM1PhotonTPThinningTool = (
313 CompFactory.DerivationFramework.EgammaTrackParticleThinning(
314 name=
"EGAM1PhotonTPThinningTool",
315 StreamName=streamName,
317 GSFTrackParticlesKey=
"GSFTrackParticles",
318 InDetTrackParticlesKey=
"InDetTrackParticles",
319 GSFConversionVerticesKey=
"GSFConversionVertices",
320 SelectionString=
"Photons.pt > 0*GeV",
325 acc.addPublicTool(EGAM1PhotonTPThinningTool)
326 thinningTools.append(EGAM1PhotonTPThinningTool)
329 if TrackThinningKeepJetTracks:
330 EGAM1JetTPThinningTool = (
331 CompFactory.DerivationFramework.JetTrackParticleThinning(
332 name=
"EGAM1JetTPThinningTool",
333 StreamName=streamName,
334 JetKey=
"AntiKt4EMPFlowJets",
335 InDetTrackParticlesKey=
"InDetTrackParticles",
338 acc.addPublicTool(EGAM1JetTPThinningTool)
339 thinningTools.append(EGAM1JetTPThinningTool)
342 if TrackThinningKeepMuonTracks:
343 EGAM1MuonTPThinningTool = acc.getPrimaryAndMerge(
344 MuonTrackParticleThinningCfg(
346 name=
"EGAM1MuonTPThinningTool",
347 StreamName=streamName,
349 InDetTrackParticlesKey=
"InDetTrackParticles",
352 thinningTools.append(EGAM1MuonTPThinningTool)
355 if TrackThinningKeepTauTracks:
356 EGAM1TauTPThinningTool = acc.getPrimaryAndMerge(
357 TauTrackParticleThinningCfg(
359 name=
"EGAM1TauTPThinningTool",
360 StreamName=streamName,
363 InDetTrackParticlesKey=
"InDetTrackParticles",
364 DoTauTracksThinning=
True,
365 TauTracksKey=
"TauTracks",
368 thinningTools.append(EGAM1TauTPThinningTool)
371 thinning_expression =
" && ".join(
373 "(InDetTrackParticles.DFCommonTightPrimary)",
374 "(abs(DFCommonInDetTrackZ0AtPV)*sin(InDetTrackParticles.theta)<3*mm)",
375 "(InDetTrackParticles.pt>10*GeV)",
378 if TrackThinningKeepPVTracks:
379 EGAM1TPThinningTool = acc.getPrimaryAndMerge(
380 TrackParticleThinningCfg(
382 name=
"EGAM1TPThinningTool",
383 StreamName=streamName,
384 SelectionString=thinning_expression,
385 InDetTrackParticlesKey=
"InDetTrackParticles",
388 thinningTools.append(EGAM1TPThinningTool)
391 from DerivationFrameworkCalo.DerivationFrameworkCaloConfig
import (
392 CaloClusterThinningCfg,
395 EGAM1CCTCThinningTool = acc.getPrimaryAndMerge(
396 CaloClusterThinningCfg(
398 name=
"EGAM1CCTCThinningTool",
399 StreamName=streamName,
401 SelectionString=
"Electrons.pt>4*GeV",
402 TopoClCollectionSGKey=
"CaloCalTopoClusters",
406 thinningTools.append(EGAM1CCTCThinningTool)
411 truth_cond_WZH =
" && ".join(
412 [
"(abs(TruthParticles.pdgId) >= 23)",
"(abs(TruthParticles.pdgId) <= 25)"]
415 truth_cond_lep =
" && ".join(
416 [
"(abs(TruthParticles.pdgId) >= 11)",
"(abs(TruthParticles.pdgId) <= 16)"]
419 truth_cond_top =
"(abs(TruthParticles.pdgId) == 6)"
421 truth_cond_gam =
" && ".join(
422 [
"(abs(TruthParticles.pdgId) == 22)",
"(TruthParticles.pt > 1*GeV)"]
425 truth_cond_finalState =
"(TruthParticles.isGenStable)"
440 + truth_cond_finalState
443 print(
"EGAM1 truth thinning expression: ", truth_expression)
445 EGAM1TruthThinningTool = CompFactory.DerivationFramework.GenericTruthThinning(
446 name=
"EGAM1TruthThinningTool",
447 StreamName=streamName,
448 ParticleSelectionString=truth_expression,
449 PreserveDescendants=
False,
450 PreserveGeneratorDescendants=
True,
451 PreserveAncestors=
True,
453 acc.addPublicTool(EGAM1TruthThinningTool)
454 thinningTools.append(EGAM1TruthThinningTool)
461 CompFactory.DerivationFramework.DerivationKernel(
463 SkimmingTools=[skimmingTool],
464 AugmentationTools=augmentationTools,
465 ThinningTools=thinningTools,
473 acc = ComponentAccumulator()
482 from DerivationFrameworkPhys.TriggerListsHelper
import TriggerListsHelper
483 EGAM1TriggerListsHelper = TriggerListsHelper(flags)
490 StreamName=
"StreamDAOD_EGAM1",
491 TriggerListsHelper=EGAM1TriggerListsHelper,
496 from OutputStreamAthenaPool.OutputStreamConfig
import OutputStreamCfg
497 from xAODMetaDataCnv.InfileMetaDataConfig
import SetupMetaDataForStreamCfg
498 from DerivationFrameworkCore.SlimmingHelper
import SlimmingHelper
501 "EGAM1SlimmingHelper",
502 NamesAndTypes=flags.Input.TypedCollections,
511 EGAM1SlimmingHelper.AllVariables = [
515 "CaloCalTopoClusters",
520 if flags.Trigger.EDMVersion == 2:
522 elif flags.Trigger.EDMVersion == 3:
525 EGAM1SlimmingHelper.AllVariables += ExtraContainersTrigger[MenuType]
526 EGAM1SlimmingHelper.AllVariables += ExtraContainersElectronTrigger[MenuType]
530 EGAM1SlimmingHelper.AllVariables += [
534 "egammaTruthParticles",
545 EGAM1SlimmingHelper.SmartCollections = [
551 "InDetTrackParticles",
552 "AntiKt4EMPFlowJets",
554 "MET_Baseline_AntiKt4EMPFlow",
557 EGAM1SlimmingHelper.SmartCollections += [
559 "AntiKt4TruthDressedWZJets",
565 EGAM1SlimmingHelper.ExtraVariables += [
566 "Muons.ptcone20.ptcone30.ptcone40.etcone20.etcone30.etcone40"
570 EGAM1SlimmingHelper.ExtraVariables += [
571 "GSFConversionVertices.x.y.z.px.py.pz.pt1.pt2.etaAtCalo.phiAtCalo",
572 "GSFConversionVertices.trackParticleLinks",
576 EGAM1SlimmingHelper.ExtraVariables += [
"PrimaryVertices.sumPt2"]
579 EGAM1SlimmingHelper.ExtraVariables += [
580 "AntiKt4PV0TrackJets.pt.eta.phi.e.m.btaggingLink.constituentLinks"
584 EGAM1SlimmingHelper.ExtraVariables += [
585 "TopoClusterIsoCentralEventShape.Density",
586 "TopoClusterIsoForwardEventShape.Density",
587 "NeutralParticleFlowIsoCentralEventShape.Density",
588 "NeutralParticleFlowIsoForwardEventShape.Density",
591 from DerivationFrameworkEGamma
import EGammaIsoConfig
598 ) = EGammaIsoConfig.makeEGammaCommonIsoCfg(flags)
600 EGAM1SlimmingHelper.AppendToDictionary.update(densityDict)
601 EGAM1SlimmingHelper.ExtraVariables += densityList
604 EGAM1SlimmingHelper.ExtraVariables += PhotonsCPDetailedContent
607 from DerivationFrameworkCalo.DerivationFrameworkCaloConfig
import (
609 getClusterEnergyPerLayerDecorations,
612 gainDecorations = getGainDecorations(acc, flags,
"EGAM1Kernel")
613 print(
"EGAM1 gain decorations: ", gainDecorations)
614 EGAM1SlimmingHelper.ExtraVariables.extend(gainDecorations)
615 clusterEnergyDecorations = getClusterEnergyPerLayerDecorations(acc,
"EGAM1Kernel")
616 print(
"EGAM1 cluster energy decorations: ", clusterEnergyDecorations)
617 EGAM1SlimmingHelper.ExtraVariables.extend(clusterEnergyDecorations)
621 EGAM1SlimmingHelper.ExtraVariables += [
622 "MuonTruthParticles.e.px.py.pz.status.pdgId.truthOrigin.truthType"
625 EGAM1SlimmingHelper.ExtraVariables += [
626 "Photons.truthOrigin.truthType.truthParticleLink"
630 if flags.Derivation.Egamma.doEventInfoSlimming:
631 EGAM1SlimmingHelper.SmartCollections.append(
"EventInfo")
633 EGAM1SlimmingHelper.AllVariables += [
"EventInfo"]
636 EGAM1SlimmingHelper.IncludeEGammaTriggerContent =
True
640 if flags.Trigger.EDMVersion == 2:
641 from DerivationFrameworkPhys.TriggerMatchingCommonConfig
import AddRun2TriggerMatchingToSlimmingHelper
642 AddRun2TriggerMatchingToSlimmingHelper(SlimmingHelper = EGAM1SlimmingHelper,
643 OutputContainerPrefix =
"TrigMatch_",
644 TriggerList = EGAM1TriggerListsHelper.Run2TriggerNamesNoTau)
646 if flags.Trigger.EDMVersion == 3
or (flags.Trigger.EDMVersion == 2
and flags.Trigger.doEDMVersionConversion):
647 from TrigNavSlimmingMT.TrigNavSlimmingMTConfig
import AddRun3TrigNavSlimmingCollectionsToSlimmingHelper
648 AddRun3TrigNavSlimmingCollectionsToSlimmingHelper(EGAM1SlimmingHelper)
651 EGAM1SlimmingHelper.StaticContent = [
652 "CaloCellContainer#AllCalo",
653 "CaloClusterCellLinkContainer#egammaClusters_links",
657 if flags.Derivation.Egamma.addPLITInputs:
658 from LeptonTaggers.LeptonTaggersConfig
import DecorateImprovedPromptLeptonAlgsCfg, GetExtraImprovedPromptVariablesForDxAOD
659 acc.merge(DecorateImprovedPromptLeptonAlgsCfg(flags))
660 EGAM1SlimmingHelper.ExtraVariables += [ item
for item
in GetExtraImprovedPromptVariablesForDxAOD()
if item.startswith(
"Electrons")]
661 if flags.Derivation.Egamma.addPLITOutputs:
662 from LeptonTaggers.LeptonTaggersConfig
import DecoratePLITAlgsCfg, GetExtraPLITVariablesForDxAOD
663 acc.merge(DecoratePLITAlgsCfg(flags))
664 EGAM1SlimmingHelper.ExtraVariables += [ item
for item
in GetExtraPLITVariablesForDxAOD()
if item.startswith(
"Electrons")]
666 EGAM1ItemList = EGAM1SlimmingHelper.GetItemList()
671 ItemList=EGAM1ItemList,
672 AcceptAlgs=[
"EGAM1Kernel"],
676 SetupMetaDataForStreamCfg(
679 AcceptAlgs=[
"EGAM1Kernel"],
681 MetadataCategory.CutFlowMetaData,
682 MetadataCategory.TruthMetaData,