81 if len(sys.argv) < 2:
82 print(f
"Usage: {sys.argv[0]} <input_root_file>")
83 sys.exit(1)
84 input_file = sys.argv[1]
85 f = ROOT.TFile.Open(input_file)
86 if not f or f.IsZombie():
87 print(f
"[ERROR] Could not open file: {input_file}")
88 sys.exit(2)
89 print(f
"Opened file: {input_file}\n")
90
91 tree = f.Get("FPGATrackSimDataPrepTree")
92 print_tree_info(tree, "FPGATrackSimDataPrepTree", check_content=True)
93 if tree:
94 branch_map = {
95 "LogicalEventInputHeader_PreCluster": "PreCluster",
96 "LogicalEventInputHeader_PostCluster": "PostCluster"
97 }
98 check_tree_events(tree, branch_map)
99 for region in regions:
100 print(f
"\n=== Region {region} ===")
101 tree1 = f.Get(f"FPGATrackSimLogicalEventTree_reg{region}")
102 print_tree_info(tree1, f"FPGATrackSimLogicalEventTree_reg{region}", check_content=True)
103 if tree1:
104 branch_map = {
105 "LogicalEventStripHeader": "Strip",
106 "LogicalEventSpacepointHeader": "Spacepoint",
107 "LogicalEventFirstPixelHeader": "FirstPixel",
108 "LogicalEventSecondPixelHeader": "SecondPixel",
109 "LogicalEventOutputHeader": "Output"
110 }
111 check_tree_events(tree1, branch_map)
112 tree2 = f.Get(f"FPGATrackSimSecondStageTree_reg{region}")
113 print_tree_info(tree2, f"FPGATrackSimSecondStageTree_reg{region}", check_content=True)
114 if tree2:
115 branch_map = {
116 "LogicalEventOutputHeader": "Output2nd",
117 "LogicalEventSlicedHeader": "Sliced2nd"
118 }
119 check_tree_events(tree2, branch_map)
120 f.Close()
121 print(
"\nValidation complete.")
122