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