ATLAS Offline Software
ActsHGTDReconstruction.py
Go to the documentation of this file.
1 #!/usr/bin/env python
2 # Copyright (C) 2002-2025 CERN for the benefit of the ATLAS collaboration
3 
4 # Main script execution
5 if __name__ == "__main__":
6 
7  import argparse
8  import glob
9  import re
10 
11  # Initialize the configuration flags
12  from AthenaConfiguration.AllConfigFlags import initConfigFlags
13  from AthenaConfiguration.MainServicesConfig import MainServicesCfg
14  from AthenaPoolCnvSvc.PoolReadConfig import PoolReadCfg
15  flags = initConfigFlags()
16 
17  from InDetConfig.ConfigurationHelpers import OnlyTrackingPreInclude
19 
20  parser = argparse.ArgumentParser(description='Run HGTD reconstruction with ACTS')
21  parser.add_argument('--file_dir', type=str, required=True, help='Path to directory with RDO files')
22  parser.add_argument('--Nfiles', type=int, default=-1, help='Number of files to process (-1 for all)')
23  parser.add_argument('--output_suffix', type=str, default='', help='Suffix to append to output files')
24  args = parser.parse_args()
25 
26  # Get the list of all matching files
27  file_pattern = f"{args.file_dir}/RDO*.pool.root.1"
28  all_files = sorted(glob.glob(file_pattern))
29 
30  matching_files = []
31  for f in all_files:
32  matching_files.append(f)
33 
34  if args.Nfiles > 0 and len(matching_files) > args.Nfiles:
35  matching_files = matching_files[:args.Nfiles]
36  print(f"Limiting to first {args.Nfiles} files as requested")
37 
38  flags.Input.Files = matching_files
39 
40  # Check the files matched
41  print(f"Matched {len(matching_files)} files:")
42  for f in matching_files:
43  print(f)
44 
45  flags.Exec.MaxEvents = -1 #100
46 
47  flags.Output.doWriteAOD = True
48  flags.Output.AODFileName = f"ActsHGTD_track_extension_test_AOD_{args.output_suffix}.root"
49  flags.Output.HISTFileName = f"ActsHGTD_track_extension_HIST_{args.output_suffix}.root"
50 
51  # Set specific tracking flags
52  flags.Tracking.doTruth = False
53 
54  flags.Detector.EnableCalo = False
55  flags.DQ.useTrigger = False
56  flags.Acts.doMonitoring = True
57  flags.HGTD.doMonitoring = True
58 
59  flags.Detector.EnableHGTD = True
60  flags.Acts.doITkConversion=False
61  flags.Tracking.doITkConversion=False
62 
63  flags.Tracking.ITkMainPass.doAthenaToActsSpacePoint=True
64  flags.Tracking.ITkMainPass.doAthenaToActsCluster=True
65  from TrkConfig.TrkConfigFlags import TrackingComponent
66  flags.Tracking.recoChain = [TrackingComponent.ActsLegacyChain] # Use ActsLegacyChain to avoid fast tracking requirement
67  flags.Acts.doRotCorrection = False
68 
69  flags.lock()
70  flags.dump()
71 
72  # Main services configuration
73  acc = MainServicesCfg(flags)
74  acc.getService("MessageSvc").debugLimit = 100000000
75  acc.getService("MessageSvc").verboseLimit = 100000000
76  acc.merge(PoolReadCfg(flags))
77 
78  # HGTD Reconstruction - xAOD EDM
79  from ActsConfig.ActsClusterizationConfig import ActsHgtdClusterizationAlgCfg
80  acc.merge(ActsHgtdClusterizationAlgCfg(flags))
81 
82  # Schedule the complete ITk tracking reconstruction
83  from InDetConfig.ITkTrackRecoConfig import ITkTrackRecoCfg
84  acc.merge(ITkTrackRecoCfg(flags))
85 
86  # Add the HGTD Track Extension Algorithm
87  from ActsConfig.ActsHGTDTrackExtensionAlgConfig import ActsHGTDTrackExtensionAlgConfig
88  acc.merge(ActsHGTDTrackExtensionAlgConfig(flags))
89 
90 
91  # Run the job
92  acc.printConfig(withDetails = True, summariseProps = True)
93  acc.run()
94 
DerivationFramework::TriggerMatchingUtils::sorted
std::vector< typename R::value_type > sorted(const R &r, PROJ proj={})
Helper function to create a sorted vector from an unsorted range.
python.ITkTrackRecoConfig.ITkTrackRecoCfg
ComponentAccumulator ITkTrackRecoCfg(flags)
Main ITk tracking config #####################.
Definition: ITkTrackRecoConfig.py:514
ActsHGTDTrackExtensionAlgConfig
Definition: ActsHGTDTrackExtensionAlgConfig.py:1
ActsClusterizationConfig.ActsHgtdClusterizationAlgCfg
ComponentAccumulator ActsHgtdClusterizationAlgCfg(flags, str name="ActsHgtdClusterizationAlg", **kwargs)
Definition: ActsClusterizationConfig.py:22
python.ConfigurationHelpers.OnlyTrackingPreInclude
def OnlyTrackingPreInclude(flags)
Definition: InnerDetector/InDetConfig/python/ConfigurationHelpers.py:6
python.MainServicesConfig.MainServicesCfg
def MainServicesCfg(flags, LoopMgr='AthenaEventLoopMgr')
Definition: MainServicesConfig.py:312
print
void print(char *figname, TCanvas *c1)
Definition: TRTCalib_StrawStatusPlots.cxx:26
python.AllConfigFlags.initConfigFlags
def initConfigFlags()
Definition: AllConfigFlags.py:19
python.PoolReadConfig.PoolReadCfg
def PoolReadCfg(flags)
Definition: PoolReadConfig.py:71