6from AthenaCommon.Logging
import logging
7from AthenaConfiguration.ComponentAccumulator
import printProperties
8from AthenaConfiguration.MainServicesConfig
import MainServicesCfg
9from AthenaConfiguration.AllConfigFlags
import initConfigFlags
10from TrkConfig.VertexFindingFlags
import VertexSetup
13from OutputStreamAthenaPool.OutputStreamConfig
import OutputStreamCfg
15if __name__ ==
"__main__":
17 parser = argparse.ArgumentParser(
18 description=
"Primary vertex finding configuration for ITk"
24 choices=[
"Grid",
"Gaussian"],
25 help=
"Choose between Grid or Gaussian seeder."
31 help=
"Name of the output file"
37 help=
"Number of events to process. Default: -1 (all)."
39 args = parser.parse_args()
41 mlog = logging.getLogger(
"vertexingJO_ITK_init")
42 mlog.setLevel(logging.INFO)
44 flags = initConfigFlags()
46 flags.Exec.MaxEvents = args.maxEvents
47 flags.Input.Files = args.input
49 flags.Output.AODFileName = args.output
50 flags.Exec.OutputLevel = VERBOSE
52 if args.seeder ==
"Gaussian":
53 flags.Tracking.PriVertex.setup = VertexSetup.ActsGaussAMVF
54 mlog.info(
"Using Gaussian seeder for primary vertex finding.")
55 vxContainerName =
"PrimaryVertices_Gauss"
56 elif args.seeder ==
"Grid":
57 flags.Tracking.PriVertex.setup = VertexSetup.ActsGridDensity
58 mlog.info(
"Using Grid seeder for primary vertex finding.")
59 vxContainerName =
"PrimaryVertices_Grid"
61 mlog.info(
"Grid parameters:")
62 mlog.info(
" gridMainGridSize = %s", flags.Tracking.PriVertex.gridMainGridSize)
63 mlog.info(
" gridTrkGridSize = %s", flags.Tracking.PriVertex.gridTrkGridSize)
64 mlog.info(
" gridUseHighestSumZPosition = %s", flags.Tracking.PriVertex.gridUseHighestSumZPosition)
65 mlog.info(
" gridMaxD0Significance = %s", flags.Tracking.PriVertex.gridMaxD0Significance)
66 mlog.info(
" gridMaxZ0Significance = %s", flags.Tracking.PriVertex.gridMaxZ0Significance)
68 raise ValueError(f
"Invalid seeder '{args.seeder}'; choose 'Grid' or 'Gaussian'.")
73 cfg = MainServicesCfg(flags)
75 from AthenaPoolCnvSvc.PoolReadConfig
import PoolReadCfg
76 cfg.merge(PoolReadCfg(flags))
78 from xAODMetaDataCnv.InfileMetaDataConfig
import SetupMetaDataForStreamCfg
79 cfg.merge(SetupMetaDataForStreamCfg(flags,
"AOD"))
81 from InDetConfig.InDetPriVxFinderConfig
import primaryVertexFindingCfg
82 cfg.merge(primaryVertexFindingCfg(flags, vxCandidatesOutputName=vxContainerName))
84 mlog.info(
"Configuring primary vertex finding...")
85 mlog.setLevel(VERBOSE)
89 cfg.getEventAlgo(
"InDetPriVxFinder"),
93 cfg.printConfig(withDetails=
True, summariseProps=
True)
96 "xAOD::ElectronContainer#Electrons",
97 "xAOD::ElectronAuxContainer#*",
98 "xAOD::PhotonContainer#Photons",
99 "xAOD::PhotonAuxContainer#*",
100 "xAOD::MuonContainer#Muons",
101 "xAOD::MuonAuxContainer#*",
102 "xAOD::TauJetContainer#*",
103 "xAOD::TauJetAuxContainer#*",
104 "xAOD::TruthVertexContainer#*",
105 "xAOD::TruthVertexAuxContainer#*",
106 "xAOD::VertexContainer#*",
107 "xAOD::VertexAuxContainer#*",
108 "xAOD::TrackParticleContainer#*",
109 "xAOD::TrackParticleAuxContainer#*",
110 "xAOD::TruthParticleContainer#*",
111 "xAOD::TruthParticleAuxContainer#*",
112 "xAOD::TruthEventContainer#*",
113 "xAOD::TruthEventAuxContainer#*",
114 "xAOD::EventInfo#EventInfo",
115 "xAOD::EventAuxInfo#EventInfoAux",
116 "xAOD::TruthPileupEventContainer#*",
117 "xAOD::TruthPileupEventAuxContainer#*"
120 cfg.merge(OutputStreamCfg(flags,
"AOD", ItemList=itemList))
123 sys.exit(
not status.isSuccess())