121 """Configure the derivation framework driving algorithm (kernel)
123 acc = ComponentAccumulator()
126 from DerivationFrameworkPhys.PhysCommonConfig
import PhysCommonAugmentationsCfg
129 PhysCommonAugmentationsCfg(
130 flags, TriggerListsHelper=kwargs[
"TriggerListsHelper"]
135 augmentationTools = []
141 acc.addPublicTool(EGAM8ZeeMassTool)
142 augmentationTools.append(EGAM8ZeeMassTool)
145 acc.addPublicTool(EGAM8ZmueMassTool)
146 augmentationTools.append(EGAM8ZmueMassTool)
151 from DerivationFrameworkCalo.DerivationFrameworkCaloConfig
import (
152 CaloDecoratorKernelCfg)
153 acc.merge(CaloDecoratorKernelCfg(flags))
155 from DerivationFrameworkEGamma.EGammaToolsConfig
import (
156 EGammaCookieCutClusterToolCfg)
157 cookieCutTool = acc.popToolsAndMerge(
158 EGammaCookieCutClusterToolCfg(flags,
160 StoreInputMoments=
True,
161 StoreCookedMoments=
True))
162 acc.addPublicTool(cookieCutTool)
163 augmentationTools.append(cookieCutTool)
167 streamName = kwargs[
"StreamName"]
170 if flags.Derivation.Egamma.doTrackThinning:
171 from DerivationFrameworkInDet.InDetToolsConfig
import (
172 TrackParticleThinningCfg,
173 MuonTrackParticleThinningCfg,
174 TauTrackParticleThinningCfg,
177 TrackThinningKeepElectronTracks =
True
178 TrackThinningKeepPhotonTracks =
True
179 TrackThinningKeepAllElectronTracks =
False
180 TrackThinningKeepJetTracks =
False
181 TrackThinningKeepMuonTracks =
True
182 TrackThinningKeepTauTracks =
False
183 TrackThinningKeepPVTracks =
False
186 if TrackThinningKeepElectronTracks:
187 EGAM8ElectronTPThinningTool = (
188 CompFactory.DerivationFramework.EgammaTrackParticleThinning(
189 name=
"EGAM8ElectronTPThinningTool",
190 StreamName=streamName,
192 GSFTrackParticlesKey=
"GSFTrackParticles",
193 InDetTrackParticlesKey=
"InDetTrackParticles",
194 SelectionString=
"Electrons.pt > 0*GeV",
199 acc.addPublicTool(EGAM8ElectronTPThinningTool)
200 thinningTools.append(EGAM8ElectronTPThinningTool)
204 if TrackThinningKeepAllElectronTracks:
205 EGAM8ElectronTPThinningTool2 = (
206 CompFactory.DerivationFramework.EgammaTrackParticleThinning(
207 name=
"EGAM8ElectronTPThinningTool2",
208 StreamName=streamName,
210 GSFTrackParticlesKey=
"GSFTrackParticles",
211 InDetTrackParticlesKey=
"InDetTrackParticles",
212 SelectionString=
"Electrons.pt > 4*GeV",
217 acc.addPublicTool(EGAM8ElectronTPThinningTool2)
218 thinningTools.append(EGAM8ElectronTPThinningTool2)
221 if TrackThinningKeepPhotonTracks:
222 EGAM8PhotonTPThinningTool = (
223 CompFactory.DerivationFramework.EgammaTrackParticleThinning(
224 name=
"EGAM8PhotonTPThinningTool",
225 StreamName=streamName,
227 GSFTrackParticlesKey=
"GSFTrackParticles",
228 InDetTrackParticlesKey=
"InDetTrackParticles",
229 GSFConversionVerticesKey=
"GSFConversionVertices",
230 SelectionString=
"Photons.pt > 0*GeV",
235 acc.addPublicTool(EGAM8PhotonTPThinningTool)
236 thinningTools.append(EGAM8PhotonTPThinningTool)
239 if TrackThinningKeepJetTracks:
240 EGAM8JetTPThinningTool = (
241 CompFactory.DerivationFramework.JetTrackParticleThinning(
242 name=
"EGAM8JetTPThinningTool",
243 StreamName=streamName,
244 JetKey=
"AntiKt4EMPFlowJets",
245 InDetTrackParticlesKey=
"InDetTrackParticles",
248 acc.addPublicTool(EGAM8JetTPThinningTool)
249 thinningTools.append(EGAM8JetTPThinningTool)
252 if TrackThinningKeepMuonTracks:
253 EGAM8MuonTPThinningTool = acc.getPrimaryAndMerge(
254 MuonTrackParticleThinningCfg(
256 name=
"EGAM8MuonTPThinningTool",
257 StreamName=streamName,
259 InDetTrackParticlesKey=
"InDetTrackParticles",
262 thinningTools.append(EGAM8MuonTPThinningTool)
265 if TrackThinningKeepTauTracks:
266 EGAM8TauTPThinningTool = acc.getPrimaryAndMerge(
267 TauTrackParticleThinningCfg(
269 name=
"EGAM8TauTPThinningTool",
270 StreamName=streamName,
273 InDetTrackParticlesKey=
"InDetTrackParticles",
274 DoTauTracksThinning=
True,
275 TauTracksKey=
"TauTracks",
278 thinningTools.append(EGAM8TauTPThinningTool)
281 thinning_expression =
" && ".join(
283 "(InDetTrackParticles.DFCommonTightPrimary)",
284 "(abs(InDetTrackParticles.DFCommonInDetTrackZ0AtPV)*sin(InDetTrackParticles.theta)<3.0*mm)",
285 "(InDetTrackParticles.pt>10*GeV)",
288 if TrackThinningKeepPVTracks:
289 EGAM8TPThinningTool = acc.getPrimaryAndMerge(
290 TrackParticleThinningCfg(
292 name=
"EGAM8TPThinningTool",
293 StreamName=streamName,
294 SelectionString=thinning_expression,
295 InDetTrackParticlesKey=
"InDetTrackParticles",
298 thinningTools.append(EGAM8TPThinningTool)
303 truth_cond_WZH =
"(TruthParticles.isW || TruthParticles.isZ || TruthParticles.isHiggs)"
305 truth_cond_lep =
"(TruthParticles.isLepton)"
307 truth_cond_top =
"(TruthParticles.isTop)"
309 truth_cond_gam =
" && ".join(
310 [
"(TruthParticles.isPhoton)",
"(TruthParticles.pt > 1*GeV)"]
313 truth_cond_finalState =
" && ".join(
314 [
"(TruthParticles.isGenStable)",
"(!TruthParticles.isSimulationParticle)"]
330 + truth_cond_finalState
333 print(
"EGAM8 truth thinning expression: ", truth_expression)
335 EGAM8TruthThinningTool = CompFactory.DerivationFramework.GenericTruthThinning(
336 name=
"EGAM8TruthThinningTool",
337 StreamName=streamName,
338 ParticleSelectionString=truth_expression,
339 PreserveDescendants=
False,
340 PreserveGeneratorDescendants=
True,
341 PreserveAncestors=
True,
343 acc.addPublicTool(EGAM8TruthThinningTool)
344 thinningTools.append(EGAM8TruthThinningTool)
351 CompFactory.DerivationFramework.DerivationKernel(
353 SkimmingTools=[skimmingTool],
354 AugmentationTools=augmentationTools,
355 ThinningTools=thinningTools,
363 acc = ComponentAccumulator()
372 from DerivationFrameworkPhys.TriggerListsHelper
import TriggerListsHelper
374 EGAM8TriggerListsHelper = TriggerListsHelper(flags)
381 StreamName=
"StreamDAOD_EGAM8",
382 TriggerListsHelper=EGAM8TriggerListsHelper,
387 from OutputStreamAthenaPool.OutputStreamConfig
import OutputStreamCfg
388 from xAODMetaDataCnv.InfileMetaDataConfig
import SetupMetaDataForStreamCfg
389 from DerivationFrameworkCore.SlimmingHelper
import SlimmingHelper
392 "EGAM8SlimmingHelper",
393 NamesAndTypes=flags.Input.TypedCollections,
402 EGAM8SlimmingHelper.AllVariables = [
407 "ForwardElectronClusters",
415 EGAM8SlimmingHelper.AllVariables += [
419 "egammaTruthParticles",
430 EGAM8SlimmingHelper.SmartCollections = [
436 "InDetTrackParticles",
437 "AntiKt4EMPFlowJets",
439 "MET_Baseline_AntiKt4EMPFlow",
442 EGAM8SlimmingHelper.SmartCollections += [
444 "AntiKt4TruthDressedWZJets",
450 EGAM8SlimmingHelper.ExtraVariables += [
451 "Muons.ptcone20.ptcone30.ptcone40.etcone20.etcone30.etcone40"
455 EGAM8SlimmingHelper.ExtraVariables += [
456 "GSFConversionVertices.x.y.z.px.py.pz.pt1.pt2.etaAtCalo.phiAtCalo",
457 "GSFConversionVertices.trackParticleLinks",
461 EGAM8SlimmingHelper.ExtraVariables += [
"PrimaryVertices.x.y.sumPt2"]
464 EGAM8SlimmingHelper.ExtraVariables += [
465 "AntiKt4PV0TrackJets.pt.eta.phi.e.m.btaggingLink.constituentLinks"
469 EGAM8SlimmingHelper.ExtraVariables += [
470 "TopoClusterIsoCentralEventShape.Density",
471 "TopoClusterIsoForwardEventShape.Density",
472 "NeutralParticleFlowIsoCentralEventShape.Density",
473 "NeutralParticleFlowIsoForwardEventShape.Density",
477 EGAM8SlimmingHelper.ExtraVariables += PhotonsCPDetailedContent
480 from DerivationFrameworkCalo.DerivationFrameworkCaloConfig
import (
482 getClusterEnergyPerLayerDecorations,
485 gainDecorations = getGainDecorations(acc, flags,
"EGAM8Kernel")
486 print(
"EGAM8 gain decorations: ", gainDecorations)
487 EGAM8SlimmingHelper.ExtraVariables.extend(gainDecorations)
488 clusterEnergyDecorations = getClusterEnergyPerLayerDecorations(acc,
"EGAM8Kernel")
489 print(
"EGAM8 cluster energy decorations: ", clusterEnergyDecorations)
490 EGAM8SlimmingHelper.ExtraVariables.extend(clusterEnergyDecorations)
494 EGAM8SlimmingHelper.ExtraVariables += [
495 "MuonTruthParticles.e.px.py.pz.status.pdgId.truthClassification.truthOrigin.truthType"
498 EGAM8SlimmingHelper.ExtraVariables += [
499 "Photons.truthClassification.truthOrigin.truthType.truthParticleLink"
503 if flags.Derivation.Egamma.doEventInfoSlimming:
504 EGAM8SlimmingHelper.SmartCollections.append(
"EventInfo")
506 EGAM8SlimmingHelper.AllVariables += [
"EventInfo"]
509 EGAM8SlimmingHelper.IncludeEGammaTriggerContent =
True
510 EGAM8SlimmingHelper.IncludeMuonTriggerContent =
True
514 if flags.Trigger.EDMVersion == 2:
515 from DerivationFrameworkPhys.TriggerMatchingCommonConfig
import AddRun2TriggerMatchingToSlimmingHelper
516 AddRun2TriggerMatchingToSlimmingHelper(SlimmingHelper = EGAM8SlimmingHelper,
517 OutputContainerPrefix =
"TrigMatch_",
518 TriggerList = EGAM8TriggerListsHelper.Run2TriggerNamesNoTau)
520 if flags.Trigger.EDMVersion == 3
or (flags.Trigger.EDMVersion == 2
and flags.Trigger.doEDMVersionConversion):
521 from TrigNavSlimmingMT.TrigNavSlimmingMTConfig
import AddRun3TrigNavSlimmingCollectionsToSlimmingHelper
522 AddRun3TrigNavSlimmingCollectionsToSlimmingHelper(EGAM8SlimmingHelper)
525 EGAM8SlimmingHelper.StaticContent = [
526 "CaloCellContainer#AllCalo",
527 "CaloClusterCellLinkContainer#egammaClusters_links",
528 "CaloClusterCellLinkContainer#ForwardElectronClusters_links",
529 "xAOD::CaloClusterContainer#ForwardElectronCookieCutClusters",
530 "xAOD::CaloClusterAuxContainer#ForwardElectronCookieCutClustersAux.",
533 EGAM8ItemList = EGAM8SlimmingHelper.GetItemList()
538 ItemList=EGAM8ItemList,
539 AcceptAlgs=[
"EGAM8Kernel"],
543 SetupMetaDataForStreamCfg(
546 AcceptAlgs=[
"EGAM8Kernel"],
548 MetadataCategory.CutFlowMetaData,
549 MetadataCategory.TruthMetaData,