31 """Configure the EGAM7 skimming tool"""
32 acc = ComponentAccumulator()
36 expression =
"count(Electrons.pt > 4.5*GeV) >= 1"
37 print(
"EGAM7 offline skimming expression: ", expression)
38 from DerivationFrameworkTools.DerivationFrameworkToolsConfig
import (
39 xAODStringSkimmingToolCfg)
40 EGAM7_OfflineSkimmingTool = acc.getPrimaryAndMerge(xAODStringSkimmingToolCfg(
41 flags, name =
"EGAM7_OfflineSkimmingTool", expression = expression))
42 skimmingTools += [EGAM7_OfflineSkimmingTool]
46 if flags.Trigger.EDMVersion == 2:
48 elif flags.Trigger.EDMVersion == 3:
52 triggers = BkgElectronTriggers[MenuType]
53 print(
"EGAM7 trigger skimming list (OR): ", triggers)
55 EGAM7_TriggerSkimmingTool = CompFactory.DerivationFramework.TriggerSkimmingTool(
56 name=
"EGAM7_TriggerSkimmingTool", TriggerListOR=triggers
59 acc.addPublicTool(EGAM7_TriggerSkimmingTool)
60 skimmingTools += [EGAM7_TriggerSkimmingTool]
63 print(
"EGAM7 skimming is logical AND of previous selections")
64 EGAM7_SkimmingTool = CompFactory.DerivationFramework.FilterCombinationAND(
65 name=
"EGAM7_SkimmingTool",
66 FilterList=skimmingTools
69 acc.addPublicTool(EGAM7_SkimmingTool, primary=
True)
75 """Configure the derivation framework driving algorithm (kernel)
77 acc = ComponentAccumulator()
80 from JetRecConfig.StandardSmallRJets
import AntiKt4PV0Track
81 from JetRecConfig.JetRecConfig
import JetRecCfg
83 jetList = [AntiKt4PV0Track]
85 acc.merge(JetRecCfg(flags, jd))
88 from DerivationFrameworkPhys.PhysCommonConfig
import PhysCommonAugmentationsCfg
91 PhysCommonAugmentationsCfg(
92 flags, TriggerListsHelper=kwargs[
"TriggerListsHelper"]
97 augmentationTools = []
102 from DerivationFrameworkCalo.DerivationFrameworkCaloConfig
import (
103 CaloDecoratorKernelCfg)
104 acc.merge(CaloDecoratorKernelCfg(flags))
109 streamName = kwargs[
"StreamName"]
112 if flags.Derivation.Egamma.doTrackThinning:
113 from DerivationFrameworkInDet.InDetToolsConfig
import (
114 TrackParticleThinningCfg,
115 MuonTrackParticleThinningCfg,
116 TauTrackParticleThinningCfg,
119 TrackThinningKeepElectronTracks =
True
120 TrackThinningKeepPhotonTracks =
True
121 TrackThinningKeepAllElectronTracks =
False
122 TrackThinningKeepJetTracks =
False
123 TrackThinningKeepMuonTracks =
False
124 TrackThinningKeepTauTracks =
False
125 TrackThinningKeepPVTracks =
False
128 if TrackThinningKeepElectronTracks:
129 EGAM7ElectronTPThinningTool = (
130 CompFactory.DerivationFramework.EgammaTrackParticleThinning(
131 name=
"EGAM7ElectronTPThinningTool",
132 StreamName=streamName,
134 GSFTrackParticlesKey=
"GSFTrackParticles",
135 InDetTrackParticlesKey=
"InDetTrackParticles",
136 SelectionString=
"Electrons.pt > 0*GeV",
141 acc.addPublicTool(EGAM7ElectronTPThinningTool)
142 thinningTools.append(EGAM7ElectronTPThinningTool)
146 if TrackThinningKeepAllElectronTracks:
147 EGAM7ElectronTPThinningTool2 = (
148 CompFactory.DerivationFramework.EgammaTrackParticleThinning(
149 name=
"EGAM7ElectronTPThinningTool2",
150 StreamName=streamName,
152 GSFTrackParticlesKey=
"GSFTrackParticles",
153 InDetTrackParticlesKey=
"InDetTrackParticles",
154 SelectionString=
"Electrons.pt > 4*GeV",
159 acc.addPublicTool(EGAM7ElectronTPThinningTool2)
160 thinningTools.append(EGAM7ElectronTPThinningTool2)
163 if TrackThinningKeepPhotonTracks:
164 EGAM7PhotonTPThinningTool = (
165 CompFactory.DerivationFramework.EgammaTrackParticleThinning(
166 name=
"EGAM7PhotonTPThinningTool",
167 StreamName=streamName,
169 GSFTrackParticlesKey=
"GSFTrackParticles",
170 InDetTrackParticlesKey=
"InDetTrackParticles",
171 GSFConversionVerticesKey=
"GSFConversionVertices",
172 SelectionString=
"Photons.pt > 0*GeV",
177 acc.addPublicTool(EGAM7PhotonTPThinningTool)
178 thinningTools.append(EGAM7PhotonTPThinningTool)
181 if TrackThinningKeepJetTracks:
182 EGAM7JetTPThinningTool = (
183 CompFactory.DerivationFramework.JetTrackParticleThinning(
184 name=
"EGAM7JetTPThinningTool",
185 StreamName=streamName,
186 JetKey=
"AntiKt4EMPFlowJets",
187 InDetTrackParticlesKey=
"InDetTrackParticles",
190 acc.addPublicTool(EGAM7JetTPThinningTool)
191 thinningTools.append(EGAM7JetTPThinningTool)
194 if TrackThinningKeepMuonTracks:
195 EGAM7MuonTPThinningTool = acc.getPrimaryAndMerge(
196 MuonTrackParticleThinningCfg(
198 name=
"EGAM7MuonTPThinningTool",
199 StreamName=streamName,
201 InDetTrackParticlesKey=
"InDetTrackParticles",
204 thinningTools.append(EGAM7MuonTPThinningTool)
207 if TrackThinningKeepTauTracks:
208 EGAM7TauTPThinningTool = acc.getPrimaryAndMerge(
209 TauTrackParticleThinningCfg(
211 name=
"EGAM7TauTPThinningTool",
212 StreamName=streamName,
215 InDetTrackParticlesKey=
"InDetTrackParticles",
216 DoTauTracksThinning=
True,
217 TauTracksKey=
"TauTracks",
220 thinningTools.append(EGAM7TauTPThinningTool)
223 thinning_expression =
" && ".join(
225 "(InDetTrackParticles.DFCommonTightPrimary)",
226 "(abs(DFCommonInDetTrackZ0AtPV)*sin(InDetTrackParticles.theta)<3*mm)",
227 "(InDetTrackParticles.pt>10*GeV)",
230 if TrackThinningKeepPVTracks:
231 EGAM7TPThinningTool = acc.getPrimaryAndMerge(
232 TrackParticleThinningCfg(
234 name=
"EGAM7TPThinningTool",
235 StreamName=streamName,
236 SelectionString=thinning_expression,
237 InDetTrackParticlesKey=
"InDetTrackParticles",
240 thinningTools.append(EGAM7TPThinningTool)
245 truth_cond_WZH =
" && ".join(
246 [
"(abs(TruthParticles.pdgId) >= 23)",
"(abs(TruthParticles.pdgId) <= 25)"]
249 truth_cond_lep =
" && ".join(
250 [
"(abs(TruthParticles.pdgId) >= 11)",
"(abs(TruthParticles.pdgId) <= 16)"]
253 truth_cond_top =
"(abs(TruthParticles.pdgId) == 6)"
255 truth_cond_gam =
" && ".join(
256 [
"(abs(TruthParticles.pdgId) == 22)",
"(TruthParticles.pt > 1*GeV)"]
259 truth_cond_finalState =
"(TruthParticles.isGenStable)"
274 + truth_cond_finalState
277 print(
"EGAM7 truth thinning expression: ", truth_expression)
279 EGAM7TruthThinningTool = CompFactory.DerivationFramework.GenericTruthThinning(
280 name=
"EGAM7TruthThinningTool",
281 StreamName=streamName,
282 ParticleSelectionString=truth_expression,
283 PreserveDescendants=
False,
284 PreserveGeneratorDescendants=
True,
285 PreserveAncestors=
True,
287 acc.addPublicTool(EGAM7TruthThinningTool)
288 thinningTools.append(EGAM7TruthThinningTool)
292 from DerivationFrameworkCalo.CaloCellDFGetterConfig
import thinCaloCellsForDFCfg
295 thinCaloCellsForDFCfg(
297 inputClusterKeys=[
"egammaClusters"],
298 streamName=
"StreamDAOD_EGAM7",
299 inputCellKey=
"AllCalo",
300 outputCellKey=
"DFEGAMCellContainer",
309 CompFactory.DerivationFramework.DerivationKernel(
311 SkimmingTools=[skimmingTool],
312 AugmentationTools=augmentationTools,
313 ThinningTools=thinningTools,
321 acc = ComponentAccumulator()
330 from DerivationFrameworkPhys.TriggerListsHelper
import TriggerListsHelper
332 EGAM7TriggerListsHelper = TriggerListsHelper(flags)
339 StreamName=
"StreamDAOD_EGAM7",
340 TriggerListsHelper=EGAM7TriggerListsHelper,
345 from OutputStreamAthenaPool.OutputStreamConfig
import OutputStreamCfg
346 from xAODMetaDataCnv.InfileMetaDataConfig
import SetupMetaDataForStreamCfg
347 from DerivationFrameworkCore.SlimmingHelper
import SlimmingHelper
350 "EGAM7SlimmingHelper",
351 NamesAndTypes=flags.Input.TypedCollections,
360 EGAM7SlimmingHelper.AllVariables = [
368 if flags.Trigger.EDMVersion == 2:
370 elif flags.Trigger.EDMVersion == 3:
374 EGAM7SlimmingHelper.AllVariables += ExtraContainersTrigger[MenuType]
375 EGAM7SlimmingHelper.AllVariables += ExtraContainersElectronTrigger[MenuType]
376 if not flags.Input.isMC:
377 EGAM7SlimmingHelper.AllVariables += ExtraContainersTriggerDataOnly[MenuType]
381 EGAM7SlimmingHelper.AllVariables += [
385 "egammaTruthParticles",
398 EGAM7SlimmingHelper.SmartCollections = [
403 "InDetTrackParticles",
405 "AntiKt4EMPFlowJets",
406 "MET_Baseline_AntiKt4EMPFlow",
410 EGAM7SlimmingHelper.SmartCollections += [
412 "AntiKt4TruthDressedWZJets",
418 EGAM7SlimmingHelper.ExtraVariables += [
419 "Muons.ptcone20.ptcone30.ptcone40.etcone20.etcone30.etcone40"
423 EGAM7SlimmingHelper.ExtraVariables += [
424 "GSFConversionVertices.x.y.z.px.py.pz.pt1.pt2.etaAtCalo.phiAtCalo",
425 "GSFConversionVertices.trackParticleLinks",
429 EGAM7SlimmingHelper.ExtraVariables += [
"PrimaryVertices.x.y.sumPt2"]
432 EGAM7SlimmingHelper.ExtraVariables += [
433 "AntiKt4PV0TrackJets.pt.eta.phi.e.m.btaggingLink.constituentLinks"
437 EGAM7SlimmingHelper.ExtraVariables += PhotonsCPDetailedContent
440 from DerivationFrameworkCalo.DerivationFrameworkCaloConfig
import (
442 getClusterEnergyPerLayerDecorations,
445 gainDecorations = getGainDecorations(acc, flags,
"EGAM7Kernel")
446 print(
"EGAM7 gain decorations: ", gainDecorations)
447 EGAM7SlimmingHelper.ExtraVariables.extend(gainDecorations)
448 clusterEnergyDecorations = getClusterEnergyPerLayerDecorations(acc,
"EGAM7Kernel")
449 print(
"EGAM7 cluster energy decorations: ", clusterEnergyDecorations)
450 EGAM7SlimmingHelper.ExtraVariables.extend(clusterEnergyDecorations)
453 EGAM7SlimmingHelper.ExtraVariables += [
454 "TopoClusterIsoCentralEventShape.Density",
455 "TopoClusterIsoForwardEventShape.Density",
456 "NeutralParticleFlowIsoCentralEventShape.Density",
457 "NeutralParticleFlowIsoForwardEventShape.Density",
462 EGAM7SlimmingHelper.ExtraVariables += [
463 "MuonTruthParticles.e.px.py.pz.status.pdgId.truthOrigin.truthType"
466 EGAM7SlimmingHelper.ExtraVariables += [
467 "Photons.truthOrigin.truthType.truthParticleLink"
471 if flags.Derivation.Egamma.doEventInfoSlimming:
472 EGAM7SlimmingHelper.SmartCollections.append(
"EventInfo")
474 EGAM7SlimmingHelper.AllVariables += [
"EventInfo"]
477 EGAM7SlimmingHelper.IncludeEGammaTriggerContent =
True
481 if flags.Trigger.EDMVersion == 2:
482 from DerivationFrameworkPhys.TriggerMatchingCommonConfig
import AddRun2TriggerMatchingToSlimmingHelper
483 AddRun2TriggerMatchingToSlimmingHelper(SlimmingHelper = EGAM7SlimmingHelper,
484 OutputContainerPrefix =
"TrigMatch_",
485 TriggerList = EGAM7TriggerListsHelper.Run2TriggerNamesNoTau)
487 if flags.Trigger.EDMVersion == 3
or (flags.Trigger.EDMVersion == 2
and flags.Trigger.doEDMVersionConversion):
488 from TrigNavSlimmingMT.TrigNavSlimmingMTConfig
import AddRun3TrigNavSlimmingCollectionsToSlimmingHelper
489 AddRun3TrigNavSlimmingCollectionsToSlimmingHelper(EGAM7SlimmingHelper)
493 EGAM7SlimmingHelper.StaticContent = [
494 "CaloCellContainer#DFEGAMCellContainer",
495 "CaloClusterCellLinkContainer#egammaClusters_links",
498 EGAM7SlimmingHelper.StaticContent = [
499 "CaloCellContainer#AllCalo",
500 "CaloClusterCellLinkContainer#egammaClusters_links",
504 if flags.Derivation.Egamma.addPLITInputs:
505 from LeptonTaggers.LeptonTaggersConfig
import DecorateImprovedPromptLeptonAlgsCfg, GetExtraImprovedPromptVariablesForDxAOD
506 acc.merge(DecorateImprovedPromptLeptonAlgsCfg(flags))
507 EGAM7SlimmingHelper.ExtraVariables += [ item
for item
in GetExtraImprovedPromptVariablesForDxAOD()
if item.startswith(
"Electrons")]
508 if flags.Derivation.Egamma.addPLITOutputs:
509 from LeptonTaggers.LeptonTaggersConfig
import DecoratePLITAlgsCfg, GetExtraPLITVariablesForDxAOD
510 acc.merge(DecoratePLITAlgsCfg(flags))
511 EGAM7SlimmingHelper.ExtraVariables += [ item
for item
in GetExtraPLITVariablesForDxAOD()
if item.startswith(
"Electrons")]
513 EGAM7ItemList = EGAM7SlimmingHelper.GetItemList()
518 ItemList=EGAM7ItemList,
519 AcceptAlgs=[
"EGAM7Kernel"],
523 SetupMetaDataForStreamCfg(
526 AcceptAlgs=[
"EGAM7Kernel"],
528 MetadataCategory.CutFlowMetaData,
529 MetadataCategory.TruthMetaData,