def newtoncalc(plot_input, xbin, ybin): p_ion1, p_ion2, p_ion3, ion1, ion2, ion3 = plot_input px1, py1, pz1 = p_ion1 px2, py2, pz2 = p_ion2 px3, py3, pz3 = p_ion3 dot1_2 = px1*px2 + py1*py2 + pz1*pz2 dot1_3 = px1*px3 + py1*py3 + pz1*pz3 pmag1 = np.sqrt(px1**2 + py1**2 + pz1**2) pmag2 = np.sqrt(px2**2 + py2**2 + pz2**2) pmag3 = np.sqrt(px3**2 + py3**2 + pz3**2) px2_newton = dot1_2/pmag1 py2_newton = np.sqrt(pmag2**2 - px2_newton**2) px3_newton = dot1_3/pmag1 py3_newton = -np.sqrt(pmag3**2 - px3_newton**2) px_newton = np.concatenate((px2_newton/pmag1, px3_newton/pmag1)) py_newton = np.concatenate((py2_newton/pmag1, py3_newton/pmag1)) plt.style.use('default') fig, ax = plt.subplots(1, 1) title = 'Newton Plot Relative to {}'.format(ion1) fig.canvas.set_window_title(title) hist2d(px_newton, py_newton, ax, title, 'Relative X Momentum', 'Relative Y Momentum', xbinsize=xbin, ybinsize=ybin, color_map='viridis') ax.quiver(1, 0, color='r', scale=1, scale_units='x', headlength=4, headaxislength=4) ax.axhline(y=0, color='black', linewidth=0.8) ax.axvline(x=0, color='black', linewidth=0.8) ax.text(1.02, 0.08, ion1, fontsize=12) ax.text(0.01, 0.93, ion2, fontsize=12, transform=ax.transAxes) ax.text(0.01, 0.03, ion3, fontsize=12, transform=ax.transAxes) ax.set_xlim(-5, 5) ax.set_ylim(-5 ,5)
def dalitz3(self, xbin, ybin): epsilon1 = self.ke_tot1 / self.ker epsilon2 = self.ke_tot2 / self.ker epsilon3 = self.ke_tot3 / self.ker x_data = (epsilon2 - epsilon3) / (3**(1 / 2)) y_data = epsilon1 - 1 / 3 plt.style.use('default') fig, ax = plt.subplots(1, 1) fig.canvas.set_window_title('Dalitz Plot 3') xlabel = r'$(\epsilon_2 - \epsilon_3)/\sqrt{3} $' ylabel = r'$\epsilon_1 - \frac{1}{3}$' hist2d(x_data, y_data, ax, 'Dalitz Plot', xlabel, ylabel, xbinsize=xbin, ybinsize=ybin, color_map='viridis') ax.set_xlim(-0.6, 0.6) ax.set_ylim(-0.4, 0.6) ax.set_aspect('equal') circle = mpatches.Circle((0, 0), 1 / 3, fill=False, linestyle='--') ax.add_patch(circle) ax.xaxis.label.set_size(12) ax.yaxis.label.set_size(12) plt.tight_layout()
def cos_ker(self): cos = self.pz1 / np.sqrt(self.px1**2 + self.py1**2 + self.pz1**2) plt.style.use('dark_background') fig, ax = plt.subplots(1, 1) fig.canvas.set_window_title('Cos(theta) vs. KER') hist2d(self.ker, cos, ax, r'{}, {} Cos($\theta$) vs. KER'.format(self.ion1, self.ion2), 'Kinetic Energy Release (eV)', r'Cos($\theta$)')
def mom_sphere(self, xbin, ybin): plt.style.use('dark_background') fig, [ax1, ax2, ax3] = plt.subplots(1, 3) fig.suptitle('Momentum Spheres {}'.format(self.ion1)) fig.canvas.set_window_title('Momentum Spheres') hist2d(self.px1, self.py1, ax1, '$P_x$ vs. $P_y$', '$P_x$', '$P_y$', xbinsize=xbin, ybinsize=ybin, colorbar=False) hist2d(self.py1, self.pz1, ax2, '$P_y$ vs. $P_z$', '$P_y$', '$P_z$', xbinsize=xbin, ybinsize=ybin, colorbar=False) hist2d( self.pz1, self.px1, ax3, '$P_z$ vs. $P_x$', '$P_z$', '$P_x$', xbinsize=xbin, ybinsize=ybin, )