9 from AthenaConfiguration.ComponentAccumulator
import ComponentAccumulator
10 from AthenaConfiguration.ComponentFactory
import CompFactory
11 from AthenaConfiguration.Enums
import MetadataCategory
15 from DerivationFrameworkEGamma.PhotonsCPDetailedContent
import (
16 PhotonsCPDetailedContent,
19 from DerivationFrameworkEGamma.TriggerContent
import (
20 ExtraContainersTrigger,
21 ExtraContainersElectronTrigger,
26 """Configure the EGAM1 skimming tool"""
29 expression =
" || ".
join(
31 "(count( EGAM1_DiElectronMass1 > 50.0*GeV ) >= 1)",
32 "(count( EGAM1_DiElectronMass2 > 50.0*GeV ) >= 1)",
33 "(count( EGAM1_DiElectronMass3 > 50.0*GeV ) >= 1)",
34 "(count( EGAM1_ElectronPhotonMass > 50.0*GeV )>=1)",
37 print(
"EGAM1 skimming expression: ", expression)
40 CompFactory.DerivationFramework.xAODStringSkimmingTool(
41 name=
"EGAM1SkimmingTool", expression=expression
49 """Configure the EGAM1 ee invariant mass augmentation tool 1"""
62 requirement_tag =
" && ".
join(
63 [
"(Electrons.DFCommonElectronsLHTight)",
"(Electrons.pt > 24.5*GeV)"]
66 requirement_probe =
" && ".
join(
67 [
"(Electrons.DFCommonElectronsLHMedium)",
"(Electrons.pt > 19.5*GeV)"]
71 CompFactory.DerivationFramework.EGInvariantMassTool(
72 name=
"EGAM1_ZEEMassTool1",
73 Object1Requirements=requirement_tag,
74 Object2Requirements=requirement_probe,
75 StoreGateEntryName=
"EGAM1_DiElectronMass1",
76 Mass1Hypothesis=0.511 * MeV,
77 Mass2Hypothesis=0.511 * MeV,
78 Container1Name=
"Electrons",
79 Container2Name=
"Electrons",
81 DoTransverseMass=
False,
90 """Configure the EGAM1 ee invariant mass augmentation tool 2"""
102 requirement =
" && ".
join(
103 [
"(Electrons.DFCommonElectronsLHMedium)",
"(Electrons.pt > 19.5*GeV)"]
107 CompFactory.DerivationFramework.EGInvariantMassTool(
108 name=
"EGAM1_ZEEMassTool2",
109 Object1Requirements=requirement,
110 Object2Requirements=requirement,
111 StoreGateEntryName=
"EGAM1_DiElectronMass2",
112 Mass1Hypothesis=0.511 * MeV,
113 Mass2Hypothesis=0.511 * MeV,
114 Container1Name=
"Electrons",
115 Container2Name=
"Electrons",
117 DoTransverseMass=
False,
126 """Configure the EGAM1 ee invariant mass augmentation tool 3"""
140 requirement_tag =
" && ".
join(
141 [
"(Electrons.DFCommonElectronsLHMedium)",
"(Electrons.pt > 24.5*GeV)"]
144 requirement_probe =
"Electrons.pt > 4*GeV"
147 CompFactory.DerivationFramework.EGInvariantMassTool(
148 name=
"EGAM1_ZEEMassTool3",
149 Object1Requirements=requirement_tag,
150 Object2Requirements=requirement_probe,
151 StoreGateEntryName=
"EGAM1_DiElectronMass3",
152 Mass1Hypothesis=0.511 * MeV,
153 Mass2Hypothesis=0.511 * MeV,
154 Container1Name=
"Electrons",
155 Container2Name=
"Electrons",
157 DoTransverseMass=
False,
166 """Configure the EGAM1 e+photon mass augmentation tool"""
181 requirement_tag =
" && ".
join(
182 [
"(Electrons.DFCommonElectronsLHMedium)",
"(Electrons.pt > 24.5*GeV)"]
185 requirement_probe =
"DFCommonPhotons_et > 14.5*GeV"
188 CompFactory.DerivationFramework.EGInvariantMassTool(
189 name=
"EGAM1_ZEGMassTool",
190 Object1Requirements=requirement_tag,
191 Object2Requirements=requirement_probe,
192 StoreGateEntryName=
"EGAM1_ElectronPhotonMass",
193 Mass1Hypothesis=0.511 * MeV,
194 Mass2Hypothesis=0.511 * MeV,
195 Container1Name=
"Electrons",
196 Container2Name=
"Photons",
197 Pt2BranchName=
"DFCommonPhotons_et",
198 Eta2BranchName=
"DFCommonPhotons_eta",
199 Phi2BranchName=
"DFCommonPhotons_phi",
201 DoTransverseMass=
False,
210 """Configure the derivation framework driving algorithm (kernel)
215 from JetRecConfig.StandardSmallRJets
import AntiKt4PV0Track
216 from JetRecConfig.JetRecConfig
import JetRecCfg
217 from JetRecConfig.JetConfigFlags
import jetInternalFlags
219 jetList = [AntiKt4PV0Track]
220 jetInternalFlags.isRecoJob =
True
225 from DerivationFrameworkPhys.PhysCommonConfig
import PhysCommonAugmentationsCfg
229 flags, TriggerListsHelper=kwargs[
"TriggerListsHelper"]
234 augmentationTools = []
240 acc.addPublicTool(EGAM1ZeeMassTool1)
241 augmentationTools.append(EGAM1ZeeMassTool1)
244 acc.addPublicTool(EGAM1ZeeMassTool2)
245 augmentationTools.append(EGAM1ZeeMassTool2)
248 acc.addPublicTool(EGAM1ZeeMassTool3)
249 augmentationTools.append(EGAM1ZeeMassTool3)
252 acc.addPublicTool(EGAM1ZegMassTool)
253 augmentationTools.append(EGAM1ZegMassTool)
258 from DerivationFrameworkCalo.DerivationFrameworkCaloConfig
import (
259 CaloDecoratorKernelCfg)
264 streamName = kwargs[
"StreamName"]
267 if flags.Derivation.Egamma.doTrackThinning:
268 from DerivationFrameworkInDet.InDetToolsConfig
import (
269 TrackParticleThinningCfg,
270 MuonTrackParticleThinningCfg,
271 TauTrackParticleThinningCfg,
274 TrackThinningKeepElectronTracks =
True
275 TrackThinningKeepPhotonTracks =
True
276 TrackThinningKeepAllElectronTracks =
True
277 TrackThinningKeepJetTracks =
False
278 TrackThinningKeepMuonTracks =
False
279 TrackThinningKeepTauTracks =
False
280 TrackThinningKeepPVTracks =
True
283 if TrackThinningKeepElectronTracks:
284 EGAM1ElectronTPThinningTool = (
285 CompFactory.DerivationFramework.EgammaTrackParticleThinning(
286 name=
"EGAM1ElectronTPThinningTool",
287 StreamName=streamName,
289 GSFTrackParticlesKey=
"GSFTrackParticles",
290 InDetTrackParticlesKey=
"InDetTrackParticles",
291 SelectionString=
"Electrons.pt > 0*GeV",
296 acc.addPublicTool(EGAM1ElectronTPThinningTool)
297 thinningTools.append(EGAM1ElectronTPThinningTool)
301 if TrackThinningKeepAllElectronTracks:
302 EGAM1ElectronTPThinningTool2 = (
303 CompFactory.DerivationFramework.EgammaTrackParticleThinning(
304 name=
"EGAM1ElectronTPThinningTool2",
305 StreamName=streamName,
307 GSFTrackParticlesKey=
"GSFTrackParticles",
308 InDetTrackParticlesKey=
"InDetTrackParticles",
309 SelectionString=
"Electrons.pt > 4*GeV",
314 acc.addPublicTool(EGAM1ElectronTPThinningTool2)
315 thinningTools.append(EGAM1ElectronTPThinningTool2)
318 if TrackThinningKeepPhotonTracks:
319 EGAM1PhotonTPThinningTool = (
320 CompFactory.DerivationFramework.EgammaTrackParticleThinning(
321 name=
"EGAM1PhotonTPThinningTool",
322 StreamName=streamName,
324 GSFTrackParticlesKey=
"GSFTrackParticles",
325 InDetTrackParticlesKey=
"InDetTrackParticles",
326 GSFConversionVerticesKey=
"GSFConversionVertices",
327 SelectionString=
"Photons.pt > 0*GeV",
332 acc.addPublicTool(EGAM1PhotonTPThinningTool)
333 thinningTools.append(EGAM1PhotonTPThinningTool)
336 if TrackThinningKeepJetTracks:
337 EGAM1JetTPThinningTool = (
338 CompFactory.DerivationFramework.JetTrackParticleThinning(
339 name=
"EGAM1JetTPThinningTool",
340 StreamName=streamName,
341 JetKey=
"AntiKt4EMPFlowJets",
342 InDetTrackParticlesKey=
"InDetTrackParticles",
345 acc.addPublicTool(EGAM1JetTPThinningTool)
346 thinningTools.append(EGAM1JetTPThinningTool)
349 if TrackThinningKeepMuonTracks:
350 EGAM1MuonTPThinningTool = acc.getPrimaryAndMerge(
353 name=
"EGAM1MuonTPThinningTool",
354 StreamName=streamName,
356 InDetTrackParticlesKey=
"InDetTrackParticles",
359 thinningTools.append(EGAM1MuonTPThinningTool)
362 if TrackThinningKeepTauTracks:
363 EGAM1TauTPThinningTool = acc.getPrimaryAndMerge(
366 name=
"EGAM1TauTPThinningTool",
367 StreamName=streamName,
370 InDetTrackParticlesKey=
"InDetTrackParticles",
371 DoTauTracksThinning=
True,
372 TauTracksKey=
"TauTracks",
375 thinningTools.append(EGAM1TauTPThinningTool)
378 thinning_expression =
" && ".
join(
380 "(InDetTrackParticles.DFCommonTightPrimary)",
381 "(abs(DFCommonInDetTrackZ0AtPV)*sin(InDetTrackParticles.theta)<3*mm)",
382 "(InDetTrackParticles.pt>10*GeV)",
385 if TrackThinningKeepPVTracks:
386 EGAM1TPThinningTool = acc.getPrimaryAndMerge(
389 name=
"EGAM1TPThinningTool",
390 StreamName=streamName,
391 SelectionString=thinning_expression,
392 InDetTrackParticlesKey=
"InDetTrackParticles",
395 thinningTools.append(EGAM1TPThinningTool)
398 from DerivationFrameworkCalo.DerivationFrameworkCaloConfig
import (
399 CaloClusterThinningCfg,
402 EGAM1CCTCThinningTool = acc.getPrimaryAndMerge(
405 name=
"EGAM1CCTCThinningTool",
406 StreamName=streamName,
408 SelectionString=
"Electrons.pt>4*GeV",
409 TopoClCollectionSGKey=
"CaloCalTopoClusters",
413 thinningTools.append(EGAM1CCTCThinningTool)
418 truth_cond_WZH =
" && ".
join(
419 [
"(abs(TruthParticles.pdgId) >= 23)",
"(abs(TruthParticles.pdgId) <= 25)"]
422 truth_cond_lep =
" && ".
join(
423 [
"(abs(TruthParticles.pdgId) >= 11)",
"(abs(TruthParticles.pdgId) <= 16)"]
426 truth_cond_top =
"(abs(TruthParticles.pdgId) == 6)"
428 truth_cond_gam =
" && ".
join(
429 [
"(abs(TruthParticles.pdgId) == 22)",
"(TruthParticles.pt > 1*GeV)"]
432 truth_cond_finalState =
" && ".
join(
433 [
"(TruthParticles.status == 1)",
"(TruthParticles.barcode < 200000)"]
449 + truth_cond_finalState
452 print(
"EGAM1 truth thinning expression: ", truth_expression)
454 EGAM1TruthThinningTool = CompFactory.DerivationFramework.GenericTruthThinning(
455 name=
"EGAM1TruthThinningTool",
456 StreamName=streamName,
457 ParticleSelectionString=truth_expression,
458 PreserveDescendants=
False,
459 PreserveGeneratorDescendants=
True,
460 PreserveAncestors=
True,
462 acc.addPublicTool(EGAM1TruthThinningTool)
463 thinningTools.append(EGAM1TruthThinningTool)
467 acc.addPublicTool(skimmingTool)
471 CompFactory.DerivationFramework.DerivationKernel(
473 SkimmingTools=[skimmingTool],
474 AugmentationTools=augmentationTools,
475 ThinningTools=thinningTools,
492 from DerivationFrameworkPhys.TriggerListsHelper
import TriggerListsHelper
494 EGAM1TriggerListsHelper = TriggerListsHelper(flags)
501 StreamName=
"StreamDAOD_EGAM1",
502 TriggerListsHelper=EGAM1TriggerListsHelper,
507 from OutputStreamAthenaPool.OutputStreamConfig
import OutputStreamCfg
508 from xAODMetaDataCnv.InfileMetaDataConfig
import SetupMetaDataForStreamCfg
509 from DerivationFrameworkCore.SlimmingHelper
import SlimmingHelper
512 "EGAM1SlimmingHelper",
513 NamesAndTypes=flags.Input.TypedCollections,
522 EGAM1SlimmingHelper.AllVariables = [
526 "CaloCalTopoClusters",
531 if flags.Trigger.EDMVersion == 2:
533 elif flags.Trigger.EDMVersion == 3:
537 EGAM1SlimmingHelper.AllVariables += ExtraContainersTrigger[MenuType]
538 EGAM1SlimmingHelper.AllVariables += ExtraContainersElectronTrigger[MenuType]
542 EGAM1SlimmingHelper.AllVariables += [
546 "egammaTruthParticles",
557 EGAM1SlimmingHelper.SmartCollections = [
563 "InDetTrackParticles",
564 "AntiKt4EMPFlowJets",
565 "BTagging_AntiKt4EMPFlow",
566 "MET_Baseline_AntiKt4EMPFlow",
569 EGAM1SlimmingHelper.SmartCollections += [
571 "AntiKt4TruthDressedWZJets",
577 EGAM1SlimmingHelper.ExtraVariables += [
578 "Muons.ptcone20.ptcone30.ptcone40.etcone20.etcone30.etcone40"
582 EGAM1SlimmingHelper.ExtraVariables += [
583 "GSFConversionVertices.x.y.z.px.py.pz.pt1.pt2.etaAtCalo.phiAtCalo",
584 "GSFConversionVertices.trackParticleLinks",
588 EGAM1SlimmingHelper.ExtraVariables += [
"PrimaryVertices.sumPt2"]
591 EGAM1SlimmingHelper.ExtraVariables += [
592 "AntiKt4PV0TrackJets.pt.eta.phi.e.m.btaggingLink.constituentLinks"
596 EGAM1SlimmingHelper.ExtraVariables += [
597 "TopoClusterIsoCentralEventShape.Density",
598 "TopoClusterIsoForwardEventShape.Density",
599 "NeutralParticleFlowIsoCentralEventShape.Density",
600 "NeutralParticleFlowIsoForwardEventShape.Density",
603 from DerivationFrameworkEGamma
import EGammaIsoConfig
610 ) = EGammaIsoConfig.makeEGammaCommonIsoCfg(flags)
612 EGAM1SlimmingHelper.AppendToDictionary.update(densityDict)
613 EGAM1SlimmingHelper.ExtraVariables += densityList
616 EGAM1SlimmingHelper.ExtraVariables += PhotonsCPDetailedContent
619 from DerivationFrameworkCalo.DerivationFrameworkCaloConfig
import (
621 getClusterEnergyPerLayerDecorations,
625 print(
"EGAM1 gain decorations: ", gainDecorations)
626 EGAM1SlimmingHelper.ExtraVariables.extend(gainDecorations)
628 print(
"EGAM1 cluster energy decorations: ", clusterEnergyDecorations)
629 EGAM1SlimmingHelper.ExtraVariables.extend(clusterEnergyDecorations)
633 EGAM1SlimmingHelper.ExtraVariables += [
634 "MuonTruthParticles.e.px.py.pz.status.pdgId.truthOrigin.truthType"
637 EGAM1SlimmingHelper.ExtraVariables += [
638 "Photons.truthOrigin.truthType.truthParticleLink"
642 if flags.Derivation.Egamma.doEventInfoSlimming:
643 EGAM1SlimmingHelper.SmartCollections.append(
"EventInfo")
645 EGAM1SlimmingHelper.AllVariables += [
"EventInfo"]
648 EGAM1SlimmingHelper.IncludeEGammaTriggerContent =
True
652 if flags.Trigger.EDMVersion == 2:
653 from DerivationFrameworkPhys.TriggerMatchingCommonConfig
import (
654 AddRun2TriggerMatchingToSlimmingHelper,
658 SlimmingHelper=EGAM1SlimmingHelper,
659 OutputContainerPrefix=
"TrigMatch_",
660 TriggerList=EGAM1TriggerListsHelper.Run2TriggerNamesNoTau,
663 if flags.Trigger.EDMVersion == 3:
664 from TrigNavSlimmingMT.TrigNavSlimmingMTConfig
import (
665 AddRun3TrigNavSlimmingCollectionsToSlimmingHelper,
670 from DerivationFrameworkPhys.TriggerMatchingCommonConfig
import (
671 AddRun2TriggerMatchingToSlimmingHelper,
675 SlimmingHelper=EGAM1SlimmingHelper,
676 OutputContainerPrefix=
"TrigMatch_",
677 TriggerList=EGAM1TriggerListsHelper.Run3TriggerNamesNoTau,
681 EGAM1SlimmingHelper.StaticContent = [
682 "CaloCellContainer#AllCalo",
683 "CaloClusterCellLinkContainer#egammaClusters_links",
686 EGAM1ItemList = EGAM1SlimmingHelper.GetItemList()
691 ItemList=EGAM1ItemList,
692 AcceptAlgs=[
"EGAM1Kernel"],
699 AcceptAlgs=[
"EGAM1Kernel"],
701 MetadataCategory.CutFlowMetaData,
702 MetadataCategory.TruthMetaData,