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 EGAM7_OfflineSkimmingTool = CompFactory.DerivationFramework.xAODStringSkimmingTool(
39 name=
"EGAM7_OfflineSkimmingTool", expression=expression
41 if flags.Trigger.EDMVersion < 0:
42 EGAM7_OfflineSkimmingTool.TrigDecisionTool=
None
44 acc.addPublicTool(EGAM7_OfflineSkimmingTool)
45 skimmingTools += [EGAM7_OfflineSkimmingTool]
49 if flags.Trigger.EDMVersion == 2:
51 elif flags.Trigger.EDMVersion == 3:
55 triggers = BkgElectronTriggers[MenuType]
56 print(
"EGAM7 trigger skimming list (OR): ", triggers)
58 EGAM7_TriggerSkimmingTool = CompFactory.DerivationFramework.TriggerSkimmingTool(
59 name=
"EGAM7_TriggerSkimmingTool", TriggerListOR=triggers
62 acc.addPublicTool(EGAM7_TriggerSkimmingTool)
63 skimmingTools += [EGAM7_TriggerSkimmingTool]
66 print(
"EGAM7 skimming is logical AND of previous selections")
67 EGAM7_SkimmingTool = CompFactory.DerivationFramework.FilterCombinationAND(
68 name=
"EGAM7_SkimmingTool",
69 FilterList=skimmingTools
72 acc.addPublicTool(EGAM7_SkimmingTool, primary=
True)
78 """Configure the derivation framework driving algorithm (kernel)
80 acc = ComponentAccumulator()
83 from JetRecConfig.StandardSmallRJets
import AntiKt4PV0Track
84 from JetRecConfig.JetRecConfig
import JetRecCfg
86 jetList = [AntiKt4PV0Track]
88 acc.merge(JetRecCfg(flags, jd))
91 from DerivationFrameworkPhys.PhysCommonConfig
import PhysCommonAugmentationsCfg
94 PhysCommonAugmentationsCfg(
95 flags, TriggerListsHelper=kwargs[
"TriggerListsHelper"]
100 augmentationTools = []
105 from DerivationFrameworkCalo.DerivationFrameworkCaloConfig
import (
106 CaloDecoratorKernelCfg)
107 acc.merge(CaloDecoratorKernelCfg(flags))
112 streamName = kwargs[
"StreamName"]
115 if flags.Derivation.Egamma.doTrackThinning:
116 from DerivationFrameworkInDet.InDetToolsConfig
import (
117 TrackParticleThinningCfg,
118 MuonTrackParticleThinningCfg,
119 TauTrackParticleThinningCfg,
122 TrackThinningKeepElectronTracks =
True
123 TrackThinningKeepPhotonTracks =
True
124 TrackThinningKeepAllElectronTracks =
False
125 TrackThinningKeepJetTracks =
False
126 TrackThinningKeepMuonTracks =
False
127 TrackThinningKeepTauTracks =
False
128 TrackThinningKeepPVTracks =
False
131 if TrackThinningKeepElectronTracks:
132 EGAM7ElectronTPThinningTool = (
133 CompFactory.DerivationFramework.EgammaTrackParticleThinning(
134 name=
"EGAM7ElectronTPThinningTool",
135 StreamName=streamName,
137 GSFTrackParticlesKey=
"GSFTrackParticles",
138 InDetTrackParticlesKey=
"InDetTrackParticles",
139 SelectionString=
"Electrons.pt > 0*GeV",
144 acc.addPublicTool(EGAM7ElectronTPThinningTool)
145 thinningTools.append(EGAM7ElectronTPThinningTool)
149 if TrackThinningKeepAllElectronTracks:
150 EGAM7ElectronTPThinningTool2 = (
151 CompFactory.DerivationFramework.EgammaTrackParticleThinning(
152 name=
"EGAM7ElectronTPThinningTool2",
153 StreamName=streamName,
155 GSFTrackParticlesKey=
"GSFTrackParticles",
156 InDetTrackParticlesKey=
"InDetTrackParticles",
157 SelectionString=
"Electrons.pt > 4*GeV",
162 acc.addPublicTool(EGAM7ElectronTPThinningTool2)
163 thinningTools.append(EGAM7ElectronTPThinningTool2)
166 if TrackThinningKeepPhotonTracks:
167 EGAM7PhotonTPThinningTool = (
168 CompFactory.DerivationFramework.EgammaTrackParticleThinning(
169 name=
"EGAM7PhotonTPThinningTool",
170 StreamName=streamName,
172 GSFTrackParticlesKey=
"GSFTrackParticles",
173 InDetTrackParticlesKey=
"InDetTrackParticles",
174 GSFConversionVerticesKey=
"GSFConversionVertices",
175 SelectionString=
"Photons.pt > 0*GeV",
180 acc.addPublicTool(EGAM7PhotonTPThinningTool)
181 thinningTools.append(EGAM7PhotonTPThinningTool)
184 if TrackThinningKeepJetTracks:
185 EGAM7JetTPThinningTool = (
186 CompFactory.DerivationFramework.JetTrackParticleThinning(
187 name=
"EGAM7JetTPThinningTool",
188 StreamName=streamName,
189 JetKey=
"AntiKt4EMPFlowJets",
190 InDetTrackParticlesKey=
"InDetTrackParticles",
193 acc.addPublicTool(EGAM7JetTPThinningTool)
194 thinningTools.append(EGAM7JetTPThinningTool)
197 if TrackThinningKeepMuonTracks:
198 EGAM7MuonTPThinningTool = acc.getPrimaryAndMerge(
199 MuonTrackParticleThinningCfg(
201 name=
"EGAM7MuonTPThinningTool",
202 StreamName=streamName,
204 InDetTrackParticlesKey=
"InDetTrackParticles",
207 thinningTools.append(EGAM7MuonTPThinningTool)
210 if TrackThinningKeepTauTracks:
211 EGAM7TauTPThinningTool = acc.getPrimaryAndMerge(
212 TauTrackParticleThinningCfg(
214 name=
"EGAM7TauTPThinningTool",
215 StreamName=streamName,
218 InDetTrackParticlesKey=
"InDetTrackParticles",
219 DoTauTracksThinning=
True,
220 TauTracksKey=
"TauTracks",
223 thinningTools.append(EGAM7TauTPThinningTool)
226 thinning_expression =
" && ".join(
228 "(InDetTrackParticles.DFCommonTightPrimary)",
229 "(abs(DFCommonInDetTrackZ0AtPV)*sin(InDetTrackParticles.theta)<3*mm)",
230 "(InDetTrackParticles.pt>10*GeV)",
233 if TrackThinningKeepPVTracks:
234 EGAM7TPThinningTool = acc.getPrimaryAndMerge(
235 TrackParticleThinningCfg(
237 name=
"EGAM7TPThinningTool",
238 StreamName=streamName,
239 SelectionString=thinning_expression,
240 InDetTrackParticlesKey=
"InDetTrackParticles",
243 thinningTools.append(EGAM7TPThinningTool)
248 truth_cond_WZH =
" && ".join(
249 [
"(abs(TruthParticles.pdgId) >= 23)",
"(abs(TruthParticles.pdgId) <= 25)"]
252 truth_cond_lep =
" && ".join(
253 [
"(abs(TruthParticles.pdgId) >= 11)",
"(abs(TruthParticles.pdgId) <= 16)"]
256 truth_cond_top =
"(abs(TruthParticles.pdgId) == 6)"
258 truth_cond_gam =
" && ".join(
259 [
"(abs(TruthParticles.pdgId) == 22)",
"(TruthParticles.pt > 1*GeV)"]
262 truth_cond_finalState =
"(TruthParticles.isGenStable)"
277 + truth_cond_finalState
280 print(
"EGAM7 truth thinning expression: ", truth_expression)
282 EGAM7TruthThinningTool = CompFactory.DerivationFramework.GenericTruthThinning(
283 name=
"EGAM7TruthThinningTool",
284 StreamName=streamName,
285 ParticleSelectionString=truth_expression,
286 PreserveDescendants=
False,
287 PreserveGeneratorDescendants=
True,
288 PreserveAncestors=
True,
290 acc.addPublicTool(EGAM7TruthThinningTool)
291 thinningTools.append(EGAM7TruthThinningTool)
295 from DerivationFrameworkCalo.CaloCellDFGetterConfig
import thinCaloCellsForDFCfg
298 thinCaloCellsForDFCfg(
300 inputClusterKeys=[
"egammaClusters"],
301 streamName=
"StreamDAOD_EGAM7",
302 inputCellKey=
"AllCalo",
303 outputCellKey=
"DFEGAMCellContainer",
312 CompFactory.DerivationFramework.DerivationKernel(
314 SkimmingTools=[skimmingTool],
315 AugmentationTools=augmentationTools,
316 ThinningTools=thinningTools,
324 acc = ComponentAccumulator()
333 from DerivationFrameworkPhys.TriggerListsHelper
import TriggerListsHelper
335 EGAM7TriggerListsHelper = TriggerListsHelper(flags)
342 StreamName=
"StreamDAOD_EGAM7",
343 TriggerListsHelper=EGAM7TriggerListsHelper,
348 from OutputStreamAthenaPool.OutputStreamConfig
import OutputStreamCfg
349 from xAODMetaDataCnv.InfileMetaDataConfig
import SetupMetaDataForStreamCfg
350 from DerivationFrameworkCore.SlimmingHelper
import SlimmingHelper
353 "EGAM7SlimmingHelper",
354 NamesAndTypes=flags.Input.TypedCollections,
363 EGAM7SlimmingHelper.AllVariables = [
371 if flags.Trigger.EDMVersion == 2:
373 elif flags.Trigger.EDMVersion == 3:
377 EGAM7SlimmingHelper.AllVariables += ExtraContainersTrigger[MenuType]
378 EGAM7SlimmingHelper.AllVariables += ExtraContainersElectronTrigger[MenuType]
379 if not flags.Input.isMC:
380 EGAM7SlimmingHelper.AllVariables += ExtraContainersTriggerDataOnly[MenuType]
384 EGAM7SlimmingHelper.AllVariables += [
388 "egammaTruthParticles",
401 EGAM7SlimmingHelper.SmartCollections = [
406 "InDetTrackParticles",
408 "AntiKt4EMPFlowJets",
409 "MET_Baseline_AntiKt4EMPFlow",
413 EGAM7SlimmingHelper.SmartCollections += [
415 "AntiKt4TruthDressedWZJets",
421 EGAM7SlimmingHelper.ExtraVariables += [
422 "Muons.ptcone20.ptcone30.ptcone40.etcone20.etcone30.etcone40"
426 EGAM7SlimmingHelper.ExtraVariables += [
427 "GSFConversionVertices.x.y.z.px.py.pz.pt1.pt2.etaAtCalo.phiAtCalo",
428 "GSFConversionVertices.trackParticleLinks",
432 EGAM7SlimmingHelper.ExtraVariables += [
"PrimaryVertices.x.y.sumPt2"]
435 EGAM7SlimmingHelper.ExtraVariables += [
436 "AntiKt4PV0TrackJets.pt.eta.phi.e.m.btaggingLink.constituentLinks"
440 EGAM7SlimmingHelper.ExtraVariables += PhotonsCPDetailedContent
443 from DerivationFrameworkCalo.DerivationFrameworkCaloConfig
import (
445 getClusterEnergyPerLayerDecorations,
448 gainDecorations = getGainDecorations(acc, flags,
"EGAM7Kernel")
449 print(
"EGAM7 gain decorations: ", gainDecorations)
450 EGAM7SlimmingHelper.ExtraVariables.extend(gainDecorations)
451 clusterEnergyDecorations = getClusterEnergyPerLayerDecorations(acc,
"EGAM7Kernel")
452 print(
"EGAM7 cluster energy decorations: ", clusterEnergyDecorations)
453 EGAM7SlimmingHelper.ExtraVariables.extend(clusterEnergyDecorations)
456 EGAM7SlimmingHelper.ExtraVariables += [
457 "TopoClusterIsoCentralEventShape.Density",
458 "TopoClusterIsoForwardEventShape.Density",
459 "NeutralParticleFlowIsoCentralEventShape.Density",
460 "NeutralParticleFlowIsoForwardEventShape.Density",
465 EGAM7SlimmingHelper.ExtraVariables += [
466 "MuonTruthParticles.e.px.py.pz.status.pdgId.truthOrigin.truthType"
469 EGAM7SlimmingHelper.ExtraVariables += [
470 "Photons.truthOrigin.truthType.truthParticleLink"
474 if flags.Derivation.Egamma.doEventInfoSlimming:
475 EGAM7SlimmingHelper.SmartCollections.append(
"EventInfo")
477 EGAM7SlimmingHelper.AllVariables += [
"EventInfo"]
480 EGAM7SlimmingHelper.IncludeEGammaTriggerContent =
True
484 if flags.Trigger.EDMVersion == 2:
485 from DerivationFrameworkPhys.TriggerMatchingCommonConfig
import AddRun2TriggerMatchingToSlimmingHelper
486 AddRun2TriggerMatchingToSlimmingHelper(SlimmingHelper = EGAM7SlimmingHelper,
487 OutputContainerPrefix =
"TrigMatch_",
488 TriggerList = EGAM7TriggerListsHelper.Run2TriggerNamesNoTau)
490 if flags.Trigger.EDMVersion == 3
or (flags.Trigger.EDMVersion == 2
and flags.Trigger.doEDMVersionConversion):
491 from TrigNavSlimmingMT.TrigNavSlimmingMTConfig
import AddRun3TrigNavSlimmingCollectionsToSlimmingHelper
492 AddRun3TrigNavSlimmingCollectionsToSlimmingHelper(EGAM7SlimmingHelper)
496 EGAM7SlimmingHelper.StaticContent = [
497 "CaloCellContainer#DFEGAMCellContainer",
498 "CaloClusterCellLinkContainer#egammaClusters_links",
501 EGAM7SlimmingHelper.StaticContent = [
502 "CaloCellContainer#AllCalo",
503 "CaloClusterCellLinkContainer#egammaClusters_links",
507 if flags.Derivation.Egamma.addPLITInputs:
508 from LeptonTaggers.LeptonTaggersConfig
import DecorateImprovedPromptLeptonAlgsCfg, GetExtraImprovedPromptVariablesForDxAOD
509 acc.merge(DecorateImprovedPromptLeptonAlgsCfg(flags))
510 EGAM7SlimmingHelper.ExtraVariables += [ item
for item
in GetExtraImprovedPromptVariablesForDxAOD()
if item.startswith(
"Electrons")]
511 if flags.Derivation.Egamma.addPLITOutputs:
512 from LeptonTaggers.LeptonTaggersConfig
import DecoratePLITAlgsCfg, GetExtraPLITVariablesForDxAOD
513 acc.merge(DecoratePLITAlgsCfg(flags))
514 EGAM7SlimmingHelper.ExtraVariables += [ item
for item
in GetExtraPLITVariablesForDxAOD()
if item.startswith(
"Electrons")]
516 EGAM7ItemList = EGAM7SlimmingHelper.GetItemList()
521 ItemList=EGAM7ItemList,
522 AcceptAlgs=[
"EGAM7Kernel"],
526 SetupMetaDataForStreamCfg(
529 AcceptAlgs=[
"EGAM7Kernel"],
531 MetadataCategory.CutFlowMetaData,
532 MetadataCategory.TruthMetaData,