From fad7d667790a8752e4d0020e025a560224d166cd Mon Sep 17 00:00:00 2001
From: Shujie Li <shujie@jlab.org>
Date: Wed, 25 Aug 2021 14:17:20 -0400
Subject: [PATCH] added eta and theta distribution to performance plot

---
 .../tracking/scripts/tracking_performance.py  | 32 +++++++++++++++++--
 1 file changed, 29 insertions(+), 3 deletions(-)

diff --git a/benchmarks/tracking/scripts/tracking_performance.py b/benchmarks/tracking/scripts/tracking_performance.py
index 69e2affc..58256fb1 100644
--- a/benchmarks/tracking/scripts/tracking_performance.py
+++ b/benchmarks/tracking/scripts/tracking_performance.py
@@ -139,7 +139,7 @@ if __name__ == '__main__':
     df['theta'] = df['direction.theta']
     df['phi'] = df['direction.phi']
 
-    fig, axs = plt.subplots(2, 2, figsize=(16, 12), dpi=120)
+    fig, axs = plt.subplots(3, 2, figsize=(16, 18), dpi=120)
     for ax in axs.flat:
         ax.tick_params(direction='in', which='both', labelsize=20)
         ax.grid(linestyle=':')
@@ -170,7 +170,7 @@ if __name__ == '__main__':
 
     ax.errorbar(eta_centers, track_eff, xerr=eta_binsize/2., yerr=[track_eff_lower, track_eff_upper],
                 fmt='o', capsize=3)
-    ax.set_ylim(0., 1.)
+    ax.set_ylim(0., 1.1)
     ax.set_xlim(-4.5, 4.5)
     ax.set_ylabel('Tracking Efficiency', fontsize=20)
     ax.set_xlabel('$\eta$', fontsize=20)
@@ -212,6 +212,32 @@ if __name__ == '__main__':
     ax.set_ylabel('Normalized Counts / {:d} Bins'.format(nbins), fontsize=20)
     ax.set_xlabel(r'$d\phi$ (rad)', fontsize=20)
 
-    fig.text(0.5, 0.95, 'Barrel Tracker Benchmark (Truth Init.)', fontsize=22, ha='center')
+    # eta distribution
+    ax = axs.flat[4]
+    sim_eta =  dfm.groupby('event')['eta'].first().values
+    rec_eta =  -np.log(np.tan(df.groupby('event')['direction.theta'].first().values/2.))
+    hval, hbins, _ = ax.hist(sim_eta, bins=np.linspace(-4, 4, 41), ec='k',alpha=0.3,label="Generated")
+    hval, hbins, _ = ax.hist(rec_eta, bins=np.linspace(-4, 4, 41), ec='k',alpha=0.3, label="Reconstructed")
+    nbins = hbins.shape[0] - 1
+    ax.set_ylabel('Normalized Counts / {:d} Bins'.format(nbins), fontsize=20)
+    ax.set_xlabel(r'$\eta$', fontsize=20)
+    ax.legend(loc="upper right")
+    
+    # theta distribution
+    ax = axs.flat[5]
+    sim_th_deg =  dfm.groupby('event')['theta'].first().values*180/np.pi
+    rec_th_deg = df.groupby('event')['direction.theta'].first().values*180/np.pi
+
+    hval, hbins, _ = ax.hist(sim_th_deg, bins=np.linspace(-0, 180,61),
+                              ec='k',alpha=0.3,label="Generated")
+    hval, hbins, _ = ax.hist(rec_th_deg, bins=np.linspace(-0,180, 61),
+                              ec='k',alpha=0.3, label="Reconstructed")
+    nbins = hbins.shape[0] - 1
+    ax.set_ylabel('Normalized Counts / {:d} Bins'.format(nbins), fontsize=20)
+    ax.set_xlabel(r'$\theta (degree)$', fontsize=20)
+
+
+    fig.text(0.5, 0.95, 'Tracker Benchmark (Truth Init.)', fontsize=22, ha='center')
     fig.savefig(os.path.join(args.outdir, '{}_performance.png'.format(args.nametag)))
 
+
-- 
GitLab