9 from AthenaConfiguration.ComponentAccumulator
import ComponentAccumulator
10 from AthenaConfiguration.ComponentFactory
import CompFactory
11 from AthenaConfiguration.Enums
import MetadataCategory
15 from DerivationFrameworkEGamma.ElectronsCPDetailedContent
import (
16 ElectronsCPDetailedContent,
17 GSFTracksCPDetailedContent,
20 from DerivationFrameworkEGamma.TriggerContent
import (
21 ExtraContainersTrigger,
22 ExtraContainersPhotonTrigger,
23 ExtraContainersElectronTrigger,
24 ExtraContainersTriggerDataOnly,
25 ExtraVariablesHLTPhotons,
30 """Configure the EGAM3 skimming tool"""
34 expression1a =
" && ".
join(
36 "(count(DFCommonPhotons_et>9.5*GeV)>=1)",
37 "(count(EGAM3_DiElectronMass1 > 40.0*GeV)>=1)",
40 expression1b =
" && ".
join(
42 "(count(Electrons.pt>9.5*GeV)>=3)",
43 "(count(EGAM3_DiElectronMass1 > 40.0*GeV)>=1)",
48 expression2 =
" && ".
join(
50 "(count(DFCommonPhotons_et>9.5*GeV && "
51 +
"Photons.DFCommonPhotonsIsEMTight)>=1)",
52 "(count(EGAM3_DiElectronMass2 > 40.0*GeV)>=1)",
57 expression3 =
" && ".
join(
59 "(count(DFCommonPhotons_et>9.5*GeV && "
60 +
"Photons.DFCommonPhotonsIsEMTight)>=1)",
61 "(count(EGAM3_DiElectronMass3 > 40.0*GeV)>=1)",
80 print(
"EGAM3 skimming expression: ", expression)
83 CompFactory.DerivationFramework.xAODStringSkimmingTool(
84 name=
"EGAM3SkimmingTool", expression=expression
92 """Configure the EGAM3 ee invariant mass augmentation tool 1"""
106 requirementElectrons =
" && ".
join(
107 [
"(Electrons.DFCommonElectronsLHMedium)",
"(Electrons.pt > 9.5*GeV)"]
111 CompFactory.DerivationFramework.EGInvariantMassTool(
112 name=
"EGAM3_EEMassTool11",
113 Object1Requirements=requirementElectrons,
114 Object2Requirements=requirementElectrons,
115 StoreGateEntryName=
"EGAM3_DiElectronMass1",
116 Mass1Hypothesis=0.511 * MeV,
117 Mass2Hypothesis=0.511 * MeV,
118 Container1Name=
"Electrons",
119 Container2Name=
"Electrons",
121 DoTransverseMass=
False,
130 """Configure the EGAM3 ee invariant mass augmentation tool 2"""
144 requirementElectron1 =
" && ".
join(
145 [
"(Electrons.DFCommonElectronsLHTight)",
"(Electrons.pt > 24.5*GeV)"]
147 requirementElectron2 =
"(Electrons.pt > 6.5*GeV)"
150 CompFactory.DerivationFramework.EGInvariantMassTool(
151 name=
"EGAM3_ZEEMassTool2",
152 Object1Requirements=requirementElectron1,
153 Object2Requirements=requirementElectron2,
154 StoreGateEntryName=
"EGAM3_DiElectronMass2",
155 Mass1Hypothesis=0.511 * MeV,
156 Mass2Hypothesis=0.511 * MeV,
157 Container1Name=
"Electrons",
158 Container2Name=
"Electrons",
160 DoTransverseMass=
False,
169 """Configure the EGAM3 ee invariant mass augmentation tool 3"""
179 requirementElectron1 =
" && ".
join(
180 [
"(Electrons.DFCommonElectronsLHTight)",
"(Electrons.pt > 24.5*GeV)"]
182 requirementElectron2 =
"(ForwardElectrons.pt > 6.5*GeV)"
185 CompFactory.DerivationFramework.EGInvariantMassTool(
186 name=
"EGAM3_EEMassTool3",
187 Object1Requirements=requirementElectron1,
188 Object2Requirements=requirementElectron2,
189 StoreGateEntryName=
"EGAM3_DiElectronMass3",
190 Mass1Hypothesis=0.511 * MeV,
191 Mass2Hypothesis=0.511 * MeV,
192 Container1Name=
"Electrons",
193 Container2Name=
"ForwardElectrons",
195 DoTransverseMass=
False,
205 """Configure the derivation framework driving algorithm (kernel)
210 from DerivationFrameworkPhys.PhysCommonConfig
import PhysCommonAugmentationsCfg
214 flags, TriggerListsHelper=kwargs[
"TriggerListsHelper"]
219 augmentationTools = []
225 acc.addPublicTool(EGAM3eeMassTool1)
226 augmentationTools.append(EGAM3eeMassTool1)
229 acc.addPublicTool(EGAM3eeMassTool2)
230 augmentationTools.append(EGAM3eeMassTool2)
233 acc.addPublicTool(EGAM3eeMassTool3)
234 augmentationTools.append(EGAM3eeMassTool3)
239 from DerivationFrameworkCalo.DerivationFrameworkCaloConfig
import (
240 CaloDecoratorKernelCfg)
245 streamName = kwargs[
"StreamName"]
248 if flags.Derivation.Egamma.doTrackThinning:
249 from DerivationFrameworkInDet.InDetToolsConfig
import (
250 TrackParticleThinningCfg,
251 MuonTrackParticleThinningCfg,
252 TauTrackParticleThinningCfg,
255 TrackThinningKeepElectronTracks =
True
256 TrackThinningKeepAllElectronTracks =
False
257 TrackThinningKeepPhotonTracks =
True
258 TrackThinningKeepAllPhotonTracks =
True
259 TrackThinningKeepJetTracks =
False
260 TrackThinningKeepMuonTracks =
False
261 TrackThinningKeepTauTracks =
False
262 TrackThinningKeepPVTracks =
True
265 if TrackThinningKeepElectronTracks:
266 EGAM3ElectronTPThinningTool = (
267 CompFactory.DerivationFramework.EgammaTrackParticleThinning(
268 name=
"EGAM3ElectronTPThinningTool",
269 StreamName=streamName,
271 GSFTrackParticlesKey=
"GSFTrackParticles",
272 InDetTrackParticlesKey=
"InDetTrackParticles",
273 SelectionString=
"Electrons.pt > 0*GeV",
278 acc.addPublicTool(EGAM3ElectronTPThinningTool)
279 thinningTools.append(EGAM3ElectronTPThinningTool)
283 if TrackThinningKeepAllElectronTracks:
284 EGAM3ElectronTPThinningTool2 = (
285 CompFactory.DerivationFramework.EgammaTrackParticleThinning(
286 name=
"EGAM3ElectronTPThinningTool2",
287 StreamName=streamName,
289 GSFTrackParticlesKey=
"GSFTrackParticles",
290 InDetTrackParticlesKey=
"InDetTrackParticles",
291 SelectionString=
"Electrons.pt > 4*GeV",
296 acc.addPublicTool(EGAM3ElectronTPThinningTool2)
297 thinningTools.append(EGAM3ElectronTPThinningTool2)
300 if TrackThinningKeepPhotonTracks:
301 EGAM3PhotonTPThinningTool = (
302 CompFactory.DerivationFramework.EgammaTrackParticleThinning(
303 name=
"EGAM3PhotonTPThinningTool",
304 StreamName=streamName,
306 GSFTrackParticlesKey=
"GSFTrackParticles",
307 InDetTrackParticlesKey=
"InDetTrackParticles",
308 GSFConversionVerticesKey=
"GSFConversionVertices",
309 SelectionString=
"Photons.pt > 0*GeV",
314 acc.addPublicTool(EGAM3PhotonTPThinningTool)
315 thinningTools.append(EGAM3PhotonTPThinningTool)
319 if TrackThinningKeepAllPhotonTracks:
320 EGAM3PhotonTPThinningTool2 = (
321 CompFactory.DerivationFramework.EgammaTrackParticleThinning(
322 name=
"EGAM3PhotonTPThinningTool2",
323 StreamName=streamName,
325 GSFTrackParticlesKey=
"GSFTrackParticles",
326 InDetTrackParticlesKey=
"InDetTrackParticles",
327 GSFConversionVerticesKey=
"GSFConversionVertices",
328 SelectionString=
"Photons.pt > 9.5*GeV",
333 acc.addPublicTool(EGAM3PhotonTPThinningTool2)
334 thinningTools.append(EGAM3PhotonTPThinningTool2)
337 if TrackThinningKeepJetTracks:
338 EGAM3JetTPThinningTool = (
339 CompFactory.DerivationFramework.JetTrackParticleThinning(
340 name=
"EGAM3JetTPThinningTool",
341 StreamName=streamName,
342 JetKey=
"AntiKt4EMPFlowJets",
343 InDetTrackParticlesKey=
"InDetTrackParticles",
346 acc.addPublicTool(EGAM3JetTPThinningTool)
347 thinningTools.append(EGAM3JetTPThinningTool)
350 if TrackThinningKeepMuonTracks:
351 EGAM3MuonTPThinningTool = acc.getPrimaryAndMerge(
354 name=
"EGAM3MuonTPThinningTool",
355 StreamName=streamName,
357 InDetTrackParticlesKey=
"InDetTrackParticles",
360 thinningTools.append(EGAM3MuonTPThinningTool)
363 if TrackThinningKeepTauTracks:
364 EGAM3TauTPThinningTool = acc.getPrimaryAndMerge(
367 name=
"EGAM3TauTPThinningTool",
368 StreamName=streamName,
371 InDetTrackParticlesKey=
"InDetTrackParticles",
372 DoTauTracksThinning=
True,
373 TauTracksKey=
"TauTracks",
376 thinningTools.append(EGAM3TauTPThinningTool)
379 thinning_expression =
" && ".
join(
381 "(InDetTrackParticles.DFCommonTightPrimary)",
382 "(abs(DFCommonInDetTrackZ0AtPV)*sin(InDetTrackParticles.theta)<3*mm)",
383 "(InDetTrackParticles.pt>10*GeV)",
386 if TrackThinningKeepPVTracks:
387 EGAM3TPThinningTool = acc.getPrimaryAndMerge(
390 name=
"EGAM3TPThinningTool",
391 StreamName=streamName,
392 SelectionString=thinning_expression,
393 InDetTrackParticlesKey=
"InDetTrackParticles",
396 thinningTools.append(EGAM3TPThinningTool)
400 acc.addPublicTool(skimmingTool)
404 CompFactory.DerivationFramework.DerivationKernel(
406 SkimmingTools=[skimmingTool],
407 AugmentationTools=augmentationTools,
408 ThinningTools=thinningTools,
424 from DerivationFrameworkPhys.TriggerListsHelper
import TriggerListsHelper
426 EGAM3TriggerListsHelper = TriggerListsHelper(flags)
433 StreamName=
"StreamDAOD_EGAM3",
434 TriggerListsHelper=EGAM3TriggerListsHelper,
439 from OutputStreamAthenaPool.OutputStreamConfig
import OutputStreamCfg
440 from xAODMetaDataCnv.InfileMetaDataConfig
import SetupMetaDataForStreamCfg
441 from DerivationFrameworkCore.SlimmingHelper
import SlimmingHelper
444 "EGAM3SlimmingHelper",
445 NamesAndTypes=flags.Input.TypedCollections,
454 EGAM3SlimmingHelper.AllVariables = [
459 "ForwardElectronClusters",
464 if flags.Trigger.EDMVersion == 2:
466 elif flags.Trigger.EDMVersion == 3:
470 EGAM3SlimmingHelper.AllVariables += ExtraContainersTrigger[MenuType]
471 EGAM3SlimmingHelper.AllVariables += ExtraContainersPhotonTrigger[MenuType]
472 EGAM3SlimmingHelper.AllVariables += ExtraContainersElectronTrigger[MenuType]
473 if not flags.Input.isMC:
474 EGAM3SlimmingHelper.AllVariables += ExtraContainersTriggerDataOnly[MenuType]
478 EGAM3SlimmingHelper.AllVariables += [
482 "egammaTruthParticles",
483 "MuonTruthParticles",
494 EGAM3SlimmingHelper.SmartCollections = [
500 "InDetTrackParticles",
501 "AntiKt4EMPFlowJets",
502 "BTagging_AntiKt4EMPFlow",
503 "MET_Baseline_AntiKt4EMPFlow",
506 EGAM3SlimmingHelper.SmartCollections += [
508 "AntiKt4TruthDressedWZJets",
510 if flags.Derivation.Egamma.addHLTJets:
511 EGAM3SlimmingHelper.SmartCollections += [
512 "HLT_AntiKt4EMPFlowJets_subresjesgscIS_ftf",
518 EGAM3SlimmingHelper.ExtraVariables += [
"Electrons.Loose.Medium.Tight"]
521 EGAM3SlimmingHelper.ExtraVariables += [
522 "Muons.ptcone20.ptcone30.ptcone40.etcone20.etcone30.etcone40"
526 EGAM3SlimmingHelper.ExtraVariables += [
527 "GSFConversionVertices.x.y.z.px.py.pz.pt1.pt2.etaAtCalo.phiAtCalo",
528 "GSFConversionVertices.trackParticleLinks",
532 EGAM3SlimmingHelper.ExtraVariables += [
"PrimaryVertices.x.y.sumPt2"]
535 EGAM3SlimmingHelper.ExtraVariables += [
536 "TopoClusterIsoCentralEventShape.Density",
537 "TopoClusterIsoForwardEventShape.Density",
538 "NeutralParticleFlowIsoCentralEventShape.Density",
539 "NeutralParticleFlowIsoForwardEventShape.Density",
542 from DerivationFrameworkEGamma
import EGammaIsoConfig
549 ) = EGammaIsoConfig.makeEGammaCommonIsoCfg(flags)
551 EGAM3SlimmingHelper.AppendToDictionary.update(densityDict)
552 EGAM3SlimmingHelper.ExtraVariables += densityList
555 from IsolationAlgs.DerivationTrackIsoConfig
import DerivationTrackIsoCfg
559 flags, object_types=(
"Photons",), ptCuts=(500, 1000), postfix=
"Extra"
564 EGAM3SlimmingHelper.ExtraVariables += ElectronsCPDetailedContent
565 EGAM3SlimmingHelper.ExtraVariables += GSFTracksCPDetailedContent
568 from DerivationFrameworkCalo.DerivationFrameworkCaloConfig
import (
570 getClusterEnergyPerLayerDecorations,
574 print(
"EGAM3 gain decorations: ", gainDecorations)
575 EGAM3SlimmingHelper.ExtraVariables.extend(gainDecorations)
577 print(
"EGAM3 cluster energy decorations: ", clusterEnergyDecorations)
578 EGAM3SlimmingHelper.ExtraVariables.extend(clusterEnergyDecorations)
581 EGAM3SlimmingHelper.ExtraVariables += ExtraVariablesHLTPhotons[MenuType]
585 EGAM3SlimmingHelper.ExtraVariables += [
586 "Electrons.truthOrigin.truthType.truthParticleLink"
590 if flags.Derivation.Egamma.doEventInfoSlimming:
591 EGAM3SlimmingHelper.SmartCollections.append(
"EventInfo")
593 EGAM3SlimmingHelper.AllVariables += [
"EventInfo"]
596 EGAM3SlimmingHelper.IncludeEGammaTriggerContent =
True
600 if flags.Trigger.EDMVersion == 2:
601 from DerivationFrameworkPhys.TriggerMatchingCommonConfig
import AddRun2TriggerMatchingToSlimmingHelper
603 OutputContainerPrefix =
"TrigMatch_",
604 TriggerList = EGAM3TriggerListsHelper.Run2TriggerNamesNoTau)
606 if flags.Trigger.EDMVersion == 3
or (flags.Trigger.EDMVersion == 2
and flags.Trigger.doEDMVersionConversion):
607 from TrigNavSlimmingMT.TrigNavSlimmingMTConfig
import AddRun3TrigNavSlimmingCollectionsToSlimmingHelper
611 EGAM3SlimmingHelper.StaticContent = [
612 "CaloCellContainer#AllCalo",
613 "CaloClusterCellLinkContainer#egammaClusters_links",
616 EGAM3ItemList = EGAM3SlimmingHelper.GetItemList()
621 ItemList=EGAM3ItemList,
622 AcceptAlgs=[
"EGAM3Kernel"],
629 AcceptAlgs=[
"EGAM3Kernel"],
631 MetadataCategory.CutFlowMetaData,
632 MetadataCategory.TruthMetaData,