3from AthenaConfiguration.ComponentAccumulator
import ComponentAccumulator
4from AthenaConfiguration.ComponentFactory
import CompFactory
8 name: str =
"InDetPriVxFinder",
9 **kwargs) -> ComponentAccumulator:
10 acc = ComponentAccumulator()
12 if "VertexCollectionSortingTool" not in kwargs:
13 from TrkConfig.TrkVertexToolsConfig
import (
14 VertexCollectionSortingToolCfg)
15 kwargs.setdefault(
"VertexCollectionSortingTool", acc.popToolsAndMerge(
16 VertexCollectionSortingToolCfg(flags)))
18 if "VertexFinderTool" not in kwargs:
19 from InDetConfig.InDetPriVxFinderToolConfig
import (
21 kwargs.setdefault(
"VertexFinderTool", acc.popToolsAndMerge(
22 VertexFinderToolCfg(flags)))
24 kwargs.setdefault(
"doVertexSorting",
True)
26 if flags.Tracking.perigeeExpression ==
"Vertex":
27 associationMapName =
"PRDtoTrackMapMerge_CombinedInDetTracks"
28 if flags.Detector.GeometryITk:
29 associationMapName =
"PRDtoTrackMapMerge_CombinedITkTracks"
31 from xAODTrackingCnv.xAODTrackingCnvConfig
import (
32 BeamLineTrackParticleCnvAlgCfg)
33 from InDetConfig.TrackRecoConfig
import (
34 ClusterSplitProbabilityContainerName)
35 acc.merge(BeamLineTrackParticleCnvAlgCfg(
37 ClusterSplitProbabilityName = \
38 ClusterSplitProbabilityContainerName(flags),
39 AssociationMapName = associationMapName,
40 xAODTrackParticlesFromTracksContainerName = \
41 "InDetTrackParticlesTemporary"))
42 kwargs[
"TracksName"]=
"InDetTrackParticlesTemporary"
44 acc.addEventAlgo(CompFactory.InDet.InDetPriVxFinder(name, **kwargs))
50 name: str =
"InDetTrigPriVxFinder",
51 **kwargs) -> ComponentAccumulator:
53 acc = ComponentAccumulator()
55 kwargs[
"TracksName"] = inputTracks
56 kwargs[
"VxCandidatesOutputName"] = outputVtx
58 if "VertexFinderTool" not in kwargs:
59 from InDetConfig.InDetPriVxFinderToolConfig
import (
60 TrigVertexFinderToolCfg)
61 kwargs.setdefault(
"VertexFinderTool", acc.popToolsAndMerge(
62 TrigVertexFinderToolCfg(flags)))
64 if "VertexCollectionSortingTool" not in kwargs:
65 from TrkConfig.TrkVertexToolsConfig
import (
66 SumPt2VertexCollectionSortingToolCfg)
67 kwargs.setdefault(
"VertexCollectionSortingTool", acc.popToolsAndMerge(
68 SumPt2VertexCollectionSortingToolCfg(flags)))
70 if "PriVxMonTool" not in kwargs:
71 from InDetPriVxFinder.InDetPriVxFinderMonitoring
import (
72 InDetPriVxFinderMonitoringTool)
73 kwargs.setdefault(
"PriVxMonTool", InDetPriVxFinderMonitoringTool(flags))
75 kwargs.setdefault(
"doVertexSorting",
True)
77 acc.addEventAlgo(CompFactory.InDet.InDetPriVxFinder(name+flags.Tracking.ActiveConfig.input_name,
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}"
94 VxCandidatesOutputName=vxCandidatesOutputName,
97 if flags.Tracking.perigeeExpression ==
"Vertex":
98 associationMapName =
"PRDtoTrackMapMerge_CombinedInDetTracks"
99 if flags.Detector.GeometryITk:
100 associationMapName =
"PRDtoTrackMapMerge_CombinedITkTracks"
102 from xAODTrackingCnv.xAODTrackingCnvConfig
import TrackParticleCnvAlgCfg
103 from InDetConfig.TrackRecoConfig
import (
104 ClusterSplitProbabilityContainerName)
105 acc.merge(TrackParticleCnvAlgCfg(
107 ClusterSplitProbabilityName=ClusterSplitProbabilityContainerName(
109 AssociationMapName=associationMapName))
111 from OutputStreamAthenaPool.OutputStreamConfig
import addToESD, addToAOD
113 excludedVtxAuxData =
"-vxTrackAtVertex.-MvfFitInfo.-isInitialized.-VTAV.-TruthEventMatchingInfos.-TruthEventRawMatchingInfos.-VertexMatchType"
114 verticesContainer = [
115 f
"xAOD::VertexContainer#{vxCandidatesOutputName}",
116 f
"xAOD::VertexAuxContainer#{vxCandidatesOutputName}Aux." + excludedVtxAuxData,
119 acc.merge(addToAOD(flags, verticesContainer))
120 acc.merge(addToESD(flags, verticesContainer))
124if __name__ ==
"__main__":
125 from AthenaCommon.Logging
import logging
126 from AthenaConfiguration.AllConfigFlags
import initConfigFlags
127 flags = initConfigFlags()
129 from AthenaConfiguration.TestDefaults
import defaultTestFiles
130 from AthenaConfiguration.ComponentAccumulator
import printProperties
131 from AthenaConfiguration.MainServicesConfig
import MainServicesCfg
132 from TrkConfig.VertexFindingFlags
import VertexSetup
134 flags.Input.Files = defaultTestFiles.RDO_RUN2
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
146 acc = MainServicesCfg(flags)
149 mlog = logging.getLogger(
"primaryVertexFindingConfigTest")
150 mlog.info(
"Configuring primaryVertexFinding: ")
154 acc.getEventAlgo(
"InDetPriVxFinder"),
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)