ATLAS Offline Software
HGTDReconstruction_legacy.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  parser = argparse.ArgumentParser(description='Run HGTD reconstruction with legacy Athena')
18  parser.add_argument('--file_dir', type=str, required=True, help='Path to directory with RDO files')
19  parser.add_argument('--Nfiles', type=int, default=-1, help='Number of files to process (-1 for all)')
20  parser.add_argument('--output_suffix', type=str, default='', help='Suffix to append to output files')
21  args = parser.parse_args()
22 
23  # Get the list of all matching files
24  file_pattern = f"{args.file_dir}/RDO*.pool.root.1"
25  all_files = sorted(glob.glob(file_pattern))
26 
27  matching_files = []
28 
29  for f in all_files:
30  matching_files.append(f)
31 
32 
33  if args.Nfiles > 0 and len(matching_files) > args.Nfiles:
34  matching_files = matching_files[:args.Nfiles]
35  print(f"Limiting to first {args.Nfiles} files as requested")
36 
37  flags.Input.Files = matching_files
38 
39  # Check the files matched
40  print(f"Matched {len(matching_files)} files:")
41  for f in matching_files:
42  print(f)
43 
44  flags.Exec.MaxEvents = -1 # Process all events
45 
46  # Output configuration
47  flags.Output.doWriteAOD = True
48  flags.Output.AODFileName = f"LegacyHGTD_track_extension_test_AOD_{args.output_suffix}.root"
49  flags.Output.HISTFileName = f"LegacyHGTD_track_extension_HIST_{args.output_suffix}.root"
50 
51  # Set specific tracking flags for legacy reconstruction
52  flags.Tracking.doTruth = False
53  flags.Detector.EnableCalo = False
54  flags.DQ.useTrigger = False
55 
56  # Important: Configure to use legacy Athena tracking
57  flags.Detector.EnableHGTD = True
58  flags.HGTD.doActs = False # Use legacy clustering
59  flags.Reco.EnableHGTDExtension = True # Enable HGTD track extension
60 
61  # Disable ACTS
62  flags.Acts.doMonitoring = False
63  flags.Acts.doITkConversion = False
64  flags.Tracking.doITkConversion = False
65 
66 
67  # Set tracking chain to use legacy tracking (not ACTS)
68  from TrkConfig.TrkConfigFlags import TrackingComponent
69  flags.Tracking.recoChain = [TrackingComponent.AthenaChain]
70 
71  flags.lock()
72  flags.dump()
73 
74  # Main services configuration
75  acc = MainServicesCfg(flags)
76  acc.getService("MessageSvc").debugLimit = 1000000
77  acc.merge(PoolReadCfg(flags))
78 
79  # Schedule legacy ITk reconstruction
80  from InDetConfig.ITkTrackRecoConfig import ITkTrackRecoCfg
81  acc.merge(ITkTrackRecoCfg(flags))
82 
83  # Configure HGTD pad clusterization (legacy method)
84  from HGTD_Config.HGTD_PrepRawDataFormationConfig import PadClusterizationCfg
85  acc.merge(PadClusterizationCfg(flags))
86 
87  # # Configure legacy HGTD track extension
88  # from HGTD_Config.HGTD_TrackTimeExtensionConfig import TrackTimeExtensionCfg
89  # acc.merge(TrackTimeExtensionCfg(flags))
90 
91  from HGTD_Config.HGTD_TrackTimeExtensionConfig import HGTD_IterativeExtensionToolCfg, TrackTimeExtensionCfg
92 
93  # Create your HGTD iterative extension tool with Chi2Cut set to 10.0
94  myIterativeExtensionTool = acc.popToolsAndMerge(HGTD_IterativeExtensionToolCfg(flags, Chi2Cut=10000.0))
95 
96  # Pass the preconfigured tool to the TrackTimeExtension configuration
97  acc.merge(TrackTimeExtensionCfg(flags, TimeExtensionTool=myIterativeExtensionTool))
98 
99 
100 
101  # Configure track time definitions and quality evaluation
102  from HGTD_Config.HGTD_TrackTimeExtensionConfig import TrackTimeDefAndQualityAlgCfg
103  acc.merge(TrackTimeDefAndQualityAlgCfg(flags))
104 
105  # Configure vertex time algorithm (if needed)
106  from HGTD_Config.HGTD_VertexTimeConfig import VertexTimeAlgCfg
107  acc.merge(VertexTimeAlgCfg(flags))
108 
109  # Run the job
110  acc.printConfig(withDetails=True, summariseProps=True)
111  acc.run()
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:511
python.HGTD_PrepRawDataFormationConfig.PadClusterizationCfg
def PadClusterizationCfg(flags, name="PadClusterizationAlg", **kwargs)
Definition: HGTD_PrepRawDataFormationConfig.py:25
python.HGTD_TrackTimeExtensionConfig.TrackTimeExtensionCfg
def TrackTimeExtensionCfg(flags, name="TrackTimeExtensionAlg", **kwargs)
Definition: HGTD_TrackTimeExtensionConfig.py:36
python.MainServicesConfig.MainServicesCfg
def MainServicesCfg(flags, LoopMgr='AthenaEventLoopMgr')
Definition: MainServicesConfig.py:312
python.HGTD_TrackTimeExtensionConfig.TrackTimeDefAndQualityAlgCfg
def TrackTimeDefAndQualityAlgCfg(flags, name="TrackTimeDefAndQualityAlg", **kwargs)
Definition: HGTD_TrackTimeExtensionConfig.py:46
print
void print(char *figname, TCanvas *c1)
Definition: TRTCalib_StrawStatusPlots.cxx:25
python.AllConfigFlags.initConfigFlags
def initConfigFlags()
Definition: AllConfigFlags.py:19
python.HGTD_TrackTimeExtensionConfig.HGTD_IterativeExtensionToolCfg
def HGTD_IterativeExtensionToolCfg(flags, name="HGTD_IterativeExtensionTool", **kwargs)
Definition: HGTD_TrackTimeExtensionConfig.py:20
python.HGTD_VertexTimeConfig.VertexTimeAlgCfg
def VertexTimeAlgCfg(flags, name='VertexTimeAlg', **kwargs)
Definition: HGTD_VertexTimeConfig.py:6
python.PoolReadConfig.PoolReadCfg
def PoolReadCfg(flags)
Definition: PoolReadConfig.py:71