ATLAS Offline Software
Loading...
Searching...
No Matches
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
5if __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()
void print(char *figname, TCanvas *c1)