ATLAS Offline Software
Loading...
Searching...
No Matches
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
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 from InDetConfig.ConfigurationHelpers import OnlyTrackingPreInclude
18 OnlyTrackingPreInclude(flags)
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
void print(char *figname, TCanvas *c1)