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, TrigDecisionTool=
"",
51 if flags.Trigger.EDMVersion == 2:
53 elif flags.Trigger.EDMVersion == 3:
57 singlePhotonTriggers[MenuType]
58 + diPhotonTriggers[MenuType]
59 + triPhotonTriggers[MenuType]
60 + noalgTriggers[MenuType]
63 allTriggers =
list(
set(allTriggers))
64 print(
"EGAM10 trigger skimming list (OR): ", allTriggers)
65 EGAM10_TriggerSkimmingTool = CompFactory.DerivationFramework.TriggerSkimmingTool(
66 name=
"EGAM10_TriggerSkimmingTool", TriggerListOR=allTriggers
70 print(
"EGAM10 skimming is logical AND of previous selections")
71 EGAM10_SkimmingTool = CompFactory.DerivationFramework.FilterCombinationAND(
72 name=
"EGAM10_SkimmingTool",
73 FilterList=[EGAM10_OfflineSkimmingTool, EGAM10_TriggerSkimmingTool],
76 acc.addPublicTool(EGAM10_OfflineSkimmingTool)
77 acc.addPublicTool(EGAM10_TriggerSkimmingTool)
78 acc.addPublicTool(EGAM10_SkimmingTool, primary=
True)
80 print(
"Unknown Trigger.EDMVersion ", flags.Trigger.EDMVersion)
81 print(
"Will not apply trigger-based skimming")
82 acc.addPublicTool(EGAM10_OfflineSkimmingTool, primary=
True)
88 """Configure the derivation framework driving algorithm (kernel)
93 from DerivationFrameworkPhys.PhysCommonConfig
import PhysCommonAugmentationsCfg
97 flags, TriggerListsHelper=kwargs[
"TriggerListsHelper"]
102 augmentationTools = []
107 from DerivationFrameworkEGamma.EGammaToolsConfig
import (
108 PhotonVertexSelectionWrapperKernelCfg)
114 from DerivationFrameworkCalo.DerivationFrameworkCaloConfig
import (
115 CaloDecoratorKernelCfg, CaloCellDecoratorKernelCfg)
121 streamName = kwargs[
"StreamName"]
124 if flags.Derivation.Egamma.doTrackThinning:
125 TrackThinningKeepElectronTracks =
True
126 TrackThinningKeepPhotonTracks =
True
127 TrackThinningKeepAllElectronTracks =
True
130 if TrackThinningKeepElectronTracks:
131 EGAM10ElectronTPThinningTool = (
132 CompFactory.DerivationFramework.EgammaTrackParticleThinning(
133 name=
"EGAM10ElectronTPThinningTool",
134 StreamName=streamName,
136 GSFTrackParticlesKey=
"GSFTrackParticles",
137 InDetTrackParticlesKey=
"InDetTrackParticles",
138 SelectionString=electronRequirements,
143 acc.addPublicTool(EGAM10ElectronTPThinningTool)
144 thinningTools.append(EGAM10ElectronTPThinningTool)
147 if TrackThinningKeepPhotonTracks:
148 EGAM10PhotonTPThinningTool = (
149 CompFactory.DerivationFramework.EgammaTrackParticleThinning(
150 name=
"EGAM10PhotonTPThinningTool",
151 StreamName=streamName,
153 GSFTrackParticlesKey=
"GSFTrackParticles",
154 InDetTrackParticlesKey=
"InDetTrackParticles",
155 GSFConversionVerticesKey=
"GSFConversionVertices",
156 SelectionString=photonRequirements,
161 acc.addPublicTool(EGAM10PhotonTPThinningTool)
162 thinningTools.append(EGAM10PhotonTPThinningTool)
165 if TrackThinningKeepAllElectronTracks:
166 EGAM10ElectronTPThinningToolAR = (
167 CompFactory.DerivationFramework.EgammaTrackParticleThinning(
168 name=
"EGAM10ElectronTPThinningToolAR",
169 StreamName=streamName,
171 GSFTrackParticlesKey=
"GSFTrackParticles",
172 InDetTrackParticlesKey=
"InDetTrackParticles",
173 SelectionString=electronRequirements,
177 acc.addPublicTool(EGAM10ElectronTPThinningToolAR)
178 thinningTools.append(EGAM10ElectronTPThinningToolAR)
185 CompFactory.DerivationFramework.DerivationKernel(
187 SkimmingTools=[skimmingTool],
188 AugmentationTools=augmentationTools,
189 ThinningTools=thinningTools,
206 from DerivationFrameworkPhys.TriggerListsHelper
import TriggerListsHelper
208 EGAM10TriggerListsHelper = TriggerListsHelper(flags)
215 StreamName=
"StreamDAOD_EGAM10",
216 TriggerListsHelper=EGAM10TriggerListsHelper,
221 from OutputStreamAthenaPool.OutputStreamConfig
import OutputStreamCfg
222 from xAODMetaDataCnv.InfileMetaDataConfig
import SetupMetaDataForStreamCfg
223 from DerivationFrameworkCore.SlimmingHelper
import SlimmingHelper
226 "EGAM10SlimmingHelper",
227 NamesAndTypes=flags.Input.TypedCollections,
236 EGAM10SlimmingHelper.AllVariables = [
237 "CaloCalTopoClusters"
242 EGAM10SlimmingHelper.AppendToDictionary.update(
244 "TruthIsoCentralEventShape":
"xAOD::EventShape",
245 "TruthIsoCentralEventShapeAux":
"xAOD::EventShapeAuxInfo",
246 "TruthIsoForwardEventShape":
"xAOD::EventShape",
247 "TruthIsoForwardEventShapeAux":
"xAOD::EventShapeAuxInfo",
250 EGAM10SlimmingHelper.AllVariables += [
260 "AntiKt4TruthDressedWZJets",
261 "egammaTruthParticles",
262 "TruthIsoCentralEventShape",
263 "TruthIsoForwardEventShape",
276 EGAM10SlimmingHelper.SmartCollections = [
279 "InDetTrackParticles",
281 "AntiKt4EMPFlowJets",
285 EGAM10SlimmingHelper.SmartCollections += [
287 "AntiKt4TruthDressedWZJets",
293 EGAM10SlimmingHelper.ExtraVariables += [
294 "egammaClusters.PHI2CALOFRAME.ETA2CALOFRAME.phi_sampl",
298 EGAM10SlimmingHelper.ExtraVariables += [
299 "Photons.ptcone30.ptcone40.f3.f3core",
300 "Photons.maxEcell_time.maxEcell_energy.maxEcell_gain.maxEcell_onlId",
301 "Photons.maxEcell_x.maxEcell_y.maxEcell_z",
302 "Photons.ptcone40_Nonprompt_All_MaxWeightTTVA_pt1000",
303 "Photons.ptcone40_Nonprompt_All_MaxWeightTTVA_pt500",
304 "Photons.ptcone20_Nonprompt_All_MaxWeightTTVA_pt500",
305 "Photons.ptvarcone30_Nonprompt_All_MaxWeightTTVA_pt1000",
306 "Photons.ptvarcone30_Nonprompt_All_MaxWeightTTVA_pt500",
310 EGAM10SlimmingHelper.ExtraVariables += [
311 "Electrons.topoetcone30.topoetcone40.ptcone20.ptcone30",
312 "Electrons.ptcone40.maxEcell_time.maxEcell_energy.maxEcell_gain",
313 "Electrons.maxEcell_onlId.maxEcell_x.maxEcell_y.maxEcell_z",
317 EGAM10SlimmingHelper.ExtraVariables += [
318 "PrimaryVertices.covariance.trackWeights.sumPt2.sumPt",
319 "PrimaryVertices.pt.eta.phi",
323 EGAM10SlimmingHelper.ExtraVariables += [
324 "InDetTrackParticles.TTVA_AMVFVertices.TTVA_AMVFWeights"
328 EGAM10SlimmingHelper.ExtraVariables += PhotonsCPDetailedContent
331 from DerivationFrameworkCalo.DerivationFrameworkCaloConfig
import (
333 getClusterEnergyPerLayerDecorations,
337 print(
"EGAM10 gain decorations: ", gainDecorations)
338 EGAM10SlimmingHelper.ExtraVariables.extend(gainDecorations)
340 print(
"EGAM10 cluster energy decorations: ", clusterEnergyDecorations)
341 EGAM10SlimmingHelper.ExtraVariables.extend(clusterEnergyDecorations)
345 EGAM10SlimmingHelper.ExtraVariables += [
346 "Photons.cells_E.cells_time.cells_onlId",
347 "Photons.cells_eta.cells_phi.cells_layer",
348 "Photons.cells_x.cells_y.cells_z",
349 "Photons.cells_gain",
350 "Photons.cells_quality",
355 EGAM10SlimmingHelper.ExtraVariables += [
356 "TopoClusterIsoCentralEventShape.Density",
357 "TopoClusterIsoForwardEventShape.Density",
360 from DerivationFrameworkEGamma
import EGammaIsoConfig
367 ) = EGammaIsoConfig.makeEGammaCommonIsoCfg(flags)
369 EGAM10SlimmingHelper.AppendToDictionary.update(densityDict)
370 EGAM10SlimmingHelper.ExtraVariables += densityList + [f
"Photons{pflowIsoVar}"]
373 from IsolationAlgs.DerivationTrackIsoConfig
import DerivationTrackIsoCfg
377 flags, object_types=(
"Photons",), ptCuts=(500, 1000), postfix=
"Extra"
383 EGAM10SlimmingHelper.ExtraVariables += [
384 "Electrons.truthOrigin.truthType.truthParticleLink.truthPdgId",
385 "Electrons.lastEgMotherTruthType.lastEgMotherTruthOrigin",
386 "Electrons.lastEgMotherTruthParticleLink.lastEgMotherPdgId",
387 "Electrons.firstEgMotherTruthType.firstEgMotherTruthOrigin",
388 "Electrons.firstEgMotherTruthParticleLink.firstEgMotherPdgId",
391 EGAM10SlimmingHelper.ExtraVariables += [
392 "Photons.truthOrigin.truthType.truthParticleLink"
395 EGAM10SlimmingHelper.ExtraVariables += [
396 "TruthIsoCentralEventShape.DensitySigma.Density.DensityArea",
397 "TruthIsoForwardEventShape.DensitySigma.Density.DensityArea",
401 if flags.Derivation.Egamma.doEventInfoSlimming:
402 EGAM10SlimmingHelper.SmartCollections.append(
"EventInfo")
404 EGAM10SlimmingHelper.AllVariables += [
"EventInfo"]
407 EGAM10SlimmingHelper.IncludeEGammaTriggerContent =
True
411 if flags.Trigger.EDMVersion == 2:
412 from DerivationFrameworkPhys.TriggerMatchingCommonConfig
import AddRun2TriggerMatchingToSlimmingHelper
414 OutputContainerPrefix =
"TrigMatch_",
415 TriggerList = EGAM10TriggerListsHelper.Run2TriggerNamesNoTau)
417 if flags.Trigger.EDMVersion == 3
or (flags.Trigger.EDMVersion == 2
and flags.Trigger.doEDMVersionConversion):
418 from TrigNavSlimmingMT.TrigNavSlimmingMTConfig
import AddRun3TrigNavSlimmingCollectionsToSlimmingHelper
421 EGAM10ItemList = EGAM10SlimmingHelper.GetItemList()
426 ItemList=EGAM10ItemList,
427 AcceptAlgs=[
"EGAM10Kernel"],
434 AcceptAlgs=[
"EGAM10Kernel"],
436 MetadataCategory.CutFlowMetaData,
437 MetadataCategory.TruthMetaData,