10 from AthenaConfiguration.ComponentAccumulator
import ComponentAccumulator
11 from AthenaConfiguration.ComponentFactory
import CompFactory
12 from AthenaConfiguration.Enums
import MetadataCategory
16 from DerivationFrameworkEGamma.PhotonsCPDetailedContent
import (
17 PhotonsCPDetailedContent,
22 """Configure the EGAM8 skimming tool"""
25 expression =
" || ".
join(
27 "(count(EGAM8_DiElectronMass >50.0*GeV) >=1)",
28 "(count(EGAM8_MuonElectronMass >50.0*GeV) >=1)",
31 print(
"EGAM8 skimming expression: ", expression)
34 CompFactory.DerivationFramework.xAODStringSkimmingTool(
35 name=
"EGAM8SkimmingTool", expression=expression
43 """Configure the EGAM8 ee invariant mass augmentation tool"""
57 requirement_tag =
" && ".
join(
58 [
"(Electrons.DFCommonElectronsLHMedium)",
"(Electrons.pt > 24.5*GeV)"]
60 requirement_probe =
"ForwardElectrons.pt > 19.5*GeV"
63 CompFactory.DerivationFramework.EGInvariantMassTool(
64 name=
"EGAM8_ZEEMassTool",
65 Object1Requirements=requirement_tag,
66 Object2Requirements=requirement_probe,
67 StoreGateEntryName=
"EGAM8_DiElectronMass",
68 Mass1Hypothesis=0.511 * MeV,
69 Mass2Hypothesis=0.511 * MeV,
70 Container1Name=
"Electrons",
71 Container2Name=
"ForwardElectrons",
73 DoTransverseMass=
False,
82 """Configure the EGAM8 mue invariant mass augmentation tool"""
95 requirement_muon =
" && ".
join(
99 "Muons.DFCommonMuonPassPreselection",
102 requirement_electron =
"ForwardElectrons.pt > 19.5*GeV"
105 CompFactory.DerivationFramework.EGInvariantMassTool(
106 name=
"EGAM8_ZMuEMassTool",
107 Object1Requirements=requirement_muon,
108 Object2Requirements=requirement_electron,
109 StoreGateEntryName=
"EGAM8_MuonElectronMass",
110 Mass1Hypothesis=105 * MeV,
111 Mass2Hypothesis=0.511 * MeV,
112 Container1Name=
"Muons",
113 Container2Name=
"ForwardElectrons",
115 DoTransverseMass=
False,
125 """Configure the derivation framework driving algorithm (kernel)
130 from DerivationFrameworkPhys.PhysCommonConfig
import 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)
159 from DerivationFrameworkEGamma.EGammaToolsConfig
import (
160 EGammaCookieCutClusterToolCfg)
161 cookieCutTool = acc.popToolsAndMerge(
164 StoreInputMoments=
True,
165 StoreCookedMoments=
True,
167 acc.addPublicTool(cookieCutTool)
168 augmentationTools.append(cookieCutTool)
172 streamName = kwargs[
"StreamName"]
175 if flags.Derivation.Egamma.doTrackThinning:
176 from DerivationFrameworkInDet.InDetToolsConfig
import (
177 TrackParticleThinningCfg,
178 MuonTrackParticleThinningCfg,
179 TauTrackParticleThinningCfg,
182 TrackThinningKeepElectronTracks =
True
183 TrackThinningKeepPhotonTracks =
True
184 TrackThinningKeepAllElectronTracks =
False
185 TrackThinningKeepJetTracks =
False
186 TrackThinningKeepMuonTracks =
True
187 TrackThinningKeepTauTracks =
False
188 TrackThinningKeepPVTracks =
False
191 if TrackThinningKeepElectronTracks:
192 EGAM8ElectronTPThinningTool = (
193 CompFactory.DerivationFramework.EgammaTrackParticleThinning(
194 name=
"EGAM8ElectronTPThinningTool",
195 StreamName=streamName,
197 GSFTrackParticlesKey=
"GSFTrackParticles",
198 InDetTrackParticlesKey=
"InDetTrackParticles",
199 SelectionString=
"Electrons.pt > 0*GeV",
204 acc.addPublicTool(EGAM8ElectronTPThinningTool)
205 thinningTools.append(EGAM8ElectronTPThinningTool)
209 if TrackThinningKeepAllElectronTracks:
210 EGAM8ElectronTPThinningTool2 = (
211 CompFactory.DerivationFramework.EgammaTrackParticleThinning(
212 name=
"EGAM8ElectronTPThinningTool2",
213 StreamName=streamName,
215 GSFTrackParticlesKey=
"GSFTrackParticles",
216 InDetTrackParticlesKey=
"InDetTrackParticles",
217 SelectionString=
"Electrons.pt > 4*GeV",
222 acc.addPublicTool(EGAM8ElectronTPThinningTool2)
223 thinningTools.append(EGAM8ElectronTPThinningTool2)
226 if TrackThinningKeepPhotonTracks:
227 EGAM8PhotonTPThinningTool = (
228 CompFactory.DerivationFramework.EgammaTrackParticleThinning(
229 name=
"EGAM8PhotonTPThinningTool",
230 StreamName=streamName,
232 GSFTrackParticlesKey=
"GSFTrackParticles",
233 InDetTrackParticlesKey=
"InDetTrackParticles",
234 GSFConversionVerticesKey=
"GSFConversionVertices",
235 SelectionString=
"Photons.pt > 0*GeV",
240 acc.addPublicTool(EGAM8PhotonTPThinningTool)
241 thinningTools.append(EGAM8PhotonTPThinningTool)
244 if TrackThinningKeepJetTracks:
245 EGAM8JetTPThinningTool = (
246 CompFactory.DerivationFramework.JetTrackParticleThinning(
247 name=
"EGAM8JetTPThinningTool",
248 StreamName=streamName,
249 JetKey=
"AntiKt4EMPFlowJets",
250 InDetTrackParticlesKey=
"InDetTrackParticles",
253 acc.addPublicTool(EGAM8JetTPThinningTool)
254 thinningTools.append(EGAM8JetTPThinningTool)
257 if TrackThinningKeepMuonTracks:
258 EGAM8MuonTPThinningTool = acc.getPrimaryAndMerge(
261 name=
"EGAM8MuonTPThinningTool",
262 StreamName=streamName,
264 InDetTrackParticlesKey=
"InDetTrackParticles",
267 thinningTools.append(EGAM8MuonTPThinningTool)
270 if TrackThinningKeepTauTracks:
271 EGAM8TauTPThinningTool = acc.getPrimaryAndMerge(
274 name=
"EGAM8TauTPThinningTool",
275 StreamName=streamName,
278 InDetTrackParticlesKey=
"InDetTrackParticles",
279 DoTauTracksThinning=
True,
280 TauTracksKey=
"TauTracks",
283 thinningTools.append(EGAM8TauTPThinningTool)
286 thinning_expression =
" && ".
join(
288 "(InDetTrackParticles.DFCommonTightPrimary)",
289 "(abs(DFCommonInDetTrackZ0AtPV)*sin(InDetTrackParticles.theta)<3.0*mm)",
290 "(InDetTrackParticles.pt>10*GeV)",
293 if TrackThinningKeepPVTracks:
294 EGAM8TPThinningTool = acc.getPrimaryAndMerge(
297 name=
"EGAM8TPThinningTool",
298 StreamName=streamName,
299 SelectionString=thinning_expression,
300 InDetTrackParticlesKey=
"InDetTrackParticles",
303 thinningTools.append(EGAM8TPThinningTool)
308 truth_cond_WZH =
" && ".
join(
309 [
"(abs(TruthParticles.pdgId) >= 23)",
"(abs(TruthParticles.pdgId) <= 25)"]
312 truth_cond_lep =
" && ".
join(
313 [
"(abs(TruthParticles.pdgId) >= 11)",
"(abs(TruthParticles.pdgId) <= 16)"]
316 truth_cond_top =
"(abs(TruthParticles.pdgId) == 6)"
318 truth_cond_gam =
" && ".
join(
319 [
"(TruthParticles.isPhoton)",
"(TruthParticles.pt > 1*GeV)"]
322 truth_cond_finalState =
" && ".
join(
323 [
"(TruthParticles.isGenStable)",
"(!TruthParticles.isSimulationParticle)"]
339 + truth_cond_finalState
342 print(
"EGAM8 truth thinning expression: ", truth_expression)
344 EGAM8TruthThinningTool = CompFactory.DerivationFramework.GenericTruthThinning(
345 name=
"EGAM8TruthThinningTool",
346 StreamName=streamName,
347 ParticleSelectionString=truth_expression,
348 PreserveDescendants=
False,
349 PreserveGeneratorDescendants=
True,
350 PreserveAncestors=
True,
352 acc.addPublicTool(EGAM8TruthThinningTool)
353 thinningTools.append(EGAM8TruthThinningTool)
357 acc.addPublicTool(skimmingTool)
361 CompFactory.DerivationFramework.DerivationKernel(
363 SkimmingTools=[skimmingTool],
364 AugmentationTools=augmentationTools,
365 ThinningTools=thinningTools,
382 from DerivationFrameworkPhys.TriggerListsHelper
import TriggerListsHelper
384 EGAM8TriggerListsHelper = TriggerListsHelper(flags)
391 StreamName=
"StreamDAOD_EGAM8",
392 TriggerListsHelper=EGAM8TriggerListsHelper,
397 from OutputStreamAthenaPool.OutputStreamConfig
import OutputStreamCfg
398 from xAODMetaDataCnv.InfileMetaDataConfig
import SetupMetaDataForStreamCfg
399 from DerivationFrameworkCore.SlimmingHelper
import SlimmingHelper
402 "EGAM8SlimmingHelper",
403 NamesAndTypes=flags.Input.TypedCollections,
412 EGAM8SlimmingHelper.AllVariables = [
417 "ForwardElectronClusters",
425 EGAM8SlimmingHelper.AllVariables += [
429 "egammaTruthParticles",
440 EGAM8SlimmingHelper.SmartCollections = [
446 "InDetTrackParticles",
447 "AntiKt4EMPFlowJets",
448 "BTagging_AntiKt4EMPFlow",
449 "MET_Baseline_AntiKt4EMPFlow",
452 EGAM8SlimmingHelper.SmartCollections += [
454 "AntiKt4TruthDressedWZJets",
460 EGAM8SlimmingHelper.ExtraVariables += [
461 "Muons.ptcone20.ptcone30.ptcone40.etcone20.etcone30.etcone40"
465 EGAM8SlimmingHelper.ExtraVariables += [
466 "GSFConversionVertices.x.y.z.px.py.pz.pt1.pt2.etaAtCalo.phiAtCalo",
467 "GSFConversionVertices.trackParticleLinks",
471 EGAM8SlimmingHelper.ExtraVariables += [
"PrimaryVertices.x.y.sumPt2"]
474 EGAM8SlimmingHelper.ExtraVariables += [
475 "AntiKt4PV0TrackJets.pt.eta.phi.e.m.btaggingLink.constituentLinks"
479 EGAM8SlimmingHelper.ExtraVariables += [
480 "TopoClusterIsoCentralEventShape.Density",
481 "TopoClusterIsoForwardEventShape.Density",
482 "NeutralParticleFlowIsoCentralEventShape.Density",
483 "NeutralParticleFlowIsoForwardEventShape.Density",
487 EGAM8SlimmingHelper.ExtraVariables += PhotonsCPDetailedContent
490 from DerivationFrameworkCalo.DerivationFrameworkCaloConfig
import (
492 getClusterEnergyPerLayerDecorations,
496 print(
"EGAM8 gain decorations: ", gainDecorations)
497 EGAM8SlimmingHelper.ExtraVariables.extend(gainDecorations)
499 print(
"EGAM8 cluster energy decorations: ", clusterEnergyDecorations)
500 EGAM8SlimmingHelper.ExtraVariables.extend(clusterEnergyDecorations)
504 EGAM8SlimmingHelper.ExtraVariables += [
505 "MuonTruthParticles.e.px.py.pz.status.pdgId.truthOrigin.truthType"
508 EGAM8SlimmingHelper.ExtraVariables += [
509 "Photons.truthOrigin.truthType.truthParticleLink"
513 if flags.Derivation.Egamma.doEventInfoSlimming:
514 EGAM8SlimmingHelper.SmartCollections.append(
"EventInfo")
516 EGAM8SlimmingHelper.AllVariables += [
"EventInfo"]
519 EGAM8SlimmingHelper.IncludeEGammaTriggerContent =
True
520 EGAM8SlimmingHelper.IncludeMuonTriggerContent =
True
524 if flags.Trigger.EDMVersion == 2:
525 from DerivationFrameworkPhys.TriggerMatchingCommonConfig
import AddRun2TriggerMatchingToSlimmingHelper
527 OutputContainerPrefix =
"TrigMatch_",
528 TriggerList = EGAM8TriggerListsHelper.Run2TriggerNamesNoTau)
530 if flags.Trigger.EDMVersion == 3
or (flags.Trigger.EDMVersion == 2
and flags.Trigger.doEDMVersionConversion):
531 from TrigNavSlimmingMT.TrigNavSlimmingMTConfig
import AddRun3TrigNavSlimmingCollectionsToSlimmingHelper
535 EGAM8SlimmingHelper.StaticContent = [
536 "CaloCellContainer#AllCalo",
537 "CaloClusterCellLinkContainer#egammaClusters_links",
538 "CaloClusterCellLinkContainer#ForwardElectronClusters_links",
539 "xAOD::CaloClusterContainer#ForwardElectronCookieCutClusters",
540 "xAOD::CaloClusterAuxContainer#ForwardElectronCookieCutClustersAux.",
543 EGAM8ItemList = EGAM8SlimmingHelper.GetItemList()
548 ItemList=EGAM8ItemList,
549 AcceptAlgs=[
"EGAM8Kernel"],
556 AcceptAlgs=[
"EGAM8Kernel"],
558 MetadataCategory.CutFlowMetaData,
559 MetadataCategory.TruthMetaData,