125 """Configure the derivation framework driving algorithm (kernel)
127 acc = ComponentAccumulator()
130 from DerivationFrameworkPhys.PhysCommonConfig
import PhysCommonAugmentationsCfg
133 PhysCommonAugmentationsCfg(
134 flags, TriggerListsHelper=kwargs[
"TriggerListsHelper"]
139 augmentationTools = []
145 acc.addPublicTool(EGAM8ZeeMassTool)
146 augmentationTools.append(EGAM8ZeeMassTool)
149 acc.addPublicTool(EGAM8ZmueMassTool)
150 augmentationTools.append(EGAM8ZmueMassTool)
155 from DerivationFrameworkCalo.DerivationFrameworkCaloConfig
import (
156 CaloDecoratorKernelCfg)
157 acc.merge(CaloDecoratorKernelCfg(flags))
159 from DerivationFrameworkEGamma.EGammaToolsConfig
import (
160 EGammaCookieCutClusterToolCfg)
161 cookieCutTool = acc.popToolsAndMerge(
162 EGammaCookieCutClusterToolCfg(flags,
164 StoreInputMoments=
True,
165 StoreCookedMoments=
True))
166 acc.addPublicTool(cookieCutTool)
167 augmentationTools.append(cookieCutTool)
171 streamName = kwargs[
"StreamName"]
174 if flags.Derivation.Egamma.doTrackThinning:
175 from DerivationFrameworkInDet.InDetToolsConfig
import (
176 TrackParticleThinningCfg,
177 MuonTrackParticleThinningCfg,
178 TauTrackParticleThinningCfg,
181 TrackThinningKeepElectronTracks =
True
182 TrackThinningKeepPhotonTracks =
True
183 TrackThinningKeepAllElectronTracks =
False
184 TrackThinningKeepJetTracks =
False
185 TrackThinningKeepMuonTracks =
True
186 TrackThinningKeepTauTracks =
False
187 TrackThinningKeepPVTracks =
False
190 if TrackThinningKeepElectronTracks:
191 EGAM8ElectronTPThinningTool = (
192 CompFactory.DerivationFramework.EgammaTrackParticleThinning(
193 name=
"EGAM8ElectronTPThinningTool",
194 StreamName=streamName,
196 GSFTrackParticlesKey=
"GSFTrackParticles",
197 InDetTrackParticlesKey=
"InDetTrackParticles",
198 SelectionString=
"Electrons.pt > 0*GeV",
203 acc.addPublicTool(EGAM8ElectronTPThinningTool)
204 thinningTools.append(EGAM8ElectronTPThinningTool)
208 if TrackThinningKeepAllElectronTracks:
209 EGAM8ElectronTPThinningTool2 = (
210 CompFactory.DerivationFramework.EgammaTrackParticleThinning(
211 name=
"EGAM8ElectronTPThinningTool2",
212 StreamName=streamName,
214 GSFTrackParticlesKey=
"GSFTrackParticles",
215 InDetTrackParticlesKey=
"InDetTrackParticles",
216 SelectionString=
"Electrons.pt > 4*GeV",
221 acc.addPublicTool(EGAM8ElectronTPThinningTool2)
222 thinningTools.append(EGAM8ElectronTPThinningTool2)
225 if TrackThinningKeepPhotonTracks:
226 EGAM8PhotonTPThinningTool = (
227 CompFactory.DerivationFramework.EgammaTrackParticleThinning(
228 name=
"EGAM8PhotonTPThinningTool",
229 StreamName=streamName,
231 GSFTrackParticlesKey=
"GSFTrackParticles",
232 InDetTrackParticlesKey=
"InDetTrackParticles",
233 GSFConversionVerticesKey=
"GSFConversionVertices",
234 SelectionString=
"Photons.pt > 0*GeV",
239 acc.addPublicTool(EGAM8PhotonTPThinningTool)
240 thinningTools.append(EGAM8PhotonTPThinningTool)
243 if TrackThinningKeepJetTracks:
244 EGAM8JetTPThinningTool = (
245 CompFactory.DerivationFramework.JetTrackParticleThinning(
246 name=
"EGAM8JetTPThinningTool",
247 StreamName=streamName,
248 JetKey=
"AntiKt4EMPFlowJets",
249 InDetTrackParticlesKey=
"InDetTrackParticles",
252 acc.addPublicTool(EGAM8JetTPThinningTool)
253 thinningTools.append(EGAM8JetTPThinningTool)
256 if TrackThinningKeepMuonTracks:
257 EGAM8MuonTPThinningTool = acc.getPrimaryAndMerge(
258 MuonTrackParticleThinningCfg(
260 name=
"EGAM8MuonTPThinningTool",
261 StreamName=streamName,
263 InDetTrackParticlesKey=
"InDetTrackParticles",
266 thinningTools.append(EGAM8MuonTPThinningTool)
269 if TrackThinningKeepTauTracks:
270 EGAM8TauTPThinningTool = acc.getPrimaryAndMerge(
271 TauTrackParticleThinningCfg(
273 name=
"EGAM8TauTPThinningTool",
274 StreamName=streamName,
277 InDetTrackParticlesKey=
"InDetTrackParticles",
278 DoTauTracksThinning=
True,
279 TauTracksKey=
"TauTracks",
282 thinningTools.append(EGAM8TauTPThinningTool)
285 thinning_expression =
" && ".join(
287 "(InDetTrackParticles.DFCommonTightPrimary)",
288 "(abs(DFCommonInDetTrackZ0AtPV)*sin(InDetTrackParticles.theta)<3.0*mm)",
289 "(InDetTrackParticles.pt>10*GeV)",
292 if TrackThinningKeepPVTracks:
293 EGAM8TPThinningTool = acc.getPrimaryAndMerge(
294 TrackParticleThinningCfg(
296 name=
"EGAM8TPThinningTool",
297 StreamName=streamName,
298 SelectionString=thinning_expression,
299 InDetTrackParticlesKey=
"InDetTrackParticles",
302 thinningTools.append(EGAM8TPThinningTool)
307 truth_cond_WZH =
" && ".join(
308 [
"(abs(TruthParticles.pdgId) >= 23)",
"(abs(TruthParticles.pdgId) <= 25)"]
311 truth_cond_lep =
" && ".join(
312 [
"(abs(TruthParticles.pdgId) >= 11)",
"(abs(TruthParticles.pdgId) <= 16)"]
315 truth_cond_top =
"(abs(TruthParticles.pdgId) == 6)"
317 truth_cond_gam =
" && ".join(
318 [
"(TruthParticles.isPhoton)",
"(TruthParticles.pt > 1*GeV)"]
321 truth_cond_finalState =
" && ".join(
322 [
"(TruthParticles.isGenStable)",
"(!TruthParticles.isSimulationParticle)"]
338 + truth_cond_finalState
341 print(
"EGAM8 truth thinning expression: ", truth_expression)
343 EGAM8TruthThinningTool = CompFactory.DerivationFramework.GenericTruthThinning(
344 name=
"EGAM8TruthThinningTool",
345 StreamName=streamName,
346 ParticleSelectionString=truth_expression,
347 PreserveDescendants=
False,
348 PreserveGeneratorDescendants=
True,
349 PreserveAncestors=
True,
351 acc.addPublicTool(EGAM8TruthThinningTool)
352 thinningTools.append(EGAM8TruthThinningTool)
356 acc.addPublicTool(skimmingTool)
360 CompFactory.DerivationFramework.DerivationKernel(
362 SkimmingTools=[skimmingTool],
363 AugmentationTools=augmentationTools,
364 ThinningTools=thinningTools,
372 acc = ComponentAccumulator()
381 from DerivationFrameworkPhys.TriggerListsHelper
import TriggerListsHelper
383 EGAM8TriggerListsHelper = TriggerListsHelper(flags)
390 StreamName=
"StreamDAOD_EGAM8",
391 TriggerListsHelper=EGAM8TriggerListsHelper,
396 from OutputStreamAthenaPool.OutputStreamConfig
import OutputStreamCfg
397 from xAODMetaDataCnv.InfileMetaDataConfig
import SetupMetaDataForStreamCfg
398 from DerivationFrameworkCore.SlimmingHelper
import SlimmingHelper
401 "EGAM8SlimmingHelper",
402 NamesAndTypes=flags.Input.TypedCollections,
411 EGAM8SlimmingHelper.AllVariables = [
416 "ForwardElectronClusters",
424 EGAM8SlimmingHelper.AllVariables += [
428 "egammaTruthParticles",
439 EGAM8SlimmingHelper.SmartCollections = [
445 "InDetTrackParticles",
446 "AntiKt4EMPFlowJets",
448 "MET_Baseline_AntiKt4EMPFlow",
451 EGAM8SlimmingHelper.SmartCollections += [
453 "AntiKt4TruthDressedWZJets",
459 EGAM8SlimmingHelper.ExtraVariables += [
460 "Muons.ptcone20.ptcone30.ptcone40.etcone20.etcone30.etcone40"
464 EGAM8SlimmingHelper.ExtraVariables += [
465 "GSFConversionVertices.x.y.z.px.py.pz.pt1.pt2.etaAtCalo.phiAtCalo",
466 "GSFConversionVertices.trackParticleLinks",
470 EGAM8SlimmingHelper.ExtraVariables += [
"PrimaryVertices.x.y.sumPt2"]
473 EGAM8SlimmingHelper.ExtraVariables += [
474 "AntiKt4PV0TrackJets.pt.eta.phi.e.m.btaggingLink.constituentLinks"
478 EGAM8SlimmingHelper.ExtraVariables += [
479 "TopoClusterIsoCentralEventShape.Density",
480 "TopoClusterIsoForwardEventShape.Density",
481 "NeutralParticleFlowIsoCentralEventShape.Density",
482 "NeutralParticleFlowIsoForwardEventShape.Density",
486 EGAM8SlimmingHelper.ExtraVariables += PhotonsCPDetailedContent
489 from DerivationFrameworkCalo.DerivationFrameworkCaloConfig
import (
491 getClusterEnergyPerLayerDecorations,
494 gainDecorations = getGainDecorations(acc, flags,
"EGAM8Kernel")
495 print(
"EGAM8 gain decorations: ", gainDecorations)
496 EGAM8SlimmingHelper.ExtraVariables.extend(gainDecorations)
497 clusterEnergyDecorations = getClusterEnergyPerLayerDecorations(acc,
"EGAM8Kernel")
498 print(
"EGAM8 cluster energy decorations: ", clusterEnergyDecorations)
499 EGAM8SlimmingHelper.ExtraVariables.extend(clusterEnergyDecorations)
503 EGAM8SlimmingHelper.ExtraVariables += [
504 "MuonTruthParticles.e.px.py.pz.status.pdgId.truthOrigin.truthType"
507 EGAM8SlimmingHelper.ExtraVariables += [
508 "Photons.truthOrigin.truthType.truthParticleLink"
512 if flags.Derivation.Egamma.doEventInfoSlimming:
513 EGAM8SlimmingHelper.SmartCollections.append(
"EventInfo")
515 EGAM8SlimmingHelper.AllVariables += [
"EventInfo"]
518 EGAM8SlimmingHelper.IncludeEGammaTriggerContent =
True
519 EGAM8SlimmingHelper.IncludeMuonTriggerContent =
True
523 if flags.Trigger.EDMVersion == 2:
524 from DerivationFrameworkPhys.TriggerMatchingCommonConfig
import AddRun2TriggerMatchingToSlimmingHelper
525 AddRun2TriggerMatchingToSlimmingHelper(SlimmingHelper = EGAM8SlimmingHelper,
526 OutputContainerPrefix =
"TrigMatch_",
527 TriggerList = EGAM8TriggerListsHelper.Run2TriggerNamesNoTau)
529 if flags.Trigger.EDMVersion == 3
or (flags.Trigger.EDMVersion == 2
and flags.Trigger.doEDMVersionConversion):
530 from TrigNavSlimmingMT.TrigNavSlimmingMTConfig
import AddRun3TrigNavSlimmingCollectionsToSlimmingHelper
531 AddRun3TrigNavSlimmingCollectionsToSlimmingHelper(EGAM8SlimmingHelper)
534 EGAM8SlimmingHelper.StaticContent = [
535 "CaloCellContainer#AllCalo",
536 "CaloClusterCellLinkContainer#egammaClusters_links",
537 "CaloClusterCellLinkContainer#ForwardElectronClusters_links",
538 "xAOD::CaloClusterContainer#ForwardElectronCookieCutClusters",
539 "xAOD::CaloClusterAuxContainer#ForwardElectronCookieCutClustersAux.",
542 EGAM8ItemList = EGAM8SlimmingHelper.GetItemList()
547 ItemList=EGAM8ItemList,
548 AcceptAlgs=[
"EGAM8Kernel"],
552 SetupMetaDataForStreamCfg(
555 AcceptAlgs=[
"EGAM8Kernel"],
557 MetadataCategory.CutFlowMetaData,
558 MetadataCategory.TruthMetaData,