87 """Configure the derivation framework driving algorithm (kernel)
89 acc = ComponentAccumulator()
92 from DerivationFrameworkPhys.PhysCommonConfig
import PhysCommonAugmentationsCfg
95 PhysCommonAugmentationsCfg(
96 flags, TriggerListsHelper=kwargs[
"TriggerListsHelper"]
101 augmentationTools = []
107 acc.addPublicTool(EGAM4mumuMassTool)
108 augmentationTools.append(EGAM4mumuMassTool)
113 from DerivationFrameworkCalo.DerivationFrameworkCaloConfig
import (
114 CaloDecoratorKernelCfg)
115 acc.merge(CaloDecoratorKernelCfg(flags))
119 streamName = kwargs[
"StreamName"]
122 if flags.Derivation.Egamma.doTrackThinning:
123 from DerivationFrameworkInDet.InDetToolsConfig
import (
124 TrackParticleThinningCfg,
125 MuonTrackParticleThinningCfg,
126 TauTrackParticleThinningCfg,
129 TrackThinningKeepElectronTracks =
True
130 TrackThinningKeepAllElectronTracks =
False
131 TrackThinningKeepPhotonTracks =
True
132 TrackThinningKeepAllPhotonTracks =
True
133 TrackThinningKeepJetTracks =
False
134 TrackThinningKeepMuonTracks =
False
135 TrackThinningKeepTauTracks =
False
136 TrackThinningKeepPVTracks =
True
139 if TrackThinningKeepElectronTracks:
140 EGAM4ElectronTPThinningTool = (
141 CompFactory.DerivationFramework.EgammaTrackParticleThinning(
142 name=
"EGAM4ElectronTPThinningTool",
143 StreamName=streamName,
145 GSFTrackParticlesKey=
"GSFTrackParticles",
146 InDetTrackParticlesKey=
"InDetTrackParticles",
147 SelectionString=
"Electrons.pt > 0*GeV",
152 acc.addPublicTool(EGAM4ElectronTPThinningTool)
153 thinningTools.append(EGAM4ElectronTPThinningTool)
157 if TrackThinningKeepAllElectronTracks:
158 EGAM4ElectronTPThinningTool2 = (
159 CompFactory.DerivationFramework.EgammaTrackParticleThinning(
160 name=
"EGAM4ElectronTPThinningTool2",
161 StreamName=streamName,
163 GSFTrackParticlesKey=
"GSFTrackParticles",
164 InDetTrackParticlesKey=
"InDetTrackParticles",
165 SelectionString=
"Electrons.pt > 4*GeV",
170 acc.addPublicTool(EGAM4ElectronTPThinningTool2)
171 thinningTools.append(EGAM4ElectronTPThinningTool2)
174 if TrackThinningKeepPhotonTracks:
175 EGAM4PhotonTPThinningTool = (
176 CompFactory.DerivationFramework.EgammaTrackParticleThinning(
177 name=
"EGAM4PhotonTPThinningTool",
178 StreamName=streamName,
180 GSFTrackParticlesKey=
"GSFTrackParticles",
181 InDetTrackParticlesKey=
"InDetTrackParticles",
182 GSFConversionVerticesKey=
"GSFConversionVertices",
183 SelectionString=
"Photons.pt > 0*GeV",
188 acc.addPublicTool(EGAM4PhotonTPThinningTool)
189 thinningTools.append(EGAM4PhotonTPThinningTool)
193 if TrackThinningKeepAllPhotonTracks:
194 EGAM4PhotonTPThinningTool2 = (
195 CompFactory.DerivationFramework.EgammaTrackParticleThinning(
196 name=
"EGAM4PhotonTPThinningTool2",
197 StreamName=streamName,
199 GSFTrackParticlesKey=
"GSFTrackParticles",
200 InDetTrackParticlesKey=
"InDetTrackParticles",
201 GSFConversionVerticesKey=
"GSFConversionVertices",
202 SelectionString=
"Photons.pt > 9.5*GeV",
207 acc.addPublicTool(EGAM4PhotonTPThinningTool2)
208 thinningTools.append(EGAM4PhotonTPThinningTool2)
211 if TrackThinningKeepJetTracks:
212 EGAM4JetTPThinningTool = (
213 CompFactory.DerivationFramework.JetTrackParticleThinning(
214 name=
"EGAM4JetTPThinningTool",
215 StreamName=streamName,
216 JetKey=
"AntiKt4EMPFlowJets",
217 InDetTrackParticlesKey=
"InDetTrackParticles",
220 acc.addPublicTool(EGAM4JetTPThinningTool)
221 thinningTools.append(EGAM4JetTPThinningTool)
224 if TrackThinningKeepMuonTracks:
225 EGAM4MuonTPThinningTool = acc.getPrimaryAndMerge(
226 MuonTrackParticleThinningCfg(
228 name=
"EGAM4MuonTPThinningTool",
229 StreamName=streamName,
231 InDetTrackParticlesKey=
"InDetTrackParticles",
234 thinningTools.append(EGAM4MuonTPThinningTool)
237 if TrackThinningKeepTauTracks:
238 EGAM4TauTPThinningTool = acc.getPrimaryAndMerge(
239 TauTrackParticleThinningCfg(
241 name=
"EGAM4TauTPThinningTool",
242 StreamName=streamName,
245 InDetTrackParticlesKey=
"InDetTrackParticles",
246 DoTauTracksThinning=
True,
247 TauTracksKey=
"TauTracks",
250 thinningTools.append(EGAM4TauTPThinningTool)
253 thinning_expression =
" && ".join(
255 "(InDetTrackParticles.DFCommonTightPrimary)",
256 "(abs(DFCommonInDetTrackZ0AtPV)*sin(InDetTrackParticles.theta)<3*mm)",
257 "(InDetTrackParticles.pt>10*GeV)",
260 if TrackThinningKeepPVTracks:
261 EGAM4TPThinningTool = acc.getPrimaryAndMerge(
262 TrackParticleThinningCfg(
264 name=
"EGAM4TPThinningTool",
265 StreamName=streamName,
266 SelectionString=thinning_expression,
267 InDetTrackParticlesKey=
"InDetTrackParticles",
270 thinningTools.append(EGAM4TPThinningTool)
277 CompFactory.DerivationFramework.DerivationKernel(
279 SkimmingTools=[skimmingTool],
280 AugmentationTools=augmentationTools,
281 ThinningTools=thinningTools,
289 acc = ComponentAccumulator()
297 from DerivationFrameworkPhys.TriggerListsHelper
import TriggerListsHelper
299 EGAM4TriggerListsHelper = TriggerListsHelper(flags)
306 StreamName=
"StreamDAOD_EGAM4",
307 TriggerListsHelper=EGAM4TriggerListsHelper,
312 from IsolationAlgs.DerivationTrackIsoConfig
import DerivationTrackIsoCfg
315 DerivationTrackIsoCfg(
316 flags, object_types=(
"Photons",), ptCuts=(500, 1000), postfix=
"Extra"
321 from OutputStreamAthenaPool.OutputStreamConfig
import OutputStreamCfg
322 from xAODMetaDataCnv.InfileMetaDataConfig
import SetupMetaDataForStreamCfg
323 from DerivationFrameworkCore.SlimmingHelper
import SlimmingHelper
326 "EGAM4SlimmingHelper",
327 NamesAndTypes=flags.Input.TypedCollections,
336 EGAM4SlimmingHelper.AllVariables = [
344 if flags.Trigger.EDMVersion == 2:
346 elif flags.Trigger.EDMVersion == 3:
350 EGAM4SlimmingHelper.AllVariables += ExtraContainersTrigger[MenuType]
351 EGAM4SlimmingHelper.AllVariables += ExtraContainersPhotonTrigger[MenuType]
352 EGAM4SlimmingHelper.AllVariables += ExtraContainersMuonTrigger[MenuType]
353 if not flags.Input.isMC:
354 EGAM4SlimmingHelper.AllVariables += ExtraContainersTriggerDataOnly[MenuType]
358 EGAM4SlimmingHelper.AllVariables += [
362 "egammaTruthParticles",
363 "MuonTruthParticles",
374 EGAM4SlimmingHelper.SmartCollections = [
380 "InDetTrackParticles",
381 "AntiKt4EMPFlowJets",
383 "MET_Baseline_AntiKt4EMPFlow",
386 EGAM4SlimmingHelper.SmartCollections += [
388 "AntiKt4TruthDressedWZJets",
390 if flags.Derivation.Egamma.addHLTJets:
391 EGAM4SlimmingHelper.SmartCollections += [
392 "HLT_AntiKt4EMPFlowJets_subresjesgscIS_ftf",
398 EGAM4SlimmingHelper.ExtraVariables += [
"Electrons.Loose.Medium.Tight"]
401 EGAM4SlimmingHelper.ExtraVariables += [
402 "Muons.ptcone20.ptcone30.ptcone40.etcone20.etcone30.etcone40"
406 EGAM4SlimmingHelper.ExtraVariables += [
407 "GSFConversionVertices.x.y.z.px.py.pz.pt1.pt2.etaAtCalo.phiAtCalo",
408 "GSFConversionVertices.trackParticleLinks",
412 EGAM4SlimmingHelper.ExtraVariables += [
"PrimaryVertices.x.y.sumPt2"]
415 EGAM4SlimmingHelper.ExtraVariables += [
416 "TopoClusterIsoCentralEventShape.Density",
417 "TopoClusterIsoForwardEventShape.Density",
418 "NeutralParticleFlowIsoCentralEventShape.Density",
419 "NeutralParticleFlowIsoForwardEventShape.Density",
423 EGAM4SlimmingHelper.ExtraVariables += ElectronsCPDetailedContent
424 EGAM4SlimmingHelper.ExtraVariables += GSFTracksCPDetailedContent
428 from DerivationFrameworkCalo.DerivationFrameworkCaloConfig
import (
430 getClusterEnergyPerLayerDecorations,
433 gainDecorations = getGainDecorations(acc, flags,
"EGAM4Kernel")
434 print(
"EGAM4 gain decorations: ", gainDecorations)
435 EGAM4SlimmingHelper.ExtraVariables.extend(gainDecorations)
436 clusterEnergyDecorations = getClusterEnergyPerLayerDecorations(acc,
"EGAM4Kernel")
437 print(
"EGAM4 cluster energy decorations: ", clusterEnergyDecorations)
438 EGAM4SlimmingHelper.ExtraVariables.extend(clusterEnergyDecorations)
442 EGAM4SlimmingHelper.ExtraVariables += [
443 "Electrons.truthClassification.truthOrigin.truthType.truthParticleLink"
447 if flags.Derivation.Egamma.doEventInfoSlimming:
448 EGAM4SlimmingHelper.SmartCollections.append(
"EventInfo")
450 EGAM4SlimmingHelper.AllVariables += [
"EventInfo"]
453 EGAM4SlimmingHelper.IncludeEGammaTriggerContent =
True
454 EGAM4SlimmingHelper.IncludeMuonTriggerContent =
True
458 if flags.Trigger.EDMVersion == 2:
459 from DerivationFrameworkPhys.TriggerMatchingCommonConfig
import AddRun2TriggerMatchingToSlimmingHelper
460 AddRun2TriggerMatchingToSlimmingHelper(SlimmingHelper = EGAM4SlimmingHelper,
461 OutputContainerPrefix =
"TrigMatch_",
462 TriggerList = EGAM4TriggerListsHelper.Run2TriggerNamesNoTau)
464 if flags.Trigger.EDMVersion == 3
or (flags.Trigger.EDMVersion == 2
and flags.Trigger.doEDMVersionConversion):
465 from TrigNavSlimmingMT.TrigNavSlimmingMTConfig
import AddRun3TrigNavSlimmingCollectionsToSlimmingHelper
466 AddRun3TrigNavSlimmingCollectionsToSlimmingHelper(EGAM4SlimmingHelper)
469 EGAM4SlimmingHelper.StaticContent = [
470 "CaloCellContainer#AllCalo",
471 "CaloClusterCellLinkContainer#egammaClusters_links",
474 EGAM4ItemList = EGAM4SlimmingHelper.GetItemList()
479 ItemList=EGAM4ItemList,
480 AcceptAlgs=[
"EGAM4Kernel"],
484 SetupMetaDataForStreamCfg(
487 AcceptAlgs=[
"EGAM4Kernel"],
489 MetadataCategory.CutFlowMetaData,
490 MetadataCategory.TruthMetaData,