diff --git a/PythonScripts/Calibration.py b/PythonScripts/Calibration.py
new file mode 100644
index 0000000000000000000000000000000000000000..1eb7c6b578da84ec8c18ce95d83865c99a379a1a
--- /dev/null
+++ b/PythonScripts/Calibration.py
@@ -0,0 +1,200 @@
+import numpy as np
+from scipy.optimize import curve_fit
+import matplotlib.pyplot as plt
+from matplotlib.offsetbox import AnchoredText
+import sys
+## Performs linear fit for calibration
+
+def FitAndPlot(xp, xm, z1p, z1m, z2p, z2m, z3p, z3m, zAllp, zAllm, Voltage, plots, raw):
+    #Linewidth
+    lw = 0.8
+    
+    #
+    if(plots):
+        if(raw):
+            plt.title("Calibration Measurement " + str(Voltage))
+            plt.plot(xp, z1p, marker=".", color="tab:blue", label="z1-", linewidth=lw)
+            plt.plot(xp, z1m, marker=".", color="b", label="z1+", linewidth=lw)
+            plt.plot(xp, z2p, marker=".", color="tab:red", label="z2-", linewidth=lw)
+            plt.plot(xp, z2m, marker=".", color="chocolate", label="z2+", linewidth=lw)
+            plt.plot(xp, z3p, marker=".", color="tab:green", label="z3-", linewidth=lw)
+            plt.plot(xp, z3m, marker=".", color="darkolivegreen", label="z3+", linewidth=lw)
+            plt.plot(xp, zAllp, marker=".", color="tab:purple", label="zAll-", linewidth=lw)
+            plt.plot(xp, zAllm, marker=".", color="m", label="zAll+", linewidth=lw)
+            plt.ylabel(r"Measured Movement [$\mu m$]")
+            plt.xlabel("# of step")
+            plt.legend()
+            plt.grid()
+            plt.savefig("Plots\Calibration\\" + str(Voltage) + "_All_Data.pdf")
+            plt.show()
+         
+    # Fit 
+    # Errors are 1/sqrt(12) * one pixel length in mikrometers
+    error_z1 = 8.87 / np.sqrt(12)
+    error_z2 = 9.62 / np.sqrt(12)
+    error_z3 = 9.80 / np.sqrt(12)
+    error_zAll = 9.00 / np.sqrt(12)
+    
+    popt_z1p, pcov_z1p = curve_fit(linear, xp, z1p, error_z1)
+    popt_z1m, pcov_z1m = curve_fit(linear, xp, z1m, error_z1)
+    popt_z2p, pcov_z2p = curve_fit(linear, xp, z2p, error_z2)
+    popt_z2m, pcov_z2m = curve_fit(linear, xp, z2m, error_z2)
+    popt_z3p, pcov_z3p = curve_fit(linear, xp, z3p, error_z3)
+    popt_z3m, pcov_z3m = curve_fit(linear, xp, z3m, error_z3)
+    popt_zAllp, pcov_zAllp = curve_fit(linear, xp, zAllp, error_zAll)
+    popt_zAllm, pcov_zAllm = curve_fit(linear, xp, zAllm, error_zAll)
+    
+    # Chi squared Computation per degree of freedom 
+    chi_z1p = np.sum(((z1p - linear(xp, popt_z1p[0]))**2 / error_z1**2)) / (len(z1p) - 1)
+    chi_z1m = np.sum(((z1m - linear(xp, popt_z1m[0]))**2 / error_z1**2)) / (len(z1m) - 1)
+    chi_z2p = np.sum(((z2p - linear(xp, popt_z2p[0]))**2 / error_z2**2)) / (len(z2p) - 1)
+    chi_z2m = np.sum(((z2m - linear(xp, popt_z2m[0]))**2 / error_z2**2)) / (len(z2m) - 1)
+    chi_z3p = np.sum(((z3p - linear(xp, popt_z3p[0]))**2 / error_z3**2)) / (len(z3p) - 1)
+    chi_z3m = np.sum(((z3m - linear(xp, popt_z3m[0]))**2 / error_z3**2)) / (len(z3m) - 1)
+    chi_zAllp = np.sum(((zAllp - linear(xp, popt_zAllp[0]))**2 / error_zAll**2)) / (len(zAllp) - 1)
+    chi_zAllm = np.sum(((zAllm - linear(xp, popt_zAllm[0]))**2 / error_zAll**2)) / (len(zAllm) - 1)
+    
+    # Plots
+    fig, ax = plt.subplots(2, 2)
+    fig.set_figheight(9)
+    fig.set_figwidth(16)
+
+    # Z1 
+    capsize = 2
+    if(plots):
+        ax[0,0].set_title("Z1 calibration fit " + str(Voltage))
+        ax[0,0].set_xlabel("# of steps")
+        ax[0,0].set_ylabel(r"Measured Movement [$\mu m$]")
+        ax[0,0].errorbar(xp, z1p, error_z1, linestyle="none", marker=".", linewidth=lw, color="tab:blue", label="z1- data", capsize=capsize)
+        ax[0,0].errorbar(xp, z1m, error_z1, linestyle="none", marker=".", linewidth=lw, color="b", label="z1+ data", capsize=capsize)
+        ax[0,0].plot(xp, linear(xp, popt_z1p[0]), linewidth=lw, color="tab:blue", label="z1- fit")
+        ax[0,0].plot(xp, linear(xp, popt_z1m[0]), linewidth=lw, color="b", label="z1+ fit")
+    
+        #ax = plt.gca()
+        anchored_text = AnchoredText(r"$b_-$= {:.2f} $\pm$ {:.2f} $n m$/step, $\chi^2/ndof =${:.2f}".format(popt_z1p[0] * 1000, np.sqrt(pcov_z1p[0][0]) * 1000, chi_z1p) + "\n" + "$b_+$= {:.2f} $\pm$ {:.2f} $n m$/step, $\chi^2/ndof =${:.2f}".format(popt_z1m[0] * 1000, np.sqrt(pcov_z1m[0][0]) * 1000, chi_z1m), loc=4)
+        ax[0,0].add_artist(anchored_text)
+        
+        ax[0,0].legend()
+        plt.grid()
+        #plt.savefig("Plots\Calibration\Z1_" + str(Voltage) + ".pdf")
+        #plt.show()
+    
+    print("slope in nm/step z1-:", popt_z1p[0] * 1000, " +- ", np.sqrt(pcov_z1p[0][0]) * 1000, " chi^2 ", chi_z1p)
+    print("slope in nm/step z1+:", popt_z1m[0] * 1000, " +- ", np.sqrt(pcov_z1m[0][0]) * 1000, " chi^2 ", chi_z1m)
+    
+    #Z2
+    if(plots):
+        ax[0,1].set_title("Z2 calibration fit " + str(Voltage))
+        ax[0,1].set_xlabel("# of steps")
+        ax[0,1].set_ylabel(r"Measured Movement [$\mu m$]")
+        ax[0,1].errorbar(xp, z2p, error_z2, linestyle="none", marker=".", linewidth=lw, color="tab:red", label="z2- data", capsize=capsize)
+        ax[0,1].errorbar(xp, z2m, error_z2, linestyle="none", marker=".", linewidth=lw, color="chocolate", label="z2+ data", capsize=capsize)
+        ax[0,1].plot(xp, linear(xp, popt_z2p[0]), linewidth=lw, color="tab:red", label="z2- fit")
+        ax[0,1].plot(xp, linear(xp, popt_z2m[0]), linewidth=lw, color="chocolate", label="z2+ fit")
+    
+        #ax = plt.gca()
+        anchored_text = AnchoredText(r"$b_-$= {:.2f} $\pm$ {:.2f} $n m$/step, $\chi^2/ndof =${:.2f}".format(popt_z2p[0] * 1000, np.sqrt(pcov_z2p[0][0]) * 1000, chi_z2p) + "\n" + "$b_+$= {:.2f} $\pm$ {:.2f} $n m$/step, $\chi^2/ndof =${:.2f}".format(popt_z2m[0] * 1000, np.sqrt(pcov_z2m[0][0]) * 1000, chi_z2m), loc=4)
+        ax[0,1].add_artist(anchored_text)
+        
+        ax[0,1].legend()
+        plt.grid()
+        #plt.savefig("Plots\Calibration\Z2_" + str(Voltage) + ".pdf")
+        #plt.show()
+    
+    print("slope in nm/step z2-:", popt_z2p[0] * 1000, " +- ", np.sqrt(pcov_z2p[0][0]) * 1000, " chi^2 ", chi_z2p)
+    print("slope in nm/step z2+:", popt_z2m[0] * 1000, " +- ", np.sqrt(pcov_z2m[0][0]) * 1000, " chi^2 ", chi_z2m)
+    
+    #Z3
+    if(plots):
+        ax[1,0].set_title("Z3 calibration fit " + str(Voltage))
+        ax[1,0].set_xlabel("# of steps")
+        ax[1,0].set_ylabel(r"Measured Movement [$\mu m$]")
+        ax[1,0].errorbar(xp, z3p, error_z3, linestyle="none", marker=".", linewidth=lw, color="tab:green", label="z3- data", capsize=capsize)
+        ax[1,0].errorbar(xp, z3m, error_z3, linestyle="none", marker=".", linewidth=lw, color="darkolivegreen", label="z3+ data", capsize=capsize)
+        ax[1,0].plot(xp, linear(xp, popt_z3p[0]), linewidth=lw, color="tab:green", label="z3- fit")
+        ax[1,0].plot(xp, linear(xp, popt_z3m[0]), linewidth=lw, color="darkolivegreen", label="z3+ fit")
+    
+        #ax = plt.gca()
+        anchored_text = AnchoredText(r"$b_-$= {:.2f} $\pm$ {:.2f} $n m$/step, $\chi^2/ndof =${:.2f}".format(popt_z3p[0] * 1000, np.sqrt(pcov_z3p[0][0]) * 1000, chi_z3p) + "\n" + "$b_+$= {:.2f} $\pm$ {:.2f} $n m$/step, $\chi^2/ndof =${:.2f}".format(popt_z3m[0] * 1000, np.sqrt(pcov_z3m[0][0]) * 1000, chi_z3m), loc=4)
+        ax[1,0].add_artist(anchored_text)
+        
+        ax[1,0].legend()
+        plt.grid()
+        #plt.savefig("Plots\Calibration\Z3_" + str(Voltage) + ".pdf")
+        #plt.show()
+    
+    print("slope in nm/step z3-:", popt_z3p[0] * 1000, " +- ", np.sqrt(pcov_z3p[0][0]) * 1000, " chi^2 ", chi_z3p)
+    print("slope in nm/step z3+:", popt_z3m[0] * 1000, " +- ", np.sqrt(pcov_z3m[0][0]) * 1000, " chi^2 ", chi_z3p)
+    
+    #ZALL
+    if(plots):
+        ax[1,1].set_title("ZAll calibration fit " + str(Voltage))
+        ax[1,1].set_xlabel("# of steps")
+        ax[1,1].set_ylabel(r"Measured Movement [$\mu m$]")
+        ax[1,1].errorbar(xp, zAllp, error_zAll, linestyle="none", marker=".", linewidth=lw, color="tab:purple", label="zAll- data", capsize=capsize)
+        ax[1,1].errorbar(xp, zAllm, error_zAll, linestyle="none", marker=".", linewidth=lw, color="m", label="zAll+ data", capsize=capsize)
+        ax[1,1].plot(xp, linear(xp, popt_zAllp[0]), linewidth=lw, color="tab:purple", label="zAll- fit")
+        ax[1,1].plot(xp, linear(xp, popt_zAllm[0]), linewidth=lw, color="m", label="zAll+ fit")
+    
+        #ax = plt.gca()
+        anchored_text = AnchoredText(r"$b_-$= {:.2f} $\pm$ {:.2f} $n m$/step, $\chi^2/ndof =${:.2f}".format(popt_zAllp[0] * 1000, np.sqrt(pcov_zAllp[0][0]) * 1000, chi_zAllp) + "\n" + "$b_+$= {:.2f} $\pm$ {:.2f} $n m$/step, $\chi^2/ndof =${:.2f}".format(popt_zAllm[0] * 1000, np.sqrt(pcov_zAllm[0][0]) * 1000, chi_zAllm), loc=4)
+        ax[1,1].add_artist(anchored_text)
+        
+        ax[1,1].legend()
+        plt.grid()
+        plt.savefig("Plots\Calibration\Z_" + str(Voltage) + ".pdf")
+        plt.savefig("Plots\Calibration\Z_" + str(Voltage) + ".png", dpi=300)
+        plt.show()
+    
+    print("slope in nm/step zAll-:", popt_zAllp[0] * 1000, " +- ", np.sqrt(pcov_zAllp[0][0]) * 1000, " chi^2 ", chi_zAllp)
+    print("slope in nm/step zAll+:", popt_zAllm[0] * 1000, " +- ", np.sqrt(pcov_zAllm[0][0]) * 1000, " chi^2 ", chi_zAllp)
+
+def linear(x, b):
+    return b*x
+
+def dataHandling(data, plots, raw):
+    x = data[0]
+    z1p = data[1]
+    z1m = data[2]
+    z2p = data[3]
+    z2m = data[4]
+    z3p = data[5]
+    z3m = data[6]
+    # Check if calibration performed for all otherwise use dummy data.
+    if(len(data) > 7):
+        zAllp = data[7]
+        zAllm = data[8]
+    else:
+        zAllp = np.zeros(len(z1p))
+        zAllm = np.zeros(len(z1m))
+        
+    FitAndPlot(x, x, z1p, z1m, z2p, z2m, z3p, z3m, zAllp, zAllm, 85, plots, raw)
+
+def main():
+    plots = True
+    raw = False
+
+    file = "C:\MaskAligner\Data\Calibration.csv"
+
+    # very Simple commandline parser
+    if("--no_plots" in sys.argv):
+        plots = False
+    
+    if("--file" in sys.argv or "-f" in sys.argv):
+        for i in range(len(sys.argv)):
+            if("--file" in sys.argv[i] or "-f" == sys.argv[i]):
+                try:
+                    file = sys.argv[i+1]
+                except:
+                    print("No file or incorrect file specification.")
+    
+    if("--raw_plot" in sys.argv):
+        raw = True
+
+    data = np.genfromtxt(file, skip_header=0, delimiter=",")
+    data = data.T
+    
+    dataHandling(data, plots, raw)
+
+if __name__ == "__main__":
+    main()
\ No newline at end of file
diff --git a/PythonScripts/CalibrationAfterRepair.py b/PythonScripts/CalibrationAfterRepair.py
new file mode 100644
index 0000000000000000000000000000000000000000..f1ea162f3a988f03c8b80a0c3656c0e32f3f0625
--- /dev/null
+++ b/PythonScripts/CalibrationAfterRepair.py
@@ -0,0 +1,307 @@
+import numpy as np
+from scipy.optimize import curve_fit
+import matplotlib.pyplot as plt
+import matplotlib.font_manager as font_manager
+from matplotlib.offsetbox import AnchoredText
+import sys
+from sigfig import round
+
+#plt.rcParams['font.family'] = 'monospace'
+
+class var_with_err:
+    def __init__(self, var, err):
+        self.var = var
+        self.err = err
+    
+    def __str__(self):
+        return round(self.var, uncertainty=self.err)
+
+def linear(x, b):
+    return b*x
+
+def FitAndPlot(x, z1p, z1m, z2p, z2m, z3p, z3m, z1p_err, z1m_err, z2p_err, z2m_err, z3p_err, z3m_err, voltage, sigma, plots = True, raw = False, residuals=True):
+    
+    font = font_manager.FontProperties(family='DejaVu Sans Mono', style='normal')
+    
+    fac = 1e6
+    
+    popt_z1p, pcov_z1p = curve_fit(linear, x, z1p, sigma=z1p_err)
+    popt_z1m, pcov_z1m = curve_fit(linear, x, z1m, sigma=z1m_err) 
+    popt_z2p, pcov_z2p = curve_fit(linear, x, z2p, sigma=z2p_err) 
+    popt_z2m, pcov_z2m = curve_fit(linear, x, z2m, sigma=z2m_err)
+    popt_z3p, pcov_z3p = curve_fit(linear, x, z3p, sigma=z3p_err) 
+    popt_z3m, pcov_z3m = curve_fit(linear, x, z3m, sigma=z3m_err) 
+    
+    step_z1p = var_with_err(popt_z1p[0] * fac, np.sqrt(pcov_z1p[0][0]) * fac)
+    step_z1m = var_with_err(popt_z1m[0] * fac, np.sqrt(pcov_z1m[0][0]) * fac)
+    step_z2p = var_with_err(popt_z2p[0] * fac, np.sqrt(pcov_z2p[0][0]) * fac)
+    step_z2m = var_with_err(popt_z2m[0] * fac, np.sqrt(pcov_z2m[0][0]) * fac)
+    step_z3p = var_with_err(popt_z3p[0] * fac, np.sqrt(pcov_z3p[0][0]) * fac)
+    step_z3m = var_with_err(popt_z3m[0] * fac, np.sqrt(pcov_z3m[0][0]) * fac)
+    
+    chi_z1p = np.sum(((z1p - linear(x, popt_z1p[0]))/z1p_err)**2) / len(x - 2)
+    chi_z1m = np.sum(((z1m - linear(x, popt_z1m[0]))/z1m_err)**2) / len(x - 2)
+    chi_z2p = np.sum(((z2p - linear(x, popt_z2p[0]))/z2p_err)**2) / len(x - 2)
+    chi_z2m = np.sum(((z2m - linear(x, popt_z2m[0]))/z2m_err)**2) / len(x - 2)
+    chi_z3p = np.sum(((z3p - linear(x, popt_z3p[0]))/z3p_err)**2) / len(x - 2)
+    chi_z3m = np.sum(((z3m - linear(x, popt_z3m[0]))/z3m_err)**2) / len(x - 2)
+
+    err_z3z2p = popt_z3p[0] * fac / (popt_z2p[0] * fac)
+    err_z3z2m = popt_z3m[0] * fac / (popt_z2m[0] * fac)
+    err_z3z1p = popt_z3p[0] * fac / (popt_z1p[0] * fac)
+    err_z3z1m = popt_z3m[0] * fac / (popt_z1m[0] * fac)
+    err_z2z1p = popt_z2p[0] * fac / (popt_z1p[0] * fac)
+    err_z2z1m = popt_z2m[0] * fac / (popt_z1m[0] * fac)
+    
+    print("### Voltage: ", voltage, " ###")
+    
+    print("z1p: ", step_z1p, " nm/step ", "chi^2/ndof = ", chi_z1p)
+    print("z1m: ", step_z1m, " nm/step ", "chi^2/ndof = ", chi_z1m)
+    print("z2p: ", step_z2p, " nm/step ", "chi^2/ndof = ", chi_z2p)
+    print("z2m: ", step_z2m, " nm/step ", "chi^2/ndof = ", chi_z2m)
+    print("z3p: ", step_z3p, " nm/step ", "chi^2/ndof = ", chi_z3p)
+    print("z3m: ", step_z3m, " nm/step ", "chi^2/ndof = ", chi_z3m)
+    
+    print("error (ratio) + z3/z2: ", popt_z3p[0] * fac / (popt_z2p[0] * fac))
+    print("error (ratio) - z3/z2: ", popt_z3m[0] * fac / (popt_z2m[0] * fac))
+    print("error (ratio) + z3/z1: ", popt_z3p[0] * fac / (popt_z1p[0] * fac))
+    print("error (ratio) - z3/z1: ", popt_z3m[0] * fac / (popt_z1m[0] * fac))
+    print("error (ratio) + z2/z1: ", popt_z2p[0] * fac / (popt_z1p[0] * fac))
+    print("error (ratio) - z2/z1: ", popt_z2m[0] * fac / (popt_z1m[0] * fac))
+
+
+    if plots:
+        
+        x_inter = np.arange(min(x), max(x), 1) 
+        l_jus = 5
+        
+        if not residuals:
+            fig = plt.figure()
+        else:
+            fig, ax = plt.subplots(2,1, sharex=True, gridspec_kw={'height_ratios': [3,1]})
+        
+        fig.set_figheight(4.5)
+        fig.set_figwidth(8)
+        
+        if residuals:
+        
+            ax[0].set_title("Mask Aligner Motors at " + str(voltage) + " V")
+            ax[0].errorbar(x + 80, z1p, z1p_err, marker=".", linestyle="none", capsize=3, label="z1+:".ljust(l_jus ) + str(step_z1p) + " nm/step ", color="tab:blue")
+            ax[0].errorbar(x + 40, z2p, z2p_err, marker=".", linestyle="none", capsize=3, label="z2+:".ljust(l_jus ) + str(step_z2p) + " nm/step ", color="tab:orange")
+            ax[0].errorbar(x - 40, z3p, z3p_err, marker=".", linestyle="none", capsize=3, label="z3+:".ljust(l_jus ) + str(step_z3p) + " nm/step ", color="tab:purple")
+            
+            ax[0].plot(x_inter, linear(x_inter, popt_z1p[0]), color="tab:blue")
+            ax[0].plot(x_inter, linear(x_inter, popt_z1m[0]), color="tab:cyan")
+    
+            ax[0].plot(x_inter, linear(x_inter, popt_z2p[0]), color="tab:orange")
+            ax[0].plot(x_inter, linear(x_inter, popt_z2m[0]), color="tab:red")
+            
+            ax[0].errorbar(x - 80, z1m, z1m_err, marker=".", linestyle="none", capsize=3, label="z1-:".ljust(l_jus ) + str(step_z1m) + " nm/step ", color="tab:cyan")
+            ax[0].errorbar(x + 120, z2m, z2m_err, marker=".", linestyle="none", capsize=3, label="z2-:".ljust(l_jus ) + str(step_z2m) + " nm/step ", color="tab:red")
+            ax[0].errorbar(x, z3m, z3m_err, marker=".", linestyle="none", capsize=3, label="z3-:".ljust(l_jus ) + str(step_z3m) + " nm/step ", color="tab:pink")
+            ax[0].plot(x_inter, linear(x_inter, popt_z3p[0]), color="tab:purple")
+            ax[0].plot(x_inter, linear(x_inter, popt_z3m[0]), color="tab:pink")
+            
+            ax[0].set_xlabel("Number of steps driven")
+            ax[0].set_ylabel("Distance travelled [mm]")
+            ax[0].legend(handletextpad=0.1, prop = font)
+            ax[0].grid()
+            plt.tight_layout()
+        
+            #ax[1].set_title("residuals")
+            ax[1].errorbar(x + 80, z1p - linear(x, popt_z1p[0]), z1p_err, marker=".", linestyle="none", capsize=3, label="z1+:".ljust(l_jus ) + str(step_z1p) + " nm/step ", color="tab:blue")
+            ax[1].errorbar(x + 40, z2p - linear(x, popt_z2p[0]), z2p_err, marker=".", linestyle="none", capsize=3, label="z2+:".ljust(l_jus ) + str(step_z2p) + " nm/step ", color="tab:orange")
+            ax[1].errorbar(x- 40, z3p - linear(x, popt_z3p[0]), z3p_err, marker=".", linestyle="none", capsize=3, label="z3+:".ljust(l_jus ) + str(step_z3p) + " nm/step ", color="tab:purple")
+            
+            ax[1].plot(x_inter, np.zeros(len(x_inter)), color="tab:blue")
+            ax[1].set_ylim(0 - max(np.absolute(z3m - linear(x, popt_z1m[0]))) - max(z3m_err) - 0.05, 0 + max(np.absolute(z3m - linear(x, popt_z1m[0]))) + max(z3m_err)+ 0.05)
+            #ax[1].plot(x_inter, linear(x_inter, popt_z1m[0]), color="tab:cyan")
+    
+            #ax[1].plot(x_inter, linear(x_inter, popt_z2p[0]), color="tab:orange")
+            #ax[1].plot(x_inter, linear(x_inter, popt_z2m[0]), color="tab:red")
+            
+            ax[1].errorbar(x - 80, z1m - linear(x, popt_z1m[0]), z1m_err, marker=".", linestyle="none", capsize=3, label="z1-:".ljust(l_jus ) + str(step_z1m) + " nm/step ", color="tab:cyan")
+            ax[1].errorbar(x + 120, z2m - linear(x, popt_z1m[0]), z2m_err, marker=".", linestyle="none", capsize=3, label="z2-:".ljust(l_jus ) + str(step_z2m) + " nm/step ", color="tab:red")
+            ax[1].errorbar(x, z3m - linear(x, popt_z1m[0]), z3m_err, marker=".", linestyle="none", capsize=3, label="z3-:".ljust(l_jus ) + str(step_z3m) + " nm/step ", color="tab:pink")
+            #ax[1].plot(x_inter, linear(x_inter, popt_z3p[0]), color="tab:purple")
+            #ax[1].plot(x_inter, linear(x_inter, popt_z3m[0]), color="tab:pink")
+            
+            ax[1].set_xlabel("Number of steps driven")
+            ax[1].set_ylabel("Distance travelled [mm]")
+            
+            ax[1].grid()
+            
+        else:
+            
+            plt.title("Mask Aligner Motors at " + str(voltage) + " V")
+            plt.errorbar(x + 80, z1p, z1p_err, marker=".", linestyle="none", capsize=3, label="z1+:".ljust(l_jus ) + str(step_z1p) + " nm/step ", color="tab:blue")
+            plt.errorbar(x + 40, z2p, z2p_err, marker=".", linestyle="none", capsize=3, label="z2+:".ljust(l_jus ) + str(step_z2p) + " nm/step ", color="tab:orange")
+            plt.errorbar(x - 40, z3p, z3p_err, marker=".", linestyle="none", capsize=3, label="z3+:".ljust(l_jus ) + str(step_z3p) + " nm/step ", color="tab:purple")
+            
+            plt.plot(x_inter, linear(x_inter, popt_z1p[0]), color="tab:blue")
+            plt.plot(x_inter, linear(x_inter, popt_z1m[0]), color="tab:cyan")
+    
+            plt.plot(x_inter, linear(x_inter, popt_z2p[0]), color="tab:orange")
+            plt.plot(x_inter, linear(x_inter, popt_z2m[0]), color="tab:red")
+            
+            plt.errorbar(x - 80, z1m, z1m_err, marker=".", linestyle="none", capsize=3, label="z1-:".ljust(l_jus ) + str(step_z1m) + " nm/step ", color="tab:cyan")
+            plt.errorbar(x + 120, z2m, z2m_err, marker=".", linestyle="none", capsize=3, label="z2-:".ljust(l_jus ) + str(step_z2m) + " nm/step ", color="tab:red")
+            plt.errorbar(x, z3m, z3m_err, marker=".", linestyle="none", capsize=3, label="z3-:".ljust(l_jus ) + str(step_z3m) + " nm/step ", color="tab:pink")
+            plt.plot(x_inter, linear(x_inter, popt_z3p[0]), color="tab:purple")
+            plt.plot(x_inter, linear(x_inter, popt_z3m[0]), color="tab:pink")
+            
+            plt.xlabel("Number of steps driven")
+            plt.ylabel("Distance travelled [mm]")
+            plt.legend(handletextpad=0.1, prop = font)
+            plt.grid()
+            plt.tight_layout()
+                
+        plt.savefig("Plots/CalibrationAfterRepair/" + str(voltage) + "V.pdf")
+        plt.savefig("Plots/CalibrationAfterRepair/" + str(voltage) + "V.png", dpi=300)
+        plt.show()
+        
+    return step_z1p, step_z1m, step_z2p, step_z2m, step_z3p, step_z3m, err_z3z2p, err_z3z2m, err_z3z1p, err_z3z1m, err_z2z1p, err_z2z1m   
+
+def dataHandling(data, offset, voltage, plots, raw):
+    x = data[0 + offset]
+    z3m = data[1 + offset]
+    z3p = data[2 + offset]
+    z2m = data[3 + offset]
+    z2p = data[4 + offset]
+    z1m = data[5 + offset]
+    z1p = data[6 + offset]
+    
+    z3m_err = data[7 + offset]
+    z3p_err = data[8 + offset]
+    z2m_err = data[9 + offset]
+    z2p_err = data[10 + offset]
+    z1m_err = data[11 + offset]
+    z1p_err = data[12 + offset]
+    
+    sigma = np.ones(len(x)) * data[0][0]
+    
+    #Check for empty data and fill with dummy
+    if np.isnan(z1p).any():
+        z1p = np.zeros(5)
+    if np.isnan(z1m).any():
+        z1m = np.zeros(5)
+    if np.isnan(z2p).any():
+        z2p = np.zeros(5)
+    if np.isnan(z2m).any():
+        z2m = np.zeros(5)
+    if np.isnan(z3p).any():
+        z3p = np.zeros(5)
+    if np.isnan(z3m).any():
+        z3m = np.zeros(5)
+        
+    if np.isnan(z1p_err).any():
+        z1p_err = np.ones(5) * sigma
+    if np.isnan(z1m_err).any():
+        z1m_err = np.ones(5) * sigma
+    if np.isnan(z2p_err).any():
+        z2p_err = np.ones(5) * sigma
+    if np.isnan(z2m_err).any():
+        z2m_err = np.ones(5) * sigma
+    if np.isnan(z3p_err).any():
+        z3p_err = np.ones(5) * sigma
+    if np.isnan(z3m_err).any():
+        z3m_err = np.ones(5) * sigma
+    
+    step_z1p, step_z1m, step_z2p, step_z2m, step_z3p, step_z3m, err_z3z2p, err_z3z2m, err_z3z1p, err_z3z1m, err_z2z1p, err_z2z1m = FitAndPlot(x, z1p, z1m, z2p, z2m, z3p, z3m, z1p_err, z1m_err, z2p_err, z2m_err, z3p_err, z3m_err, voltage, sigma, plots, raw)
+    return step_z1p, step_z1m, step_z2p, step_z2m, step_z3p, step_z3m, err_z3z2p, err_z3z2m, err_z3z1p, err_z3z1m, err_z2z1p, err_z2z1m
+    
+def main():
+    plots = True
+    raw = False
+
+    file = "C:\MaskAligner\Data\Calibration\CalibrationAfterRepair_13_11_23.csv"
+
+    # very Simple commandline parser
+    if("--no_plots" in sys.argv):
+        plots = False
+    
+    if("--file" in sys.argv or "-f" in sys.argv):
+        for i in range(len(sys.argv)):
+            if("--file" in sys.argv[i] or "-f" == sys.argv[i]):
+                try:
+                    file = sys.argv[i+1]
+                except:
+                    print("No file or incorrect file specification.")
+    
+    if("--raw_plot" in sys.argv):
+        raw = True
+
+    data = np.genfromtxt(file, skip_header=1, delimiter=",")
+    data = data.T
+    
+    arr = []
+    
+    arr.append(dataHandling(data, 43, 70, plots, raw))
+    arr.append(dataHandling(data, 1, 80, plots, raw))
+    arr.append(dataHandling(data, 15, 100, plots, raw))
+    arr.append(dataHandling(data, 29, 120, plots, raw))
+    
+    arr = np.array(arr).T
+    
+    ## Plot motors errors against one another against voltage 
+    
+    fig = plt.figure() 
+    fig.set_figheight(4.5)
+    fig.set_figwidth(8)
+    
+    plt.plot([70, 80, 100, 120], arr[6], label="error z3/z2+", marker=".", linestyle="dashed")
+    plt.plot([70, 80, 100, 120], arr[8], label="error z3/z1+", marker=".", linestyle="dashed")
+    plt.plot([70, 80, 100, 120], arr[10], label="error z2/z1+", marker=".", linestyle="dashed")
+    plt.plot([70, 80, 100, 120], arr[7], label="error z3/z2-", marker=".", linestyle="dashed")
+    plt.plot([70, 80, 100, 120], arr[9], label="error z3/z1-", marker=".", linestyle="dashed")
+    plt.plot([70, 80, 100, 120], arr[11], label="error z2/z1-", marker=".", linestyle="dashed")
+    plt.xlabel("Voltage [V]")
+    plt.ylabel("ratio of motor's stepsizes")
+    plt.legend()
+    plt.tight_layout()
+    plt.savefig("Plots/CalibrationAfterRepair/Errors.pdf")
+    plt.savefig("Plots/CalibrationAfterRepair/Errors.png", dpi=300)
+    plt.show()
+    
+    ## Plot stepsizes against voltage 
+    fig = plt.figure() 
+    fig.set_figheight(4.5)
+    fig.set_figwidth(8)   
+    
+    plt.errorbar([70, 80, 100, 120], [x.var for x in arr[0]], [x.err for x in arr[0]], label="z1+", marker=".", linestyle="dashed", capsize=3, color="tab:blue")
+    plt.errorbar([70, 80, 100, 120], [x.var for x in arr[1]], [x.err for x in arr[1]], label="z1-", marker=".", linestyle="dashed", capsize=3, color="tab:cyan")
+    plt.errorbar([70, 80, 100, 120], [x.var for x in arr[2]], [x.err for x in arr[2]], label="z2+", marker=".", linestyle="dashed", capsize=3, color="tab:orange")
+    plt.errorbar([70, 80, 100, 120], [x.var for x in arr[3]], [x.err for x in arr[3]], label="z2-", marker=".", linestyle="dashed", capsize=3, color="tab:red")
+    plt.errorbar([70, 80, 100, 120], [x.var for x in arr[4]], [x.err for x in arr[4]], label="z3+", marker=".", linestyle="dashed", capsize=3, color="tab:purple")
+    plt.errorbar([70, 80, 100, 120], [x.var for x in arr[5]], [x.err for x in arr[5]], label="z3-", marker=".", linestyle="dashed", capsize=3, color="tab:pink")
+    plt.xlabel("Voltage [V]")
+    plt.ylabel("stepsize [nm/step]")
+    plt.legend()
+    plt.tight_layout()
+    plt.savefig("Plots/CalibrationAfterRepair/Stepsizes.pdf")
+    plt.savefig("Plots/CalibrationAfterRepair/Stepsizes.png", dpi=300)
+    plt.show()
+    
+    
+    ## Plot up/down ratio against Voltage
+    z1_ud = var_with_err(np.array([x.var for x in arr[0]])/np.array([x.var for x in arr[1]]), np.sqrt((1/np.array([x.var for x in arr[1]]) * np.array([x.err for x in arr[0]]))**2 + (np.array([x.var for x in arr[0]])/np.array([x.var for x in arr[1]])**2 * np.array([x.err for x in arr[1]]))**2))
+    z2_ud = var_with_err(np.array([x.var for x in arr[2]])/np.array([x.var for x in arr[3]]), np.sqrt((1/np.array([x.var for x in arr[3]]) * np.array([x.err for x in arr[2]]))**2 + (np.array([x.var for x in arr[2]])/np.array([x.var for x in arr[3]])**2 * np.array([x.err for x in arr[3]]))**2))
+    z3_ud = var_with_err(np.array([x.var for x in arr[4]])/np.array([x.var for x in arr[5]]), np.sqrt((1/np.array([x.var for x in arr[5]]) * np.array([x.err for x in arr[4]]))**2 + (np.array([x.var for x in arr[4]])/np.array([x.var for x in arr[5]])**2 * np.array([x.err for x in arr[5]]))**2))
+    
+    fig = plt.figure() 
+    fig.set_figheight(4.5)
+    fig.set_figwidth(8)   
+    
+    plt.errorbar([70, 80, 100, 120], z1_ud.var, z1_ud.err, label="z1", marker=".", linestyle="dashed", capsize=3, color="tab:blue")
+    plt.errorbar([70, 80, 100, 120], z2_ud.var, z2_ud.err, label="z2", marker=".", linestyle="dashed", capsize=3, color="tab:cyan")
+    plt.errorbar([70, 80, 100, 120], z3_ud.var, z3_ud.err, label="z3", marker=".", linestyle="dashed", capsize=3, color="tab:orange")
+    plt.xlabel("Voltage [V]")
+    plt.ylabel("ratio approach/retract")
+    plt.legend()
+    plt.tight_layout()
+    plt.savefig("Plots/CalibrationAfterRepair/ratioUD.pdf")
+    plt.savefig("Plots/CalibrationAfterRepair/ratioUD.png", dpi=300)
+    plt.show()
+
+if __name__ == "__main__":
+    main()
\ No newline at end of file
diff --git a/PythonScripts/CalibrationDragAndDrop.bat b/PythonScripts/CalibrationDragAndDrop.bat
new file mode 100644
index 0000000000000000000000000000000000000000..418a6bde516c75a95372e393ff8445c9fb074653
--- /dev/null
+++ b/PythonScripts/CalibrationDragAndDrop.bat
@@ -0,0 +1,3 @@
+@echo off
+cd /D "%~dp0"
+for %%a in (%*) do py .\Calibration.py --file %%a
diff --git a/PythonScripts/CalibrationTimeScrew.py b/PythonScripts/CalibrationTimeScrew.py
new file mode 100644
index 0000000000000000000000000000000000000000..f3401892781628ec767b4325fe1d718ba69c18ec
--- /dev/null
+++ b/PythonScripts/CalibrationTimeScrew.py
@@ -0,0 +1,77 @@
+import numpy as np
+import matplotlib.pyplot as plt
+import sys
+
+def plottingSingle(rot, zp, zm, err_t = 1, name="z1"):
+    plt.errorbar(rot, zp, err_t, label=name + " down")
+    plt.errorbar(rot, zm, err_t, label=name + " up")
+    
+    plt.xlabel("screw rotations")
+    plt.ylabel("t [s]")
+    plt.legend()
+    plt.show()
+
+def plottingAll(rot, z1p, z1m, z2p, z2m, z3p, z3m, err_t = np.sqrt(2)):
+    plt.errorbar(rot, z1p, err_t, label="z1 down")
+    plt.errorbar(rot, z1m, err_t, label="z1 up")
+    plt.errorbar(rot, z2p, err_t, label="z2 down")
+    plt.errorbar(rot, z2m, err_t, label="z2 up")
+    plt.errorbar(rot, z3p, err_t, label="z3 down")
+    plt.errorbar(rot, z3m, err_t, label="z3 up")
+    
+    plt.xlabel("screw rotations")
+    plt.ylabel("t [s]")
+    plt.legend()
+    plt.show()
+    
+def plottingRatio(rot, z1, z2, z3, err_t = 1):
+    plt.errorbar(rot, z1, err_t, label="z1 up/down")
+    plt.errorbar(rot, z2, err_t, label="z2 up/down")
+    plt.errorbar(rot, z3, err_t, label="z3 up/down")
+    
+    plt.xlabel("screw rotations")
+    plt.ylabel("t [s]")
+    plt.legend()
+    plt.show()
+
+def main():
+    if("--no_plots" in sys.argv):
+        plots = False
+
+    plt.style.use('tableau-colorblind10')
+
+    file = ""
+    if("--file" in sys.argv or "-f" in sys.argv):
+        for i in range(len(sys.argv)):
+            if("--file" in sys.argv[i] or "-f" == sys.argv[i]):
+                try:
+                    file = sys.argv[i+1]
+                except:
+                    print("No file or incorrect file specification.")
+                    
+    data = np.genfromtxt(file, delimiter=",", skip_header=1)
+    data = data.T
+    rot = data[0]
+    z1p = data[1]
+    z1m = data[2]
+    z2p = data[3]
+    z2m = data[4]
+    z3p = data[5]
+    z3m = data[6]
+    
+    err_t = 1.5
+    
+    plottingSingle(rot, z1p, z1m, err_t)
+    plottingSingle(rot, z2p, z2m, err_t, "z2")
+    plottingSingle(rot, z3p, z3m, err_t, "z3")
+
+    plottingAll(rot, z1p, z1m, z2p, z2m, z3p, z3m)
+    
+    plottingRatio(rot, z1p/z1m, z2p/z2m, z3p/z3m)
+    
+    print(z1p/z1m)
+    print(z2p/z2m)
+    print(z3p/z3m)
+
+if __name__ == "__main__":
+    main()
\ No newline at end of file
diff --git a/PythonScripts/CalibrationVoltages.py b/PythonScripts/CalibrationVoltages.py
new file mode 100644
index 0000000000000000000000000000000000000000..dad569ab35c5360f7d1f7e879706cf6b58fdc44a
--- /dev/null
+++ b/PythonScripts/CalibrationVoltages.py
@@ -0,0 +1,244 @@
+import numpy as np
+from scipy.optimize import curve_fit
+import matplotlib.pyplot as plt
+from matplotlib.offsetbox import AnchoredText
+import sys
+## Performs linear fit for calibration
+
+def FitAndPlot(xp, xm, z1p, z1m, z2p, z2m, z3p, z3m, zAllp, zAllm, Voltage, plots):
+    #Linewidth
+    lw = 0.8
+    
+    #
+    if(plots):
+        plt.title("Calibration Measurement " + str(Voltage) +  " V")
+        plt.plot(xp, z1p, marker=".", color="tab:blue", label="z1-", linewidth=lw)
+        plt.plot(xp, z1m, marker=".", color="b", label="z1+", linewidth=lw)
+        plt.plot(xp, z2p, marker=".", color="tab:red", label="z2-", linewidth=lw)
+        plt.plot(xp, z2m, marker=".", color="chocolate", label="z2+", linewidth=lw)
+        plt.plot(xp, z3p, marker=".", color="tab:green", label="z3-", linewidth=lw)
+        plt.plot(xp, z3m, marker=".", color="darkolivegreen", label="z3+", linewidth=lw)
+        plt.plot(xp, zAllp, marker=".", color="tab:purple", label="zAll-", linewidth=lw)
+        plt.plot(xp, zAllm, marker=".", color="m", label="zAll+", linewidth=lw)
+        plt.ylabel(r"Measured Movement [$\mu m$]")
+        plt.xlabel("# of step")
+        plt.legend()
+        plt.grid()
+        plt.savefig("Plots\Calibration\\" + str(Voltage) + "_All_Data.pdf")
+        plt.show()
+        
+    # Fit 
+    # Errors are 1/sqrt(12) * one pixel length in mikrometers
+    error_z1 = 8.87 / np.sqrt(12)
+    error_z2 = 9.62 / np.sqrt(12)
+    error_z3 = 9.80 / np.sqrt(12)
+    error_zAll = 9.00 / np.sqrt(12)
+    
+    popt_z1p, pcov_z1p = curve_fit(linear, xp, z1p, error_z1)
+    popt_z1m, pcov_z1m = curve_fit(linear, xp, z1m, error_z1)
+    popt_z2p, pcov_z2p = curve_fit(linear, xp, z2p, error_z2)
+    popt_z2m, pcov_z2m = curve_fit(linear, xp, z2m, error_z2)
+    popt_z3p, pcov_z3p = curve_fit(linear, xp, z3p, error_z3)
+    popt_z3m, pcov_z3m = curve_fit(linear, xp, z3m, error_z3)
+    popt_zAllp, pcov_zAllp = curve_fit(linear, xp, zAllp, error_zAll)
+    popt_zAllm, pcov_zAllm = curve_fit(linear, xp, zAllm, error_zAll)
+    
+    # Chi squared Computation per degree of freedom 
+    chi_z1p = np.sum(((z1p - linear(xp, popt_z1p[0]))**2 / error_z1**2)) / (len(z1p) - 1)
+    chi_z1m = np.sum(((z1m - linear(xp, popt_z1m[0]))**2 / error_z1**2)) / (len(z1m) - 1)
+    chi_z2p = np.sum(((z2p - linear(xp, popt_z2p[0]))**2 / error_z2**2)) / (len(z2p) - 1)
+    chi_z2m = np.sum(((z2m - linear(xp, popt_z2m[0]))**2 / error_z2**2)) / (len(z2m) - 1)
+    chi_z3p = np.sum(((z3p - linear(xp, popt_z3p[0]))**2 / error_z3**2)) / (len(z3p) - 1)
+    chi_z3m = np.sum(((z3m - linear(xp, popt_z3m[0]))**2 / error_z3**2)) / (len(z3m) - 1)
+    chi_zAllp = np.sum(((zAllp - linear(xp, popt_zAllp[0]))**2 / error_zAll**2)) / (len(zAllp) - 1)
+    chi_zAllm = np.sum(((zAllm - linear(xp, popt_zAllm[0]))**2 / error_zAll**2)) / (len(zAllm) - 1)
+    
+    # Plots
+    fig, ax = plt.subplots(2, 2)
+    fig.set_figheight(9)
+    fig.set_figwidth(16)
+
+    # Z1 
+    capsize = 2
+    if(plots):
+        ax[0,0].set_title("Z1 calibration fit " + str(Voltage) + " V")
+        ax[0,0].set_xlabel("# of steps")
+        ax[0,0].set_ylabel(r"Measured Movement [$\mu m$]")
+        ax[0,0].errorbar(xp, z1p, error_z1, linestyle="none", marker=".", linewidth=lw, color="tab:blue", label="z1- data", capsize=capsize)
+        ax[0,0].errorbar(xp, z1m, error_z1, linestyle="none", marker=".", linewidth=lw, color="b", label="z1+ data", capsize=capsize)
+        ax[0,0].plot(xp, linear(xp, popt_z1p[0]), linewidth=lw, color="tab:blue", label="z1- fit")
+        ax[0,0].plot(xp, linear(xp, popt_z1m[0]), linewidth=lw, color="b", label="z1+ fit")
+    
+        #ax = plt.gca()
+        anchored_text = AnchoredText(r"$b_-$= {:.2f} $\pm$ {:.2f} $n m$/step, $\chi^2/ndof =${:.2f}".format(popt_z1p[0] * 1000, np.sqrt(pcov_z1p[0][0]) * 1000, chi_z1p) + "\n" + "$b_+$= {:.2f} $\pm$ {:.2f} $n m$/step, $\chi^2/ndof =${:.2f}".format(popt_z1m[0] * 1000, np.sqrt(pcov_z1m[0][0]) * 1000, chi_z1m), loc=4)
+        ax[0,0].add_artist(anchored_text)
+        
+        ax[0,0].legend()
+        plt.grid()
+        #plt.savefig("Plots\Calibration\Z1_" + str(Voltage) + ".pdf")
+        #plt.show()
+    
+    print("slope in nm/step z1-:", popt_z1p[0] * 1000, " +- ", np.sqrt(pcov_z1p[0][0]) * 1000, " chi^2 ", chi_z1p)
+    print("slope in nm/step z1+:", popt_z1m[0] * 1000, " +- ", np.sqrt(pcov_z1m[0][0]) * 1000, " chi^2 ", chi_z1m)
+    
+    #Z2
+    if(plots):
+        ax[0,1].set_title("Z2 calibration fit " + str(Voltage) + " V")
+        ax[0,1].set_xlabel("# of steps")
+        ax[0,1].set_ylabel(r"Measured Movement [$\mu m$]")
+        ax[0,1].errorbar(xp, z2p, error_z2, linestyle="none", marker=".", linewidth=lw, color="tab:red", label="z2- data", capsize=capsize)
+        ax[0,1].errorbar(xp, z2m, error_z2, linestyle="none", marker=".", linewidth=lw, color="chocolate", label="z2+ data", capsize=capsize)
+        ax[0,1].plot(xp, linear(xp, popt_z2p[0]), linewidth=lw, color="tab:red", label="z2- fit")
+        ax[0,1].plot(xp, linear(xp, popt_z2m[0]), linewidth=lw, color="chocolate", label="z2+ fit")
+    
+        #ax = plt.gca()
+        anchored_text = AnchoredText(r"$b_-$= {:.2f} $\pm$ {:.2f} $n m$/step, $\chi^2/ndof =${:.2f}".format(popt_z2p[0] * 1000, np.sqrt(pcov_z2p[0][0]) * 1000, chi_z2p) + "\n" + "$b_+$= {:.2f} $\pm$ {:.2f} $n m$/step, $\chi^2/ndof =${:.2f}".format(popt_z2m[0] * 1000, np.sqrt(pcov_z2m[0][0]) * 1000, chi_z2m), loc=4)
+        ax[0,1].add_artist(anchored_text)
+        
+        ax[0,1].legend()
+        plt.grid()
+        #plt.savefig("Plots\Calibration\Z2_" + str(Voltage) + ".pdf")
+        #plt.show()
+    
+    print("slope in nm/step z2-:", popt_z2p[0] * 1000, " +- ", np.sqrt(pcov_z2p[0][0]) * 1000, " chi^2 ", chi_z2p)
+    print("slope in nm/step z2+:", popt_z2m[0] * 1000, " +- ", np.sqrt(pcov_z2m[0][0]) * 1000, " chi^2 ", chi_z2m)
+    
+    #Z3
+    if(plots):
+        ax[1,0].set_title("Z3 calibration fit " + str(Voltage) + " V")
+        ax[1,0].set_xlabel("# of steps")
+        ax[1,0].set_ylabel(r"Measured Movement [$\mu m$]")
+        ax[1,0].errorbar(xp, z3p, error_z3, linestyle="none", marker=".", linewidth=lw, color="tab:green", label="z3- data", capsize=capsize)
+        ax[1,0].errorbar(xp, z3m, error_z3, linestyle="none", marker=".", linewidth=lw, color="darkolivegreen", label="z3+ data", capsize=capsize)
+        ax[1,0].plot(xp, linear(xp, popt_z3p[0]), linewidth=lw, color="tab:green", label="z3- fit")
+        ax[1,0].plot(xp, linear(xp, popt_z3m[0]), linewidth=lw, color="darkolivegreen", label="z3+ fit")
+    
+        #ax = plt.gca()
+        anchored_text = AnchoredText(r"$b_-$= {:.2f} $\pm$ {:.2f} $n m$/step, $\chi^2/ndof =${:.2f}".format(popt_z3p[0] * 1000, np.sqrt(pcov_z3p[0][0]) * 1000, chi_z3p) + "\n" + "$b_+$= {:.2f} $\pm$ {:.2f} $n m$/step, $\chi^2/ndof =${:.2f}".format(popt_z3m[0] * 1000, np.sqrt(pcov_z3m[0][0]) * 1000, chi_z3m), loc=4)
+        ax[1,0].add_artist(anchored_text)
+        
+        ax[1,0].legend()
+        plt.grid()
+        #plt.savefig("Plots\Calibration\Z3_" + str(Voltage) + ".pdf")
+        #plt.show()
+    
+    print("slope in nm/step z3-:", popt_z3p[0] * 1000, " +- ", np.sqrt(pcov_z3p[0][0]) * 1000, " chi^2 ", chi_z3p)
+    print("slope in nm/step z3+:", popt_z3m[0] * 1000, " +- ", np.sqrt(pcov_z3m[0][0]) * 1000, " chi^2 ", chi_z3p)
+    
+    #ZALL
+    if(plots):
+        ax[1,1].set_title("ZAll calibration fit " + str(Voltage) + " V")
+        ax[1,1].set_xlabel("# of steps")
+        ax[1,1].set_ylabel(r"Measured Movement [$\mu m$]")
+        ax[1,1].errorbar(xp, zAllp, error_zAll, linestyle="none", marker=".", linewidth=lw, color="tab:purple", label="zAll- data", capsize=capsize)
+        ax[1,1].errorbar(xp, zAllm, error_zAll, linestyle="none", marker=".", linewidth=lw, color="m", label="zAll+ data", capsize=capsize)
+        ax[1,1].plot(xp, linear(xp, popt_zAllp[0]), linewidth=lw, color="tab:purple", label="zAll- fit")
+        ax[1,1].plot(xp, linear(xp, popt_zAllm[0]), linewidth=lw, color="m", label="zAll+ fit")
+    
+        #ax = plt.gca()
+        anchored_text = AnchoredText(r"$b_-$= {:.2f} $\pm$ {:.2f} $n m$/step, $\chi^2/ndof =${:.2f}".format(popt_zAllp[0] * 1000, np.sqrt(pcov_zAllp[0][0]) * 1000, chi_zAllp) + "\n" + "$b_+$= {:.2f} $\pm$ {:.2f} $n m$/step, $\chi^2/ndof =${:.2f}".format(popt_zAllm[0] * 1000, np.sqrt(pcov_zAllm[0][0]) * 1000, chi_zAllm), loc=4)
+        ax[1,1].add_artist(anchored_text)
+        
+        ax[1,1].legend()
+        plt.grid()
+        plt.savefig("Plots\Calibration\Z_" + str(Voltage) + ".pdf")
+        plt.savefig("Plots\Calibration\Z_" + str(Voltage) + ".png", dpi=300)
+        plt.show()
+    
+    print("slope in nm/step zAll-:", popt_zAllp[0] * 1000, " +- ", np.sqrt(pcov_zAllp[0][0]) * 1000, " chi^2 ", chi_zAllp)
+    print("slope in nm/step zAll+:", popt_zAllm[0] * 1000, " +- ", np.sqrt(pcov_zAllm[0][0]) * 1000, " chi^2 ", chi_zAllp)
+
+def linear(x, b):
+    return b*x
+
+def Volt85(data, plots):
+    print("85 V")
+    x = data[0]
+    z1 = data[1]
+    z2 = data[2]
+    z3 = data[3]
+    zAll = data[4]
+    
+    xp = x[:6]
+    xm = x[6:12]
+    z1p = z1[:6]
+    z1m = z1[6:12]
+    z2p = z2[:6]
+    z2m = z2[6:12]
+    z3p = z3[:6]
+    z3m = z3[6:12]
+    zAllp = zAll[:6]
+    zAllm = zAll[6:12]
+    
+    FitAndPlot(xp, xm, z1p, z1m, z2p, z2m, z3p, z3m, zAllp, zAllm, 85, plots)
+
+def Volt100(data, plots):
+    print("100 V")
+    x = data[0]
+    z1 = data[1]
+    z2 = data[2]
+    z3 = data[3]
+    zAll = data[4]
+    
+    xp = x[18:24]
+    xm = x[24:30]
+    z1p = z1[18:24]
+    z1m = z1[24:30]
+    z2p = z2[18:24]
+    z2m = z2[24:30]
+    z3p = z3[18:24]
+    z3m = z3[24:30]
+    zAllp = zAll[18:24]
+    zAllm = zAll[24:30]
+    
+    FitAndPlot(xp, xm, z1p, z1m, z2p, z2m, z3p, z3m, zAllp, zAllm, 100, plots)
+
+def Volt125(data, plots):
+    print("125 V")
+    x = data[0]
+    z1 = data[1]
+    z2 = data[2]
+    z3 = data[3]
+    zAll = data[4]
+    
+    xp = x[36:42]
+    xm = x[42:48]
+    z1p = z1[36:42]
+    z1m = z1[42:48]
+    z2p = z2[36:42]
+    z2m = z2[42:48]
+    z3p = z3[36:42]
+    z3m = z3[42:48]
+    zAllp = zAll[36:42]
+    zAllm = zAll[42:48]
+    
+    FitAndPlot(xp, xm, z1p, z1m, z2p, z2m, z3p, z3m, zAllp, zAllm, 125, plots)
+
+
+def main():
+    plots = True
+
+    file = "C:\MaskAligner\Data\Calibration.csv"
+
+    # very Simple commandline parser
+    if("--no_plots" in sys.argv):
+        plots = False
+    
+    if("--file" in sys.argv or "-f" in sys.argv):
+        for i in range(len(sys.argv)):
+            if("--file" in sys.argv[i] or "-f" == sys.argv[i]):
+                try:
+                    file = sys.argv[i+1]
+                except:
+                    print("No file or incorrect file specification.")
+     
+
+    data = np.genfromtxt(file, skip_header=1, usecols=[1,2,3,4,5], delimiter=",")
+    data = data.T
+    
+    Volt85(data, plots)
+    Volt100(data, plots)
+    Volt125(data, plots)
+
+if __name__ == "__main__":
+    main()
\ No newline at end of file
diff --git a/PythonScripts/CheckScrewUpDownZ3Z2.py b/PythonScripts/CheckScrewUpDownZ3Z2.py
new file mode 100644
index 0000000000000000000000000000000000000000..df301ea1c34d0fb1bae66f67fe779f406d63ad31
--- /dev/null
+++ b/PythonScripts/CheckScrewUpDownZ3Z2.py
@@ -0,0 +1,195 @@
+import numpy as np
+import matplotlib.pyplot as plt
+import sys
+
+def main():
+    if("--no_plots" in sys.argv):
+        plots = False
+
+    #plt.style.use('tableau-colorblind10')
+
+    file = "C:/MaskAligner/Data/CalibrationScrew/Calib_04_10_23.txt"
+    if("--file" in sys.argv or "-f" in sys.argv):
+        for i in range(len(sys.argv)):
+            if("--file" in sys.argv[i] or "-f" == sys.argv[i]):
+                try:
+                    file = sys.argv[i+1]
+                except:
+                    print("No file or incorrect file specification.")
+                     
+    factor = 9000
+    data = np.genfromtxt(file, delimiter="\t", skip_header=1)
+    data = data.T
+    rot = data[0]
+    z3m = data[1] / factor * 10**6
+    z3p = data[2] / factor * 10**6
+    z2m = data[3] / factor * 10**6
+    z2p = data[4] / factor * 10**6
+    
+    z3mu = data[11] / factor * 10**6
+    z3md = data[12] / factor * 10**6
+    z3pu = data[13] / factor * 10**6
+    z3pd = data[14] / factor * 10**6
+    
+    z3left01 = data[23]
+    z3left02 = data[24]
+    z3left03 = data[25]
+    z3mid = data[26]
+    z3right = data[27]
+    z3right02 = data[28]
+    
+    z3left01_c = data[30]
+    z3left02_c = data[31]
+    z3mid_c = data[32]
+    z3right_c = data[33]
+    z3right02_c = data[34]
+    
+    rot_d = data[37] 
+    z3m_d = data[38] / factor * 10**6
+    z3p_d = data[40] / factor * 10**6
+    z2m_d = data[39] / factor * 10**6
+    z2p_d = data[41] / factor * 10**6
+    
+    rot_d = rot_d[~np.isnan(rot_d)]
+    z3m_d = z3m_d[~np.isnan(z3m_d)]
+    z3p_d = z3p_d[~np.isnan(z3p_d)]
+    z2m_d = z2m_d[~np.isnan(z2m_d)]
+    z2p_d = z2p_d[~np.isnan(z2p_d)]
+    
+    rot_dp = data[43]
+    z3_dp_m = data[44] / factor * 10**6
+    z3_dp_p = data[45] / factor * 10**6
+    
+    z3AngleX = [z3left01[0], z3left02[0], z3left03[0], z3mid[0], z3right[0], z3right02[0]]
+    z3AngleX_copper = [z3left01_c[0], z3left02_c[0], z3mid_c[0], z3right_c[0], z3right02_c[0]]
+    
+    z_err = 0.04 / factor * 10**6
+    
+    z3p_vars = []
+    z3m_vars = []
+    
+    rot_z3 = rot
+    
+    for i in range(1):
+        z3p_vars.append(np.roll(z3p, i))
+        z3m_vars.append(np.roll(z3m, i))
+        
+    for i in range(len(z3p_vars)):
+        plt.errorbar(rot_z3, z3p_vars[i], z_err, label="z3+ " + str(i), marker=".", capsize=3)
+        plt.errorbar(rot_z3, z3m_vars[i], z_err, label="z3- " + str(i), marker=".", capsize=3)
+    plt.errorbar(rot, z2p, z_err, label="z2+", marker=".", capsize=3)
+    plt.errorbar(rot, z2m, z_err, label="z2-", marker=".", capsize=3)
+    plt.xlabel("screw rotations from arbitrary 0. Larger means less firm screw.")
+    plt.ylabel("stepsize [nm]")
+    
+    plt.legend()
+    plt.savefig("Plots/Z3Examine/ScrewRot.png", dpi=300)
+    plt.savefig("Plots/Z3Examine/ScrewRot.pdf", dpi=300)
+    plt.show()
+    
+    plt.plot(rot, z2p/z2m, label="z2 ratio", marker=".")
+    plt.plot(rot, z3p/z3m, label="z3 ratio", marker=".")
+    plt.xlabel("screw rotations from arbitrary 0. Larger means less firm screw.")
+    plt.ylabel("ration up/down")
+    plt.legend()
+    plt.savefig("Plots/Z3Examine/UpDownRatio.png", dpi=300)
+    plt.savefig("Plots/Z3Examine/UpDownRatio.pdf", dpi=300)
+    plt.show()
+    
+    plt.errorbar(1 + 0.1, np.nanmean(z3mu), np.nanstd(z3mu, ddof=1), label="wobble up", capsize=3, marker=".")
+    plt.errorbar(-1 - 0.1, np.nanmean(z3pu), np.nanstd(z3pu, ddof=1), label="wobble up", capsize=3, marker=".")
+    plt.errorbar(1 - 0.1, np.nanmean(z3md), np.nanstd(z3md, ddof=1), label="wobble down", capsize=3, marker=".")
+    plt.errorbar(-1 + 0.1, np.nanmean(z3pd), np.nanstd(z3pd, ddof=1), label="wobble down", capsize=3, marker=".")
+    plt.xlabel("movement direction -1 = approach / +1 = retract")
+    plt.ylabel("stepsize [nm]")
+    plt.legend()
+    plt.savefig("Plots/Z3Examine/ScrewWobble.png", dpi=300)
+    plt.savefig("Plots/Z3Examine/ScrewWobble.pdf", dpi=300)
+    plt.show()
+    
+    z3AngleY = np.array([np.nanmean(z3left01[1:]), np.nanmean(z3left02[1:]), np.nanmean(z3left03[1:]), np.nanmean(z3mid[1:]), np.nanmean(z3right[1:]), np.nanmean(z3right02[1:])]) / factor * 10**6
+    z3AngleY_err = np.array([np.nanstd(z3left01[1:], ddof=1), np.nanstd(z3left02[1:], ddof=1), np.nanstd(z3left03[1:], ddof=1), np.nanstd(z3mid[1:], ddof=1), np.nanstd(z3right[1:], ddof=1), np.nanstd(z3right02[1:], ddof=1)]) / factor * 10**6
+    
+    z3AngleY_copper = np.array([np.nanmean(z3left01_c[1:]), np.nanmean(z3left02_c[1:]), np.nanmean(z3mid_c[1:]), np.nanmean(z3right_c[1:]), np.nanmean(z3right02_c[1:])]) / factor * 10**6
+    z3AngleY_err_copper = np.array([np.nanstd(z3left01_c[1:], ddof=1), np.nanstd(z3left02_c[1:], ddof=1), np.nanstd(z3mid_c[1:], ddof=1), np.nanstd(z3right_c[1:], ddof=1), np.nanstd(z3right02_c[1:], ddof=1)]) / factor * 10**6
+    
+    plt.errorbar(z3AngleX, z3AngleY, z3AngleY_err, capsize=3, marker=".", linestyle="none", label="w/o copper wire")
+    plt.errorbar(z3AngleX_copper, z3AngleY_copper, z3AngleY_err_copper, capsize=3, marker=".", linestyle="none", label="copper wire")
+    plt.xlabel("rotation of front piezo plate [°]")
+    plt.ylabel("stepsize [nm]")
+    plt.legend()
+    plt.savefig("Plots/Z3Examine/FrontPlateAngle.png", dpi=300)
+    plt.savefig("Plots/Z3Examine/FrontPlateAngle.pdf", dpi=300)
+    plt.show()
+    
+    plt.errorbar(rot_d, z3p_d, z_err, label="z3+ ", marker=".", capsize=3, color="tab:blue")
+    plt.errorbar(rot_d, z3m_d, z_err, label="z3- ", marker=".", capsize=3, color="tab:orange")
+    plt.errorbar(rot_d, z2p_d, z_err, label="z2+", marker=".", capsize=3, color="tab:green")
+    plt.errorbar(rot_d, z2m_d, z_err, label="z2-", marker=".", capsize=3, color="tab:red")
+    
+    #plt.errorbar(rot_z3[:3], z3p_vars[0][:3], z_err, label="z3+ " + str(i), marker=".", capsize=3, color="blue")
+    #plt.errorbar(rot_z3[:3], z3m_vars[0][:3], z_err, label="z3- " + str(i), marker=".", capsize=3, color="orange")
+    #plt.errorbar(rot[:3], z2p[:3], z_err, label="z2+", marker=".", capsize=3, color="green")
+    #plt.errorbar(rot[:3], z2m[:3], z_err, label="z2-", marker=".", capsize=3, color="red")
+    
+    plt.xlabel("screw rotations from arbitrary 0. Larger means less firm screw.")
+    plt.ylabel("stepsize [nm]")
+    plt.legend()
+    plt.savefig("Plots/Z3Examine/ScrewRot_detail.png", dpi=300)
+    plt.savefig("Plots/Z3Examine/ScrewRot_detail.pdf", dpi=300)
+    plt.show()
+    
+    plt.errorbar(rot_z3, z3p_vars[0], z_err, label="z3+ ", marker=".", capsize=3)
+    plt.errorbar(rot_z3, z3m_vars[0], z_err, label="z3- ", marker=".", capsize=3)
+    plt.errorbar(-rot_dp + 5, z3_dp_p, z_err, label="z3+ with z1 front plate", marker=".", capsize=3)
+    plt.errorbar(-rot_dp + 5, z3_dp_m, z_err, label="z3- with z1 front plate", marker=".", capsize=3)
+    plt.errorbar(rot, z2p, z_err, label="z2+", marker=".", capsize=3)
+    plt.errorbar(rot, z2m, z_err, label="z2-", marker=".", capsize=3)
+    plt.xlabel("screw rotations from arbitrary 0. Larger means less firm screw.")
+    plt.ylabel("stepsize [nm]")
+    
+    data_2 = np.genfromtxt("C:/MaskAligner/Data/CalibrationScrew/31_10_23.csv", skip_header=1, delimiter=",")
+    data_2 = data_2.T
+    x = data_2[0]
+    y_up = data_2[1] / factor * 10**6
+    y_down = data_2[2] / factor * 10**6
+    y_err = 0.04 / factor * 10**6
+    y_err_2 = 0.1 / factor * 10**6
+    
+    data_3 = np.genfromtxt("C:/MaskAligner/Data/CalibrationScrew/NewPlate_03_11_23.csv", skip_header=1, delimiter=",")
+    print(data_3)
+    data_3 = data_3.T
+    x_2 = data_3[0]
+    y_up_2 = data_3[1] / factor * 10**6
+    y_down_2 = data_3[2] / factor * 10**6
+    y_err_2 = data_3[3] / factor * 10**6
+    y_err_2_2 = data_3[4] / factor * 10**6
+    
+    plt.errorbar(x, y_up, z_err, label="z3+ with new plate", marker=".", capsize=3)
+    plt.errorbar(x, y_down, z_err, label="z3- with new plate", marker=".", capsize=3)
+    
+    plt.legend()
+    plt.savefig("Plots/Z3Examine/ScrewRot_CompareSwappedPlate.png", dpi=300)
+    plt.savefig("Plots/Z3Examine/ScrewRot_CompareSwappedPlate.pdf", dpi=300)
+    plt.show()
+    
+    #plt.errorbar(-rot_dp + 5, z3_dp_p, z_err, label="z3+ with z1 front plate", marker=".", capsize=3)
+    #plt.errorbar(-rot_dp + 5, z3_dp_m, z_err, label="z3- with z1 front plate", marker=".", capsize=3)
+    plt.xlabel("screw rotations from arbitrary 0. Larger means less firm screw.")
+    plt.ylabel("stepsize [nm]")
+    
+    plt.errorbar(x_2, y_up_2, y_err_2, label="z3+ with new plate 02_11", marker=".", capsize=3)
+    plt.errorbar(x_2, y_down_2, y_err_2_2, label="z3- with new plate 02_11", marker=".", capsize=3)
+    #plt.errorbar(x, y_up, y_err, label="z3+ with new plate", marker=".", capsize=3)
+    #plt.errorbar(x, y_down, y_err, label="z3- with new plate", marker=".", capsize=3)
+    plt.errorbar(rot, z2p, z_err, label="z2+", marker=".", capsize=3)
+    plt.errorbar(rot, z2m, z_err, label="z2-", marker=".", capsize=3)
+    
+    plt.legend()
+    plt.savefig("Plots/Z3Examine/ScrewRot_SwappedPlate.png", dpi=300)
+    plt.savefig("Plots/Z3Examine/ScrewRot_SwappedPlate.pdf", dpi=300)
+    plt.show()
+
+
+if __name__ == "__main__":
+    main()
\ No newline at end of file
diff --git a/PythonScripts/PlotApproachAndReversedretract.py b/PythonScripts/PlotApproachAndReversedretract.py
new file mode 100644
index 0000000000000000000000000000000000000000..22dd4fc7fa1f57eaec17cda4f9bba17ae948fb9e
--- /dev/null
+++ b/PythonScripts/PlotApproachAndReversedretract.py
@@ -0,0 +1,161 @@
+import numpy as np
+import matplotlib.pyplot as plt
+
+def datahandling(data_app):
+    c1_app = data_app[0]
+    c2_app = data_app[1]
+    c3_app = data_app[2]
+    
+    c1_app_err = data_app[3]
+    c2_app_err = data_app[4]
+    c3_app_err = data_app[5]
+    
+    x = np.arange(0, len(c1_app), 1.0)
+    
+    #Throw out mismeasurements, where error is very large and values where c is NaN
+    c1_app_err_mean = np.nanmean(c1_app_err)
+    mask_c1_app = np.where(c1_app_err > c1_app_err_mean * 4, False, True)
+    mask_c1_app_nan = np.where(np.isnan(c1_app), False, True)
+    c2_app_err_mean = np.nanmean(c2_app_err)
+    mask_c2_app = np.where(c2_app_err > c2_app_err_mean * 4, False, True)
+    mask_c2_app_nan = np.where(np.isnan(c2_app), False, True)
+    c3_app_err_mean = np.nanmean(c3_app_err)
+    mask_c3_app = np.where(c3_app_err > c3_app_err_mean * 4, False, True)
+    mask_c3_app_nan = np.where(np.isnan(c3_app), False, True)
+    full_mask = np.logical_and(np.logical_and(np.logical_and(np.logical_and(np.logical_and(mask_c1_app, mask_c2_app), mask_c3_app), mask_c1_app_nan), mask_c2_app_nan), mask_c3_app_nan)
+    c1_app = c1_app[full_mask]
+    c1_app_err = c1_app_err[full_mask]
+    c2_app = c2_app[full_mask]
+    c2_app_err = c2_app_err[full_mask]
+    c3_app = c3_app[full_mask]
+    c3_app_err = c3_app_err[full_mask]
+    x = x[full_mask]
+    
+    #Ensure no 0 uncertainties for fitting purposes
+    c1_app_err = np.where(c1_app_err == 0, np.nanmax(c1_app_err), c1_app_err)
+    c2_app_err = np.where(c2_app_err == 0, np.nanmax(c2_app_err), c2_app_err)
+    c3_app_err = np.where(c3_app_err == 0, np.nanmax(c3_app_err), c3_app_err)
+    
+    #Ensure no NaN values in errors and capacitances
+    
+    c1_app_err = np.where(np.isnan(c1_app_err), np.nanmax(c1_app_err), c1_app_err)
+    c2_app_err = np.where(np.isnan(c2_app_err), np.nanmax(c2_app_err), c2_app_err)
+    c3_app_err = np.where(np.isnan(c3_app_err), np.nanmax(c3_app_err), c3_app_err)
+
+    try:
+        step_s = data_app[12][0]
+        step_s_err = data_app[12][1]
+    except:
+        step_s = 69
+        step_s_err = 1
+        print("No stepsizes specified! Assuming Hard Coded Default!")
+    
+    c_diff_1 = np.ones(len(c1_app) - 1)
+    c_diff_2 = np.ones(len(c2_app) - 1)
+    c_diff_3 = np.ones(len(c3_app) - 1)
+    
+    c_diff_1_err = np.ones(len(c1_app) - 1)
+    c_diff_2_err = np.ones(len(c2_app) - 1)
+    c_diff_3_err = np.ones(len(c3_app) - 1)
+    
+    for i in range(len(c1_app)-1):
+        c_diff_1[i] = c1_app[i+1] - c1_app[i]
+        c_diff_2[i] = c2_app[i+1] - c2_app[i]
+        c_diff_3[i] = c3_app[i+1] - c3_app[i]
+    
+        c_diff_1_err[i] = np.sqrt(c1_app_err[i+1]**2 + c1_app_err[i]**2)
+        c_diff_2_err[i] = np.sqrt(c2_app_err[i+1]**2 + c2_app_err[i]**2)
+        c_diff_3_err[i] = np.sqrt(c3_app_err[i+1]**2 + c3_app_err[i]**2)
+        
+    return x, step_s, step_s_err, c1_app, c2_app, c3_app, c1_app_err, c2_app_err, c3_app_err, c_diff_1, c_diff_2, c_diff_3, c_diff_1_err, c_diff_2_err, c_diff_3_err
+
+def main():
+    no_err = False
+    no_diff_err = False
+
+    data_app = np.genfromtxt("C:\MaskAligner\Data\ApproachCurve21_11_23_ToFullContact.csv", delimiter=",").T
+    data_retr = np.genfromtxt("C:\MaskAligner\Data\RetractCurve_21_11_23_600.csv", delimiter=",").T
+    
+    x, step_s, step_s_err, c1, c2, c3, c1_err, c2_err, c3_err, c_diff_1, c_diff_2, c_diff_3, c_diff_1_err, c_diff_2_err, c_diff_3_err = datahandling(data_app)
+    x_retr, _, _, c1_retr, c2_retr, c3_retr, c1_err_retr, c2_err_retr, c3_err_retr, c_diff_1_retr, c_diff_2_retr, c_diff_3_retr, c_diff_1_err_retr, c_diff_2_err_retr, c_diff_3_err_retr = datahandling(data_retr)
+    
+    lw = 0.75
+    ms = 2
+    
+    x_retr *= 1.18
+    
+    fig, ax = plt.subplots(2, 3)
+    fig.set_figheight(9)
+    fig.set_figwidth(16)
+    
+    if not no_err:
+        ax[0,0].errorbar(x, c1, c1_err, color="tab:red", marker="x", markersize=ms, linestyle="--", linewidth=lw, capsize=3, label="approach")
+        ax[0,0].errorbar(x_retr, c1_retr[::-1], c1_err_retr[::-1], color="tab:orange", marker="x", markersize=ms, linestyle="--", linewidth=lw, capsize=3, label="retract reversed")
+    else:
+        ax[0,0].plot(x, c1, color="tab:red", marker="x", markersize=ms, linestyle="--", linewidth=lw)
+    ax[0,0].set_title("Capacitance 1")
+    ax[0,0].set_xlabel("Step [" + str(step_s) + "±" + str(step_s_err) + " nm]")
+    ax[0,0].set_ylabel("Capacitance [pF]")
+    
+    if not no_err:
+        ax[0,1].errorbar(x, c2, c2_err, color="tab:green", marker="x", markersize=ms, linestyle="--", linewidth=lw, capsize=3, label="approach")
+        ax[0,1].errorbar(x_retr, c2_retr[::-1], c2_err_retr[::-1], color="tab:olive", marker="x", markersize=ms, linestyle="--", linewidth=lw, capsize=3, label="retract reversed")
+    else:
+        ax[0,1].plot(x, c2, color="tab:green", marker="x", markersize=ms, linestyle="--", linewidth=lw)
+    ax[0,1].set_title("Capacitance 2")
+    ax[0,1].set_xlabel("Step [" + str(step_s) + "±" + str(step_s_err) + " nm]")
+    ax[0,1].set_ylabel("Capacitance [pF]")
+    
+    if not no_err:
+        ax[0,2].errorbar(x, c3, c3_err, color="tab:blue", marker="x", markersize=ms, linestyle="--", linewidth=lw, capsize=3, label="approach")
+        ax[0,2].errorbar(x_retr, c3_retr[::-1], c3_err_retr[::-1], color="tab:cyan", marker="x", markersize=ms, linestyle="--", linewidth=lw, capsize=3, label="retract reversed")
+    else:
+        ax[0,2].plot(x, c3, color="tab:blue", marker="x", markersize=ms, linestyle="--", linewidth=lw)
+    ax[0,2].set_title("Capacitance 3")
+    ax[0,2].set_xlabel("Step [" + str(step_s) + "±" + str(step_s_err) + " nm]")
+    ax[0,2].set_ylabel("Capacitance [pF]")
+    
+    if not no_diff_err and not no_err:
+        ax[1,0].errorbar(x[1:], c_diff_1, c_diff_1_err, color="tab:red", marker="x", markersize=ms, linestyle="--", linewidth=lw, capsize=3, label="approach")
+        ax[1,0].errorbar(x_retr[1:], c_diff_1_retr[::-1], c_diff_1_err_retr[::-1], color="tab:orange", marker="x", markersize=ms, linestyle="--", linewidth=lw, capsize=3, label="retract reversed")
+    else:
+        ax[1,0].plot(x[1:], c_diff_1, color="tab:red", marker="x", markersize=ms, linestyle="--", linewidth=lw)
+    ax[1,0].set_title("Diff Capacitance 1")
+    ax[1,0].set_xlabel("Step [" + str(step_s) + "±" + str(step_s_err) + " nm]")
+    ax[1,0].set_ylabel("Capacitance [pF]")
+    #ax[1,0].set_ylim(-0.0025, 0.02)
+    
+    if not no_diff_err and not no_err:
+        ax[1,1].errorbar(x[1:], c_diff_2, c_diff_2_err, color="tab:green", marker="x", markersize=ms, linestyle="--", linewidth=lw, capsize=3, label="approach")
+        ax[1,1].errorbar(x_retr[1:], c_diff_2_retr[::-1], c_diff_2_err_retr[::-1], color="tab:olive", marker="x", markersize=ms, linestyle="--", linewidth=lw, capsize=3, label="retract reversed")
+    else:
+        ax[1,1].plot(x[1:], c_diff_2, color="tab:green", marker="x", markersize=ms, linestyle="--", linewidth=lw)
+    ax[1,1].set_title("Diff Capacitance 2")
+    ax[1,1].set_xlabel("Step [" + str(step_s) + "±" + str(step_s_err) + " nm]")
+    ax[1,1].set_ylabel("Capacitance [pF]")
+    #ax[1,1].set_ylim(-0.0015, 0.008)
+    
+    if not no_diff_err and not no_err:
+        ax[1,2].errorbar(x[1:], c_diff_3, c_diff_3_err, color="tab:blue", marker="x", markersize=ms, linestyle="--", linewidth=lw, capsize=3, label="approach")
+        ax[1,2].errorbar(x_retr[1:], c_diff_3_retr[::-1], c_diff_3_err_retr[::-1], color="tab:cyan", marker="x", markersize=ms, linestyle="--", linewidth=lw, capsize=3, label="retract reversed")
+    else:
+        ax[1,2].plot(x[1:], c_diff_3, color="tab:blue", marker="x", markersize=ms, linestyle="--", linewidth=lw)
+    ax[1,2].set_title("Diff Capacitance 3")
+    ax[1,2].set_xlabel("Step [" + str(step_s) + "±" + str(step_s_err) + " nm]")
+    ax[1,2].set_ylabel("Capacitance [pF]")
+    #ax[1,2].set_ylim(-0.002, 0.005)
+    
+    ax[0,0].legend()
+    ax[0,1].legend()
+    ax[0,2].legend()
+    ax[1,0].legend()
+    ax[1,1].legend()
+    ax[1,2].legend()
+    
+    fig.tight_layout()
+    plt.show()
+        
+    
+if __name__ == "__main__":
+    main()
+    
\ No newline at end of file
diff --git a/PythonScripts/PlotApproachCurve.py b/PythonScripts/PlotApproachCurve.py
new file mode 100644
index 0000000000000000000000000000000000000000..d2183a97f3996de5ab32d9567a14828e5fe467da
--- /dev/null
+++ b/PythonScripts/PlotApproachCurve.py
@@ -0,0 +1,302 @@
+# -*- coding: utf-8 -*-
+"""
+Created on Wed Aug  9 14:45:10 2023
+
+@author: Luzifer
+"""
+
+import matplotlib.pyplot as plt
+import numpy as np
+import sys
+from matplotlib.offsetbox import AnchoredText
+from scipy.optimize import curve_fit
+
+def func(x, shift, stretch):
+    return shift + x * stretch
+
+def linear(x, a, b, c):
+    return a + x*b + x**2 * c
+
+def main():
+    path = "C:\MaskAligner\Data\ApproachCurve16_08_23.csv"
+    save = ""
+    no_err = False
+    no_diff_err = False
+    correlation = True
+    plot_correlation = True
+    
+    #Simple command line parsing
+    if("--file" in sys.argv or "-f" in sys.argv):
+        for i in range(len(sys.argv)):
+            if(sys.argv[i] == "--file" or sys.argv[i] == "-f"):
+                try:
+                    path = sys.argv[i+1]
+                except:
+                    print("incorrect file path.")
+                    return
+                    
+    if("--save" in sys.argv or "-s" in sys.argv):
+        for i in range(len(sys.argv)):
+            if(sys.argv[i] == "--save" or sys.argv[i] == "-s"):
+                try:
+                    save = sys.argv[i+1]
+                except:
+                    print("incorrect save file name.")
+                    return
+
+    if("--no_diff_error" in sys.argv):
+        no_diff_err = True
+        
+    if("--no_error" in sys.argv):
+        no_err = True
+
+    if("--no_correlation" in sys.argv):
+        correlation = False
+        
+    if("--plot_correlation" in sys.argv):
+        plot_correlation = True
+
+    if("--help" in sys.argv or "-h" in sys.argv):
+        print("--file x or -f x: plots the approach curve of file at filepath x. File must be csv, txt and must be formatted: c1, c2, c3, c1_err, c2_err, c3_err, c1_raw, c2_raw, c3_raw, c1_raw_error, c2_raw_error, c3_raw_error, additional_info.")
+        print("--save x or -s x: saves the resulting plot with filename x. If x is left blank it will determine filename from input file. Should come as last command, since otherwise it will interpret following command as filename.")
+        print("--no_diff_err: Omits errorbars on the capacitance differences.")
+        print("--no_err: Omits errorbars on all plots.")
+        print("--no_correlation: skips c1/c2, c1/c3, c2/c3 correlation calculation.")
+        print("--plot_correlation: plots c1 and c2 with correlated other capacitances. Does nothing if --no_correlation is also given.")
+        return
+
+    data = np.genfromtxt(path, delimiter=",")
+    data = data.T
+    
+    c1 = data[0]
+    c2 = data[1]
+    c3 = data[2]
+    
+    c1_err = data[3]
+    c2_err = data[4]
+    c3_err = data[5]
+    
+    x = np.arange(0,len(c1), 1)
+    
+    #Throw out mismeasurements, where error is very large and values where c is NaN and where difference to neighbouring values is large
+    c1_err_mean = np.nanmean(c1_err)
+    mask_c1 = np.where(c1_err > c1_err_mean * 4, False, True)
+    mask_c1_nan = np.where(np.isnan(c1), False, True)
+    c2_err_mean = np.nanmean(c2_err)
+    mask_c2 = np.where(c2_err > c2_err_mean * 4, False, True)
+    mask_c2_nan = np.where(np.isnan(c2), False, True)
+    c3_err_mean = np.nanmean(c3_err)
+    mask_c3 = np.where(c3_err > c3_err_mean * 4, False, True)
+    mask_c3_nan = np.where(np.isnan(c3), False, True)
+    c1_dif = np.diff(c1)
+    c2_dif = np.diff(c2)
+    c3_dif = np.diff(c3)
+    full_mask = np.logical_and(np.logical_and(np.logical_and(np.logical_and(np.logical_and(mask_c1, mask_c2), mask_c3), mask_c1_nan), mask_c2_nan), mask_c3_nan)
+    c1 = c1[full_mask]
+    c1_err = c1_err[full_mask]
+    c2 = c2[full_mask]
+    c2_err = c2_err[full_mask]
+    c3 = c3[full_mask]
+    c3_err = c3_err[full_mask]
+    x = x[full_mask]
+    
+    #Ensure no 0 uncertainties for fitting purposes
+    c1_err = np.where(c1_err == 0, np.nanmax(c1_err), c1_err)
+    c2_err = np.where(c2_err == 0, np.nanmax(c2_err), c2_err)
+    c3_err = np.where(c3_err == 0, np.nanmax(c3_err), c3_err)
+    
+    #Ensure no NaN values in errors and capacitances
+    
+    c1_err = np.where(np.isnan(c1_err), np.nanmax(c1_err), c1_err)
+    c2_err = np.where(np.isnan(c2_err), np.nanmax(c2_err), c2_err)
+    c3_err = np.where(np.isnan(c3_err), np.nanmax(c3_err), c3_err)
+
+    try:
+        step_s = data[12][0]
+        step_s_err = data[12][1]
+    except:
+        step_s = 69
+        step_s_err = 1
+        print("No stepsizes specified! Assuming Hard Coded Default!")
+    
+    c_diff_1 = np.ones(len(c1) - 1)
+    c_diff_2 = np.ones(len(c2) - 1)
+    c_diff_3 = np.ones(len(c3) - 1)
+    
+    c_diff_1_err = np.ones(len(c1) - 1)
+    c_diff_2_err = np.ones(len(c2) - 1)
+    c_diff_3_err = np.ones(len(c3) - 1)
+    
+    for i in range(len(c1)-1):
+        c_diff_1[i] = c1[i+1] - c1[i]
+        c_diff_2[i] = c2[i+1] - c2[i]
+        c_diff_3[i] = c3[i+1] - c3[i]
+    
+        c_diff_1_err[i] = np.sqrt(c1_err[i+1]**2 + c1_err[i]**2)
+        c_diff_2_err[i] = np.sqrt(c2_err[i+1]**2 + c2_err[i]**2)
+        c_diff_3_err[i] = np.sqrt(c3_err[i+1]**2 + c3_err[i]**2)
+        
+    #for i in range(len(c1)-5):
+    #    popt_c1, pcov_c1 = curve_fit(linear, x[i:i+5], c1[i:i+5], sigma=c1_err[i:i+5])
+    #    popt_c2, pcov_c2 = curve_fit(linear, x[i:i+5], c2[i:i+5], sigma=c2_err[i:i+5])
+    #    popt_c3, pcov_c3 = curve_fit(linear, x[i:i+5], c3[i:i+5], sigma=c3_err[i:i+5])
+        
+    #    c_diff_1[i] = popt_c1[1] + popt_c1[2] * c1[i]
+    #    c_diff_2[i] = popt_c2[1] + popt_c2[2] * c2[i]
+    #    c_diff_3[i] = popt_c3[1] + popt_c3[2] * c3[i]
+        
+    #    c_diff_1_err[i] = np.sqrt(pcov_c1[1][1])
+    #    c_diff_2_err[i] = np.sqrt(pcov_c2[1][1])
+    #    c_diff_3_err[i] = np.sqrt(pcov_c3[1][1])
+   
+    del data
+
+    lw = 0.75
+    ms = 2
+    
+    fig, ax = plt.subplots(2, 3)
+    fig.set_figheight(9)
+    fig.set_figwidth(16)
+    
+    if not no_err:
+        ax[0,0].errorbar(x, c1, c1_err, color="tab:red", marker="x", markersize=ms, linestyle="--", linewidth=lw, capsize=3)
+    else:
+        ax[0,0].plot(x, c1, color="tab:red", marker="x", markersize=ms, linestyle="--", linewidth=lw)
+    ax[0,0].set_title("Capacitance 1")
+    ax[0,0].set_xlabel("Step [" + str(step_s) + "±" + str(step_s_err) + " nm]")
+    ax[0,0].set_ylabel("Capacitance [pF]")
+    
+    if not no_err:
+        ax[0,1].errorbar(x, c2, c2_err, color="tab:green", marker="x", markersize=ms, linestyle="--", linewidth=lw, capsize=3)
+    else:
+        ax[0,1].plot(x, c2, color="tab:green", marker="x", markersize=ms, linestyle="--", linewidth=lw)
+    ax[0,1].set_title("Capacitance 2")
+    ax[0,1].set_xlabel("Step [" + str(step_s) + "±" + str(step_s_err) + " nm]")
+    ax[0,1].set_ylabel("Capacitance [pF]")
+    
+    if not no_err:
+        ax[0,2].errorbar(x, c3, c3_err, color="tab:blue", marker="x", markersize=ms, linestyle="--", linewidth=lw, capsize=3)
+    else:
+        ax[0,2].plot(x, c3, color="tab:blue", marker="x", markersize=ms, linestyle="--", linewidth=lw)
+    ax[0,2].set_title("Capacitance 3")
+    ax[0,2].set_xlabel("Step [" + str(step_s) + "±" + str(step_s_err) + " nm]")
+    ax[0,2].set_ylabel("Capacitance [pF]")
+    
+    if not no_diff_err and not no_err:
+        ax[1,0].errorbar(x[1:], c_diff_1, c_diff_1_err, color="tab:red", marker="x", markersize=ms, linestyle="--", linewidth=lw, capsize=3)
+    else:
+        ax[1,0].plot(x[1:], c_diff_1, color="tab:red", marker="x", markersize=ms, linestyle="--", linewidth=lw)
+    ax[1,0].set_title("Diff Capacitance 1")
+    ax[1,0].set_xlabel("Step [" + str(step_s) + "±" + str(step_s_err) + " nm]")
+    ax[1,0].set_ylabel("Capacitance [pF]")
+    #ax[1,0].set_ylim(-0.0025, 0.02)
+    
+    if not no_diff_err and not no_err:
+        ax[1,1].errorbar(x[1:], c_diff_2, c_diff_2_err, color="tab:green", marker="x", markersize=ms, linestyle="--", linewidth=lw, capsize=3)
+    else:
+        ax[1,1].plot(x[1:], c_diff_2, color="tab:green", marker="x", markersize=ms, linestyle="--", linewidth=lw)
+    ax[1,1].set_title("Diff Capacitance 2")
+    ax[1,1].set_xlabel("Step [" + str(step_s) + "±" + str(step_s_err) + " nm]")
+    ax[1,1].set_ylabel("Capacitance [pF]")
+    #ax[1,1].set_ylim(-0.0015, 0.008)
+    
+    if not no_diff_err and not no_err:
+        ax[1,2].errorbar(x[1:], c_diff_3, c_diff_3_err, color="tab:blue", marker="x", markersize=ms, linestyle="--", linewidth=lw, capsize=3)
+    else:
+        ax[1,2].plot(x[1:], c_diff_3, color="tab:blue", marker="x", markersize=ms, linestyle="--", linewidth=lw)
+    ax[1,2].set_title("Diff Capacitance 3")
+    ax[1,2].set_xlabel("Step [" + str(step_s) + "±" + str(step_s_err) + " nm]")
+    ax[1,2].set_ylabel("Capacitance [pF]")
+    #ax[1,2].set_ylim(-0.002, 0.005)
+    
+    fig.tight_layout()
+    plt.show()
+    
+    #Determine Savefile name if not already specified
+    if(save == ""):
+        path_parts = []
+        if("\\" in path):
+            path_parts = path.split("\\")
+        elif ("/" in path):
+            path_parts = path.split("/")
+            
+        save = "Plots/ApproachCurves/" + path_parts[-1].replace(".csv", "")
+        
+    fig.savefig(save + ".pdf")
+    fig.savefig(save + ".png", dpi=300)
+
+    if correlation:
+        #Throw out outlier points
+        c1_err_mean = np.mean(c1_err)
+        mask_c1 = np.where(c1_err > c1_err_mean * 4, False, True)
+        c2_err_mean = np.mean(c2_err)
+        mask_c2 = np.where(c2_err > c2_err_mean * 4, False, True)
+        c3_err_mean = np.mean(c3_err)
+        mask_c3 = np.where(c3_err > c3_err_mean * 4, False, True)
+        full_mask = np.logical_and(np.logical_and(mask_c1, mask_c2), mask_c3)
+        c1 = c1[full_mask]
+        c1_err = c1_err[full_mask]
+        c2 = c2[full_mask]
+        c2_err = c2_err[full_mask]
+        c3 = c3[full_mask]
+        c3_err = c3_err[full_mask]
+        x = x[full_mask]
+    
+        #Determine correlation
+        popt_1_2, pcov_1_2 = curve_fit(func, c2, c1, sigma=c2_err)
+        popt_1_3, pcov_1_3 = curve_fit(func, c3, c1, sigma=c3_err)
+        popt_2_3, pcov_2_3 = curve_fit(func, c3, c2, sigma=c3_err)
+        
+        chi_1_2 = np.sum(((c1 - func(c2, popt_1_2[0], popt_1_2[1]))**2/(c1_err**2 + (popt_1_2[1] * c2_err)**2))) / len(c1 - 2)
+        chi_1_3 = np.sum(((c1 - func(c3, popt_1_3[0], popt_1_3[1]))**2/(c1_err**2 + (popt_1_3[1] * c3_err)**2))) / len(c1 - 2)
+        chi_2_3 = np.sum(((c2 - func(c3, popt_2_3[0], popt_2_3[1]))**2/(c2_err**2 + (popt_2_3[1] * c3_err)**2))) / len(c2 - 2)
+        
+        print("Small chi^2/ndof means high correlation of different capacitances. Careful though! Check plot! Since if data is sufficiently linear they can always be fitted to each other.")
+        print("chi^2/ndof similarity c1/c2: ", chi_1_2)
+        print("chi^2/ndof similarity c1/c3: ", chi_1_3)
+        print("chi^2/ndof similarity c2/c3: ", chi_2_3)
+        
+        if(plot_correlation):
+            fig, ax = plt.subplots(2, 2)
+            fig.set_figheight(9)
+            fig.set_figwidth(16)
+        
+            c1_max = max(np.absolute(c1))
+            c2_max = max(np.absolute(c2))
+            
+            fig.suptitle('Correlation of different capacitances')
+            
+            ax[0, 0].errorbar(x, func(c2, popt_1_2[0], popt_1_2[1]) / c1_max, func(c2_err, 0, np.absolute(popt_1_2[1])) / c1_max, label="C2 fit to C1", capsize=3, color="tab:green")
+            ax[0, 0].errorbar(x, func(c3, popt_1_3[0], popt_1_3[1]) / c1_max, func(c3_err, 0, np.absolute(popt_1_3[1])) / c1_max, label="C3 fit to C1", capsize=3, color="tab:blue")
+            ax[0, 0].errorbar(x, c1 / c1_max, c1_err/ c1_max, label="C1", capsize=3, color="tab:red",zorder=10)
+            ax[0, 0].set_xlabel(r"steps")
+            ax[0, 0].set_ylabel(r"$\frac{C}{C_{1,max}}$")
+            ax[0, 0].legend()
+            
+            ax[0, 1].errorbar(x, func(c3, popt_2_3[0], popt_2_3[1]) / c2_max, func(c3_err, 0, np.absolute(popt_2_3[1])) / c2_max, label="C3 fit to C2", capsize=3, color="tab:blue")
+            ax[0, 1].errorbar(x, c2 / c2_max, c2_err / c2_max, label="C2", capsize=3, color="tab:green",zorder=10)
+            ax[0, 1].set_xlabel(r"steps")
+            ax[0, 1].set_ylabel(r"$\frac{C}{C_{2,max}}$")
+            ax[0, 1].legend()
+
+            y_lim = max(max(np.absolute(c1 - func(c2, popt_1_2[0], popt_1_2[1])) / c1_max + func(c2_err, 0, np.absolute(popt_1_2[1])) / c1_max) * 1.1, max(np.absolute(c1 - func(c3, popt_1_3[0], popt_1_3[1])) / c1_max + func(c3_err, 0, np.absolute(popt_1_3[1])) / c1_max) * 1.1)
+            
+            ax[1, 0].errorbar(x, c1 / c1_max - func(c2, popt_1_2[0], popt_1_2[1]) / c1_max, func(c2_err, 0, np.absolute(popt_1_2[1])) / c1_max, label="C2 fit to C1", capsize=3, color="tab:green")
+            ax[1, 0].errorbar(x, c1 / c1_max - func(c3, popt_1_3[0], popt_1_3[1]) / c1_max, func(c3_err, 0, np.absolute(popt_1_3[1])) / c1_max, label="C3 fit to C1", capsize=3, color="tab:blue")
+            ax[1, 0].plot(x, np.ones(len(c1)) * 0, label="C1", color="tab:red", zorder=10)
+            ax[1, 0].set_ylim(-y_lim, y_lim)
+            ax[1, 0].set_ylabel(r"$\frac{C_1}{C_{1,max}}$ - fit")
+            ax[1, 0].set_xlabel(r"steps")
+            ax[1, 0].legend()
+            
+            ax[1, 1].errorbar(x, c2 / c2_max - func(c3, popt_2_3[0], popt_2_3[1]) / c2_max, func(c3_err, 0, np.absolute(popt_2_3[1])) / c2_max, label="C3 fit to C2", capsize=3, color="tab:blue")
+            ax[1, 1].set_ylim(- max(np.absolute(c2 / c2_max - func(c3, popt_2_3[0], popt_2_3[1]) / c2_max + func(c3_err, 0, np.absolute(popt_2_3[1])) / c2_max)) * 1.1, max(np.absolute(c2 / c2_max - func(c3, popt_2_3[0], popt_2_3[1]) / c2_max + func(c3_err, 0, np.absolute(popt_2_3[1])) / c2_max)) * 1.1)
+            ax[1, 1].plot(x, np.ones(len(c2)) * 0, label="C2", color="tab:green",zorder=10)
+            ax[1, 1].set_ylabel(r"$\frac{C_2}{C_{2,max}}$ - fit")
+            ax[1, 1].set_xlabel(r"steps")
+            ax[1, 1].legend()
+            plt.show()
+    
+    
+if __name__ == "__main__":
+    main()
\ No newline at end of file
diff --git a/PythonScripts/PlotApproachCurveDragAndDrop.bat b/PythonScripts/PlotApproachCurveDragAndDrop.bat
new file mode 100644
index 0000000000000000000000000000000000000000..bd112dd0a33cb025e322af4b2d2ade8ed280fd85
--- /dev/null
+++ b/PythonScripts/PlotApproachCurveDragAndDrop.bat
@@ -0,0 +1,4 @@
+@echo off
+cd /D "%~dp0"
+for %%a in (%*) do py .\PlotApproachCurve.py --file %%a
+pause
\ No newline at end of file
diff --git a/PythonScripts/PlotApproachCurve_old.py b/PythonScripts/PlotApproachCurve_old.py
new file mode 100644
index 0000000000000000000000000000000000000000..5a9c596cef5e6481da91d8540d3e27de511c983f
--- /dev/null
+++ b/PythonScripts/PlotApproachCurve_old.py
@@ -0,0 +1,115 @@
+# -*- coding: utf-8 -*-
+"""
+Created on Wed Aug  9 14:45:10 2023
+
+@author: Luzifer
+"""
+
+import matplotlib.pyplot as plt
+import numpy as np
+import sys
+from matplotlib.offsetbox import AnchoredText
+
+def main():
+    path = "C:\MaskAligner\Data\ApproachCurve16_08_23.csv"
+    save = ""
+    
+    #Simple command line parsing
+    if("--file" in sys.argv or "-f" in sys.argv):
+        for i in range(len(sys.argv)):
+            if(sys.argv[i] == "--file" or sys.argv[i] == "--f"):
+                try:
+                    path = sys.argv[i+1]
+                except:
+                    print("incorrect file path.")
+                    return
+                    
+    if("--save" in sys.argv or "-s" in sys.argv):
+        for i in range(len(sys.argv)):
+            if(sys.argv[i] == "--save" or sys.argv[i] == "--s"):
+                try:
+                    save = sys.argv[i+1]
+                except:
+                    print("incorrect save file name.")
+                    return
+
+    data = np.genfromtxt(path, delimiter=",")
+    
+    x = data.T[0]
+    c1 = data.T[1]
+    c2 = data.T[2]
+    c3 = data.T[3]
+    
+    step_s = data.T[4][0]
+    step_s_err = data.T[5][0]
+    
+    
+    c_diff_1 = np.ones(len(c1) - 1)
+    c_diff_2 = np.ones(len(c2) - 1)
+    c_diff_3 = np.ones(len(c2) - 1)
+    
+    for i in range(len(c1)-1):
+        c_diff_1[i] = c1[i+1] - c1[i]
+        c_diff_2[i] = c2[i+1] - c2[i]
+        c_diff_3[i] = c3[i+1] - c3[i]
+    
+    del data
+
+    lw = 0.75
+    ms = 2
+    
+    fig, ax = plt.subplots(2, 3)
+    fig.set_figheight(9)
+    fig.set_figwidth(16)
+    
+    ax[0,0].plot(x, c1, color="tab:red", marker="x", markersize=ms, linestyle="--", linewidth=lw)
+    ax[0,0].set_title("Capacitance 1")
+    ax[0,0].set_xlabel("Step [" + str(step_s) + "±" + str(step_s_err) + " nm]")
+    ax[0,0].set_ylabel("Capacitance [pF]")
+    
+    ax[0,1].plot(x, c2, color="tab:green", marker="x", markersize=ms, linestyle="--", linewidth=lw)
+    ax[0,1].set_title("Capacitance 2")
+    ax[0,1].set_xlabel("Step [" + str(step_s) + "±" + str(step_s_err) + " nm]")
+    ax[0,1].set_ylabel("Capacitance [pF]")
+    
+    ax[0,2].plot(x, c3, color="tab:blue", marker="x", markersize=ms, linestyle="--", linewidth=lw)
+    ax[0,2].set_title("Capacitance 3")
+    ax[0,2].set_xlabel("Step [" + str(step_s) + "±" + str(step_s_err) + " nm]")
+    ax[0,2].set_ylabel("Capacitance [pF]")
+    
+    ax[1,0].plot(x[1:], c_diff_1, color="tab:red", marker="x", markersize=ms, linestyle="--", linewidth=lw)
+    ax[1,0].set_title("Diff Capacitance 1")
+    ax[1,0].set_xlabel("Step [" + str(step_s) + "±" + str(step_s_err) + " nm]")
+    ax[1,0].set_ylabel("Capacitance [pF]")
+    #ax[1,0].set_ylim(-0.0025, 0.02)
+    
+    ax[1,1].plot(x[1:], c_diff_2, color="tab:green", marker="x", markersize=ms, linestyle="--", linewidth=lw)
+    ax[1,1].set_title("Diff Capacitance 2")
+    ax[1,1].set_xlabel("Step [" + str(step_s) + "±" + str(step_s_err) + " nm]")
+    ax[1,1].set_ylabel("Capacitance [pF]")
+    #ax[1,1].set_ylim(-0.0015, 0.008)
+    
+    ax[1,2].plot(x[1:], c_diff_3, color="tab:blue", marker="x", markersize=ms, linestyle="--", linewidth=lw)
+    ax[1,2].set_title("Diff Capacitance 3")
+    ax[1,2].set_xlabel("Step [" + str(step_s) + "±" + str(step_s_err) + " nm]")
+    ax[1,2].set_ylabel("Capacitance [pF]")
+    #ax[1,2].set_ylim(-0.002, 0.005)
+    
+    fig.tight_layout()
+    plt.show()
+    
+    #Determine Savefile name if not already specified
+    if(save == ""):
+        path_parts = []
+        if("\\" in path):
+            path_parts = path.split("\\")
+        elif ("/" in path):
+            path_parts = path.split("/")
+            
+        save = "Plots/ApproachCurves/" + path_parts[-1].replace(".csv", "")
+        
+    fig.savefig(save + ".pdf")
+    fig.savefig(save + ".png", dpi=300)
+
+if __name__ == "__main__":
+    main()
\ No newline at end of file
diff --git a/PythonScripts/PlotEvaporationData.py b/PythonScripts/PlotEvaporationData.py
new file mode 100644
index 0000000000000000000000000000000000000000..666bcaeba26edcbbc576871611d1c88434743671
--- /dev/null
+++ b/PythonScripts/PlotEvaporationData.py
@@ -0,0 +1,94 @@
+import numpy as np
+import matplotlib.pyplot as plt
+import sys
+
+def main():
+    path = "C:\MaskAligner\Data\ApproachCurve16_08_23.csv"
+    save = ""
+    
+    plot_Fil = False
+    plot_Emis = False
+    plot_Flux = False
+    plot_Volt = False
+    plot_Pressure = False
+    plot_Temp = False
+    
+    if("--file" in sys.argv or "-f" in sys.argv):
+        for i in range(len(sys.argv)):
+            if(sys.argv[i] == "--file" or sys.argv[i] == "--f"):
+                try:
+                    path = sys.argv[i+1]
+                except:
+                    print("incorrect file path.")
+                    return
+
+    if("--FIL" in sys.argv):
+        plot_Fil = True
+    if("--EMIS" in sys.argv):
+        plot_Emis = True
+    if("--FLUX" in sys.argv):
+        plot_Flux = True
+    if("--Volt" in sys.argv):
+        plot_Volt = True
+    if("--Pressure" in sys.argv):
+        plot_Pressure = True
+    if("--Temp" in sys.argv):
+        plot_Temp = True 
+    if("--All" in sys.argv):
+        plot_Temp = True
+        plot_Pressure = True
+        plot_Volt = True
+        plot_Flux = True
+        plot_Emis = True
+        plot_Fil = True
+
+    data = np.genfromtxt(path, delimiter=",", skip_header=1)
+    data = data.T
+    time = data[0]
+    FIL = data[1]
+    EMIS = data[2]
+    FLUX = data[3]
+    VOLT = data[4]
+    Pressure = data[5]
+    TEMP = data[6]
+    
+    if(plot_Fil):
+        plt.plot(time, FIL, label="FIL")
+        #plt.legend()
+        plt.xlabel("time in min")
+        plt.ylabel("FIL in A")
+        plt.show()
+    if(plot_Emis):
+        plt.plot(time, EMIS, label="EMIS")
+        #plt.legend()
+        plt.xlabel("time in min")
+        plt.ylabel("EMIS in mA")
+        plt.show()
+    if(plot_Flux):
+        plt.plot(time, FLUX, label="Flux")
+        #plt.legend()
+        plt.xlabel("time in min")
+        plt.ylabel("Flux in nA")
+        plt.show()
+    if(plot_Volt):
+        plt.plot(time, VOLT, label="Volt")
+        #plt.legend()
+        plt.xlabel("time in min")
+        plt.ylabel("Volt in V")
+        plt.show()
+    if(plot_Pressure):
+        plt.plot(time, Pressure, label="Pressure")
+        #plt.legend()
+        plt.xlabel("time in min")
+        plt.ylabel("Pressure in mbar")
+        plt.show()
+    if(plot_Temp):
+        plt.plot(time, TEMP, label="Temp")
+        #plt.legend()
+        plt.xlabel("time in min")
+        plt.ylabel("Temp in °C")
+        plt.show()
+
+    
+if __name__ == "__main__":
+    main()
\ No newline at end of file
diff --git a/PythonScripts/PlotMultipleApproachCurves.py b/PythonScripts/PlotMultipleApproachCurves.py
new file mode 100644
index 0000000000000000000000000000000000000000..dc786b2564027a824d8cee1bf0a81cba4eb01cd8
--- /dev/null
+++ b/PythonScripts/PlotMultipleApproachCurves.py
@@ -0,0 +1,157 @@
+# -*- coding: utf-8 -*-
+"""
+Created on Wed Aug  9 14:45:10 2023
+
+@author: Luzifer
+"""
+
+import matplotlib.pyplot as plt
+import numpy as np
+import sys
+
+def main():
+    path = []
+    save = ""
+    
+    #Simple command line parsing
+    if("--files" in sys.argv or "-f" in sys.argv):
+        for i in range(len(sys.argv)):
+            if(sys.argv[i] == "--files" or sys.argv[i] == "--f"):
+                for j in range(i+1, len(sys.argv)):
+                    if(sys.argv[j] == "--save" or sys.argv[j] == "-s"):
+                        break
+                    try:
+                        path.append(sys.argv[j])
+                    except:
+                        print("incorrect file path.")
+                        return
+                        
+    if("--save" in sys.argv or "-s" in sys.argv):
+        for i in range(len(sys.argv)):
+            if(sys.argv[i] == "--save" or sys.argv[i] == "-s"):
+                try:
+                    save = sys.argv[i+1]
+                except:
+                    print("incorrect save file name.")
+                    return
+
+    if path == []:
+        print("No data to plot.")
+        return
+    
+    xs = []
+    
+    c1s = []
+    c2s = []
+    c3s = []
+    
+    c_diff_1s = []
+    c_diff_2s = []
+    c_diff_3s = []
+    
+    for i in range(len(path)):
+        data = np.genfromtxt(path[i], delimiter=",")
+        
+        x = data.T[0]
+        c1 = data.T[1]
+        c2 = data.T[2]
+        c3 = data.T[3]
+        
+        c_diff_1 = np.ones(len(c1) - 1)
+        c_diff_2 = np.ones(len(c2) - 1)
+        c_diff_3 = np.ones(len(c2) - 1)
+        
+        xs.append(x)
+        c1s.append(c1)
+        c2s.append(c2)
+        c3s.append(c3)
+        
+        c_diff_1s.append(c_diff_1)
+        c_diff_2s.append(c_diff_2)
+        c_diff_3s.append(c_diff_3)
+        
+    for j in range(len(path)):
+        for i in range(len(c1s[j])-1):
+            c_diff_1s[j][i] = c1s[j][i+1] - c1s[j][i]
+            c_diff_2s[j][i] = c2s[j][i+1] - c2s[j][i]
+            c_diff_3s[j][i] = c3s[j][i+1] - c3s[j][i]
+    
+    del data
+    del c1, c2, c3, c_diff_1, c_diff_2, c_diff_3
+    
+    lw = 0.75
+    ms = 2
+        
+    fig, ax = plt.subplots(2, 3)
+    fig.set_figheight(9)
+    fig.set_figwidth(16)
+    
+    color_1 = ["tab:red", "#e24522", "#ec5f1a", "#f47711", "#fb8f05", "#ffa600"]
+    color_2 = ["tab:green", "#62a50d", "#8ca900", "#b3aa00", "#d9a900", "#ffa600"]
+    color_3 = ["tab:blue", "#7e75c8", "#cd6abc", "#ff6292", "#ff7957", "#ffa600"]
+    
+    for i in range(len(path)):
+        x = np.arange(0, len(c1s[i]))
+        
+        ax[0,0].plot(xs[i], c1s[i], color=color_1[i], marker="x", markersize=ms, linestyle="--", linewidth=lw, label=path[i].replace("\\", "/").split("/")[-1].replace(".csv", ""))
+        ax[0,0].set_title("Capacitance 1")
+        ax[0,0].set_xlabel("Step")
+        ax[0,0].set_ylabel("Capacitance [pF]")
+        
+        ax[0,1].plot(xs[i], c2s[i], color=color_2[i], marker="x", markersize=ms, linestyle="--", linewidth=lw, label=path[i].replace("\\", "/").split("/")[-1].replace(".csv", ""))
+        ax[0,1].set_title("Capacitance 2")
+        ax[0,1].set_xlabel("Step")
+        ax[0,1].set_ylabel("Capacitance [pF]")
+        
+        ax[0,2].plot(xs[i], c3s[i], color=color_3[i], marker="x", markersize=ms, linestyle="--", linewidth=lw, label=path[i].replace("\\", "/").split("/")[-1].replace(".csv", ""))
+        ax[0,2].set_title("Capacitance 3")
+        ax[0,2].set_xlabel("Step")
+        ax[0,2].set_ylabel("Capacitance [pF]")
+        
+        ax[1,0].plot(xs[i][1:], c_diff_1s[i], color=color_1[i], marker="x", markersize=ms, linestyle="--", linewidth=lw, label=path[i].replace("\\", "/").split("/")[-1].replace(".csv", ""))
+        ax[1,0].set_title("Diff Capacitance 1")
+        ax[1,0].set_xlabel("Step")
+        ax[1,0].set_ylabel("Capacitance [pF]")
+        #ax[1,0].set_ylim(-0.0025, 0.02)
+        
+        ax[1,1].plot(xs[i][1:], c_diff_2s[i], color=color_2[i], marker="x", markersize=ms, linestyle="--", linewidth=lw, label=path[i].replace("\\", "/").split("/")[-1].replace(".csv", ""))
+        ax[1,1].set_title("Diff Capacitance 2")
+        ax[1,1].set_xlabel("Step")
+        ax[1,1].set_ylabel("Capacitance [pF]")
+        #ax[1,1].set_ylim(-0.0015, 0.008)
+        
+        ax[1,2].plot(xs[i][1:], c_diff_3s[i], color=color_3[i], marker="x", markersize=ms, linestyle="--", linewidth=lw, label=path[i].replace("\\", "/").split("/")[-1].replace(".csv", ""))
+        ax[1,2].set_title("Diff Capacitance 3")
+        ax[1,2].set_xlabel("Step")
+        ax[1,2].set_ylabel("Capacitance [pF]")
+        #ax[1,2].set_ylim(-0.002, 0.005)
+     
+    ax[0,0].legend()
+    ax[0,1].legend()
+    ax[0,2].legend()
+    ax[1,0].legend()
+    ax[1,1].legend()
+    ax[1,2].legend()
+    ax[1,2].legend()
+    fig.tight_layout()
+    plt.show()
+    
+    #Determine Savefile name if not already specified, by taking capital letters and number in string and concatenating
+    if(save == ""):
+        path_parts = []
+        for i in range(len(path)):
+            path_parts.append(path[i].replace("\\", "/").split("/")[-1].replace(".csv", ""))
+            path_parts[i] = [x for x in path_parts[i] if x.isupper() or x.isdigit()]
+            path_parts[i] = "".join(path_parts[i])
+        
+        path_part = ""
+        for i in range(len(path)):
+            path_part += path_parts[i]
+        
+        save = "Plots/ApproachCurves/" + path_part
+        
+    fig.savefig(save + "comparison" + ".pdf")
+    fig.savefig(save + "comparison" + ".png", dpi=300)
+
+if __name__ == "__main__":
+    main()
\ No newline at end of file
diff --git a/PythonScripts/PlotPressurePlort.py b/PythonScripts/PlotPressurePlort.py
new file mode 100644
index 0000000000000000000000000000000000000000..93ea96d33535b93eae794f2237e44a56e3f1134a
--- /dev/null
+++ b/PythonScripts/PlotPressurePlort.py
@@ -0,0 +1,37 @@
+import matplotlib.pyplot as plt
+import numpy as np
+import sys
+from datetime import datetime
+
+def remove_day_of_week(string):
+    return string.replace("Mon", "").replace("Tue", "").replace("Wed", "").replace("Thu", "").replace("Fri", "").replace("Sat", "").replace("Son", "")
+
+def main():
+    file = "C:\MaskAligner\Data\Pressure\Pressure01.txt"
+    if("--file" in sys.argv or "-f" in sys.argv):
+        for i in range(len(sys.argv)):
+            if("--file" in sys.argv[i] or "-f" == sys.argv[i]):
+                try:
+                    file = sys.argv[i+1]
+                except:
+                    print("No file or incorrect file specification.")
+
+    times = []
+    pressures = []
+    
+    with open(file, "r") as read_file:
+        lines = read_file.readlines() 
+        pressures = np.zeros(len(lines) - 1)
+        
+        for i in range(1, len(lines)):
+            temp = lines[i].split("\t")
+            t = datetime.strptime(remove_day_of_week(temp[0]).replace("  ", " "), "%H:%M:%S %d.%m.%y")
+            times.append(t)
+            pressures[i-1] = float(temp[1])
+            
+    plt.plot(times, pressures)
+    plt.ylabel("pressure [mbar]")
+    plt.show()
+
+if __name__ == "__main__":
+    main()
\ No newline at end of file
diff --git a/PythonScripts/PlotPressureRealtime.py b/PythonScripts/PlotPressureRealtime.py
new file mode 100644
index 0000000000000000000000000000000000000000..4a73632d85fe19de0b36e5972ce29a61d17868e3
--- /dev/null
+++ b/PythonScripts/PlotPressureRealtime.py
@@ -0,0 +1,43 @@
+# -*- coding: utf-8 -*-
+"""
+Created on Thu Nov 30 15:07:58 2023
+
+@author: admin
+"""
+
+import time 
+import serial
+import numpy as np
+import matplotlib.pyplot as plt
+
+def reading():
+    ser = serial.Serial('COM7', 19200, timeout=0, parity=serial.PARITY_NONE, stopbits=serial.STOPBITS_ONE, bytesize=8)
+    read_command = b"RFM%d\r" % 1
+    ser.write(read_command)
+    time.sleep(.03)
+    pressure = ''
+    while ser.inWaiting() > 0:
+        pressure += ser.read(1).decode('ascii')
+    
+        print(pressure)
+    
+        if pressure[0] == '0':
+            return float(pressure)
+        else:
+            return float('nan')
+        
+    ser.close()
+        
+def main():
+    for i in range(0, 100):
+        pressure = []
+        temp_press = reading()
+        pressure.append(temp_press)
+        
+        plt.plot(pressure)
+        plt.pause(0.05)
+        plt.show()   
+        
+
+if __name__ == "__main__":
+    main()
\ No newline at end of file
diff --git a/PythonScripts/PlotRHKData.py b/PythonScripts/PlotRHKData.py
new file mode 100644
index 0000000000000000000000000000000000000000..d507f415e218808b04750b173a7e24bf1f10fa3a
--- /dev/null
+++ b/PythonScripts/PlotRHKData.py
@@ -0,0 +1,32 @@
+import numpy as np
+import matplotlib.pyplot as plt
+
+def main():
+    path = "C:/MaskAligner/Data/RHKDAta.csv"
+    data = np.genfromtxt(path, skip_header=1, delimiter=",")
+    data = data.T
+    U_2ms = data[0]
+    U_1ms = data[3]
+    Down_2ms = data[1]
+    Down_1ms = data[4]
+    Up_2ms = data[2]
+    Up_1ms = data[5]
+    
+    err = 1
+    
+    plt.errorbar(U_2ms, Down_2ms, Down_2ms * 0.1, label="+ 2ms", capsize=3, color="tab:blue")
+    plt.errorbar(U_2ms, Up_2ms, Up_2ms * 0.1, label="- 2ms", capsize=3, color="tab:red")
+    plt.plot(U_2ms, Up_2ms /2, linestyle="dashed", color="tab:red")
+    plt.plot(U_2ms, Down_2ms /2, linestyle="dashed", color="tab:blue")
+    plt.errorbar(U_1ms, Down_1ms, Down_1ms * 0.1, label="+ 1ms", capsize=3, color="tab:cyan")
+    plt.errorbar(U_1ms, Up_1ms, Up_1ms * 0.1, label="- 1ms", capsize=3, color="tab:orange")
+    
+    plt.xlabel("Voltage [V]")
+    plt.ylabel("1/speed [s/mm]")
+    plt.legend()
+    plt.savefig("Plots/RHKDatadep.pdf")
+    plt.savefig("Plots/RHKDatadep.png", dpi=300)
+    plt.show()
+
+if __name__ == "__main__":
+    main()
\ No newline at end of file
diff --git a/PythonScripts/Plots/ApproachCurves/AC090823KIM001AC160823AC170823AC1708232AC180823Z3DSScomparison.pdf b/PythonScripts/Plots/ApproachCurves/AC090823KIM001AC160823AC170823AC1708232AC180823Z3DSScomparison.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..29c6161f020923a8154493818ee5b0a9b4a98128
Binary files /dev/null and b/PythonScripts/Plots/ApproachCurves/AC090823KIM001AC160823AC170823AC1708232AC180823Z3DSScomparison.pdf differ
diff --git a/PythonScripts/Plots/ApproachCurves/AC090823KIM001AC160823AC170823AC1708232AC180823Z3DSScomparison.png b/PythonScripts/Plots/ApproachCurves/AC090823KIM001AC160823AC170823AC1708232AC180823Z3DSScomparison.png
new file mode 100644
index 0000000000000000000000000000000000000000..2363f53d2e4c7026f68b1996f07895d526ed6f2e
Binary files /dev/null and b/PythonScripts/Plots/ApproachCurves/AC090823KIM001AC160823AC170823AC1708232AC180823Z3DSScomparison.png differ
diff --git a/PythonScripts/Plots/ApproachCurves/AC160823AC170823AC1708232comparison.pdf b/PythonScripts/Plots/ApproachCurves/AC160823AC170823AC1708232comparison.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..6acb42ebea370447ac1d6912d57eff3ccb39abb5
Binary files /dev/null and b/PythonScripts/Plots/ApproachCurves/AC160823AC170823AC1708232comparison.pdf differ
diff --git a/PythonScripts/Plots/ApproachCurves/AC160823AC170823AC1708232comparison.png b/PythonScripts/Plots/ApproachCurves/AC160823AC170823AC1708232comparison.png
new file mode 100644
index 0000000000000000000000000000000000000000..ddd4af68a39d3224314ba13266e7cc5180298550
Binary files /dev/null and b/PythonScripts/Plots/ApproachCurves/AC160823AC170823AC1708232comparison.png differ
diff --git a/PythonScripts/Plots/ApproachCurves/AC160823AC170823comparison.pdf b/PythonScripts/Plots/ApproachCurves/AC160823AC170823comparison.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..217158197856bdb45d2fc0c3e1b0c109417e0ecf
Binary files /dev/null and b/PythonScripts/Plots/ApproachCurves/AC160823AC170823comparison.pdf differ
diff --git a/PythonScripts/Plots/ApproachCurves/AC160823AC170823comparison.png b/PythonScripts/Plots/ApproachCurves/AC160823AC170823comparison.png
new file mode 100644
index 0000000000000000000000000000000000000000..4e60e354a7f3ec201d4949b92b06b8a6c6c22d3e
Binary files /dev/null and b/PythonScripts/Plots/ApproachCurves/AC160823AC170823comparison.png differ
diff --git a/PythonScripts/Plots/ApproachCurves/AC170823AC1708232AC180823Z1DSScomparison.pdf b/PythonScripts/Plots/ApproachCurves/AC170823AC1708232AC180823Z1DSScomparison.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..3a102427f1635cc4c669c38c450b26db234cad12
Binary files /dev/null and b/PythonScripts/Plots/ApproachCurves/AC170823AC1708232AC180823Z1DSScomparison.pdf differ
diff --git a/PythonScripts/Plots/ApproachCurves/AC170823AC1708232AC180823Z1DSScomparison.png b/PythonScripts/Plots/ApproachCurves/AC170823AC1708232AC180823Z1DSScomparison.png
new file mode 100644
index 0000000000000000000000000000000000000000..7f794a7b1024eeea71316cee12a01c254b153340
Binary files /dev/null and b/PythonScripts/Plots/ApproachCurves/AC170823AC1708232AC180823Z1DSScomparison.png differ
diff --git a/PythonScripts/Plots/ApproachCurves/AC170823AC1708232AC180823Z3DSSAC090823KIM001comparison.pdf b/PythonScripts/Plots/ApproachCurves/AC170823AC1708232AC180823Z3DSSAC090823KIM001comparison.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..fe345d63c4087220144e680302bcacabb9a3e87c
Binary files /dev/null and b/PythonScripts/Plots/ApproachCurves/AC170823AC1708232AC180823Z3DSSAC090823KIM001comparison.pdf differ
diff --git a/PythonScripts/Plots/ApproachCurves/AC170823AC1708232AC180823Z3DSSAC090823KIM001comparison.png b/PythonScripts/Plots/ApproachCurves/AC170823AC1708232AC180823Z3DSSAC090823KIM001comparison.png
new file mode 100644
index 0000000000000000000000000000000000000000..bd329b4f4afc4804734e749ca9f9ea0345b9cc64
Binary files /dev/null and b/PythonScripts/Plots/ApproachCurves/AC170823AC1708232AC180823Z3DSSAC090823KIM001comparison.png differ
diff --git a/PythonScripts/Plots/ApproachCurves/AC170823AC1708232AC180823Z3DSScomparison.pdf b/PythonScripts/Plots/ApproachCurves/AC170823AC1708232AC180823Z3DSScomparison.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..3308289d32e93498e21189d0c02e64f6a4c2561e
Binary files /dev/null and b/PythonScripts/Plots/ApproachCurves/AC170823AC1708232AC180823Z3DSScomparison.pdf differ
diff --git a/PythonScripts/Plots/ApproachCurves/AC170823AC1708232AC180823Z3DSScomparison.png b/PythonScripts/Plots/ApproachCurves/AC170823AC1708232AC180823Z3DSScomparison.png
new file mode 100644
index 0000000000000000000000000000000000000000..519032fd8eeda7a89892746173b442a99b7c458b
Binary files /dev/null and b/PythonScripts/Plots/ApproachCurves/AC170823AC1708232AC180823Z3DSScomparison.png differ
diff --git a/PythonScripts/Plots/ApproachCurves/ApproachAndRetractCurve21_11_23_ToFullContact.pdf b/PythonScripts/Plots/ApproachCurves/ApproachAndRetractCurve21_11_23_ToFullContact.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..92d7a858768f2664e0c1defad6ec51e553fd8b66
Binary files /dev/null and b/PythonScripts/Plots/ApproachCurves/ApproachAndRetractCurve21_11_23_ToFullContact.pdf differ
diff --git a/PythonScripts/Plots/ApproachCurves/ApproachAndRetractCurve21_11_23_ToFullContact.png b/PythonScripts/Plots/ApproachCurves/ApproachAndRetractCurve21_11_23_ToFullContact.png
new file mode 100644
index 0000000000000000000000000000000000000000..527b9c4461fb597973c7739ca01945c21f436d2a
Binary files /dev/null and b/PythonScripts/Plots/ApproachCurves/ApproachAndRetractCurve21_11_23_ToFullContact.png differ
diff --git a/PythonScripts/Plots/ApproachCurves/ApproachCurve090823KIM001.pdf b/PythonScripts/Plots/ApproachCurves/ApproachCurve090823KIM001.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..b7edcb6cbf2e9fde86fb47e5ea55728ed1496cf2
Binary files /dev/null and b/PythonScripts/Plots/ApproachCurves/ApproachCurve090823KIM001.pdf differ
diff --git a/PythonScripts/Plots/ApproachCurves/ApproachCurve090823KIM001.png b/PythonScripts/Plots/ApproachCurves/ApproachCurve090823KIM001.png
new file mode 100644
index 0000000000000000000000000000000000000000..54d2fab889f6e1e69d59967d85e0d9da9276cef7
Binary files /dev/null and b/PythonScripts/Plots/ApproachCurves/ApproachCurve090823KIM001.png differ
diff --git a/PythonScripts/Plots/ApproachCurves/ApproachCurve16_08_23.pdf b/PythonScripts/Plots/ApproachCurves/ApproachCurve16_08_23.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..a8b66554dd5afce25bbe2579c04b6ca000b98e69
Binary files /dev/null and b/PythonScripts/Plots/ApproachCurves/ApproachCurve16_08_23.pdf differ
diff --git a/PythonScripts/Plots/ApproachCurves/ApproachCurve16_08_23.png b/PythonScripts/Plots/ApproachCurves/ApproachCurve16_08_23.png
new file mode 100644
index 0000000000000000000000000000000000000000..e87dab2e72ce35a82d87c382d934434ad12925e6
Binary files /dev/null and b/PythonScripts/Plots/ApproachCurves/ApproachCurve16_08_23.png differ
diff --git a/PythonScripts/Plots/ApproachCurves/ApproachCurve17_08_23.pdf b/PythonScripts/Plots/ApproachCurves/ApproachCurve17_08_23.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..40404342592771f290cfa8dcd9ef1899b81a93ee
Binary files /dev/null and b/PythonScripts/Plots/ApproachCurves/ApproachCurve17_08_23.pdf differ
diff --git a/PythonScripts/Plots/ApproachCurves/ApproachCurve17_08_23.png b/PythonScripts/Plots/ApproachCurves/ApproachCurve17_08_23.png
new file mode 100644
index 0000000000000000000000000000000000000000..88d39e56497c4f0eb963fd9f9b9e27e0b3086ed7
Binary files /dev/null and b/PythonScripts/Plots/ApproachCurves/ApproachCurve17_08_23.png differ
diff --git a/PythonScripts/Plots/ApproachCurves/ApproachCurve17_08_23_19steps.pdf b/PythonScripts/Plots/ApproachCurves/ApproachCurve17_08_23_19steps.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..5e8e706d4096c15d08b59f6e3cc1bf287f9ad2a4
Binary files /dev/null and b/PythonScripts/Plots/ApproachCurves/ApproachCurve17_08_23_19steps.pdf differ
diff --git a/PythonScripts/Plots/ApproachCurves/ApproachCurve17_08_23_19steps.png b/PythonScripts/Plots/ApproachCurves/ApproachCurve17_08_23_19steps.png
new file mode 100644
index 0000000000000000000000000000000000000000..8e321979072c7ebf6bd03a8c280cd0c080a450fb
Binary files /dev/null and b/PythonScripts/Plots/ApproachCurves/ApproachCurve17_08_23_19steps.png differ
diff --git a/PythonScripts/Plots/ApproachCurves/ApproachCurve17_08_23_2.pdf b/PythonScripts/Plots/ApproachCurves/ApproachCurve17_08_23_2.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..2ad64d096459fefb206e873987900d5b73d47a84
Binary files /dev/null and b/PythonScripts/Plots/ApproachCurves/ApproachCurve17_08_23_2.pdf differ
diff --git a/PythonScripts/Plots/ApproachCurves/ApproachCurve17_08_23_2.png b/PythonScripts/Plots/ApproachCurves/ApproachCurve17_08_23_2.png
new file mode 100644
index 0000000000000000000000000000000000000000..d74a5dde1e8bebbead1c3b936487d38e37224bd7
Binary files /dev/null and b/PythonScripts/Plots/ApproachCurves/ApproachCurve17_08_23_2.png differ
diff --git a/PythonScripts/Plots/ApproachCurves/ApproachCurve18_08_23_Z1_StepSize10.pdf b/PythonScripts/Plots/ApproachCurves/ApproachCurve18_08_23_Z1_StepSize10.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..09d44b1049665cc82f19138c68c194f5b796d703
Binary files /dev/null and b/PythonScripts/Plots/ApproachCurves/ApproachCurve18_08_23_Z1_StepSize10.pdf differ
diff --git a/PythonScripts/Plots/ApproachCurves/ApproachCurve18_08_23_Z1_StepSize10.png b/PythonScripts/Plots/ApproachCurves/ApproachCurve18_08_23_Z1_StepSize10.png
new file mode 100644
index 0000000000000000000000000000000000000000..a6a5444cc3679731954cb2565cc5be91e5013f35
Binary files /dev/null and b/PythonScripts/Plots/ApproachCurves/ApproachCurve18_08_23_Z1_StepSize10.png differ
diff --git a/PythonScripts/Plots/ApproachCurves/ApproachCurve20_11_23_206of580_.pdf b/PythonScripts/Plots/ApproachCurves/ApproachCurve20_11_23_206of580_.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..7774d4f0cb5ea495a34118d1f25344f6bd0e39b7
Binary files /dev/null and b/PythonScripts/Plots/ApproachCurves/ApproachCurve20_11_23_206of580_.pdf differ
diff --git a/PythonScripts/Plots/ApproachCurves/ApproachCurve20_11_23_206of580_.png b/PythonScripts/Plots/ApproachCurves/ApproachCurve20_11_23_206of580_.png
new file mode 100644
index 0000000000000000000000000000000000000000..073751407eac3127757afebef4f832b80abca145
Binary files /dev/null and b/PythonScripts/Plots/ApproachCurves/ApproachCurve20_11_23_206of580_.png differ
diff --git a/PythonScripts/Plots/ApproachCurves/ApproachCurve20_11_23_AfterFix (2).pdf b/PythonScripts/Plots/ApproachCurves/ApproachCurve20_11_23_AfterFix (2).pdf
new file mode 100644
index 0000000000000000000000000000000000000000..46f175f60cf3146979dce21fcbf6ab3ab02e4a45
Binary files /dev/null and b/PythonScripts/Plots/ApproachCurves/ApproachCurve20_11_23_AfterFix (2).pdf differ
diff --git a/PythonScripts/Plots/ApproachCurves/ApproachCurve20_11_23_AfterFix (2).png b/PythonScripts/Plots/ApproachCurves/ApproachCurve20_11_23_AfterFix (2).png
new file mode 100644
index 0000000000000000000000000000000000000000..e11cc33bb4a4b6d8f28d86a61e3deb4efc2be171
Binary files /dev/null and b/PythonScripts/Plots/ApproachCurves/ApproachCurve20_11_23_AfterFix (2).png differ
diff --git a/PythonScripts/Plots/ApproachCurves/ApproachCurve20_11_23_AfterFix.pdf b/PythonScripts/Plots/ApproachCurves/ApproachCurve20_11_23_AfterFix.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..19128a89fa258f540ef6063020b2b78e5ba449db
Binary files /dev/null and b/PythonScripts/Plots/ApproachCurves/ApproachCurve20_11_23_AfterFix.pdf differ
diff --git a/PythonScripts/Plots/ApproachCurves/ApproachCurve20_11_23_AfterFix.png b/PythonScripts/Plots/ApproachCurves/ApproachCurve20_11_23_AfterFix.png
new file mode 100644
index 0000000000000000000000000000000000000000..f4816da8719a4c4603ff582f46bd2c94951bbf10
Binary files /dev/null and b/PythonScripts/Plots/ApproachCurves/ApproachCurve20_11_23_AfterFix.png differ
diff --git a/PythonScripts/Plots/ApproachCurves/ApproachCurve21_11_23.pdf b/PythonScripts/Plots/ApproachCurves/ApproachCurve21_11_23.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..94479ec4de5fc8ce936d2b68397aa1ca3b755cc7
Binary files /dev/null and b/PythonScripts/Plots/ApproachCurves/ApproachCurve21_11_23.pdf differ
diff --git a/PythonScripts/Plots/ApproachCurves/ApproachCurve21_11_23.png b/PythonScripts/Plots/ApproachCurves/ApproachCurve21_11_23.png
new file mode 100644
index 0000000000000000000000000000000000000000..fe63b56fa93af536339247759952a4084c6428e2
Binary files /dev/null and b/PythonScripts/Plots/ApproachCurves/ApproachCurve21_11_23.png differ
diff --git a/PythonScripts/Plots/ApproachCurves/ApproachCurve21_11_23_ToFullContact - Copy.pdf b/PythonScripts/Plots/ApproachCurves/ApproachCurve21_11_23_ToFullContact - Copy.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..1ce3c0c5261a0386e47ab439b053fa6dec0b30ec
Binary files /dev/null and b/PythonScripts/Plots/ApproachCurves/ApproachCurve21_11_23_ToFullContact - Copy.pdf differ
diff --git a/PythonScripts/Plots/ApproachCurves/ApproachCurve21_11_23_ToFullContact - Copy.png b/PythonScripts/Plots/ApproachCurves/ApproachCurve21_11_23_ToFullContact - Copy.png
new file mode 100644
index 0000000000000000000000000000000000000000..72a7497d419c8db89173115be819fad679056a04
Binary files /dev/null and b/PythonScripts/Plots/ApproachCurves/ApproachCurve21_11_23_ToFullContact - Copy.png differ
diff --git a/PythonScripts/Plots/ApproachCurves/ApproachCurve21_11_23_ToFullContact.pdf b/PythonScripts/Plots/ApproachCurves/ApproachCurve21_11_23_ToFullContact.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..b83d28672d129ec739434e39150f7113deb9aa69
Binary files /dev/null and b/PythonScripts/Plots/ApproachCurves/ApproachCurve21_11_23_ToFullContact.pdf differ
diff --git a/PythonScripts/Plots/ApproachCurves/ApproachCurve21_11_23_ToFullContact.png b/PythonScripts/Plots/ApproachCurves/ApproachCurve21_11_23_ToFullContact.png
new file mode 100644
index 0000000000000000000000000000000000000000..42be9162aff088edc30efef87a0d7c63b92e5250
Binary files /dev/null and b/PythonScripts/Plots/ApproachCurves/ApproachCurve21_11_23_ToFullContact.png differ
diff --git a/PythonScripts/Plots/ApproachCurves/ApproachCurveAfterNearOnlyZ3.pdf b/PythonScripts/Plots/ApproachCurves/ApproachCurveAfterNearOnlyZ3.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..d0f66459d4630f9621d7594975bcd54ffbde48de
Binary files /dev/null and b/PythonScripts/Plots/ApproachCurves/ApproachCurveAfterNearOnlyZ3.pdf differ
diff --git a/PythonScripts/Plots/ApproachCurves/ApproachCurveAfterNearOnlyZ3.png b/PythonScripts/Plots/ApproachCurves/ApproachCurveAfterNearOnlyZ3.png
new file mode 100644
index 0000000000000000000000000000000000000000..ecca7ee8c4377bdd4a23dbbc787826982aa720f2
Binary files /dev/null and b/PythonScripts/Plots/ApproachCurves/ApproachCurveAfterNearOnlyZ3.png differ
diff --git a/PythonScripts/Plots/ApproachCurves/ApproachCurveAlternating.pdf b/PythonScripts/Plots/ApproachCurves/ApproachCurveAlternating.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..4444411e8e38c290d65778d951d6699961d476fc
Binary files /dev/null and b/PythonScripts/Plots/ApproachCurves/ApproachCurveAlternating.pdf differ
diff --git a/PythonScripts/Plots/ApproachCurves/ApproachCurveAlternating.png b/PythonScripts/Plots/ApproachCurves/ApproachCurveAlternating.png
new file mode 100644
index 0000000000000000000000000000000000000000..cfdca5020b498ecaee4cfdc4b7e8b766b84b6fd6
Binary files /dev/null and b/PythonScripts/Plots/ApproachCurves/ApproachCurveAlternating.png differ
diff --git a/PythonScripts/Plots/ApproachCurves/ApproachCurveCurrent - Copy.pdf b/PythonScripts/Plots/ApproachCurves/ApproachCurveCurrent - Copy.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..9fdc998a135bf214626b6591efdc6634c8eb52ff
Binary files /dev/null and b/PythonScripts/Plots/ApproachCurves/ApproachCurveCurrent - Copy.pdf differ
diff --git a/PythonScripts/Plots/ApproachCurves/ApproachCurveCurrent - Copy.png b/PythonScripts/Plots/ApproachCurves/ApproachCurveCurrent - Copy.png
new file mode 100644
index 0000000000000000000000000000000000000000..a2122a47b09b849700b0db1408bbb1c510e0a787
Binary files /dev/null and b/PythonScripts/Plots/ApproachCurves/ApproachCurveCurrent - Copy.png differ
diff --git a/PythonScripts/Plots/ApproachCurves/ApproachCurveCurrent1 - Copy.pdf b/PythonScripts/Plots/ApproachCurves/ApproachCurveCurrent1 - Copy.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..5a50cbf9d6c701b2307dc3a1527ec208ac0d0f4e
Binary files /dev/null and b/PythonScripts/Plots/ApproachCurves/ApproachCurveCurrent1 - Copy.pdf differ
diff --git a/PythonScripts/Plots/ApproachCurves/ApproachCurveCurrent1 - Copy.png b/PythonScripts/Plots/ApproachCurves/ApproachCurveCurrent1 - Copy.png
new file mode 100644
index 0000000000000000000000000000000000000000..bfe305c771bbc07c61be384dba5f4ef8c6256364
Binary files /dev/null and b/PythonScripts/Plots/ApproachCurves/ApproachCurveCurrent1 - Copy.png differ
diff --git a/PythonScripts/Plots/ApproachCurves/ApproachCurveCurrent1.pdf b/PythonScripts/Plots/ApproachCurves/ApproachCurveCurrent1.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..ed3fdf3e6154a73c87ea8f940f9e6018ad737e82
Binary files /dev/null and b/PythonScripts/Plots/ApproachCurves/ApproachCurveCurrent1.pdf differ
diff --git a/PythonScripts/Plots/ApproachCurves/ApproachCurveCurrent1.png b/PythonScripts/Plots/ApproachCurves/ApproachCurveCurrent1.png
new file mode 100644
index 0000000000000000000000000000000000000000..b0883551504f939c72c9ff9cd25bfe85de3f5410
Binary files /dev/null and b/PythonScripts/Plots/ApproachCurves/ApproachCurveCurrent1.png differ
diff --git a/PythonScripts/Plots/ApproachCurves/ApproachCurveCurrent111.pdf b/PythonScripts/Plots/ApproachCurves/ApproachCurveCurrent111.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..3ddcf960d11c28834b7c6f4a6b7d5096235ee9d8
Binary files /dev/null and b/PythonScripts/Plots/ApproachCurves/ApproachCurveCurrent111.pdf differ
diff --git a/PythonScripts/Plots/ApproachCurves/ApproachCurveCurrent111.png b/PythonScripts/Plots/ApproachCurves/ApproachCurveCurrent111.png
new file mode 100644
index 0000000000000000000000000000000000000000..208d70771c76e1c685638fc2053280d222de2bc7
Binary files /dev/null and b/PythonScripts/Plots/ApproachCurves/ApproachCurveCurrent111.png differ
diff --git a/PythonScripts/Plots/ApproachCurves/ApproachCurveCurrent11113.pdf b/PythonScripts/Plots/ApproachCurves/ApproachCurveCurrent11113.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..6bcf5f4b5ee85bee24f5e641f6cd9eb43131c513
Binary files /dev/null and b/PythonScripts/Plots/ApproachCurves/ApproachCurveCurrent11113.pdf differ
diff --git a/PythonScripts/Plots/ApproachCurves/ApproachCurveCurrent11113.png b/PythonScripts/Plots/ApproachCurves/ApproachCurveCurrent11113.png
new file mode 100644
index 0000000000000000000000000000000000000000..364d91a86059d20b4f009811b1d1bca3570a9ad3
Binary files /dev/null and b/PythonScripts/Plots/ApproachCurves/ApproachCurveCurrent11113.png differ
diff --git a/PythonScripts/Plots/ApproachCurves/ApproachCurveCurrent12.pdf b/PythonScripts/Plots/ApproachCurves/ApproachCurveCurrent12.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..62bdd3230452c73cc415b797e5027fdd89e41cb9
Binary files /dev/null and b/PythonScripts/Plots/ApproachCurves/ApproachCurveCurrent12.pdf differ
diff --git a/PythonScripts/Plots/ApproachCurves/ApproachCurveCurrent12.png b/PythonScripts/Plots/ApproachCurves/ApproachCurveCurrent12.png
new file mode 100644
index 0000000000000000000000000000000000000000..2e888c42444ee54ba966b861ad56792585191038
Binary files /dev/null and b/PythonScripts/Plots/ApproachCurves/ApproachCurveCurrent12.png differ
diff --git a/PythonScripts/Plots/ApproachCurves/ApproachCurveCurrent16.pdf b/PythonScripts/Plots/ApproachCurves/ApproachCurveCurrent16.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..2e1bd235cdf32f672f4d13af31b68968274e376f
Binary files /dev/null and b/PythonScripts/Plots/ApproachCurves/ApproachCurveCurrent16.pdf differ
diff --git a/PythonScripts/Plots/ApproachCurves/ApproachCurveCurrent16.png b/PythonScripts/Plots/ApproachCurves/ApproachCurveCurrent16.png
new file mode 100644
index 0000000000000000000000000000000000000000..3bdf0d396b9f488fe5bf26361eafe450b8585c43
Binary files /dev/null and b/PythonScripts/Plots/ApproachCurves/ApproachCurveCurrent16.png differ
diff --git a/PythonScripts/Plots/ApproachCurves/ApproachCurveCurrent17.pdf b/PythonScripts/Plots/ApproachCurves/ApproachCurveCurrent17.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..2e81bc25b48ffd4639012c1682d67a97621d72ed
Binary files /dev/null and b/PythonScripts/Plots/ApproachCurves/ApproachCurveCurrent17.pdf differ
diff --git a/PythonScripts/Plots/ApproachCurves/ApproachCurveCurrent17.png b/PythonScripts/Plots/ApproachCurves/ApproachCurveCurrent17.png
new file mode 100644
index 0000000000000000000000000000000000000000..b3119900b3adc1c096a7fd9271dbd76aa131c3e8
Binary files /dev/null and b/PythonScripts/Plots/ApproachCurves/ApproachCurveCurrent17.png differ
diff --git a/PythonScripts/Plots/ApproachCurves/ApproachCurveCurrent2.pdf b/PythonScripts/Plots/ApproachCurves/ApproachCurveCurrent2.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..fc9f86b47532720eaa79670cac661afbe60246a6
Binary files /dev/null and b/PythonScripts/Plots/ApproachCurves/ApproachCurveCurrent2.pdf differ
diff --git a/PythonScripts/Plots/ApproachCurves/ApproachCurveCurrent2.png b/PythonScripts/Plots/ApproachCurves/ApproachCurveCurrent2.png
new file mode 100644
index 0000000000000000000000000000000000000000..cfdca5020b498ecaee4cfdc4b7e8b766b84b6fd6
Binary files /dev/null and b/PythonScripts/Plots/ApproachCurves/ApproachCurveCurrent2.png differ
diff --git a/PythonScripts/Plots/ApproachCurves/ApproachCurveCurrent3.pdf b/PythonScripts/Plots/ApproachCurves/ApproachCurveCurrent3.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..40f849b8f542786407079a4e243e907bcf61402d
Binary files /dev/null and b/PythonScripts/Plots/ApproachCurves/ApproachCurveCurrent3.pdf differ
diff --git a/PythonScripts/Plots/ApproachCurves/ApproachCurveCurrent3.png b/PythonScripts/Plots/ApproachCurves/ApproachCurveCurrent3.png
new file mode 100644
index 0000000000000000000000000000000000000000..de8172b2e70cb1abaa50f4b3f18ffabdf3cb65a5
Binary files /dev/null and b/PythonScripts/Plots/ApproachCurves/ApproachCurveCurrent3.png differ
diff --git a/PythonScripts/Plots/ApproachCurves/ApproachCurveCurrent4 - Copy.pdf b/PythonScripts/Plots/ApproachCurves/ApproachCurveCurrent4 - Copy.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..c7dded13ac2f74459bbf6aebb18fc643fb5d9f85
Binary files /dev/null and b/PythonScripts/Plots/ApproachCurves/ApproachCurveCurrent4 - Copy.pdf differ
diff --git a/PythonScripts/Plots/ApproachCurves/ApproachCurveCurrent4 - Copy.png b/PythonScripts/Plots/ApproachCurves/ApproachCurveCurrent4 - Copy.png
new file mode 100644
index 0000000000000000000000000000000000000000..b267a51e6cffddfad8f12b2958ca78fc43d783eb
Binary files /dev/null and b/PythonScripts/Plots/ApproachCurves/ApproachCurveCurrent4 - Copy.png differ
diff --git a/PythonScripts/Plots/ApproachCurves/ApproachCurveCurrent5 - Copy.pdf b/PythonScripts/Plots/ApproachCurves/ApproachCurveCurrent5 - Copy.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..d634fac4f40edc1b680b16aaf3b553fbf8ab477e
Binary files /dev/null and b/PythonScripts/Plots/ApproachCurves/ApproachCurveCurrent5 - Copy.pdf differ
diff --git a/PythonScripts/Plots/ApproachCurves/ApproachCurveCurrent5 - Copy.png b/PythonScripts/Plots/ApproachCurves/ApproachCurveCurrent5 - Copy.png
new file mode 100644
index 0000000000000000000000000000000000000000..dd07b8949dbb79c1725c7f3b07e0b55906ae9b1d
Binary files /dev/null and b/PythonScripts/Plots/ApproachCurves/ApproachCurveCurrent5 - Copy.png differ
diff --git a/PythonScripts/Plots/ApproachCurves/ApproachCurveCurrent6.pdf b/PythonScripts/Plots/ApproachCurves/ApproachCurveCurrent6.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..abd6484573ed51b3cf5de99f400e7730ae0c8243
Binary files /dev/null and b/PythonScripts/Plots/ApproachCurves/ApproachCurveCurrent6.pdf differ
diff --git a/PythonScripts/Plots/ApproachCurves/ApproachCurveCurrent6.png b/PythonScripts/Plots/ApproachCurves/ApproachCurveCurrent6.png
new file mode 100644
index 0000000000000000000000000000000000000000..d9da6c1f39cc1525eac9b9a836bdaab9a67d2a1a
Binary files /dev/null and b/PythonScripts/Plots/ApproachCurves/ApproachCurveCurrent6.png differ
diff --git a/PythonScripts/Plots/ApproachCurves/ApproachCurveCurrent9.pdf b/PythonScripts/Plots/ApproachCurves/ApproachCurveCurrent9.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..f6a0f1b577cc3c5040e7291b8d36700a287f21d8
Binary files /dev/null and b/PythonScripts/Plots/ApproachCurves/ApproachCurveCurrent9.pdf differ
diff --git a/PythonScripts/Plots/ApproachCurves/ApproachCurveCurrent9.png b/PythonScripts/Plots/ApproachCurves/ApproachCurveCurrent9.png
new file mode 100644
index 0000000000000000000000000000000000000000..bf026b897e53e435c5e09b7357b4169d9260b7f6
Binary files /dev/null and b/PythonScripts/Plots/ApproachCurves/ApproachCurveCurrent9.png differ
diff --git a/PythonScripts/Plots/ApproachCurves/ApproachCurveCurrentToFullContactAfterFeedthroughRepair.pdf b/PythonScripts/Plots/ApproachCurves/ApproachCurveCurrentToFullContactAfterFeedthroughRepair.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..d1677c68f2b378086c9c055f9bd94f176596bec8
Binary files /dev/null and b/PythonScripts/Plots/ApproachCurves/ApproachCurveCurrentToFullContactAfterFeedthroughRepair.pdf differ
diff --git a/PythonScripts/Plots/ApproachCurves/ApproachCurveCurrentToFullContactAfterFeedthroughRepair.png b/PythonScripts/Plots/ApproachCurves/ApproachCurveCurrentToFullContactAfterFeedthroughRepair.png
new file mode 100644
index 0000000000000000000000000000000000000000..b0883551504f939c72c9ff9cd25bfe85de3f5410
Binary files /dev/null and b/PythonScripts/Plots/ApproachCurves/ApproachCurveCurrentToFullContactAfterFeedthroughRepair.png differ
diff --git a/PythonScripts/Plots/ApproachCurves/ApproachCurveFrom25toNearSomewhere.pdf b/PythonScripts/Plots/ApproachCurves/ApproachCurveFrom25toNearSomewhere.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..7b29d0e21ec718289b01268433574186fd89ebfc
Binary files /dev/null and b/PythonScripts/Plots/ApproachCurves/ApproachCurveFrom25toNearSomewhere.pdf differ
diff --git a/PythonScripts/Plots/ApproachCurves/ApproachCurveFrom25toNearSomewhere.png b/PythonScripts/Plots/ApproachCurves/ApproachCurveFrom25toNearSomewhere.png
new file mode 100644
index 0000000000000000000000000000000000000000..789b12c946caa762ad939ed3897eb868f365dce8
Binary files /dev/null and b/PythonScripts/Plots/ApproachCurves/ApproachCurveFrom25toNearSomewhere.png differ
diff --git a/PythonScripts/Plots/ApproachCurves/ApproachCurveFrom50Mikron.pdf b/PythonScripts/Plots/ApproachCurves/ApproachCurveFrom50Mikron.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..bbdfec17e17c2e6336775e9f7ef90394b2778ef2
Binary files /dev/null and b/PythonScripts/Plots/ApproachCurves/ApproachCurveFrom50Mikron.pdf differ
diff --git a/PythonScripts/Plots/ApproachCurves/ApproachCurveFrom50Mikron.png b/PythonScripts/Plots/ApproachCurves/ApproachCurveFrom50Mikron.png
new file mode 100644
index 0000000000000000000000000000000000000000..059063cc5f51d5be0bd304b23602f971016c8c6a
Binary files /dev/null and b/PythonScripts/Plots/ApproachCurves/ApproachCurveFrom50Mikron.png differ
diff --git a/PythonScripts/Plots/ApproachCurves/ApproachCurveFromAfar.pdf b/PythonScripts/Plots/ApproachCurves/ApproachCurveFromAfar.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..3d2eb547812915c4618d8dd373de8c5fcf937c2c
Binary files /dev/null and b/PythonScripts/Plots/ApproachCurves/ApproachCurveFromAfar.pdf differ
diff --git a/PythonScripts/Plots/ApproachCurves/ApproachCurveFromAfar.png b/PythonScripts/Plots/ApproachCurves/ApproachCurveFromAfar.png
new file mode 100644
index 0000000000000000000000000000000000000000..9597f1ed9aac8dd3c4306b677243496b348cc64d
Binary files /dev/null and b/PythonScripts/Plots/ApproachCurves/ApproachCurveFromAfar.png differ
diff --git a/PythonScripts/Plots/ApproachCurves/ApproachCurveFromAfar20_11_23.pdf b/PythonScripts/Plots/ApproachCurves/ApproachCurveFromAfar20_11_23.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..bb7ec9174fcbd86c78195b8dda72545b12f3014d
Binary files /dev/null and b/PythonScripts/Plots/ApproachCurves/ApproachCurveFromAfar20_11_23.pdf differ
diff --git a/PythonScripts/Plots/ApproachCurves/ApproachCurveFromAfar20_11_23.png b/PythonScripts/Plots/ApproachCurves/ApproachCurveFromAfar20_11_23.png
new file mode 100644
index 0000000000000000000000000000000000000000..9597f1ed9aac8dd3c4306b677243496b348cc64d
Binary files /dev/null and b/PythonScripts/Plots/ApproachCurves/ApproachCurveFromAfar20_11_23.png differ
diff --git a/PythonScripts/Plots/ApproachCurves/ApproachCurveOldCorrelationtestNOTREALDATA.pdf b/PythonScripts/Plots/ApproachCurves/ApproachCurveOldCorrelationtestNOTREALDATA.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..ced2a8e25c3fc8bb386bfd53510dd2142de59a4f
Binary files /dev/null and b/PythonScripts/Plots/ApproachCurves/ApproachCurveOldCorrelationtestNOTREALDATA.pdf differ
diff --git a/PythonScripts/Plots/ApproachCurves/ApproachCurveOldCorrelationtestNOTREALDATA.png b/PythonScripts/Plots/ApproachCurves/ApproachCurveOldCorrelationtestNOTREALDATA.png
new file mode 100644
index 0000000000000000000000000000000000000000..3165dc2662a19477ea7d94a99854fdc2d30573e0
Binary files /dev/null and b/PythonScripts/Plots/ApproachCurves/ApproachCurveOldCorrelationtestNOTREALDATA.png differ
diff --git a/PythonScripts/Plots/ApproachCurves/ApproachCurveSlightForwardAgain.pdf b/PythonScripts/Plots/ApproachCurves/ApproachCurveSlightForwardAgain.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..045f3a55a0935e08492750a57311209852635199
Binary files /dev/null and b/PythonScripts/Plots/ApproachCurves/ApproachCurveSlightForwardAgain.pdf differ
diff --git a/PythonScripts/Plots/ApproachCurves/ApproachCurveSlightForwardAgain.png b/PythonScripts/Plots/ApproachCurves/ApproachCurveSlightForwardAgain.png
new file mode 100644
index 0000000000000000000000000000000000000000..de685915dec90762535566103c97adcec0533fb0
Binary files /dev/null and b/PythonScripts/Plots/ApproachCurves/ApproachCurveSlightForwardAgain.png differ
diff --git a/PythonScripts/Plots/ApproachCurves/IneterstingCurve.pdf b/PythonScripts/Plots/ApproachCurves/IneterstingCurve.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..cbcaba2b0691ad3fee0e8af2d9bb2a3668b85659
Binary files /dev/null and b/PythonScripts/Plots/ApproachCurves/IneterstingCurve.pdf differ
diff --git a/PythonScripts/Plots/ApproachCurves/IneterstingCurve.png b/PythonScripts/Plots/ApproachCurves/IneterstingCurve.png
new file mode 100644
index 0000000000000000000000000000000000000000..c18dd335ef5b23a5263c4852e4592cac8e992c02
Binary files /dev/null and b/PythonScripts/Plots/ApproachCurves/IneterstingCurve.png differ
diff --git a/PythonScripts/Plots/ApproachCurves/RC170823200RC1708232002comparison.pdf b/PythonScripts/Plots/ApproachCurves/RC170823200RC1708232002comparison.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..92eed48608c90e3e598c5020f6fce7c061ce7b19
Binary files /dev/null and b/PythonScripts/Plots/ApproachCurves/RC170823200RC1708232002comparison.pdf differ
diff --git a/PythonScripts/Plots/ApproachCurves/RC170823200RC1708232002comparison.png b/PythonScripts/Plots/ApproachCurves/RC170823200RC1708232002comparison.png
new file mode 100644
index 0000000000000000000000000000000000000000..e34d249e689a7902a49dd3b7a20eab51502cce75
Binary files /dev/null and b/PythonScripts/Plots/ApproachCurves/RC170823200RC1708232002comparison.png differ
diff --git a/PythonScripts/Plots/ApproachCurves/RetractCurve171123.pdf b/PythonScripts/Plots/ApproachCurves/RetractCurve171123.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..0506e53b1f55006a56803450c1121691b0d198a9
Binary files /dev/null and b/PythonScripts/Plots/ApproachCurves/RetractCurve171123.pdf differ
diff --git a/PythonScripts/Plots/ApproachCurves/RetractCurve171123.png b/PythonScripts/Plots/ApproachCurves/RetractCurve171123.png
new file mode 100644
index 0000000000000000000000000000000000000000..beea1de859f37ea39827681bc032aa1a594523c5
Binary files /dev/null and b/PythonScripts/Plots/ApproachCurves/RetractCurve171123.png differ
diff --git a/PythonScripts/Plots/ApproachCurves/RetractCurve17_08_23_200steps.pdf b/PythonScripts/Plots/ApproachCurves/RetractCurve17_08_23_200steps.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..c448f9b9f801a430f272916ca499fd1cf53e6929
Binary files /dev/null and b/PythonScripts/Plots/ApproachCurves/RetractCurve17_08_23_200steps.pdf differ
diff --git a/PythonScripts/Plots/ApproachCurves/RetractCurve17_08_23_200steps.png b/PythonScripts/Plots/ApproachCurves/RetractCurve17_08_23_200steps.png
new file mode 100644
index 0000000000000000000000000000000000000000..6cfeaa92083fd62c9a30ff90200ca662e4f6f6d2
Binary files /dev/null and b/PythonScripts/Plots/ApproachCurves/RetractCurve17_08_23_200steps.png differ
diff --git a/PythonScripts/Plots/ApproachCurves/RetractCurve17_08_23_200steps_2.pdf b/PythonScripts/Plots/ApproachCurves/RetractCurve17_08_23_200steps_2.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..a0cf215651e46db55b6f2d1338d9e37402df5195
Binary files /dev/null and b/PythonScripts/Plots/ApproachCurves/RetractCurve17_08_23_200steps_2.pdf differ
diff --git a/PythonScripts/Plots/ApproachCurves/RetractCurve17_08_23_200steps_2.png b/PythonScripts/Plots/ApproachCurves/RetractCurve17_08_23_200steps_2.png
new file mode 100644
index 0000000000000000000000000000000000000000..9cc1db1ebb177c5e7b22957e24bb0525839406d6
Binary files /dev/null and b/PythonScripts/Plots/ApproachCurves/RetractCurve17_08_23_200steps_2.png differ
diff --git a/PythonScripts/Plots/ApproachCurves/RetractCurveCurrentFromFullContactAfterFeedthroughRepair.pdf b/PythonScripts/Plots/ApproachCurves/RetractCurveCurrentFromFullContactAfterFeedthroughRepair.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..e8a503ba286660633c86dc557427d323578e3b67
Binary files /dev/null and b/PythonScripts/Plots/ApproachCurves/RetractCurveCurrentFromFullContactAfterFeedthroughRepair.pdf differ
diff --git a/PythonScripts/Plots/ApproachCurves/RetractCurveCurrentFromFullContactAfterFeedthroughRepair.png b/PythonScripts/Plots/ApproachCurves/RetractCurveCurrentFromFullContactAfterFeedthroughRepair.png
new file mode 100644
index 0000000000000000000000000000000000000000..cc97ebc94731f283372bdb50e2452be335259951
Binary files /dev/null and b/PythonScripts/Plots/ApproachCurves/RetractCurveCurrentFromFullContactAfterFeedthroughRepair.png differ
diff --git a/PythonScripts/Plots/ApproachCurves/RetractCurve_21_11_23_600.pdf b/PythonScripts/Plots/ApproachCurves/RetractCurve_21_11_23_600.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..ed5dd8b697cb8b524c3098c867af336c2e1f178f
Binary files /dev/null and b/PythonScripts/Plots/ApproachCurves/RetractCurve_21_11_23_600.pdf differ
diff --git a/PythonScripts/Plots/ApproachCurves/RetractCurve_21_11_23_600.png b/PythonScripts/Plots/ApproachCurves/RetractCurve_21_11_23_600.png
new file mode 100644
index 0000000000000000000000000000000000000000..33733c17459d3fc3ad765d0231d77f99115142e6
Binary files /dev/null and b/PythonScripts/Plots/ApproachCurves/RetractCurve_21_11_23_600.png differ
diff --git a/PythonScripts/Plots/ApproachCurves/RetractCurve_21_11_23_First300.pdf b/PythonScripts/Plots/ApproachCurves/RetractCurve_21_11_23_First300.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..9b69fa0f6c65cb1f20a2f4663a24eae788a5eae8
Binary files /dev/null and b/PythonScripts/Plots/ApproachCurves/RetractCurve_21_11_23_First300.pdf differ
diff --git a/PythonScripts/Plots/ApproachCurves/RetractCurve_21_11_23_First300.png b/PythonScripts/Plots/ApproachCurves/RetractCurve_21_11_23_First300.png
new file mode 100644
index 0000000000000000000000000000000000000000..6c0f91f87d2ad7478c2e432b83e81acf3106c182
Binary files /dev/null and b/PythonScripts/Plots/ApproachCurves/RetractCurve_21_11_23_First300.png differ
diff --git a/PythonScripts/Plots/ApproachCurves/TestDrivingAtFullContact.pdf b/PythonScripts/Plots/ApproachCurves/TestDrivingAtFullContact.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..2ff8a1aee102639af2cf9606928a31abf3601b3d
Binary files /dev/null and b/PythonScripts/Plots/ApproachCurves/TestDrivingAtFullContact.pdf differ
diff --git a/PythonScripts/Plots/ApproachCurves/TestDrivingAtFullContact.png b/PythonScripts/Plots/ApproachCurves/TestDrivingAtFullContact.png
new file mode 100644
index 0000000000000000000000000000000000000000..1037a01f5e9cc3c8f263accf247aedeac7670475
Binary files /dev/null and b/PythonScripts/Plots/ApproachCurves/TestDrivingAtFullContact.png differ
diff --git a/PythonScripts/Plots/Calibration/100_All_Data.pdf b/PythonScripts/Plots/Calibration/100_All_Data.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..b64010eaec9835cd4c692c4154bc0f2d52b1b7e1
Binary files /dev/null and b/PythonScripts/Plots/Calibration/100_All_Data.pdf differ
diff --git a/PythonScripts/Plots/Calibration/125_All_Data.pdf b/PythonScripts/Plots/Calibration/125_All_Data.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..a6bf08fadd06dd20947a683e55755c48dbd2945a
Binary files /dev/null and b/PythonScripts/Plots/Calibration/125_All_Data.pdf differ
diff --git a/PythonScripts/Plots/Calibration/85_All_Data.pdf b/PythonScripts/Plots/Calibration/85_All_Data.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..53b43e07f49dc73e232f54f67dae917be197f8dd
Binary files /dev/null and b/PythonScripts/Plots/Calibration/85_All_Data.pdf differ
diff --git a/PythonScripts/Plots/Calibration/Z_100.pdf b/PythonScripts/Plots/Calibration/Z_100.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..f6f1ee78f3854f4c2976374946312575193e5798
Binary files /dev/null and b/PythonScripts/Plots/Calibration/Z_100.pdf differ
diff --git a/PythonScripts/Plots/Calibration/Z_100.png b/PythonScripts/Plots/Calibration/Z_100.png
new file mode 100644
index 0000000000000000000000000000000000000000..fffe602cb6a44c38ed08911e429a2e15379eec2b
Binary files /dev/null and b/PythonScripts/Plots/Calibration/Z_100.png differ
diff --git a/PythonScripts/Plots/Calibration/Z_125.pdf b/PythonScripts/Plots/Calibration/Z_125.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..be6f16b5e7f0ff5ee4a1b3359b07c7832efafc9b
Binary files /dev/null and b/PythonScripts/Plots/Calibration/Z_125.pdf differ
diff --git a/PythonScripts/Plots/Calibration/Z_125.png b/PythonScripts/Plots/Calibration/Z_125.png
new file mode 100644
index 0000000000000000000000000000000000000000..5e63dccdd5be168c01a84782ee7c9bc3c9ec5a67
Binary files /dev/null and b/PythonScripts/Plots/Calibration/Z_125.png differ
diff --git a/PythonScripts/Plots/Calibration/Z_85.pdf b/PythonScripts/Plots/Calibration/Z_85.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..cc50d5afcf3fb7cad567c355b1b51628a4ba454a
Binary files /dev/null and b/PythonScripts/Plots/Calibration/Z_85.pdf differ
diff --git a/PythonScripts/Plots/Calibration/Z_85.png b/PythonScripts/Plots/Calibration/Z_85.png
new file mode 100644
index 0000000000000000000000000000000000000000..2149258c817d3e0a01c0544f6f7292ac8c4db94b
Binary files /dev/null and b/PythonScripts/Plots/Calibration/Z_85.png differ
diff --git a/PythonScripts/Plots/CalibrationAfterRepair/100V.pdf b/PythonScripts/Plots/CalibrationAfterRepair/100V.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..b7b20d1a2f9b362574459f2de23b4140ccc3dbd9
Binary files /dev/null and b/PythonScripts/Plots/CalibrationAfterRepair/100V.pdf differ
diff --git a/PythonScripts/Plots/CalibrationAfterRepair/100V.png b/PythonScripts/Plots/CalibrationAfterRepair/100V.png
new file mode 100644
index 0000000000000000000000000000000000000000..2a2f7e66d6414a9b6b195ad23fec51d9c4c39de9
Binary files /dev/null and b/PythonScripts/Plots/CalibrationAfterRepair/100V.png differ
diff --git a/PythonScripts/Plots/CalibrationAfterRepair/120V.pdf b/PythonScripts/Plots/CalibrationAfterRepair/120V.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..ce1a5ce799312159132b174cb85ab6213bdbc0d5
Binary files /dev/null and b/PythonScripts/Plots/CalibrationAfterRepair/120V.pdf differ
diff --git a/PythonScripts/Plots/CalibrationAfterRepair/120V.png b/PythonScripts/Plots/CalibrationAfterRepair/120V.png
new file mode 100644
index 0000000000000000000000000000000000000000..be1a53ffb66a40f30f9db4fd5bf5d0e42c71a1d0
Binary files /dev/null and b/PythonScripts/Plots/CalibrationAfterRepair/120V.png differ
diff --git a/PythonScripts/Plots/CalibrationAfterRepair/70V.pdf b/PythonScripts/Plots/CalibrationAfterRepair/70V.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..411b9b640372a52c18b1db0ef48c31fd0534f3ac
Binary files /dev/null and b/PythonScripts/Plots/CalibrationAfterRepair/70V.pdf differ
diff --git a/PythonScripts/Plots/CalibrationAfterRepair/70V.png b/PythonScripts/Plots/CalibrationAfterRepair/70V.png
new file mode 100644
index 0000000000000000000000000000000000000000..7ecd9218df513afa205073a02b92cb9db405b036
Binary files /dev/null and b/PythonScripts/Plots/CalibrationAfterRepair/70V.png differ
diff --git a/PythonScripts/Plots/CalibrationAfterRepair/80V.pdf b/PythonScripts/Plots/CalibrationAfterRepair/80V.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..d432a01769ad91392b92c76f72251d4bb51639f5
Binary files /dev/null and b/PythonScripts/Plots/CalibrationAfterRepair/80V.pdf differ
diff --git a/PythonScripts/Plots/CalibrationAfterRepair/80V.png b/PythonScripts/Plots/CalibrationAfterRepair/80V.png
new file mode 100644
index 0000000000000000000000000000000000000000..8890c756f0e2d44f0ba00e0ab0a2781fc92cfb56
Binary files /dev/null and b/PythonScripts/Plots/CalibrationAfterRepair/80V.png differ
diff --git a/PythonScripts/Plots/CalibrationAfterRepair/Errors.pdf b/PythonScripts/Plots/CalibrationAfterRepair/Errors.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..9502fe33658a8cc9e7b7225a21e36f2f94c75562
Binary files /dev/null and b/PythonScripts/Plots/CalibrationAfterRepair/Errors.pdf differ
diff --git a/PythonScripts/Plots/CalibrationAfterRepair/Errors.png b/PythonScripts/Plots/CalibrationAfterRepair/Errors.png
new file mode 100644
index 0000000000000000000000000000000000000000..99acfe6d84aee9d75fc6ae96c5647be717f0bdb3
Binary files /dev/null and b/PythonScripts/Plots/CalibrationAfterRepair/Errors.png differ
diff --git a/PythonScripts/Plots/CalibrationAfterRepair/Stepsizes.pdf b/PythonScripts/Plots/CalibrationAfterRepair/Stepsizes.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..f3ead9c340c0ad15bb4e20d18a3a6be21a49503f
Binary files /dev/null and b/PythonScripts/Plots/CalibrationAfterRepair/Stepsizes.pdf differ
diff --git a/PythonScripts/Plots/CalibrationAfterRepair/Stepsizes.png b/PythonScripts/Plots/CalibrationAfterRepair/Stepsizes.png
new file mode 100644
index 0000000000000000000000000000000000000000..7be87da929af3ef6be6a119d1915f12217e0d1c1
Binary files /dev/null and b/PythonScripts/Plots/CalibrationAfterRepair/Stepsizes.png differ
diff --git a/PythonScripts/Plots/CalibrationAfterRepair/ratioUD.pdf b/PythonScripts/Plots/CalibrationAfterRepair/ratioUD.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..7ad4c99571514f078d84c7cb9b674e887c102743
Binary files /dev/null and b/PythonScripts/Plots/CalibrationAfterRepair/ratioUD.pdf differ
diff --git a/PythonScripts/Plots/CalibrationAfterRepair/ratioUD.png b/PythonScripts/Plots/CalibrationAfterRepair/ratioUD.png
new file mode 100644
index 0000000000000000000000000000000000000000..b21bfe55488469d5ea565ba70cef281a4f09fb10
Binary files /dev/null and b/PythonScripts/Plots/CalibrationAfterRepair/ratioUD.png differ
diff --git a/PythonScripts/Plots/RHKDatadep.pdf b/PythonScripts/Plots/RHKDatadep.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..21de5b61cc0a9e883ad3200afbae8310d36633ef
Binary files /dev/null and b/PythonScripts/Plots/RHKDatadep.pdf differ
diff --git a/PythonScripts/Plots/RHKDatadep.png b/PythonScripts/Plots/RHKDatadep.png
new file mode 100644
index 0000000000000000000000000000000000000000..88b9405e6b3d6542ab94c9d26f774c83ce1a36f5
Binary files /dev/null and b/PythonScripts/Plots/RHKDatadep.png differ
diff --git a/PythonScripts/Plots/Z3Examine/FrontPlateAngle.pdf b/PythonScripts/Plots/Z3Examine/FrontPlateAngle.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..bbaa132c59db5f2890ec61cec40c99d4d191dedd
Binary files /dev/null and b/PythonScripts/Plots/Z3Examine/FrontPlateAngle.pdf differ
diff --git a/PythonScripts/Plots/Z3Examine/FrontPlateAngle.png b/PythonScripts/Plots/Z3Examine/FrontPlateAngle.png
new file mode 100644
index 0000000000000000000000000000000000000000..1efba1ce4e30378d2e57139b4a3c6db7a1f1f25e
Binary files /dev/null and b/PythonScripts/Plots/Z3Examine/FrontPlateAngle.png differ
diff --git a/PythonScripts/Plots/Z3Examine/ScrewRot.pdf b/PythonScripts/Plots/Z3Examine/ScrewRot.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..0a60382461ab5e87f9a629281b1f10896acde9e6
Binary files /dev/null and b/PythonScripts/Plots/Z3Examine/ScrewRot.pdf differ
diff --git a/PythonScripts/Plots/Z3Examine/ScrewRot.png b/PythonScripts/Plots/Z3Examine/ScrewRot.png
new file mode 100644
index 0000000000000000000000000000000000000000..0c9d0bd2e840d196bad191db33ae83ff5ba65e57
Binary files /dev/null and b/PythonScripts/Plots/Z3Examine/ScrewRot.png differ
diff --git a/PythonScripts/Plots/Z3Examine/ScrewRot_CompareSwappedPlate.pdf b/PythonScripts/Plots/Z3Examine/ScrewRot_CompareSwappedPlate.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..f0b6b75dd31e5863de6ae0e670022d3b246bc18b
Binary files /dev/null and b/PythonScripts/Plots/Z3Examine/ScrewRot_CompareSwappedPlate.pdf differ
diff --git a/PythonScripts/Plots/Z3Examine/ScrewRot_CompareSwappedPlate.png b/PythonScripts/Plots/Z3Examine/ScrewRot_CompareSwappedPlate.png
new file mode 100644
index 0000000000000000000000000000000000000000..e85160ca3228fe4925f8fbb3d6a174a0af39cd82
Binary files /dev/null and b/PythonScripts/Plots/Z3Examine/ScrewRot_CompareSwappedPlate.png differ
diff --git a/PythonScripts/Plots/Z3Examine/ScrewRot_SwappedPlate.pdf b/PythonScripts/Plots/Z3Examine/ScrewRot_SwappedPlate.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..b4c9406dd8ee5ea7df2b7bd2bea889a0223de6d8
Binary files /dev/null and b/PythonScripts/Plots/Z3Examine/ScrewRot_SwappedPlate.pdf differ
diff --git a/PythonScripts/Plots/Z3Examine/ScrewRot_SwappedPlate.png b/PythonScripts/Plots/Z3Examine/ScrewRot_SwappedPlate.png
new file mode 100644
index 0000000000000000000000000000000000000000..f50a3676360e5c5f6199e1c9babaec9caf47b906
Binary files /dev/null and b/PythonScripts/Plots/Z3Examine/ScrewRot_SwappedPlate.png differ
diff --git a/PythonScripts/Plots/Z3Examine/ScrewRot_detail.pdf b/PythonScripts/Plots/Z3Examine/ScrewRot_detail.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..d8e84872d31f7a28f58b0a45117e17f2b3bba19b
Binary files /dev/null and b/PythonScripts/Plots/Z3Examine/ScrewRot_detail.pdf differ
diff --git a/PythonScripts/Plots/Z3Examine/ScrewRot_detail.png b/PythonScripts/Plots/Z3Examine/ScrewRot_detail.png
new file mode 100644
index 0000000000000000000000000000000000000000..90664b01c71b3ddabf183d7121c5deea4db5e056
Binary files /dev/null and b/PythonScripts/Plots/Z3Examine/ScrewRot_detail.png differ
diff --git a/PythonScripts/Plots/Z3Examine/ScrewWobble.pdf b/PythonScripts/Plots/Z3Examine/ScrewWobble.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..f2220a1ed0a4c5091e63e5cd6b0ac3b011e1a8bf
Binary files /dev/null and b/PythonScripts/Plots/Z3Examine/ScrewWobble.pdf differ
diff --git a/PythonScripts/Plots/Z3Examine/ScrewWobble.png b/PythonScripts/Plots/Z3Examine/ScrewWobble.png
new file mode 100644
index 0000000000000000000000000000000000000000..53eabd2a4935b6b3562d2f6f8a3d22c2e41edf33
Binary files /dev/null and b/PythonScripts/Plots/Z3Examine/ScrewWobble.png differ
diff --git a/PythonScripts/Plots/Z3Examine/UpDownRatio.pdf b/PythonScripts/Plots/Z3Examine/UpDownRatio.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..777207358be3a2d59828caee90a64164f75cd695
Binary files /dev/null and b/PythonScripts/Plots/Z3Examine/UpDownRatio.pdf differ
diff --git a/PythonScripts/Plots/Z3Examine/UpDownRatio.png b/PythonScripts/Plots/Z3Examine/UpDownRatio.png
new file mode 100644
index 0000000000000000000000000000000000000000..fe473d756b7cc6d3233a7195af7081e604359d32
Binary files /dev/null and b/PythonScripts/Plots/Z3Examine/UpDownRatio.png differ