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(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 =
" && ".join(
304 [
"(abs(TruthParticles.pdgId) >= 23)",
"(abs(TruthParticles.pdgId) <= 25)"]
307 truth_cond_lep =
" && ".join(
308 [
"(abs(TruthParticles.pdgId) >= 11)",
"(abs(TruthParticles.pdgId) <= 16)"]
311 truth_cond_top =
"(abs(TruthParticles.pdgId) == 6)"
313 truth_cond_gam =
" && ".join(
314 [
"(TruthParticles.isPhoton)",
"(TruthParticles.pt > 1*GeV)"]
317 truth_cond_finalState =
" && ".join(
318 [
"(TruthParticles.isGenStable)",
"(!TruthParticles.isSimulationParticle)"]
334 + truth_cond_finalState
337 print(
"EGAM8 truth thinning expression: ", truth_expression)
339 EGAM8TruthThinningTool = CompFactory.DerivationFramework.GenericTruthThinning(
340 name=
"EGAM8TruthThinningTool",
341 StreamName=streamName,
342 ParticleSelectionString=truth_expression,
343 PreserveDescendants=
False,
344 PreserveGeneratorDescendants=
True,
345 PreserveAncestors=
True,
347 acc.addPublicTool(EGAM8TruthThinningTool)
348 thinningTools.append(EGAM8TruthThinningTool)
355 CompFactory.DerivationFramework.DerivationKernel(
357 SkimmingTools=[skimmingTool],
358 AugmentationTools=augmentationTools,
359 ThinningTools=thinningTools,
367 acc = ComponentAccumulator()
376 from DerivationFrameworkPhys.TriggerListsHelper
import TriggerListsHelper
378 EGAM8TriggerListsHelper = TriggerListsHelper(flags)
385 StreamName=
"StreamDAOD_EGAM8",
386 TriggerListsHelper=EGAM8TriggerListsHelper,
391 from OutputStreamAthenaPool.OutputStreamConfig
import OutputStreamCfg
392 from xAODMetaDataCnv.InfileMetaDataConfig
import SetupMetaDataForStreamCfg
393 from DerivationFrameworkCore.SlimmingHelper
import SlimmingHelper
396 "EGAM8SlimmingHelper",
397 NamesAndTypes=flags.Input.TypedCollections,
406 EGAM8SlimmingHelper.AllVariables = [
411 "ForwardElectronClusters",
419 EGAM8SlimmingHelper.AllVariables += [
423 "egammaTruthParticles",
434 EGAM8SlimmingHelper.SmartCollections = [
440 "InDetTrackParticles",
441 "AntiKt4EMPFlowJets",
443 "MET_Baseline_AntiKt4EMPFlow",
446 EGAM8SlimmingHelper.SmartCollections += [
448 "AntiKt4TruthDressedWZJets",
454 EGAM8SlimmingHelper.ExtraVariables += [
455 "Muons.ptcone20.ptcone30.ptcone40.etcone20.etcone30.etcone40"
459 EGAM8SlimmingHelper.ExtraVariables += [
460 "GSFConversionVertices.x.y.z.px.py.pz.pt1.pt2.etaAtCalo.phiAtCalo",
461 "GSFConversionVertices.trackParticleLinks",
465 EGAM8SlimmingHelper.ExtraVariables += [
"PrimaryVertices.x.y.sumPt2"]
468 EGAM8SlimmingHelper.ExtraVariables += [
469 "AntiKt4PV0TrackJets.pt.eta.phi.e.m.btaggingLink.constituentLinks"
473 EGAM8SlimmingHelper.ExtraVariables += [
474 "TopoClusterIsoCentralEventShape.Density",
475 "TopoClusterIsoForwardEventShape.Density",
476 "NeutralParticleFlowIsoCentralEventShape.Density",
477 "NeutralParticleFlowIsoForwardEventShape.Density",
481 EGAM8SlimmingHelper.ExtraVariables += PhotonsCPDetailedContent
484 from DerivationFrameworkCalo.DerivationFrameworkCaloConfig
import (
486 getClusterEnergyPerLayerDecorations,
489 gainDecorations = getGainDecorations(acc, flags,
"EGAM8Kernel")
490 print(
"EGAM8 gain decorations: ", gainDecorations)
491 EGAM8SlimmingHelper.ExtraVariables.extend(gainDecorations)
492 clusterEnergyDecorations = getClusterEnergyPerLayerDecorations(acc,
"EGAM8Kernel")
493 print(
"EGAM8 cluster energy decorations: ", clusterEnergyDecorations)
494 EGAM8SlimmingHelper.ExtraVariables.extend(clusterEnergyDecorations)
498 EGAM8SlimmingHelper.ExtraVariables += [
499 "MuonTruthParticles.e.px.py.pz.status.pdgId.truthClassification.truthOrigin.truthType"
502 EGAM8SlimmingHelper.ExtraVariables += [
503 "Photons.truthClassification.truthOrigin.truthType.truthParticleLink"
507 if flags.Derivation.Egamma.doEventInfoSlimming:
508 EGAM8SlimmingHelper.SmartCollections.append(
"EventInfo")
510 EGAM8SlimmingHelper.AllVariables += [
"EventInfo"]
513 EGAM8SlimmingHelper.IncludeEGammaTriggerContent =
True
514 EGAM8SlimmingHelper.IncludeMuonTriggerContent =
True
518 if flags.Trigger.EDMVersion == 2:
519 from DerivationFrameworkPhys.TriggerMatchingCommonConfig
import AddRun2TriggerMatchingToSlimmingHelper
520 AddRun2TriggerMatchingToSlimmingHelper(SlimmingHelper = EGAM8SlimmingHelper,
521 OutputContainerPrefix =
"TrigMatch_",
522 TriggerList = EGAM8TriggerListsHelper.Run2TriggerNamesNoTau)
524 if flags.Trigger.EDMVersion == 3
or (flags.Trigger.EDMVersion == 2
and flags.Trigger.doEDMVersionConversion):
525 from TrigNavSlimmingMT.TrigNavSlimmingMTConfig
import AddRun3TrigNavSlimmingCollectionsToSlimmingHelper
526 AddRun3TrigNavSlimmingCollectionsToSlimmingHelper(EGAM8SlimmingHelper)
529 EGAM8SlimmingHelper.StaticContent = [
530 "CaloCellContainer#AllCalo",
531 "CaloClusterCellLinkContainer#egammaClusters_links",
532 "CaloClusterCellLinkContainer#ForwardElectronClusters_links",
533 "xAOD::CaloClusterContainer#ForwardElectronCookieCutClusters",
534 "xAOD::CaloClusterAuxContainer#ForwardElectronCookieCutClustersAux.",
537 EGAM8ItemList = EGAM8SlimmingHelper.GetItemList()
542 ItemList=EGAM8ItemList,
543 AcceptAlgs=[
"EGAM8Kernel"],
547 SetupMetaDataForStreamCfg(
550 AcceptAlgs=[
"EGAM8Kernel"],
552 MetadataCategory.CutFlowMetaData,
553 MetadataCategory.TruthMetaData,