5 from AthenaConfiguration.ComponentAccumulator
import ComponentAccumulator
6 from AthenaConfiguration.ComponentFactory
import CompFactory
8 from TrkConfig.VertexFindingFlags
import VertexSortingSetup
13 kwargs.setdefault(
"maxEta", 2.5)
14 cfg.setPrivateTools(CompFactory.CP.AsgPtEtaSelectionTool(name, **kwargs))
18 kwargs.setdefault(
"etaGapLow", 1.37)
19 kwargs.setdefault(
"etaGapHigh", 1.52)
24 kwargs.setdefault(
"selection",
"selectPtEta")
25 kwargs.setdefault(
"deepCopy",
False)
26 cfg.addEventAlgo(CompFactory.CP.AsgViewFromSelectionAlg(name, **kwargs))
33 if input
in [
"Electrons",
"Photons",
"AntiKt4EMTopoJets"]:
34 selectionTool = cfg.popToolsAndMerge(
36 elif input
in [
"Muons"]:
37 selectionTool = cfg.popToolsAndMerge(
40 cfg.addEventAlgo(CompFactory.CP.AsgSelectionAlg(
41 name =
"GNNHS_"+input+
"_SelectionAlg",
42 selectionTool = selectionTool,
43 selectionDecoration =
"selectPtEta,as_char",
52 kwargs.setdefault(
"InputLabel",
"selectPtEta")
53 kwargs.setdefault(
"OutputLabel",
"passesOR")
54 kwargs.setdefault(
"OutputPassValue",
True)
57 for prop
in [
"InputLabel",
"OutputLabel",
"OutputPassValue"]:
58 subtool_kwargs[prop] = kwargs[prop]
60 kwargs.setdefault(
"EleEleORT", CompFactory.ORUtils.EleEleOverlapTool(**subtool_kwargs))
61 kwargs.setdefault(
"EleMuORT", CompFactory.ORUtils.EleMuSharedTrkOverlapTool(**subtool_kwargs))
62 kwargs.setdefault(
"EleJetORT", CompFactory.ORUtils.EleJetOverlapTool(**subtool_kwargs))
65 CompFactory.ORUtils.MuJetOverlapTool(
67 "PrimaryVertices_initial"
68 if flags.Tracking.PriVertex.sortingSetup
is VertexSortingSetup.GNNSorting
69 else "PrimaryVertices"
74 kwargs.setdefault(
"PhoEleORT", CompFactory.ORUtils.DeltaROverlapTool(**subtool_kwargs))
75 kwargs.setdefault(
"PhoMuORT", CompFactory.ORUtils.DeltaROverlapTool(**subtool_kwargs))
76 kwargs.setdefault(
"PhoJetORT", CompFactory.ORUtils.DeltaROverlapTool(**subtool_kwargs))
78 cfg.setPrivateTools(CompFactory.ORUtils.OverlapRemovalTool(name, **kwargs))
82 overlapInputNames = None, overlapOutputNames = None, **kwargs):
85 kwargs.setdefault(
"OutputLabel",
"passesOR")
86 kwargs.setdefault(
"affectingSystematicsFilter",
".*")
88 for obj
in overlapInputNames:
89 kwargs.setdefault(obj, overlapInputNames[obj])
90 kwargs.setdefault(obj+
"Decoration", kwargs[
"OutputLabel"] +
",as_char")
94 cfg.addEventAlgo(CompFactory.CP.OverlapRemovalAlg(name, **kwargs))
96 for obj
in overlapInputNames:
97 cfg.addEventAlgo(CompFactory.CP.AsgViewFromSelectionAlg(
98 name =
"GNNHS_"+obj+
"_ORSelectionAlg",
99 input = overlapInputNames[obj],
100 output = overlapOutputNames[obj],
101 selection = [kwargs[
"OutputLabel"]+
",as_char"],
109 def GNNToolCfg(flags, name="HardScatterSelectionGNNTool", **kwargs):
111 acc.setPrivateTools(CompFactory.InDetGNNHardScatterSelection.GNNTool(name, **kwargs))
117 kwargs.setdefault(
"photonsIn",
"Photons")
119 if "gnnTool" not in kwargs:
120 kwargs.setdefault(
"gnnTool", cfg.popToolsAndMerge(
122 nnFile=
"InDetGNNHardScatterSelection/v0/HSGN2_export_090824.onnx")))
124 if "TrackVertexAssociationTool" not in kwargs:
125 from TrackVertexAssociationTool.TrackVertexAssociationToolConfig
import TTVAToolCfg
127 "TrackVertexAssociationTool",
128 cfg.popToolsAndMerge(
131 "TrackVertexAssociationTool_GNNHS",
133 "PrimaryVertices_initial"
134 if flags.Tracking.PriVertex.sortingSetup
is VertexSortingSetup.GNNSorting
135 else "PrimaryVertices"
143 CompFactory.InDetGNNHardScatterSelection.VertexDecoratorAlg(name, **kwargs))
151 sysSvc = CompFactory.CP.SystematicsSvc(
"SystematicsSvc")
152 selectionSvc = CompFactory.CP.SelectionNameSvc(
"SelectionNameSvc")
153 cfg.addService(sysSvc)
154 cfg.addService(selectionSvc)
158 "AntiKt4EMTopoCustomVtxGNNJets"
159 if flags.Tracking.PriVertex.sortingSetup
is VertexSortingSetup.GNNSorting
160 else "AntiKt4EMTopoJets"
162 "electrons":
"Electrons",
164 "photons":
"Photons",
167 from PhotonVertexSelection.PhotonVertexSelectionConfig
import (
168 DecoratePhotonPointingAlgCfg)
178 for obj
in inputCollections:
180 minPt = ptThresholds[obj]))
182 overlapOutputNames = {
183 "muons": f
'{inputCollections["muons"]}_OR',
184 "electrons": f
'{inputCollections["electrons"]}_OR',
185 "photons": f
'{inputCollections["photons"]}_OR',
186 "jets": f
'{inputCollections["jets"]}_OR',
190 overlapOutputNames = overlapOutputNames))
196 "PrimaryVertices_initial"
197 if flags.Tracking.PriVertex.sortingSetup
is VertexSortingSetup.GNNSorting
198 else "PrimaryVertices"
200 electronsIn=overlapOutputNames[
"electrons"],
201 muonsIn=overlapOutputNames[
"muons"],
202 photonsIn=overlapOutputNames[
"photons"],
203 jetsIn=overlapOutputNames[
"jets"],
210 if __name__ ==
"__main__":
211 from AthenaConfiguration.AllConfigFlags
import initConfigFlags
215 from AthenaConfiguration.TestDefaults
import defaultTestFiles
216 flags.Input.Files = defaultTestFiles.AOD_RUN3_MC
217 flags.Exec.MaxEvents = 100
220 from AthenaConfiguration.MainServicesConfig
import MainServicesCfg
223 from AthenaPoolCnvSvc.PoolReadConfig
import PoolReadCfg
226 from InDetPhysValMonitoring.addRecoJetsConfig
import (
227 AddRecoJetsIfNotExistingCfg)
229 flags,
"AntiKt4EMTopoJets"))
233 top_acc.foreach_component(
"AthEventSeq/*").OutputLevel = DEBUG
234 top_acc.printConfig(withDetails=
True, summariseProps=
True)
235 top_acc.store(
open(
"GNNSequenceConfig.pkl",
"wb"))
238 if "--norun" not in sys.argv: