10 from AthenaConfiguration.ComponentAccumulator
import ComponentAccumulator
11 from AthenaConfiguration.ComponentFactory
import CompFactory
12 from AthenaConfiguration.Enums
import MetadataCategory
14 from DerivationFrameworkEGamma.PhotonsCPDetailedContent
import (
15 PhotonsCPDetailedContent,
18 from DerivationFrameworkEGamma.TriggerContent
import (
25 electronRequirements =
" && ".
join(
27 "(Electrons.pt > 15*GeV)",
28 "(abs(Electrons.eta) < 2.5)",
29 "(Electrons.DFCommonElectronsLHLoose)",
32 photonRequirements =
" && ".
join(
33 [
"(DFCommonPhotons_et >= 15*GeV)",
"(abs(DFCommonPhotons_eta) < 2.5)"]
39 """Configure the EGAM10 skimming tool"""
43 photonSelection =
"(count(" + photonRequirements +
") >= 1)"
44 print(
"EGAM10 offline skimming expression: ", photonSelection)
45 EGAM10_OfflineSkimmingTool = CompFactory.DerivationFramework.xAODStringSkimmingTool(
46 name=
"EGAM10_OfflineSkimmingTool", expression=photonSelection
51 if flags.Trigger.EDMVersion == 2:
53 elif flags.Trigger.EDMVersion == 3:
58 singlePhotonTriggers[MenuType]
59 + diPhotonTriggers[MenuType]
60 + triPhotonTriggers[MenuType]
61 + noalgTriggers[MenuType]
64 allTriggers =
list(
set(allTriggers))
66 print(
"EGAM10 trigger skimming list (OR): ", allTriggers)
67 EGAM10_TriggerSkimmingTool = CompFactory.DerivationFramework.TriggerSkimmingTool(
68 name=
"EGAM10_TriggerSkimmingTool", TriggerListOR=allTriggers
72 print(
"EGAM10 skimming is logical AND of previous selections")
73 EGAM10_SkimmingTool = CompFactory.DerivationFramework.FilterCombinationAND(
74 name=
"EGAM10_SkimmingTool",
75 FilterList=[EGAM10_OfflineSkimmingTool, EGAM10_TriggerSkimmingTool],
78 acc.addPublicTool(EGAM10_OfflineSkimmingTool)
79 acc.addPublicTool(EGAM10_TriggerSkimmingTool)
80 acc.addPublicTool(EGAM10_SkimmingTool, primary=
True)
86 """Configure the derivation framework driving algorithm (kernel)
91 from DerivationFrameworkPhys.PhysCommonConfig
import PhysCommonAugmentationsCfg
95 flags, TriggerListsHelper=kwargs[
"TriggerListsHelper"]
100 augmentationTools = []
105 from DerivationFrameworkEGamma.EGammaToolsConfig
import (
106 PhotonVertexSelectionWrapperKernelCfg)
112 from DerivationFrameworkCalo.DerivationFrameworkCaloConfig
import (
113 CaloDecoratorKernelCfg, CaloCellDecoratorKernelCfg)
119 streamName = kwargs[
"StreamName"]
122 if flags.Derivation.Egamma.doTrackThinning:
123 TrackThinningKeepElectronTracks =
True
124 TrackThinningKeepPhotonTracks =
True
125 TrackThinningKeepAllElectronTracks =
True
128 if TrackThinningKeepElectronTracks:
129 EGAM10ElectronTPThinningTool = (
130 CompFactory.DerivationFramework.EgammaTrackParticleThinning(
131 name=
"EGAM10ElectronTPThinningTool",
132 StreamName=streamName,
134 GSFTrackParticlesKey=
"GSFTrackParticles",
135 InDetTrackParticlesKey=
"InDetTrackParticles",
136 SelectionString=electronRequirements,
141 acc.addPublicTool(EGAM10ElectronTPThinningTool)
142 thinningTools.append(EGAM10ElectronTPThinningTool)
145 if TrackThinningKeepPhotonTracks:
146 EGAM10PhotonTPThinningTool = (
147 CompFactory.DerivationFramework.EgammaTrackParticleThinning(
148 name=
"EGAM10PhotonTPThinningTool",
149 StreamName=streamName,
151 GSFTrackParticlesKey=
"GSFTrackParticles",
152 InDetTrackParticlesKey=
"InDetTrackParticles",
153 GSFConversionVerticesKey=
"GSFConversionVertices",
154 SelectionString=photonRequirements,
159 acc.addPublicTool(EGAM10PhotonTPThinningTool)
160 thinningTools.append(EGAM10PhotonTPThinningTool)
163 if TrackThinningKeepAllElectronTracks:
164 EGAM10ElectronTPThinningToolAR = (
165 CompFactory.DerivationFramework.EgammaTrackParticleThinning(
166 name=
"EGAM10ElectronTPThinningToolAR",
167 StreamName=streamName,
169 GSFTrackParticlesKey=
"GSFTrackParticles",
170 InDetTrackParticlesKey=
"InDetTrackParticles",
171 SelectionString=electronRequirements,
175 acc.addPublicTool(EGAM10ElectronTPThinningToolAR)
176 thinningTools.append(EGAM10ElectronTPThinningToolAR)
183 CompFactory.DerivationFramework.DerivationKernel(
185 SkimmingTools=[skimmingTool],
186 AugmentationTools=augmentationTools,
187 ThinningTools=thinningTools,
204 from DerivationFrameworkPhys.TriggerListsHelper
import TriggerListsHelper
206 EGAM10TriggerListsHelper = TriggerListsHelper(flags)
213 StreamName=
"StreamDAOD_EGAM10",
214 TriggerListsHelper=EGAM10TriggerListsHelper,
219 from OutputStreamAthenaPool.OutputStreamConfig
import OutputStreamCfg
220 from xAODMetaDataCnv.InfileMetaDataConfig
import SetupMetaDataForStreamCfg
221 from DerivationFrameworkCore.SlimmingHelper
import SlimmingHelper
224 "EGAM10SlimmingHelper",
225 NamesAndTypes=flags.Input.TypedCollections,
234 EGAM10SlimmingHelper.AllVariables = [
235 "CaloCalTopoClusters"
240 EGAM10SlimmingHelper.AppendToDictionary.update(
242 "TruthIsoCentralEventShape":
"xAOD::EventShape",
243 "TruthIsoCentralEventShapeAux":
"xAOD::EventShapeAuxInfo",
244 "TruthIsoForwardEventShape":
"xAOD::EventShape",
245 "TruthIsoForwardEventShapeAux":
"xAOD::EventShapeAuxInfo",
248 EGAM10SlimmingHelper.AllVariables += [
258 "AntiKt4TruthDressedWZJets",
259 "egammaTruthParticles",
260 "TruthIsoCentralEventShape",
261 "TruthIsoForwardEventShape",
274 EGAM10SlimmingHelper.SmartCollections = [
277 "InDetTrackParticles",
279 "AntiKt4EMPFlowJets",
283 EGAM10SlimmingHelper.SmartCollections += [
285 "AntiKt4TruthDressedWZJets",
291 EGAM10SlimmingHelper.ExtraVariables += [
292 "egammaClusters.PHI2CALOFRAME.ETA2CALOFRAME.phi_sampl",
296 EGAM10SlimmingHelper.ExtraVariables += [
297 "Photons.ptcone30.ptcone40.f3.f3core",
298 "Photons.maxEcell_time.maxEcell_energy.maxEcell_gain.maxEcell_onlId",
299 "Photons.maxEcell_x.maxEcell_y.maxEcell_z",
300 "Photons.ptcone40_Nonprompt_All_MaxWeightTTVA_pt1000",
301 "Photons.ptcone40_Nonprompt_All_MaxWeightTTVA_pt500",
302 "Photons.ptcone20_Nonprompt_All_MaxWeightTTVA_pt500",
303 "Photons.ptvarcone30_Nonprompt_All_MaxWeightTTVA_pt1000",
304 "Photons.ptvarcone30_Nonprompt_All_MaxWeightTTVA_pt500",
308 EGAM10SlimmingHelper.ExtraVariables += [
309 "Electrons.topoetcone30.topoetcone40.ptcone20.ptcone30",
310 "Electrons.ptcone40.maxEcell_time.maxEcell_energy.maxEcell_gain",
311 "Electrons.maxEcell_onlId.maxEcell_x.maxEcell_y.maxEcell_z",
315 EGAM10SlimmingHelper.ExtraVariables += [
316 "PrimaryVertices.covariance.trackWeights.sumPt2.sumPt",
317 "PrimaryVertices.pt.eta.phi",
321 EGAM10SlimmingHelper.ExtraVariables += [
322 "InDetTrackParticles.TTVA_AMVFVertices.TTVA_AMVFWeights"
326 EGAM10SlimmingHelper.ExtraVariables += PhotonsCPDetailedContent
329 from DerivationFrameworkCalo.DerivationFrameworkCaloConfig
import (
331 getClusterEnergyPerLayerDecorations,
335 print(
"EGAM10 gain decorations: ", gainDecorations)
336 EGAM10SlimmingHelper.ExtraVariables.extend(gainDecorations)
338 print(
"EGAM10 cluster energy decorations: ", clusterEnergyDecorations)
339 EGAM10SlimmingHelper.ExtraVariables.extend(clusterEnergyDecorations)
343 EGAM10SlimmingHelper.ExtraVariables += [
344 "Photons.cells_E.cells_time.cells_onlId",
345 "Photons.cells_eta.cells_phi.cells_layer",
346 "Photons.cells_x.cells_y.cells_z",
347 "Photons.cells_gain",
348 "Photons.cells_quality",
353 EGAM10SlimmingHelper.ExtraVariables += [
354 "TopoClusterIsoCentralEventShape.Density",
355 "TopoClusterIsoForwardEventShape.Density",
358 from DerivationFrameworkEGamma
import EGammaIsoConfig
365 ) = EGammaIsoConfig.makeEGammaCommonIsoCfg(flags)
367 EGAM10SlimmingHelper.AppendToDictionary.update(densityDict)
368 EGAM10SlimmingHelper.ExtraVariables += densityList + [f
"Photons{pflowIsoVar}"]
371 from IsolationAlgs.DerivationTrackIsoConfig
import DerivationTrackIsoCfg
375 flags, object_types=(
"Photons",), ptCuts=(500, 1000), postfix=
"Extra"
381 EGAM10SlimmingHelper.ExtraVariables += [
382 "Electrons.truthOrigin.truthType.truthParticleLink.truthPdgId",
383 "Electrons.lastEgMotherTruthType.lastEgMotherTruthOrigin",
384 "Electrons.lastEgMotherTruthParticleLink.lastEgMotherPdgId",
385 "Electrons.firstEgMotherTruthType.firstEgMotherTruthOrigin",
386 "Electrons.firstEgMotherTruthParticleLink.firstEgMotherPdgId",
389 EGAM10SlimmingHelper.ExtraVariables += [
390 "Photons.truthOrigin.truthType.truthParticleLink"
393 EGAM10SlimmingHelper.ExtraVariables += [
394 "TruthIsoCentralEventShape.DensitySigma.Density.DensityArea",
395 "TruthIsoForwardEventShape.DensitySigma.Density.DensityArea",
399 if flags.Derivation.Egamma.doEventInfoSlimming:
400 EGAM10SlimmingHelper.SmartCollections.append(
"EventInfo")
402 EGAM10SlimmingHelper.AllVariables += [
"EventInfo"]
405 EGAM10SlimmingHelper.IncludeEGammaTriggerContent =
True
409 if flags.Trigger.EDMVersion == 2:
410 from DerivationFrameworkPhys.TriggerMatchingCommonConfig
import AddRun2TriggerMatchingToSlimmingHelper
412 OutputContainerPrefix =
"TrigMatch_",
413 TriggerList = EGAM10TriggerListsHelper.Run2TriggerNamesNoTau)
415 if flags.Trigger.EDMVersion == 3
or (flags.Trigger.EDMVersion == 2
and flags.Trigger.doEDMVersionConversion):
416 from TrigNavSlimmingMT.TrigNavSlimmingMTConfig
import AddRun3TrigNavSlimmingCollectionsToSlimmingHelper
419 EGAM10ItemList = EGAM10SlimmingHelper.GetItemList()
424 ItemList=EGAM10ItemList,
425 AcceptAlgs=[
"EGAM10Kernel"],
432 AcceptAlgs=[
"EGAM10Kernel"],
434 MetadataCategory.CutFlowMetaData,
435 MetadataCategory.TruthMetaData,