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(InDetTrackParticles.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 =
"(TruthParticles.isW || TruthParticles.isZ || TruthParticles.isHiggs)"
413 truth_cond_lep =
"(TruthParticles.isLepton)"
415 truth_cond_top =
"(TruthParticles.isTop)"
417 truth_cond_gam =
" && ".join(
418 [
"(TruthParticles.isPhoton)",
"(TruthParticles.pt > 1*GeV)"]
421 truth_cond_finalState =
"(TruthParticles.isGenStable)"
436 + truth_cond_finalState
439 print(
"EGAM1 truth thinning expression: ", truth_expression)
441 EGAM1TruthThinningTool = CompFactory.DerivationFramework.GenericTruthThinning(
442 name=
"EGAM1TruthThinningTool",
443 StreamName=streamName,
444 ParticleSelectionString=truth_expression,
445 PreserveDescendants=
False,
446 PreserveGeneratorDescendants=
True,
447 PreserveAncestors=
True,
449 acc.addPublicTool(EGAM1TruthThinningTool)
450 thinningTools.append(EGAM1TruthThinningTool)
457 CompFactory.DerivationFramework.DerivationKernel(
459 SkimmingTools=[skimmingTool],
460 AugmentationTools=augmentationTools,
461 ThinningTools=thinningTools,
469 acc = ComponentAccumulator()
478 from DerivationFrameworkPhys.TriggerListsHelper
import TriggerListsHelper
479 EGAM1TriggerListsHelper = TriggerListsHelper(flags)
486 StreamName=
"StreamDAOD_EGAM1",
487 TriggerListsHelper=EGAM1TriggerListsHelper,
492 from OutputStreamAthenaPool.OutputStreamConfig
import OutputStreamCfg
493 from xAODMetaDataCnv.InfileMetaDataConfig
import SetupMetaDataForStreamCfg
494 from DerivationFrameworkCore.SlimmingHelper
import SlimmingHelper
497 "EGAM1SlimmingHelper",
498 NamesAndTypes=flags.Input.TypedCollections,
507 EGAM1SlimmingHelper.AllVariables = [
511 "CaloCalTopoClusters",
516 if flags.Trigger.EDMVersion == 2:
518 elif flags.Trigger.EDMVersion == 3:
521 EGAM1SlimmingHelper.AllVariables += ExtraContainersTrigger[MenuType]
522 EGAM1SlimmingHelper.AllVariables += ExtraContainersElectronTrigger[MenuType]
526 EGAM1SlimmingHelper.AllVariables += [
530 "egammaTruthParticles",
541 EGAM1SlimmingHelper.SmartCollections = [
547 "InDetTrackParticles",
548 "AntiKt4EMPFlowJets",
550 "MET_Baseline_AntiKt4EMPFlow",
553 EGAM1SlimmingHelper.SmartCollections += [
555 "AntiKt4TruthDressedWZJets",
561 EGAM1SlimmingHelper.ExtraVariables += [
562 "Muons.ptcone20.ptcone30.ptcone40.etcone20.etcone30.etcone40"
566 EGAM1SlimmingHelper.ExtraVariables += [
567 "GSFConversionVertices.x.y.z.px.py.pz.pt1.pt2.etaAtCalo.phiAtCalo",
568 "GSFConversionVertices.trackParticleLinks",
572 EGAM1SlimmingHelper.ExtraVariables += [
"PrimaryVertices.sumPt2"]
575 EGAM1SlimmingHelper.ExtraVariables += [
576 "AntiKt4PV0TrackJets.pt.eta.phi.e.m.btaggingLink.constituentLinks"
580 EGAM1SlimmingHelper.ExtraVariables += [
581 "TopoClusterIsoCentralEventShape.Density",
582 "TopoClusterIsoForwardEventShape.Density",
583 "NeutralParticleFlowIsoCentralEventShape.Density",
584 "NeutralParticleFlowIsoForwardEventShape.Density",
587 from DerivationFrameworkEGamma
import EGammaIsoConfig
594 ) = EGammaIsoConfig.makeEGammaCommonIsoCfg(flags)
596 EGAM1SlimmingHelper.AppendToDictionary.update(densityDict)
597 EGAM1SlimmingHelper.ExtraVariables += densityList
600 EGAM1SlimmingHelper.ExtraVariables += PhotonsCPDetailedContent
603 from DerivationFrameworkCalo.DerivationFrameworkCaloConfig
import (
605 getClusterEnergyPerLayerDecorations,
608 gainDecorations = getGainDecorations(acc, flags,
"EGAM1Kernel")
609 print(
"EGAM1 gain decorations: ", gainDecorations)
610 EGAM1SlimmingHelper.ExtraVariables.extend(gainDecorations)
611 clusterEnergyDecorations = getClusterEnergyPerLayerDecorations(acc,
"EGAM1Kernel")
612 print(
"EGAM1 cluster energy decorations: ", clusterEnergyDecorations)
613 EGAM1SlimmingHelper.ExtraVariables.extend(clusterEnergyDecorations)
617 EGAM1SlimmingHelper.ExtraVariables += [
618 "MuonTruthParticles.e.px.py.pz.status.pdgId.truthClassification.truthOrigin.truthType"
621 EGAM1SlimmingHelper.ExtraVariables += [
622 "Photons.truthClassification.truthOrigin.truthType.truthParticleLink"
626 if flags.Derivation.Egamma.doEventInfoSlimming:
627 EGAM1SlimmingHelper.SmartCollections.append(
"EventInfo")
629 EGAM1SlimmingHelper.AllVariables += [
"EventInfo"]
632 EGAM1SlimmingHelper.IncludeEGammaTriggerContent =
True
636 if flags.Trigger.EDMVersion == 2:
637 from DerivationFrameworkPhys.TriggerMatchingCommonConfig
import AddRun2TriggerMatchingToSlimmingHelper
638 AddRun2TriggerMatchingToSlimmingHelper(SlimmingHelper = EGAM1SlimmingHelper,
639 OutputContainerPrefix =
"TrigMatch_",
640 TriggerList = EGAM1TriggerListsHelper.Run2TriggerNamesNoTau)
642 if flags.Trigger.EDMVersion == 3
or (flags.Trigger.EDMVersion == 2
and flags.Trigger.doEDMVersionConversion):
643 from TrigNavSlimmingMT.TrigNavSlimmingMTConfig
import AddRun3TrigNavSlimmingCollectionsToSlimmingHelper
644 AddRun3TrigNavSlimmingCollectionsToSlimmingHelper(EGAM1SlimmingHelper)
647 EGAM1SlimmingHelper.StaticContent = [
648 "CaloCellContainer#AllCalo",
649 "CaloClusterCellLinkContainer#egammaClusters_links",
653 if flags.Derivation.Egamma.addPLITInputs:
654 from LeptonTaggers.LeptonTaggersConfig
import DecorateImprovedPromptLeptonAlgsCfg, GetExtraImprovedPromptVariablesForDxAOD
655 acc.merge(DecorateImprovedPromptLeptonAlgsCfg(flags))
656 EGAM1SlimmingHelper.ExtraVariables += [ item
for item
in GetExtraImprovedPromptVariablesForDxAOD()
if item.startswith(
"Electrons")]
657 if flags.Derivation.Egamma.addPLITOutputs:
658 from LeptonTaggers.LeptonTaggersConfig
import DecoratePLITAlgsCfg, GetExtraPLITVariablesForDxAOD
659 acc.merge(DecoratePLITAlgsCfg(flags))
660 EGAM1SlimmingHelper.ExtraVariables += [ item
for item
in GetExtraPLITVariablesForDxAOD()
if item.startswith(
"Electrons")]
662 EGAM1ItemList = EGAM1SlimmingHelper.GetItemList()
667 ItemList=EGAM1ItemList,
668 AcceptAlgs=[
"EGAM1Kernel"],
672 SetupMetaDataForStreamCfg(
675 AcceptAlgs=[
"EGAM1Kernel"],
677 MetadataCategory.CutFlowMetaData,
678 MetadataCategory.TruthMetaData,