115 lines
4.3 KiB
Python
115 lines
4.3 KiB
Python
import numpy as np
|
|
import matplotlib.pyplot as plt
|
|
from mpl_toolkits.mplot3d import Axes3D
|
|
|
|
acolors = plt.get_cmap('tab20',24)
|
|
ccolors = plt.get_cmap('tab20',24)
|
|
|
|
k=-2*np.pi/24.
|
|
offset = 6*k + 3*k #-pi/2
|
|
xarra_1 = np.array([37*np.cos(k*i+offset) for i in np.arange(0,24)])
|
|
yarra_1 = np.array([37*np.sin(k*i+offset) for i in np.arange(0,24)])
|
|
labelsa_1 = np.array([i for i in np.arange(0,24)])
|
|
|
|
fig,ax = plt.subplots(figsize=(10,10))
|
|
ax.invert_yaxis()
|
|
ax.plot(xarra_1,yarra_1,"x",label="anode, z=-L/2")
|
|
|
|
for x,y,label in zip(xarra_1,yarra_1,labelsa_1):
|
|
ax.text(x,y,label)
|
|
|
|
kc=2*np.pi/24.
|
|
offsetc = -4*kc + 2*kc - np.pi/24 #-pi/4
|
|
xarrc_1 = np.array([42*np.cos(kc*i+offsetc) for i in np.arange(0,24)])
|
|
yarrc_1 = np.array([42*np.sin(kc*i+offsetc) for i in np.arange(0,24)])
|
|
labelsc_1 = np.array([i for i in np.arange(0,24)])
|
|
|
|
ax.plot(xarrc_1,yarrc_1,"o",label="cathode, z=-L/2, where they are picked up")
|
|
|
|
for x,y,label in zip(xarrc_1,yarrc_1,labelsc_1):
|
|
ax.text(x,y,label)
|
|
plt.title("z=-L/2 plane, beam going into the plane along +z, (+x right, +y down)")
|
|
plt.grid()
|
|
plt.legend()
|
|
plt.savefig("plane1.png")
|
|
plt.show()
|
|
|
|
fig,ax = plt.subplots(figsize=(10,10))
|
|
ax.invert_yaxis()
|
|
|
|
offset = offset-3*k
|
|
xarra_2 = np.array([37*np.cos(k*i+offset) for i in np.arange(0,24)])
|
|
yarra_2 = np.array([37*np.sin(k*i+offset) for i in np.arange(0,24)])
|
|
labelsa_2 = np.array([i for i in np.arange(0,24)])
|
|
|
|
ax.plot(xarra_2,yarra_2,"x",label="anode, z=+L/2, where they are picked up")
|
|
|
|
for x,y,label in zip(xarra_2,yarra_2,labelsa_2):
|
|
ax.text(x,y,label)
|
|
|
|
offsetc = offsetc-3*kc
|
|
xarrc_2 = np.array([42*np.cos(kc*i+offsetc) for i in np.arange(0,24)])
|
|
yarrc_2 = np.array([42*np.sin(kc*i+offsetc) for i in np.arange(0,24)])
|
|
labelsc_2 = np.array([i for i in np.arange(0,24)])
|
|
|
|
ax.plot(xarrc_2,yarrc_2,"o",label="cathode, z=+L/2")
|
|
|
|
for x,y,label in zip(xarrc_2,yarrc_2,labelsc_2):
|
|
ax.text(x,y,label)
|
|
plt.title("z=+L/2 plane, beam going into the plane along +z, (+x right, +y down)")
|
|
plt.grid()
|
|
plt.legend()
|
|
plt.savefig("plane2.png")
|
|
plt.show()
|
|
|
|
fig = plt.figure(figsize=(10,10))
|
|
ax = fig.add_subplot(111,projection='3d')
|
|
ax.set_xlabel("x")
|
|
ax.set_ylabel("y")
|
|
ax.set_zlabel("z")
|
|
|
|
xx_a = np.array([[x1,x2] for x1,x2 in zip(xarra_1,xarra_2)])
|
|
yy_a = np.array([[y1,y2] for y1,y2 in zip(yarra_1,yarra_2)])
|
|
zz_a = np.array([[-173.5,173.5] for x1,x2 in zip(xarra_1,xarra_2)])
|
|
for i,[xx,yy,zz] in enumerate(zip(xx_a,yy_a,zz_a)):
|
|
ax.plot(xx,yy,zz,'-',color=acolors(i/24))
|
|
|
|
for i,[x,y,label] in enumerate(zip(xarra_1,yarra_1,labelsa_1)):
|
|
ax.text(x,y,-173,"a"+str(label),color=acolors(i/24))
|
|
for i,[x,y,label] in enumerate(zip(xarra_2,yarra_2,labelsa_2)):
|
|
ax.text(x,y,+173,"a"+str(label),color=acolors(i/24))
|
|
|
|
xx_c = np.array([[x1,x2] for x1,x2 in zip(xarrc_1,xarrc_2)])
|
|
yy_c = np.array([[y1,y2] for y1,y2 in zip(yarrc_1,yarrc_2)])
|
|
zz_c = np.array([[-173.5,173.5] for x1,x2 in zip(xarrc_1,xarrc_2)])
|
|
for i,[xx,yy,zz] in enumerate(zip(xx_c,yy_c,zz_c)):
|
|
ax.plot(xx,yy,zz,'--',color=ccolors(((47-i)%24)/24))
|
|
|
|
for i,[x,y,label] in enumerate(zip(xarrc_1,yarrc_1,labelsc_1)):
|
|
ax.text(x,y,-173,"c"+str(label),color=ccolors(((25-i)%24)/24))
|
|
for i,[x,y,label] in enumerate(zip(xarrc_2,yarrc_2,labelsc_2)):
|
|
ax.text(x,y,+173,"c"+str(label),color=ccolors(((47-i)%24)/24))
|
|
ax.view_init(elev=-53, azim=-106, roll=18)
|
|
plt.tight_layout()
|
|
plt.show()
|
|
phi_qqq = np.array([[2*np.pi*(-i*16+j+0.5)/(16*4) for i in range(4)] for j in range(16)])
|
|
print(phi_qqq)
|
|
#'''
|
|
for i,[phi1,phi2,phi3,phi4] in enumerate(phi_qqq):
|
|
ax.plot([50*np.cos(phi1),100*np.cos(phi1)],[50*np.sin(phi1),100*np.sin(phi1)],[100,100],'-',color='red')
|
|
ax.text(104*np.cos(phi1),104*np.sin(phi1),100,"0_%d"%(i),color="red")
|
|
|
|
ax.plot([50*np.cos(phi2),100*np.cos(phi2)],[50*np.sin(phi2),100*np.sin(phi2)],[100,100],'-',color='green')
|
|
ax.text(104*np.cos(phi2),104*np.sin(phi2),100,"1_%d"%(i),color="green")
|
|
|
|
ax.plot([50*np.cos(phi3),100*np.cos(phi3)],[50*np.sin(phi3),100*np.sin(phi3)],[100,100],'-',color='blue')
|
|
ax.text(104*np.cos(phi3),104*np.sin(phi3),100,"2_%d"%(i),color="blue")
|
|
|
|
ax.plot([50*np.cos(phi4),100*np.cos(phi4)],[50*np.sin(phi4),100*np.sin(phi4)],[100,100],'-',color='brown')
|
|
ax.text(104*np.cos(phi4),104*np.sin(phi4),100,"3_%d"%(i),color="brown")
|
|
#'''
|
|
#coords_qqq = np.array([[50*np.cos(phi),100*np.sin(phi),100] for phi in phi_qqq]).T
|
|
plt.tight_layout()
|
|
plt.show()
|
|
|