206 """Configure the derivation framework driving algorithm (kernel)
208 acc = ComponentAccumulator()
211 from DerivationFrameworkPhys.PhysCommonConfig
import PhysCommonAugmentationsCfg
214 PhysCommonAugmentationsCfg(
215 flags, TriggerListsHelper=kwargs[
"TriggerListsHelper"]
220 augmentationTools = []
226 acc.addPublicTool(EGAM3eeMassTool1)
227 augmentationTools.append(EGAM3eeMassTool1)
230 acc.addPublicTool(EGAM3eeMassTool2)
231 augmentationTools.append(EGAM3eeMassTool2)
234 acc.addPublicTool(EGAM3eeMassTool3)
235 augmentationTools.append(EGAM3eeMassTool3)
240 from DerivationFrameworkCalo.DerivationFrameworkCaloConfig
import (
241 CaloDecoratorKernelCfg)
242 acc.merge(CaloDecoratorKernelCfg(flags))
246 streamName = kwargs[
"StreamName"]
249 if flags.Derivation.Egamma.doTrackThinning:
250 from DerivationFrameworkInDet.InDetToolsConfig
import (
251 TrackParticleThinningCfg,
252 MuonTrackParticleThinningCfg,
253 TauTrackParticleThinningCfg,
256 TrackThinningKeepElectronTracks =
True
257 TrackThinningKeepAllElectronTracks =
False
258 TrackThinningKeepPhotonTracks =
True
259 TrackThinningKeepAllPhotonTracks =
True
260 TrackThinningKeepJetTracks =
False
261 TrackThinningKeepMuonTracks =
False
262 TrackThinningKeepTauTracks =
False
263 TrackThinningKeepPVTracks =
True
266 if TrackThinningKeepElectronTracks:
267 EGAM3ElectronTPThinningTool = (
268 CompFactory.DerivationFramework.EgammaTrackParticleThinning(
269 name=
"EGAM3ElectronTPThinningTool",
270 StreamName=streamName,
272 GSFTrackParticlesKey=
"GSFTrackParticles",
273 InDetTrackParticlesKey=
"InDetTrackParticles",
274 SelectionString=
"Electrons.pt > 0*GeV",
279 acc.addPublicTool(EGAM3ElectronTPThinningTool)
280 thinningTools.append(EGAM3ElectronTPThinningTool)
284 if TrackThinningKeepAllElectronTracks:
285 EGAM3ElectronTPThinningTool2 = (
286 CompFactory.DerivationFramework.EgammaTrackParticleThinning(
287 name=
"EGAM3ElectronTPThinningTool2",
288 StreamName=streamName,
290 GSFTrackParticlesKey=
"GSFTrackParticles",
291 InDetTrackParticlesKey=
"InDetTrackParticles",
292 SelectionString=
"Electrons.pt > 4*GeV",
297 acc.addPublicTool(EGAM3ElectronTPThinningTool2)
298 thinningTools.append(EGAM3ElectronTPThinningTool2)
301 if TrackThinningKeepPhotonTracks:
302 EGAM3PhotonTPThinningTool = (
303 CompFactory.DerivationFramework.EgammaTrackParticleThinning(
304 name=
"EGAM3PhotonTPThinningTool",
305 StreamName=streamName,
307 GSFTrackParticlesKey=
"GSFTrackParticles",
308 InDetTrackParticlesKey=
"InDetTrackParticles",
309 GSFConversionVerticesKey=
"GSFConversionVertices",
310 SelectionString=
"Photons.pt > 0*GeV",
315 acc.addPublicTool(EGAM3PhotonTPThinningTool)
316 thinningTools.append(EGAM3PhotonTPThinningTool)
320 if TrackThinningKeepAllPhotonTracks:
321 EGAM3PhotonTPThinningTool2 = (
322 CompFactory.DerivationFramework.EgammaTrackParticleThinning(
323 name=
"EGAM3PhotonTPThinningTool2",
324 StreamName=streamName,
326 GSFTrackParticlesKey=
"GSFTrackParticles",
327 InDetTrackParticlesKey=
"InDetTrackParticles",
328 GSFConversionVerticesKey=
"GSFConversionVertices",
329 SelectionString=
"Photons.pt > 9.5*GeV",
334 acc.addPublicTool(EGAM3PhotonTPThinningTool2)
335 thinningTools.append(EGAM3PhotonTPThinningTool2)
338 if TrackThinningKeepJetTracks:
339 EGAM3JetTPThinningTool = (
340 CompFactory.DerivationFramework.JetTrackParticleThinning(
341 name=
"EGAM3JetTPThinningTool",
342 StreamName=streamName,
343 JetKey=
"AntiKt4EMPFlowJets",
344 InDetTrackParticlesKey=
"InDetTrackParticles",
347 acc.addPublicTool(EGAM3JetTPThinningTool)
348 thinningTools.append(EGAM3JetTPThinningTool)
351 if TrackThinningKeepMuonTracks:
352 EGAM3MuonTPThinningTool = acc.getPrimaryAndMerge(
353 MuonTrackParticleThinningCfg(
355 name=
"EGAM3MuonTPThinningTool",
356 StreamName=streamName,
358 InDetTrackParticlesKey=
"InDetTrackParticles",
361 thinningTools.append(EGAM3MuonTPThinningTool)
364 if TrackThinningKeepTauTracks:
365 EGAM3TauTPThinningTool = acc.getPrimaryAndMerge(
366 TauTrackParticleThinningCfg(
368 name=
"EGAM3TauTPThinningTool",
369 StreamName=streamName,
372 InDetTrackParticlesKey=
"InDetTrackParticles",
373 DoTauTracksThinning=
True,
374 TauTracksKey=
"TauTracks",
377 thinningTools.append(EGAM3TauTPThinningTool)
380 thinning_expression =
" && ".join(
382 "(InDetTrackParticles.DFCommonTightPrimary)",
383 "(abs(DFCommonInDetTrackZ0AtPV)*sin(InDetTrackParticles.theta)<3*mm)",
384 "(InDetTrackParticles.pt>10*GeV)",
387 if TrackThinningKeepPVTracks:
388 EGAM3TPThinningTool = acc.getPrimaryAndMerge(
389 TrackParticleThinningCfg(
391 name=
"EGAM3TPThinningTool",
392 StreamName=streamName,
393 SelectionString=thinning_expression,
394 InDetTrackParticlesKey=
"InDetTrackParticles",
397 thinningTools.append(EGAM3TPThinningTool)
401 acc.addPublicTool(skimmingTool)
405 CompFactory.DerivationFramework.DerivationKernel(
407 SkimmingTools=[skimmingTool],
408 AugmentationTools=augmentationTools,
409 ThinningTools=thinningTools,
417 acc = ComponentAccumulator()
425 from DerivationFrameworkPhys.TriggerListsHelper
import TriggerListsHelper
427 EGAM3TriggerListsHelper = TriggerListsHelper(flags)
434 StreamName=
"StreamDAOD_EGAM3",
435 TriggerListsHelper=EGAM3TriggerListsHelper,
440 from OutputStreamAthenaPool.OutputStreamConfig
import OutputStreamCfg
441 from xAODMetaDataCnv.InfileMetaDataConfig
import SetupMetaDataForStreamCfg
442 from DerivationFrameworkCore.SlimmingHelper
import SlimmingHelper
445 "EGAM3SlimmingHelper",
446 NamesAndTypes=flags.Input.TypedCollections,
455 EGAM3SlimmingHelper.AllVariables = [
460 "ForwardElectronClusters",
465 if flags.Trigger.EDMVersion == 2:
467 elif flags.Trigger.EDMVersion == 3:
471 EGAM3SlimmingHelper.AllVariables += ExtraContainersTrigger[MenuType]
472 EGAM3SlimmingHelper.AllVariables += ExtraContainersPhotonTrigger[MenuType]
473 EGAM3SlimmingHelper.AllVariables += ExtraContainersElectronTrigger[MenuType]
474 if not flags.Input.isMC:
475 EGAM3SlimmingHelper.AllVariables += ExtraContainersTriggerDataOnly[MenuType]
479 EGAM3SlimmingHelper.AllVariables += [
483 "egammaTruthParticles",
484 "MuonTruthParticles",
495 EGAM3SlimmingHelper.SmartCollections = [
501 "InDetTrackParticles",
502 "AntiKt4EMPFlowJets",
504 "MET_Baseline_AntiKt4EMPFlow",
507 EGAM3SlimmingHelper.SmartCollections += [
509 "AntiKt4TruthDressedWZJets",
511 if flags.Derivation.Egamma.addHLTJets:
512 EGAM3SlimmingHelper.SmartCollections += [
513 "HLT_AntiKt4EMPFlowJets_subresjesgscIS_ftf",
519 EGAM3SlimmingHelper.ExtraVariables += [
"Electrons.Loose.Medium.Tight"]
522 EGAM3SlimmingHelper.ExtraVariables += [
523 "Muons.ptcone20.ptcone30.ptcone40.etcone20.etcone30.etcone40"
527 EGAM3SlimmingHelper.ExtraVariables += [
528 "GSFConversionVertices.x.y.z.px.py.pz.pt1.pt2.etaAtCalo.phiAtCalo",
529 "GSFConversionVertices.trackParticleLinks",
533 EGAM3SlimmingHelper.ExtraVariables += [
"PrimaryVertices.x.y.sumPt2"]
536 EGAM3SlimmingHelper.ExtraVariables += [
537 "TopoClusterIsoCentralEventShape.Density",
538 "TopoClusterIsoForwardEventShape.Density",
539 "NeutralParticleFlowIsoCentralEventShape.Density",
540 "NeutralParticleFlowIsoForwardEventShape.Density",
543 from DerivationFrameworkEGamma
import EGammaIsoConfig
550 ) = EGammaIsoConfig.makeEGammaCommonIsoCfg(flags)
552 EGAM3SlimmingHelper.AppendToDictionary.update(densityDict)
553 EGAM3SlimmingHelper.ExtraVariables += densityList
556 from IsolationAlgs.DerivationTrackIsoConfig
import DerivationTrackIsoCfg
559 DerivationTrackIsoCfg(
560 flags, object_types=(
"Photons",), ptCuts=(500, 1000), postfix=
"Extra"
565 EGAM3SlimmingHelper.ExtraVariables += ElectronsCPDetailedContent
566 EGAM3SlimmingHelper.ExtraVariables += GSFTracksCPDetailedContent
569 from DerivationFrameworkCalo.DerivationFrameworkCaloConfig
import (
571 getClusterEnergyPerLayerDecorations,
574 gainDecorations = getGainDecorations(acc, flags,
"EGAM3Kernel")
575 print(
"EGAM3 gain decorations: ", gainDecorations)
576 EGAM3SlimmingHelper.ExtraVariables.extend(gainDecorations)
577 clusterEnergyDecorations = getClusterEnergyPerLayerDecorations(acc,
"EGAM3Kernel")
578 print(
"EGAM3 cluster energy decorations: ", clusterEnergyDecorations)
579 EGAM3SlimmingHelper.ExtraVariables.extend(clusterEnergyDecorations)
583 EGAM3SlimmingHelper.ExtraVariables += ExtraVariablesHLTPhotons[MenuType]
587 EGAM3SlimmingHelper.ExtraVariables += [
588 "Electrons.truthOrigin.truthType.truthParticleLink"
592 if flags.Derivation.Egamma.doEventInfoSlimming:
593 EGAM3SlimmingHelper.SmartCollections.append(
"EventInfo")
595 EGAM3SlimmingHelper.AllVariables += [
"EventInfo"]
598 EGAM3SlimmingHelper.IncludeEGammaTriggerContent =
True
602 if flags.Trigger.EDMVersion == 2:
603 from DerivationFrameworkPhys.TriggerMatchingCommonConfig
import AddRun2TriggerMatchingToSlimmingHelper
604 AddRun2TriggerMatchingToSlimmingHelper(SlimmingHelper = EGAM3SlimmingHelper,
605 OutputContainerPrefix =
"TrigMatch_",
606 TriggerList = EGAM3TriggerListsHelper.Run2TriggerNamesNoTau)
608 if flags.Trigger.EDMVersion == 3
or (flags.Trigger.EDMVersion == 2
and flags.Trigger.doEDMVersionConversion):
609 from TrigNavSlimmingMT.TrigNavSlimmingMTConfig
import AddRun3TrigNavSlimmingCollectionsToSlimmingHelper
610 AddRun3TrigNavSlimmingCollectionsToSlimmingHelper(EGAM3SlimmingHelper)
613 EGAM3SlimmingHelper.StaticContent = [
614 "CaloCellContainer#AllCalo",
615 "CaloClusterCellLinkContainer#egammaClusters_links",
618 EGAM3ItemList = EGAM3SlimmingHelper.GetItemList()
623 ItemList=EGAM3ItemList,
624 AcceptAlgs=[
"EGAM3Kernel"],
628 SetupMetaDataForStreamCfg(
631 AcceptAlgs=[
"EGAM3Kernel"],
633 MetadataCategory.CutFlowMetaData,
634 MetadataCategory.TruthMetaData,