13 This module contains classes for plotting validation results.
23 def analyse_root_file(file_name, tree_name="tree"):
25 Function to analyse the ROOT file generated from validation algorithm
27 file_name (str): name of the ROOT file
28 tree_name (str): name of the TTree
31 tfile = ROOT.TFile.Open(file_name)
32 tree = tfile.Get(tree_name)
34 branches = [
'exp',
'run',
'pxdid',
'uBin',
'vBin',
'nTrackPoints',
'nSelTrackPoints',
'nSelTrackClusters',
'nTrackClusters']
35 df = uproot.open(file_name)[tree_name].arrays(branches, library=
'pd')
36 experiment_number = df.exp.min()
37 run_range = (df.run.min(), df.run.max())
38 prefix = f
"e{experiment_number:05}_r{run_range[0]:04}-{run_range[1]:04}_"
41 df.calculate_eff(num=
"nTrackClusters", den=
"nTrackPoints", output_var=
"eff")
42 df.calculate_eff(num=
"nSelTrackClusters", den=
"nSelTrackPoints", output_var=
"eff_sel")
44 plot_in_module_efficiency(
49 cut=
"eff_sel>0&eff_sel_err_low<0.01",
50 yerr_low=
"eff_sel_err_low",
51 yerr_up=
"eff_sel_err_up",
52 save_to=prefix +
"efficiency_in_selected_regions_H1052.png")
55 df_sum_all = df.groupby([
'exp',
'run'])[[
"nTrackPoints",
"nSelTrackPoints",
56 "nTrackClusters",
"nSelTrackClusters"]].sum().reset_index()
57 df_sum_all.calculate_eff(num=
"nTrackClusters", den=
"nTrackPoints", output_var=
"eff")
58 df_sum_all.calculate_eff(num=
"nSelTrackClusters", den=
"nSelTrackPoints", output_var=
"eff_sel")
60 plot_efficiency_vs_run(df=df_sum_all, max_err=0.01, save_to=prefix +
"pxd_efficiency_vs_run.png")
63 df_module_sum = df.groupby([
'exp',
'run',
'pxdid'])[[
"nTrackPoints",
"nSelTrackPoints",
64 "nTrackClusters",
"nSelTrackClusters"]].sum().reset_index()
65 df_module_sum[
"pxdid"] = df_module_sum[
"pxdid"].astype(np.int)
66 df_module_sum.calculate_eff(num=
"nTrackClusters", den=
"nTrackPoints", output_var=
"eff")
67 df_module_sum.calculate_eff(num=
"nSelTrackClusters", den=
"nSelTrackPoints", output_var=
"eff_sel")
69 plot_module_efficiencies_in_DHHs(df=df_module_sum, save_to=prefix +
"efficiency_vs_run.png")
72 c1 = ROOT.TCanvas(
"c1",
"c1", 900, 600)
73 ROOT.gStyle.SetPalette(ROOT.kDarkRainBow)
74 h2eff_l1 = plot_efficiency_map(
79 num_name=
"hTrackClustersLayer1",
80 den_name=
"hTrackPointsLayer1",
81 save_to=prefix +
"efficiency_l1.png",
83 h2eff_l2 = plot_efficiency_map(
88 num_name=
"hTrackClustersLayer2",
89 den_name=
"hTrackPointsLayer2",
90 title=
"Efficiency of layer 2",
91 save_to=prefix +
"efficiency_l2.png",
94 df_res = plot_ip_resolutions(tree=tree, save_to=prefix +
"pxd_resolutions_vs_run.png")
97 if __name__ ==
"__main__":
99 file_name = sys.argv[1]
100 ROOT.gROOT.SetBatch(
True)
101 analyse_root_file(file_name)