diff --git a/benchmarks/dis/analysis/truth_reconstruction.py b/benchmarks/dis/analysis/truth_reconstruction.py
index 3089488c5a10fa24d385f8663488497eb7b83c5c..6906ae61b92706b28af5a2a1289aea0081c2d567 100644
--- a/benchmarks/dis/analysis/truth_reconstruction.py
+++ b/benchmarks/dis/analysis/truth_reconstruction.py
@@ -18,7 +18,7 @@ kwargs = vars(args)
 rec_file = args.rec_file
 config = args.config
 Nevents = int(args.nevents)
-r_path = args.results_path + '/truth_reconstruction/'
+r_path = args.results_path + '/truth_reconstruction/' #Path for output figures and file.
 
 for array in ur.iterate(rec_file + ':events',['MCParticles/MCParticles.generatorStatus',
                                           'MCParticles/MCParticles.PDG',
@@ -31,7 +31,7 @@ for array in ur.iterate(rec_file + ':events',['MCParticles/MCParticles.generator
                                           'ReconstructedParticles/ReconstructedParticles.momentum.z',
                                           'ReconstructedParticlesAssoc/ReconstructedParticlesAssoc.simID',
                                           'ReconstructedParticlesAssoc/ReconstructedParticlesAssoc.recID',],step_size=Nevents):
-    PDG_mc = array['MCParticles/MCParticles.PDG']
+    PDG_mc = array['MCParticles/MCParticles.PDG']  #Monte Carlo (MC) particle numbering scheme.
     px_mc = array['MCParticles/MCParticles.momentum.x']
     py_mc = array['MCParticles/MCParticles.momentum.y']
     pz_mc = array['MCParticles/MCParticles.momentum.z']
@@ -40,51 +40,61 @@ for array in ur.iterate(rec_file + ':events',['MCParticles/MCParticles.generator
     py_rc = array['ReconstructedParticles/ReconstructedParticles.momentum.y']
     pz_rc = array['ReconstructedParticles/ReconstructedParticles.momentum.z']
     simID = array['ReconstructedParticlesAssoc/ReconstructedParticlesAssoc.simID']
-    recID = array['ReconstructedParticlesAssoc/ReconstructedParticlesAssoc.recID']
+    recID = array['ReconstructedParticlesAssoc/ReconstructedParticlesAssoc.recID'] 
+    #SimID and recID contain the indices of the MCParticles and ReconstructedParticles entry for that event.
 
+### MCParticles Variables
 momentum_mc = np.sqrt(((px_mc**2)+(py_mc**2)+(pz_mc**2)))
 theta_mc = np.arctan2(np.sqrt(px_mc**2+py_mc**2), pz_mc)
 phi_mc = np.arctan2(py_mc, px_mc)
-
+### ReconstructedParticles Variables
 momentum_rc = np.sqrt(((px_rc**2)+(py_rc**2)+(pz_rc**2)))
 theta_rc = np.arctan2(np.sqrt(px_rc**2+py_rc**2), pz_rc)
 phi_rc = np.arctan2(py_rc, px_rc)
 
-booll = (PDG_mc[simID])==(PDG_rc[recID])
-boolean_pion = np.logical_or(ak.Array(PDG_mc[simID][booll])==-211, ak.Array(PDG_mc[simID][booll])==+211)
-boolean_proton = np.logical_or(ak.Array(PDG_mc[simID][booll])==-2212, ak.Array(PDG_mc[simID][booll])==+2212)
-boolean_electron = ak.Array(PDG_mc[simID][booll])==11
-boolean_neutron = ak.Array(PDG_mc[simID][booll])==2112
-boolean_photon = ak.Array(PDG_mc[simID][booll])==22
-
-MC_list = [ak.Array(momentum_mc[simID][booll]),
-           ak.Array(theta_mc[simID][booll]),
-           ak.Array(phi_mc[simID][booll]),
-           -np.log(np.tan((ak.Array(theta_mc[simID][booll]))/2))]
-RC_list = [ak.Array(momentum_rc[recID][booll]),
-           ak.Array(theta_rc[recID][booll]),
-           ak.Array(phi_rc[recID][booll]),
-           -np.log(np.tan((ak.Array(theta_rc[recID][booll]))/2))]
+booll = (PDG_mc[simID])==(PDG_rc[recID]) #boolean that allows events where the same particle is reconstructed
+boolean_pion = np.logical_or(ak.Array(PDG_mc[simID][booll])==-211, ak.Array(PDG_mc[simID][booll])==+211) #boolean that allows events involving pions
+boolean_proton = np.logical_or(ak.Array(PDG_mc[simID][booll])==-2212, ak.Array(PDG_mc[simID][booll])==+2212) #boolean that allows events involving protons
+boolean_electron = ak.Array(PDG_mc[simID][booll])==11 #boolean that allows events involving electrons
+boolean_neutron = ak.Array(PDG_mc[simID][booll])==2112 #boolean that allows events involving neutrons
+boolean_photon = ak.Array(PDG_mc[simID][booll])==22 #boolean that allows events involving photons
+
+### MCParticles variables list
+MC_list = [ak.Array(momentum_mc[simID][booll]),                     #Momentum
+           ak.Array(theta_mc[simID][booll]),                        #Theta
+           ak.Array(phi_mc[simID][booll]),                          #Phi
+           -np.log(np.tan((ak.Array(theta_mc[simID][booll]))/2))]   #Eta
+### ReconstructedParticles variables list
+RC_list = [ak.Array(momentum_rc[recID][booll]),                     #Momentum
+           ak.Array(theta_rc[recID][booll]),                        #Theta
+           ak.Array(phi_rc[recID][booll]),                          #Phi
+           -np.log(np.tan((ak.Array(theta_rc[recID][booll]))/2))]   #Eta
+title_list = ['Momentum','Theta','Phi','Eta']
+### MC Momentum for different particles list
 M_list = [ak.Array(momentum_mc[simID][booll]),
           ak.Array(momentum_mc[simID][booll][boolean_pion]),
           ak.Array(momentum_mc[simID][booll][boolean_proton]),
           ak.Array(momentum_mc[simID][booll][boolean_electron]),
           ak.Array(momentum_mc[simID][booll][boolean_neutron]),
           ak.Array(momentum_mc[simID][booll][boolean_photon])]
-title_list = ['Momentum','Theta','Phi','Eta']
 
+#Marker Size in plots
 if Nevents == 100:
     ssize = 1
 else:
     ssize = 0.01
 
+#Particle type for Single events
 particle = config.split('-')[0].strip()
 particle_dict = {'e':[boolean_electron,'Electrons'],'pi':[boolean_pion,'Pions']}
-###################
 
-for i in range(len(MC_list)):
-    X1 = MC_list[i]
-    Y1 = RC_list[i]
+####################################################################################################
+    #Ratio 
+####################################################################################################
+
+for i in range(len(MC_list)): #Repeat the following steps for each variable (momentum,theta,phi,eta)
+    X1 = MC_list[i] #MCParticles events to be plotted on x-axis
+    Y1 = RC_list[i] #ReconstructedParticles events
     X_list = [ak.Array(X1),
           ak.Array(X1[boolean_pion]),
           ak.Array(X1[boolean_proton]),
@@ -97,24 +107,15 @@ for i in range(len(MC_list)):
           ak.Array(Y1[boolean_electron]),
           ak.Array(Y1[boolean_neutron]),
           ak.Array(Y1[boolean_photon])]
-
     X_plot = list(np.zeros(len(X_list)))
     Y_plot = list(np.zeros(len(X_list)))
 
-    for j in range(len(X_list)):
-        X = X_list[j]
-        Y = Y_list[j]
-        X_len = ak.count(X,axis=None)
-        Y_len = ak.count(Y,axis=None)
-        if X_len > Y_len: 
-            F_boolean = np.ones_like(Y) == 1
-        else: 
-            F_boolean = np.ones_like(X) == 1
-        X_s = np.array(ak.flatten(X[F_boolean])) 
-        Y_s = np.array(ak.flatten(Y[F_boolean]))
-        if i == 0:   #Momentum
+    for j in range(len(X_list)): #Repeat the following steps for each particle (pions,protons,electrons,neutrons,photons)
+        X_s = np.array(ak.flatten(X_list[j])) 
+        Y_s = np.array(ak.flatten(Y_list[j]))
+        if i == 0:   #Momentum ratio
             ratio = np.array((ak.Array(Y_s)/ak.Array(X_s)))
-        else:
+        else: #Angle difference
             ratio = np.array((ak.Array(Y_s)-(ak.Array(X_s))))
         X_plot[j] = X_s
         Y_plot[j] = ratio
@@ -123,7 +124,7 @@ for i in range(len(MC_list)):
     gs = fig.add_gridspec(3, 2, wspace=0)
     (ax1, ax2), (ax3, ax4),(ax5, ax6) = gs.subplots(sharex=True, sharey=True)
     # fig.suptitle('')
-    if i == 1:   #theta
+    if i == 1:   # for theta
         X_plot[0],X_plot[1],X_plot[2],X_plot[3],X_plot[4],X_plot[5] = -X_plot[0],-X_plot[1],-X_plot[2],-X_plot[3],-X_plot[4],-X_plot[5]
     ax1.scatter(X_plot[0], Y_plot[0], s = ssize)
     ax2.scatter(X_plot[1], Y_plot[1], s = ssize)
@@ -132,17 +133,15 @@ for i in range(len(MC_list)):
     ax5.scatter(X_plot[4], Y_plot[4], s = ssize)
     ax6.scatter(X_plot[5], Y_plot[5], s = ssize)
 
-    ax_list = [ax1,ax2,ax3,ax4,ax5]
-    if i == 0:
-        ax1.set_ylabel('rc/mc')
+    if i == 0:  # for momentum
+        ax1.set_ylabel('rc/mc') #ratio
         ax3.set_ylabel('rc/mc')
         ax5.set_ylabel('rc/mc') 
         title ='ratio'
-        for ax in ax_list:
-            ax.set_yscale('log')
-            ax.set_xscale('log')
-    else:
-        ax1.set_ylabel('rc-mc')
+        ax1.set_yscale('log')
+        ax1.set_xscale('log')
+    else:       # for angles
+        ax1.set_ylabel('rc-mc') #difference
         ax3.set_ylabel('rc-mc')
         ax5.set_ylabel('rc-mc') 
         title ='difference'
@@ -168,17 +167,12 @@ for i in range(len(MC_list)):
     ax1.set_title('%s %s  %s  %s events'%(title_list[i],title,config,Nevents))
     plt.savefig(os.path.join(r_path, '%s_%s_%s.png' %  (title_list[i],title,config)))
     plt.close()
-    ############
-    
-    #Correlation
-    X_len = ak.count(X1,axis=None)
-    Y_len = ak.count(Y1,axis=None)
-    if X_len > Y_len: 
-        F_boolean = np.ones_like(Y1) == 1
-    else: 
-        F_boolean = np.ones_like(X1) == 1
-    X_s = np.array(ak.flatten(X1[F_boolean])) 
-    Y_s = np.array(ak.flatten(Y1[F_boolean])) 
+
+###################################################################################################     #Correlation
+###################################################################################################
+#####For momentum variable
+    X_s = np.array(ak.flatten(X1)) 
+    Y_s = np.array(ak.flatten(Y1)) 
 
     if i == 0 and particle in particle_dict.keys(): #Momentum in Single events
         h, xedges, yedges, image = plt.hist2d(x=X_s,y= Y_s,  bins = 11) 
@@ -188,7 +182,7 @@ for i in range(len(MC_list)):
 
     col_sum = ak.sum(h,axis=-1) #number of events in each (verticle) column 
     norm_h = [] #norm_h is the normalized matrix
-    norm_h_text = [] #display labels matrix
+    norm_h_text = []
     for j in range(len(col_sum)):
         if col_sum[j] != 0:
             norm_c = h[j]/col_sum[j] #normalized column = column values divide by sum of the column
@@ -214,8 +208,7 @@ for i in range(len(MC_list)):
     fig.suptitle('%s  %s events'%(config,Nevents))
     plt.savefig(os.path.join(r_path, '%s_correlation_%s.png' %  (title_list[i],config)))
 
-###############
-
+#####For theta, phi, eta variable
     if i > 0:
         for j in range(len(X_list)):
             X = X_list[j]
@@ -232,7 +225,6 @@ for i in range(len(MC_list)):
         fig = plt.figure()
         gs = fig.add_gridspec(3, 2, wspace=0)
         (ax1, ax2), (ax3, ax4),(ax5, ax6) = gs.subplots(sharex=True, sharey=True)
-        # fig.suptitle('')
         ax1.scatter(X_plot[0], Y_plot[0], s = ssize)
         ax2.scatter(X_plot[1], Y_plot[1], s = ssize)
         ax3.scatter(X_plot[2], Y_plot[2], s = ssize)
@@ -255,7 +247,8 @@ for i in range(len(MC_list)):
         ax1.set_title('%s Difference Vs Momentum  %s  %s events'%(title_list[i],config,Nevents))
         plt.savefig(os.path.join(r_path, '%s_difference_vs_momentum_%s.png' %  (title_list[i],config)))
 
-################
+###################################################################################################     #Phi vs Theta plots
+###################################################################################################
 
 def particle_plots(boolean_particle):
     theta_mc_fil = ak.Array(theta_mc[simID][booll])[boolean_particle]