ATLAS Offline Software
Loading...
Searching...
No Matches
HION4.py
Go to the documentation of this file.
1# Copyright (C) 2002-2026 CERN for the benefit of the ATLAS collaboration
2# HION4.py
3
4from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator
5from AthenaConfiguration.ComponentFactory import CompFactory
6from AthenaConfiguration.Enums import MetadataCategory
7from AthenaCommon.CFElements import seqAND
8
9
12 """Configure the example skimming tool"""
13 acc = ComponentAccumulator()
14
15 ExtraData = []
16 ExtraData += ['xAOD::MuonContainer/Muons']
17 ExtraData += ['xAOD::ElectronContainer/Electrons']
18 ExtraData += ['xAOD::PhotonContainer/Photons']
19 ExtraData += ['xAOD::TrackParticleContainer/InDetTrackParticles']
20
21 acc.addSequence( seqAND("HION4Sequence") )
22 acc.getSequence("HION4Sequence").ExtraDataForDynamicConsumers = ExtraData
23 acc.getSequence("HION4Sequence").ProcessDynamicDataDependencies = True
24
25 muonsRequirements = '(Muons.pt >= 2.0*GeV) && (abs(Muons.eta) < 2.6)'
26 muonOnlySelection = 'count('+muonsRequirements+') >= 1'
27
28 electronsRequirements = '(Electrons.pt > 1.5*GeV) && (abs(Electrons.eta) < 2.6)'
29 electronOnlySelection = 'count('+electronsRequirements+') >= 1'
30
31 photonsRequirements = '(Photons.pt >= 1.5*GeV)'
32 photonOnlySelection = 'count('+photonsRequirements+') >=2'
33
34 electronPhotonSelection = '(count('+electronsRequirements+') + count('+photonsRequirements+')) >= 2'
35
36 trackRequirements = '(InDetTrackParticles.pt >= 0.2*GeV) && (abs(InDetTrackParticles.eta) < 2.5)'
37 trackOnlySelection = '( count('+trackRequirements+') >= 2 && 5 >= count('+trackRequirements+') )'
38
39 objectSelection = '('+muonOnlySelection+' || '+electronOnlySelection+' || '+photonOnlySelection+' || '+electronPhotonSelection+' || '+trackOnlySelection+')'
40
41 from DerivationFrameworkTools.DerivationFrameworkToolsConfig import (
42 xAODStringSkimmingToolCfg)
43 HION4ObjSkimmingTool = acc.addPublicTool(acc.getPrimaryAndMerge(
44 xAODStringSkimmingToolCfg(flags, name = "HION4ObjSkimmingTool",
45 expression = objectSelection)))
46
47 tightTrackRequirements = '(InDetTrackParticles.pt >= 1*GeV) && (abs(InDetTrackParticles.eta) < 2.5)'
48 tightTrackOnlySelection = '( count('+tightTrackRequirements+') == 2 )'
49 HION4OTightTrackSkimmingTool = acc.addPublicTool(acc.getPrimaryAndMerge(
50 xAODStringSkimmingToolCfg(flags, name = "HION4OTightTrackSkimmingTool",
51 expression = tightTrackOnlySelection)))
52 filterList = [HION4ObjSkimmingTool, HION4OTightTrackSkimmingTool]
53
54 if flags.Trigger.EDMVersion != -1: # Only for files with trigger payload
55 from DerivationFrameworkHI import ListTriggers
56 triggers = ListTriggers.HION4SkimmingTriggersALL()
57 HION4TriggerSkimmingTool = CompFactory.DerivationFramework.TriggerSkimmingTool(
58 name = "HION4TriggerSkimmingTool", TriggerListOR = triggers)
59 acc.addPublicTool(HION4TriggerSkimmingTool)
60 HION4ObjTriggerSkimmingTool = (
61 CompFactory.DerivationFramework.FilterCombinationAND(
62 name="HION4ObjTriggerSkimmingTool",
63 FilterList=[HION4TriggerSkimmingTool, HION4ObjSkimmingTool]))
64 acc.addPublicTool(HION4ObjTriggerSkimmingTool)
65
66 VMtrigger = ListTriggers.HION4SkimmingTriggersVM()
67 HION4VMTriggerSkimmingTool = CompFactory.DerivationFramework.TriggerSkimmingTool(
68 name = "HION4VMTriggerSkimmingTool", TriggerListOR = VMtrigger)
69 acc.addPublicTool(HION4VMTriggerSkimmingTool)
70 HION4OTightTrackTriggerSkimmingTool = (
71 CompFactory.DerivationFramework.FilterCombinationAND(
72 name="HION4OTightTrackTriggerSkimmingTool",
73 FilterList=[HION4VMTriggerSkimmingTool, HION4OTightTrackSkimmingTool]))
74 acc.addPublicTool(HION4ObjTriggerSkimmingTool)
75
76 filterList = [HION4ObjTriggerSkimmingTool, HION4OTightTrackTriggerSkimmingTool]
77
78 HION4SkimmingTool = CompFactory.DerivationFramework.FilterCombinationOR(
79 name="HION4SkimmingTool", FilterList=filterList)
80 acc.addPublicTool(HION4SkimmingTool, primary = True)
81 return acc
82
83
85 """Configure the example augmentation tool"""
86 acc = ComponentAccumulator()
87 acc.addPublicTool(CompFactory.DerivationFramework.AugmentationDeltaPoverP(name = "HION4AugmentationTool"),
88 primary = True)
89 return(acc)
90
91
92def HION4KernelCfg(flags, name='HION4Kernel', **kwargs):
93 """Configure the derivation framework driving algorithm (kernel)"""
94 acc = ComponentAccumulator()
95
96 skimmingTool = acc.getPrimaryAndMerge(HION4SkimmingToolCfg(flags))
97 acc.addEventAlgo(CompFactory.DerivationFramework.DerivationKernel(name, SkimmingTools = [skimmingTool]),
98 sequenceName="HION4Sequence")
99 return acc
100
101
102def HION4Cfg(flags):
103
104 acc = ComponentAccumulator()
105 acc.merge(HION4KernelCfg(flags, name="HION4Kernel",StreamName = "StreamDAOD_HION4"))
106
107 from OutputStreamAthenaPool.OutputStreamConfig import OutputStreamCfg
108 from xAODMetaDataCnv.InfileMetaDataConfig import SetupMetaDataForStreamCfg
109 from DerivationFrameworkCore.SlimmingHelper import SlimmingHelper
110
111
113 from DerivationFrameworkHI import ListSlimming
114
115 HION4SlimmingHelper = SlimmingHelper("HION4SlimmingHelper", NamesAndTypes = flags.Input.TypedCollections, flags = flags)
116
117 AllVariables = []
118 AllVariables += ListSlimming.HION4ExtraContainersElectrons()
119 AllVariables += ListSlimming.HION4ExtraContainersTrigger()
120 AllVariables += ListSlimming.HION4AllVariablesGeneral()
121
122 HION4SlimmingHelper.SmartCollections = ListSlimming.HION4SmartCollections()
123 HION4SlimmingHelper.ExtraVariables = ListSlimming.HION4ExtraContentAll()
124 HION4SlimmingHelper.AllVariables = AllVariables
125
126 # Add egamma trigger objects
127 HION4SlimmingHelper.IncludeEGammaTriggerContent = True
128 # Add muon trigger objects
129 HION4SlimmingHelper.IncludeMuonTriggerContent = True
130
131 HION4ItemList = HION4SlimmingHelper.GetItemList()
132
133 acc.merge(OutputStreamCfg(flags, "DAOD_HION4", ItemList=HION4ItemList, AcceptAlgs=["HION4Kernel"]))
134 acc.merge(SetupMetaDataForStreamCfg(flags, "DAOD_HION4", AcceptAlgs=["HION4Kernel"], createMetadata=[MetadataCategory.CutFlowMetaData]))
135
136 return acc
HION4KernelCfg(flags, name='HION4Kernel', **kwargs)
Definition HION4.py:92
HION4SkimmingToolCfg(flags)
Skiming.
Definition HION4.py:11
HION4AugmentationToolCfg(flags)
Definition HION4.py:84
HION4Cfg(flags)
Definition HION4.py:102