Loading [MathJax]/jax/output/SVG/config.js
ATLAS Offline Software
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Modules Pages
vertexingJO_ITK_init.py
Go to the documentation of this file.
1 # Copyright (C) 2002-2025 CERN for the benefit of the ATLAS collaboration
2 
3 import sys
4 import argparse
5 
6 from AthenaCommon.Logging import logging
7 from AthenaConfiguration.ComponentAccumulator import printProperties
8 from AthenaConfiguration.MainServicesConfig import MainServicesCfg
9 from AthenaConfiguration.AllConfigFlags import initConfigFlags
10 from TrkConfig.VertexFindingFlags import VertexSetup
11 
12 from AthenaCommon.Constants import VERBOSE
13 from OutputStreamAthenaPool.OutputStreamConfig import OutputStreamCfg
14 
15 if __name__ == "__main__":
16 
17  parser = argparse.ArgumentParser(
18  description="Primary vertex finding configuration for ITk"
19  )
20  parser.add_argument(
21  "--seeder",
22  type=str,
23  default="Gaussian",
24  choices=["Grid", "Gaussian"],
25  help="Choose between Grid or Gaussian seeder."
26  )
27  parser.add_argument(
28  "--output",
29  type=str,
30  default="AOD",
31  help="Name of the output file"
32  )
33  parser.add_argument(
34  "--maxEvents",
35  type=int,
36  default=-1,
37  help="Number of events to process. Default: -1 (all)."
38  )
39  args = parser.parse_args()
40 
41  mlog = logging.getLogger("vertexingJO_ITK_init")
42  mlog.setLevel(logging.INFO)
43 
44  flags = initConfigFlags()
45 
46  flags.Exec.MaxEvents = args.maxEvents
47  flags.Input.Files = args.input
48 
49  flags.Output.AODFileName = args.output
50  flags.Exec.OutputLevel = VERBOSE
51 
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"
60 
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)
67  else:
68  raise ValueError(f"Invalid seeder '{args.seeder}'; choose 'Grid' or 'Gaussian'.")
69 
70  flags.dump()
71  flags.lock()
72 
73  cfg = MainServicesCfg(flags)
74 
75  from AthenaPoolCnvSvc.PoolReadConfig import PoolReadCfg
76  cfg.merge(PoolReadCfg(flags))
77 
78  from xAODMetaDataCnv.InfileMetaDataConfig import SetupMetaDataForStreamCfg
79  cfg.merge(SetupMetaDataForStreamCfg(flags, "AOD"))
80 
81  from InDetConfig.InDetPriVxFinderConfig import primaryVertexFindingCfg
82  cfg.merge(primaryVertexFindingCfg(flags, vxCandidatesOutputName=vxContainerName))
83 
84  mlog.info("Configuring primary vertex finding...")
85  mlog.setLevel(VERBOSE)
86 
88  mlog,
89  cfg.getEventAlgo("InDetPriVxFinder"),
90  nestLevel=2,
91  printDefaults=True
92  )
93  cfg.printConfig(withDetails=True, summariseProps=True)
94 
95  itemList = [
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#*"
118  ]
119 
120  cfg.merge(OutputStreamCfg(flags, "AOD", ItemList=itemList))
121 
122  status = cfg.run()
123  sys.exit(not status.isSuccess())
python.ActsPriVxFinderConfig.primaryVertexFindingCfg
ComponentAccumulator primaryVertexFindingCfg(flags, str name="InDetPriVxFinder", *str TracksName, str vxCandidatesOutputName=None, **kwargs)
Definition: InnerDetector/InDetConfig/python/ActsPriVxFinderConfig.py:29
python.OutputStreamConfig.OutputStreamCfg
def OutputStreamCfg(flags, streamName, ItemList=[], MetadataItemList=[], disableEventTag=False, trigNavThinningSvc=None, takeItemsFromInput=False, extendProvenanceRecord=True, keepProvenanceTagsRegEx=None, AcceptAlgs=[], HelperTools=[])
Definition: OutputStreamConfig.py:16
python.MainServicesConfig.MainServicesCfg
def MainServicesCfg(flags, LoopMgr='AthenaEventLoopMgr')
Definition: MainServicesConfig.py:260
Constants
some useful constants -------------------------------------------------—
extractSporadic.printProperties
def printProperties(h, q, hLB)
Definition: extractSporadic.py:8
python.AllConfigFlags.initConfigFlags
def initConfigFlags()
Definition: AllConfigFlags.py:19
InfileMetaDataConfig.SetupMetaDataForStreamCfg
def SetupMetaDataForStreamCfg(flags, streamName="", AcceptAlgs=None, createMetadata=None, propagateMetadataFromInput=True, *args, **kwargs)
Definition: InfileMetaDataConfig.py:222
python.PoolReadConfig.PoolReadCfg
def PoolReadCfg(flags)
Definition: PoolReadConfig.py:69