ATLAS Offline Software
Loading...
Searching...
No Matches
InDetPriVxFinderConfig.py
Go to the documentation of this file.
1# Copyright (C) 2002-2026 CERN for the benefit of the ATLAS collaboration
2# Configuration of InDetPriVxFinder package
3from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator
4from AthenaConfiguration.ComponentFactory import CompFactory
5from TrkConfig.TrkConfigFlags import PerigeeExpression
6
7
9 name: str = "InDetPriVxFinder",
10 **kwargs) -> ComponentAccumulator:
11 acc = ComponentAccumulator()
12
13 if "VertexCollectionSortingTool" not in kwargs:
14 from TrkConfig.TrkVertexToolsConfig import (
15 VertexCollectionSortingToolCfg)
16 kwargs.setdefault("VertexCollectionSortingTool", acc.popToolsAndMerge(
17 VertexCollectionSortingToolCfg(flags)))
18
19 if "VertexFinderTool" not in kwargs:
20 from InDetConfig.InDetPriVxFinderToolConfig import (
21 VertexFinderToolCfg)
22 kwargs.setdefault("VertexFinderTool", acc.popToolsAndMerge(
23 VertexFinderToolCfg(flags)))
24
25 kwargs.setdefault("doVertexSorting", True)
26
27 if flags.Tracking.perigeeExpression is PerigeeExpression.Vertex:
28 associationMapName = "PRDtoTrackMapMerge_CombinedInDetTracks"
29 if flags.Detector.GeometryITk:
30 associationMapName = "PRDtoTrackMapMerge_CombinedITkTracks"
31
32 from xAODTrackingCnv.xAODTrackingCnvConfig import (
33 BeamLineTrackParticleCnvAlgCfg)
34 from InDetConfig.TrackRecoConfig import (
35 ClusterSplitProbabilityContainerName)
36 acc.merge(BeamLineTrackParticleCnvAlgCfg(
37 flags,
38 ClusterSplitProbabilityName = \
39 ClusterSplitProbabilityContainerName(flags),
40 AssociationMapName = associationMapName,
41 xAODTrackParticlesFromTracksContainerName = \
42 "InDetBeamLineTrackParticles"))
43 kwargs["TracksName"]="InDetBeamLineTrackParticles"
44
45 acc.addEventAlgo(CompFactory.InDet.InDetPriVxFinder(name, **kwargs))
46 return acc
47
49 inputTracks: str,
50 outputVtx: str,
51 name: str = "InDetTrigPriVxFinder",
52 **kwargs) -> ComponentAccumulator:
53
54 acc = ComponentAccumulator()
55
56 kwargs["TracksName"] = inputTracks
57 kwargs["VxCandidatesOutputName"] = outputVtx
58
59 if "VertexFinderTool" not in kwargs:
60 from InDetConfig.InDetPriVxFinderToolConfig import (
61 TrigVertexFinderToolCfg)
62 kwargs.setdefault("VertexFinderTool", acc.popToolsAndMerge(
63 TrigVertexFinderToolCfg(flags)))
64
65 if "VertexCollectionSortingTool" not in kwargs:
66 from TrkConfig.TrkVertexToolsConfig import (
67 SumPt2VertexCollectionSortingToolCfg)
68 kwargs.setdefault("VertexCollectionSortingTool", acc.popToolsAndMerge(
69 SumPt2VertexCollectionSortingToolCfg(flags)))
70
71 if "PriVxMonTool" not in kwargs:
72 from InDetPriVxFinder.InDetPriVxFinderMonitoring import (
73 InDetPriVxFinderMonitoringTool)
74 kwargs.setdefault("PriVxMonTool", InDetPriVxFinderMonitoringTool(flags))
75
76 kwargs.setdefault("doVertexSorting", True)
77
78 acc.addEventAlgo(CompFactory.InDet.InDetPriVxFinder(name+flags.Tracking.ActiveConfig.input_name,
79 **kwargs))
80 return acc
81
82
84 name: str = "InDetPriVxFinder",
85 vxCandidatesOutputName=None,
86 **kwargs) -> ComponentAccumulator:
87 if not vxCandidatesOutputName:
88 vxCandidatesOutputName = "PrimaryVertices"
89 from AthenaConfiguration.Enums import ProductionStep
90 if flags.Common.ProductionStep in [ProductionStep.MinbiasPreprocessing]:
91 vxCandidatesOutputName = f"{flags.Overlay.BkgPrefix}{vxCandidatesOutputName}"
92
93 acc = InDetPriVxFinderCfg(flags,
94 name,
95 VxCandidatesOutputName=vxCandidatesOutputName,
96 **kwargs)
97
98 if flags.Tracking.perigeeExpression is PerigeeExpression.Vertex:
99 associationMapName = "PRDtoTrackMapMerge_CombinedInDetTracks"
100 if flags.Detector.GeometryITk:
101 associationMapName = "PRDtoTrackMapMerge_CombinedITkTracks"
102
103 from xAODTrackingCnv.xAODTrackingCnvConfig import TrackParticleCnvAlgCfg
104 from InDetConfig.TrackRecoConfig import (
105 ClusterSplitProbabilityContainerName)
106 acc.merge(TrackParticleCnvAlgCfg(
107 flags,
108 ClusterSplitProbabilityName=ClusterSplitProbabilityContainerName(
109 flags),
110 AssociationMapName=associationMapName))
111
112 from OutputStreamAthenaPool.OutputStreamConfig import addToESD, addToAOD
113
114 excludedVtxAuxData = "-vxTrackAtVertex.-MvfFitInfo.-isInitialized.-VTAV.-TruthEventMatchingInfos.-TruthEventRawMatchingInfos.-VertexMatchType"
115 verticesContainer = [
116 f"xAOD::VertexContainer#{vxCandidatesOutputName}",
117 f"xAOD::VertexAuxContainer#{vxCandidatesOutputName}Aux." + excludedVtxAuxData,
118 ]
119
120 acc.merge(addToAOD(flags, verticesContainer))
121 acc.merge(addToESD(flags, verticesContainer))
122
123 return acc
124
125if __name__ == "__main__":
126 from AthenaCommon.Logging import logging
127 from AthenaConfiguration.AllConfigFlags import initConfigFlags
128 flags = initConfigFlags()
129
130 from AthenaConfiguration.TestDefaults import defaultTestFiles
131 from AthenaConfiguration.ComponentAccumulator import printProperties
132 from AthenaConfiguration.MainServicesConfig import MainServicesCfg
133 from TrkConfig.VertexFindingFlags import VertexSetup
134
135 flags.Input.Files = defaultTestFiles.RDO_RUN2
136 import sys
137 if 'ActsGaussAdaptiveMultiFinding' in sys.argv:
138 flags.Tracking.PriVertex.setup = VertexSetup.ActsGaussAMVF
139 elif "IterativeFinding" in sys.argv:
140 flags.Tracking.PriVertex.setup = VertexSetup.IVF
141 elif "FastIterativeFinding" in sys.argv:
142 flags.Tracking.PriVertex.setup = VertexSetup.FastIVF
143 elif "GridFinding" in sys.argv:
144 flags.Tracking.PriVertex.setup = VertexSetup.ActsGridDensity
145 flags.lock()
146
147 acc = MainServicesCfg(flags)
148 acc.merge(primaryVertexFindingCfg(flags))
149
150 mlog = logging.getLogger("primaryVertexFindingConfigTest")
151 mlog.info("Configuring primaryVertexFinding: ")
152
153 printProperties(
154 mlog,
155 acc.getEventAlgo("InDetPriVxFinder"),
156 nestLevel=2,
157 printDefaults=True,
158 )
159
160 acc.wasMerged()
161
ComponentAccumulator InDetPriVxFinderCfg(flags, str name="InDetPriVxFinder", **kwargs)
ComponentAccumulator InDetTrigPriVxFinderCfg(flags, str inputTracks, str outputVtx, str name="InDetTrigPriVxFinder", **kwargs)
ComponentAccumulator primaryVertexFindingCfg(flags, str name="InDetPriVxFinder", vxCandidatesOutputName=None, **kwargs)