12This module contains classes for plotting validation results.
15 plot_in_module_efficiency,
16 plot_efficiency_vs_run,
17 plot_module_efficiencies_in_DHHs,
18 plot_efficiency_map, plot_ip_resolutions,
26def analyse_root_file(file_name, tree_name="tree"):
28 Function to analyse the ROOT file generated from validation algorithm
30 file_name (str): name of the ROOT file
31 tree_name (str): name of the TTree
34 tfile = ROOT.TFile.Open(file_name)
35 tree = tfile.Get(tree_name)
37 branches = [
'exp',
'run',
'pxdid',
'uBin',
'vBin',
'nTrackPoints',
'nSelTrackPoints',
'nSelTrackClusters',
'nTrackClusters']
39 awkward_array = uproot.open(file_name)[tree_name].arrays(branches)
40 df = ak.to_dataframe(awkward_array).reset_index()
43 experiment_number = df.exp.min()
44 run_range = (df.run.min(), df.run.max())
45 prefix = f
"e{experiment_number:05}_r{run_range[0]:04}-{run_range[1]:04}_"
48 df.calculate_eff(num=
"nTrackClusters", den=
"nTrackPoints", output_var=
"eff")
49 df.calculate_eff(num=
"nSelTrackClusters", den=
"nSelTrackPoints", output_var=
"eff_sel")
51 plot_in_module_efficiency(
56 cut=
"eff_sel>0&eff_sel_err_low<0.01",
57 yerr_low=
"eff_sel_err_low",
58 yerr_up=
"eff_sel_err_up",
59 save_to=prefix +
"efficiency_in_selected_regions_H1052.png")
62 df_sum_all = df.groupby([
'exp',
'run'])[[
"nTrackPoints",
"nSelTrackPoints",
63 "nTrackClusters",
"nSelTrackClusters"]].sum().reset_index()
64 df_sum_all.calculate_eff(num=
"nTrackClusters", den=
"nTrackPoints", output_var=
"eff")
65 df_sum_all.calculate_eff(num=
"nSelTrackClusters", den=
"nSelTrackPoints", output_var=
"eff_sel")
67 plot_efficiency_vs_run(df=df_sum_all, max_err=0.01, save_to=prefix +
"pxd_efficiency_vs_run.png")
70 df_module_sum = df.groupby([
'exp',
'run',
'pxdid'])[[
"nTrackPoints",
"nSelTrackPoints",
71 "nTrackClusters",
"nSelTrackClusters"]].sum().reset_index()
72 df_module_sum[
"pxdid"] = df_module_sum[
"pxdid"].astype(np.int64)
73 df_module_sum.calculate_eff(num=
"nTrackClusters", den=
"nTrackPoints", output_var=
"eff")
74 df_module_sum.calculate_eff(num=
"nSelTrackClusters", den=
"nSelTrackPoints", output_var=
"eff_sel")
76 plot_module_efficiencies_in_DHHs(df=df_module_sum, save_to=prefix +
"efficiency_vs_run.png")
79 c1 = ROOT.TCanvas(
"c1",
"c1", 900, 600)
80 ROOT.gStyle.SetPalette(ROOT.kDarkRainBow)
86 num_name=
"hTrackClustersLayer1",
87 den_name=
"hTrackPointsLayer1",
88 save_to=prefix +
"efficiency_l1.png",
95 num_name=
"hTrackClustersLayer2",
96 den_name=
"hTrackPointsLayer2",
97 title=
"Efficiency of layer 2",
98 save_to=prefix +
"efficiency_l2.png",
101 plot_ip_resolutions(tree=tree, save_to=prefix +
"pxd_resolutions_vs_run.png")
104if __name__ ==
"__main__":
106 file_name = sys.argv[1]
107 ROOT.gROOT.SetBatch(
True)
108 analyse_root_file(file_name)