Plotting of elegant results implemented

This commit is contained in:
2025-07-24 11:41:16 +02:00
committed by Sven
parent 0bad99a624
commit c2cd2840dd
6 changed files with 444 additions and 422 deletions
+192 -160
View File
@@ -1,5 +1,5 @@
import sys
import copy
import sdds
from PyQt5 import QtWidgets,QtGui
@@ -26,6 +26,28 @@ class ElegantPlot(QtWidgets.QMainWindow, Ui_ElegantPlotGUI):
self.setWindowIcon(QtGui.QIcon("rsc/Audrey_Icon.png"))
self.setWindowTitle("Elegant Results Plotting Window")
self.PBetax.toggled.connect(self.doplot)
self.PBetay.toggled.connect(self.doplot)
self.PSizex.toggled.connect(self.doplot)
self.PSizey.toggled.connect(self.doplot)
self.PEmitx.toggled.connect(self.doplot)
self.PEmity.toggled.connect(self.doplot)
self.PDuration.toggled.connect(self.doplot)
self.PEnergy.toggled.connect(self.doplot)
self.PSpread.toggled.connect(self.doplot)
self.PCEnergy.toggled.connect(self.doplot)
self.PCx.toggled.connect(self.doplot)
self.PCy.toggled.connect(self.doplot)
self.PDistTE.clicked.connect(self.doPSplot)
self.PDistXPx.clicked.connect(self.doPSplot)
self.PDistYPy.clicked.connect(self.doPSplot)
self.PDistTX.clicked.connect(self.doPSplot)
self.PDistTY.clicked.connect(self.doPSplot)
self.PDistXY.clicked.connect(self.doPSplot)
self.currentDist=None
self.dist={}
self.Q=0
self.initmpl(self.mplvl, self.mplwindow)
@@ -45,8 +67,24 @@ class ElegantPlot(QtWidgets.QMainWindow, Ui_ElegantPlotGUI):
self.show()
print('Updating Plotting Data')
self.data=data
# scale some data
self.data['ecnx']=[ele*1e9 for ele in self.data['ecnx']] # nm
self.data['ecny'] = [ele * 1e9 for ele in self.data['ecny']] # nm
self.data['Sx'] = [ele * 1e6 for ele in self.data['Sx']] # micrometer
self.data['Sy'] = [ele * 1e6 for ele in self.data['Sy']] # micrometer
self.data['Cx'] = [ele * 1e6 for ele in self.data['Cx']] # micrometer
self.data['Cy'] = [ele * 1e6 for ele in self.data['Cy']] # micrometer
self.data['pCentral'] = [ele * 0.511 for ele in self.data['pCentral']] # MeV
self.data['St'] = [ele * 1e15 for ele in self.data['St']] # fs
self.data['Sdelta'] = [ele * 1e2 for ele in self.data['Sdelta']] # %
self.data['Cdelta'] = [ele * 1e2 for ele in self.data['Cdelta']] # %
self.PDistList.clear()
for dist in dists:
self.PDistList.addItem(dist)
self.updateOpticsTable()
# self.doplot()
self.doplot()
def updateOpticsTable(self):
self.UITwissValues.clear()
@@ -54,100 +92,151 @@ class ElegantPlot(QtWidgets.QMainWindow, Ui_ElegantPlotGUI):
return
nrow = len(self.data['s'])
ncol = 12
ncol = 14
self.UITwissValues.setColumnCount(ncol)
self.UITwissValues.setRowCount(nrow)
self.UITwissValues.setHorizontalHeaderLabels(['Element','s','betax','betay','alphax','alphay','etax','etay','r56','mux','muy','energy'])
self.UITwissValues.setHorizontalHeaderLabels(['Element','s','Size in x','Size in y','Size in t','Energy','Energy Spread','Emit x','Emit y','Betax','Betay','<x>','<y>','<E>'])
for i in range(nrow):
self.UITwissValues.setItem(i, 0, QtWidgets.QTableWidgetItem(self.data['ElementName'][i]))
# self.UITwissValues.setItem(i, 1, QtWidgets.QTableWidgetItem('%10.6f' % self.data['s'][i]))
# self.UITwissValues.setItem(i, 2, QtWidgets.QTableWidgetItem('%10.6f' % self.twiss.betx[i]))
# self.UITwissValues.setItem(i, 3, QtWidgets.QTableWidgetItem('%10.6f' % self.twiss.bety[i]))
# self.UITwissValues.setItem(i, 4, QtWidgets.QTableWidgetItem('%10.6f' % self.twiss.alfx[i]))
# self.UITwissValues.setItem(i, 5, QtWidgets.QTableWidgetItem('%10.6f' % self.twiss.alfy[i]))
# self.UITwissValues.setItem(i, 6, QtWidgets.QTableWidgetItem('%10.6f' % self.twiss.dx[i]))
# self.UITwissValues.setItem(i, 7, QtWidgets.QTableWidgetItem('%10.6f' % self.twiss.dy[i]))
# self.UITwissValues.setItem(i, 8, QtWidgets.QTableWidgetItem('%10.6f' % self.twiss.re56[i]))
# self.UITwissValues.setItem(i, 9, QtWidgets.QTableWidgetItem('%10.6f' % self.twiss.mux[i]))
# self.UITwissValues.setItem(i,10, QtWidgets.QTableWidgetItem('%10.6f' % self.twiss.muy[i]))
# self.UITwissValues.setItem(i,11, QtWidgets.QTableWidgetItem('%10.6f' % self.energy[i]))
self.UITwissValues.setItem(i, 1, QtWidgets.QTableWidgetItem('%10.6f' % self.data['s'][i]))
self.UITwissValues.setItem(i, 2, QtWidgets.QTableWidgetItem('%10.6f' % self.data['Sx'][i]))
self.UITwissValues.setItem(i, 3, QtWidgets.QTableWidgetItem('%10.6f' % self.data['Sy'][i]))
self.UITwissValues.setItem(i, 4, QtWidgets.QTableWidgetItem('%10.6f' % self.data['St'][i]))
self.UITwissValues.setItem(i, 5, QtWidgets.QTableWidgetItem('%10.6f' % self.data['pCentral'][i]))
self.UITwissValues.setItem(i, 6, QtWidgets.QTableWidgetItem('%10.6f' % self.data['Sdelta'][i]))
self.UITwissValues.setItem(i, 7, QtWidgets.QTableWidgetItem('%10.6f' % self.data['ecnx'][i]))
self.UITwissValues.setItem(i, 8, QtWidgets.QTableWidgetItem('%10.6f' % self.data['ecny'][i]))
self.UITwissValues.setItem(i, 9, QtWidgets.QTableWidgetItem('%10.6f' % self.data['betaxBeam'][i]))
self.UITwissValues.setItem(i, 10, QtWidgets.QTableWidgetItem('%10.6f' % self.data['betayBeam'][i]))
self.UITwissValues.setItem(i, 11, QtWidgets.QTableWidgetItem('%10.6f' % self.data['Cx'][i]))
self.UITwissValues.setItem(i, 12, QtWidgets.QTableWidgetItem('%10.6f' % self.data['Cy'][i]))
self.UITwissValues.setItem(i, 13, QtWidgets.QTableWidgetItem('%10.6f' % self.data['Cdelta'][i]))
self.UITwissValues.resizeColumnsToContents()
self.UITwissValues.verticalHeader().hide()
self.UITwissValues.setEditTriggers(QtWidgets.QAbstractItemView.NoEditTriggers)
def loadDist(self,filename):
dist = sdds.load(filename)
cols=['t','p','x','xp','y','yp']
self.dist.clear()
for col in cols:
self.dist[col] = dist.columnData[dist.columnName.index(col)][0]
self.Q = dist.parameterData[dist.parameterName.index('Charge')][0]
return filename
def LPS(self,t,p,Q):
title = self.parent.UIDistList.currentText()
x = np.array(t).ravel()*1e12 # to ps
def doPSplot(self):
dist = self.PDistList.currentText()
if not dist == self.currentDist:
self.currentDist = self.loadDist(dist)
but = self.sender().objectName()
print(but)
if 'DistTE' in but:
self.LPS(self.dist['t'],self.dist['p'],self.Q,dist)
elif 'DistXPx' in but:
self.TPS(self.dist['x'],self.dist['xp'],True,dist)
elif 'DistYPy' in but:
self.TPS(self.dist['y'], self.dist['yp'], False,dist)
elif 'DistTX' in but:
self.TimePS(self.dist['t'], self.dist['x'], self.Q,True,dist)
elif 'DistTY' in but:
self.TimePS(self.dist['t'], self.dist['y'], self.Q,False,dist)
elif 'DistXY' in but:
self.TS(self.dist['x'], self.dist['y'],dist)
def LPS(self,t,p,Q,title=None):
if title is None:
title = self.parent.UIDistList.currentText()
x = np.array(t).ravel()*1e15 # to fs
y = np.array(p).ravel()*0.511 # to MEV
x=x-np.mean(x)
self.PS(x,y,Q=Q,title = title, labx=r'$t$ (fs)',laby=r'$E$ (MeV)',laby2=r'$I$ (A)',legend1='Energy Distribution',legend2='Current')
def TPS(self,xin,pin,isX=True,title=None):
if title is None:
title = self.parent.UIDistList.currentText()
x = np.array(xin).ravel()*1e3 # to mm
y = np.array(pin).ravel()*1e3 # to mrad
labx=r'$y$ (mm)'
laby=r'$y\prime$ (mrad)'
if isX:
labx = r'$x$ (mm)'
laby = r'$x\prime$ (mrad)'
self.PS(x, y, Q=None, title=title, labx=labx, laby=laby, laby2='',legend1='Distribution in Momentum', legend2='Distribution in Space')
def TimePS(self,t,xin,Q,isX=True,title=None):
if title is None:
title = self.parent.UIDistList.currentText()
x = np.array(t).ravel()*1e15 # to fs
y = np.array(xin).ravel()*1e3 # to mm
x=x-np.mean(x)
labx=r'$t$ (fs)'
laby=r'$y$ (mm)'
if isX:
laby = r'$x$ (m)'
self.PS(x, y, Q=Q, title=title, labx=labx, laby=laby, laby2=r'$I$ (A)',legend1='Distribution in Space', legend2='Current')
def TS(self,xin,yin,title=None):
if title is None:
title = self.parent.UIDistList.currentText()
x = np.array(xin).ravel()*1e3 # to mm
y = np.array(yin).ravel()*1e3 # to mm
labx=r'$x$ (mm)'
laby=r'$y$ (mm)'
self.PS(x, y, Q=None, title=title, labx=labx, laby=laby, laby2='',legend1='Distribution in Y', legend2='Distribution in X')
def PS(self,x,y,Q = None,title='',labx='',laby='',laby2='',legend1='',legend2=''):
xmin = x.min()
xmax = x.max()
ymin = y.min()
ymax = y.max()
dx=(xmax-xmin)*0.1
dy=(ymax-ymin)*0.1
xmax+=dx
xmin-=dx
ymax+=dy
ymin-=dy
range=[[xmin,xmax],[ymin,ymax]]
N = 300
img,xed,yed = np.histogram2d(x,y,N)
xdist, xval = np.histogram(x,N)
cal = np.sum(xdist)*(xval[1]-xval[0])*1e-12/Q
xdist = xdist/cal
img,xed,yed = np.histogram2d(x,y,N,range=range)
xdist, xval = np.histogram(x,N,range=range[0])
if Q:
cal = np.sum(xdist)*(xval[1]-xval[0])*1e-12/Q
xdist = xdist/cal*1e3
ydist, yval = np.histogram(y, N)
ydist, yval = np.histogram(y, N,range=range[1])
ydist = ydist / np.max(ydist) * 0.3 * (xmax - xmin) + xmin
self.axes.clear()
self.axes2.clear()
self.axes.imshow(np.transpose(np.fliplr(img)), aspect='auto', interpolation='bicubic', cmap='viridis',
self.axes.imshow(np.transpose(np.fliplr(img)), aspect='auto', interpolation='bicubic', cmap='gnuplot2', # was viridis
extent=[xmin, xmax, ymin, ymax])
self.axes2.plot(xval[:-1],xdist,'y')
self.axes.plot(ydist,yval[:-1], 'c', label='Energy Distribution')
self.axes.plot([], [], 'y', label='Current')
self.axes.plot(ydist,yval[:-1], 'c', label=legend1)
self.axes.plot([], [], 'y', label=legend2)
self.axes.legend()
self.axes.set_xlabel('t (ps)')
self.axes.set_ylabel('E (MeV)')
self.axes2.set_ylabel('I (A)')
self.axes.set_xlabel(labx)
self.axes.set_ylabel(laby)
if len(laby2)> 1:
self.axes2.yaxis.set_visible(True)
else:
self.axes2.yaxis.set_visible(False)
self.axes2.set_ylim([0,3*np.max(xdist)])
self.axes2.set_xlim([xmin,xmax])
self.axes2.set_ylabel(laby2)
self.axes.set_title(title)
self.canvas.draw()
# self.twiss=None
# self.twissref = None
# self.energy=None
# all action for optics plotting
# self.PBetax.toggled.connect(self.doplot)
# self.PAlphax.toggled.connect(self.doplot)
# self.PBetay.toggled.connect(self.doplot)
# self.PAlphay.toggled.connect(self.doplot)
# self.PEtax.toggled.connect(self.doplot)
# self.PEtay.toggled.connect(self.doplot)
# self.PMux.toggled.connect(self.doplot)
# self.PMuy.toggled.connect(self.doplot)
# self.PX.toggled.connect(self.doplot)
# self.PY.toggled.connect(self.doplot)
# self.PR56.toggled.connect(self.doplot)
# self.PEnergy.toggled.connect(self.doplot)
# self.PStart.editingFinished.connect(self.doplot)
# self.PEnd.editingFinished.connect(self.doplot)
# self.UIPlotExportOptics.clicked.connect(self.exportOptics)
# self.UIPLotNewReference.clicked.connect(self.saveReference)
# self.UIPlotSaveReference.clicked.connect(self.newReference)
# self.UIPlotClearReference.clicked.connect(self.clearReference)
def doplot(self):
if self.twiss is None:
if self.data is None:
return
z0=float(str(self.PStart.text()))
@@ -157,22 +246,34 @@ class ElegantPlot(QtWidgets.QMainWindow, Ui_ElegantPlotGUI):
z1 = z0
z0 = tmp
filt={}
filt['BETX']=self.PBetax.isChecked()
filt['BETY']=self.PBetay.isChecked()
filt['ALFX']=self.PAlphax.isChecked()
filt['ALFY']=self.PAlphay.isChecked()
filt['DX']=self.PEtax.isChecked()
filt['DY']=self.PEtay.isChecked()
filt['RE56']=self.PR56.isChecked()
filt['Energy']=self.PEnergy.isChecked()
filt['MUX'] = self.PMux.isChecked()
filt['MUY'] = self.PMuy.isChecked()
filt['X'] = self.PX.isChecked()
filt['Y'] = self.PY.isChecked()
filt['Sx']=self.PSizex.isChecked()
filt['Sy'] = self.PSizey.isChecked()
filt['ecnx']=self.PEmitx.isChecked()
filt['ecny']=self.PEmity.isChecked()
filt['betaxBeam']=self.PBetax.isChecked()
filt['betayBeam']=self.PBetay.isChecked()
filt['Cx']=self.PCx.isChecked()
filt['Cy']=self.PCy.isChecked()
filt['St']=self.PDuration.isChecked()
filt['pCentral']=self.PEnergy.isChecked()
filt['Sdelta'] = self.PSpread.isChecked()
filt['Cdelta'] = self.PCEnergy.isChecked()
color={}
color['Sx']={'color':(0,0,1,1),'label':r'$\sigma_x$ ($\mu$m)','legend':r'$\sigma_x$','dash':False}
color['Sy'] = {'color':(1, 0, 0, 1),'label':r'$\sigma_y$ ($\mu$m)','legend':r'$\sigma_y$','dash':False}
color['ecnx'] ={'color': (0, 0.4, 1, 1),'label':r'$\epsilon_{nx}$ (nm)','legend':r'$\epsilon_{nx}$','dash':False}
color['ecny'] = {'color':(1, 0.4, 0, 1),'label':r'$\epsilon_{ny}$ (nm)','legend':r'$\epsilon_{ny}$','dash':False}
color['betaxBeam'] = {'color': (0, 0, 1, 1), 'label': r'$\beta_x$ (m)', 'legend': r'$\beta_x$','dash':False}
color['betayBeam'] = {'color': (1, 0, 0, 1), 'label': r'$\beta_y$ (m)', 'legend': r'$\beta_y$','dash':False}
color['Cx'] = {'color': (0, 0, 1, 1), 'label': r'$<x>$ ($\mu$m)', 'legend': r'$<x>$','dash':True}
color['Cy'] = {'color': (1, 0, 0, 1), 'label': r'$<y>$ ($\mu$m)', 'legend': r'$<y>$','dash':True}
color['pCentral'] = {'color':(0,0.5,0,1),'label':r'$E_0$ (MeV)', 'legend': r'$E_0$','dash':False}
color['Sdelta'] = {'color': (0, 0.5, 0, 1), 'label': r'$\sigma_\delta$ (%)', 'legend': r'$\sigma_\delta$', 'dash': False}
color['Cdelta'] = {'color': (0, 0.5, 0, 1), 'label': r'$<\delta>$ (%)', 'legend': r'$<\delta>$', 'dash': True}
color['St'] = {'color': (0.5, 0, 0.5, 1), 'label': r'$\sigma_t$ (fs)', 'legend': r'$\sigma_t$', 'dash': False}
s = self.twiss.s
s = np.array(self.data['s'])
i1 = np.argmin(np.abs(s - z0))
i2 = np.argmin(np.abs(s - z1))
@@ -180,90 +281,21 @@ class ElegantPlot(QtWidgets.QMainWindow, Ui_ElegantPlotGUI):
self.axes2.clear()
ylabel = r''
if filt['BETX']:
self.plotSingle(s[i1:i2], self.twiss.betx[i1:i2], (0, 0, 1, 1), r'$\beta_{x}$')
ylabel = ylabel + r'$\beta_x$ (m), '
if filt['BETY']:
self.plotSingle(s[i1:i2], self.twiss.bety[i1:i2], (1, 0, 0, 1), r'$\beta_{y}$')
ylabel = ylabel + r'$\beta_y$ (m), '
if filt['ALFX']:
self.plotSingle(s[i1:i2], self.twiss.alfx[i1:i2], (0, 0, 1, 1), r'$\alpha_{x}$')
ylabel = ylabel + r'$\alpha_x$ (rad), '
if filt['ALFY']:
self.plotSingle(s[i1:i2], self.twiss.alfy[i1:i2], (1, 0, 0, 1), r'$\alpha_{y}$')
ylabel = ylabel + r'$\alpha_y$ (rad), '
if filt['DX']:
self.plotSingle(s[i1:i2], self.twiss.dx[i1:i2], (0, 0, 1, 1), r'$\eta_{x}$')
ylabel = ylabel + r'$\eta_x$ (m), '
if filt['DY']:
self.plotSingle(s[i1:i2], self.twiss.dy[i1:i2], (1, 0, 0, 1), r'$\eta_{y}$')
ylabel = ylabel + r'$\eta_y$ (m), '
if filt['MUX']:
self.plotSingle(s[i1:i2], self.twiss.mux[i1:i2], (0, 0.5, 1, 1), r'$\mu_{x}$')
ylabel = ylabel + r'$\mu_x$, '
if filt['MUY']:
self.plotSingle(s[i1:i2], self.twiss.muy[i1:i2], (1, 0.5, 0, 1), r'$\mu_{y}$')
ylabel = ylabel + r'$\mu_y$, '
if filt['X']:
self.plotSingle(s[i1:i2], self.twiss.x[i1:i2], (0, 0.5, 1, 1), r'$x$')
ylabel = ylabel + r'$x$ (m), '
if filt['Y']:
self.plotSingle(s[i1:i2], self.twiss.y[i1:i2], (1, 0.5, 0, 1), r'$y$')
ylabel = ylabel + r'$y$ (m), '
if filt['RE56']:
self.plotSingle(s[i1:i2], self.twiss.re56[i1:i2], (0, 0, 0, 1), r'$R_{56}$')
ylabel = ylabel + r'$R_{56}$ (m), '
if filt['Energy']:
self.plotSingle(s[i1:i2], self.energy[i1:i2], (0, 1, 0, 1), r'$E$')
ylabel = ylabel + r'$E$ (MeV), '
for key in filt.keys():
if filt[key]:
if key in color.keys():
self.plotSingle(s[i1:i2],self.data[key][i1:i2], color[key]['color'],color[key]['legend'],dashed=color[key]['dash'])
ylabel += color[key]['label']+', '
if len(ylabel) < 3:
self.canvas.draw()
return
if not self.twissref is None:
if filt['BETX']:
self.plotSingle(s[i1:i2], self.twissref.betx[i1:i2], (0, 0, 1, 1), r'$\beta_{x}$ (ref)',dashed=True)
ylabel = ylabel + r'$\beta_x$ (m), '
if filt['BETY']:
self.plotSingle(s[i1:i2], self.twissref.bety[i1:i2], (1, 0, 0, 1), r'$\beta_{y}$ (ref)',dashed=True)
ylabel = ylabel + r'$\beta_y$ (m), '
if filt['ALFX']:
self.plotSingle(s[i1:i2], self.twissref.alfx[i1:i2], (0, 0, 1, 1), r'$\alpha_{x}$ (ref)',dashed=True)
ylabel = ylabel + r'$\alpha_x$ (rad), '
if filt['ALFY']:
self.plotSingle(s[i1:i2], self.twissref.alfy[i1:i2], (1, 0, 0, 1), r'$\alpha_{y}$ (ref)',dashed=True)
ylabel = ylabel + r'$\alpha_y$ (rad), '
if filt['DX']:
self.plotSingle(s[i1:i2], self.twissref.dx[i1:i2], (0, 0, 1, 1), r'$\eta_{x}$ (ref)',dashed=True)
ylabel = ylabel + r'$\eta_x$ (m), '
if filt['DY']:
self.plotSingle(s[i1:i2], self.twissref.dy[i1:i2], (1, 0, 0, 1), r'$\eta_{y}$ (ref)',dashed=True)
ylabel = ylabel + r'$\eta_y$ (m), '
if filt['MUX']:
self.plotSingle(s[i1:i2], self.twiss.mux[i1:i2], (0, 0.5, 1, 1), r'$\mu_{x}$ (ref)',dashed=True)
ylabel = ylabel + r'$\mu_x$, '
if filt['MUY']:
self.plotSingle(s[i1:i2], self.twiss.muy[i1:i2], (1, 0.5, 0, 1), r'$\mu_{y}$ (ref)',dashed=True)
ylabel = ylabel + r'$\mu_y$, '
if filt['X']:
self.plotSingle(s[i1:i2], self.twiss.x[i1:i2], (0, 0.5, 1, 1), r'$x$ (ref)',dashed=True)
ylabel = ylabel + r'$x$ (m), '
if filt['Y']:
self.plotSingle(s[i1:i2], self.twiss.y[i1:i2], (1, 0.5, 0, 1), r'$y$ (ref)',dashed=True)
ylabel = ylabel + r'$y$ (m), '
if filt['RE56']:
self.plotSingle(s[i1:i2], self.twissref.re56[i1:i2], (0, 0, 0, 1), r'$R_{56}$ (ref)',dashed=True)
ylabel = ylabel + r'$R_{56}$ (m), '
if filt['Energy']:
self.plotSingle(s[i1:i2], self.energyref[i1:i2], (0, 1, 0, 1), r'$E$ (ref)',dashed=True)
ylabel = ylabel + r'$E$ (MeV), '
self.axes.legend(bbox_to_anchor=(0.15, 0.85))
self.axes.set_xlabel('s (m)')
self.axes.set_ylabel(ylabel[0:-2])
self.plotLayout(s,self.twiss.name)
self.plotLayout(s,self.data['ElementName'])
self.axes.set_xlim([s[i1], s[i2]])
ylim = self.axes.get_ylim()
dl = np.abs(ylim[1] - ylim[0])
@@ -282,37 +314,37 @@ class ElegantPlot(QtWidgets.QMainWindow, Ui_ElegantPlotGUI):
s2 = [0.9, 0.9]
self.axes2.plot(s1, s2, 'k')
for i, name in enumerate(elements):
if 'mbnd' in name:
if '.MBND' in name and '.B' in name:
s1 = s[i - 1]
s2 = s[i]
self.axes2.add_patch(patches.Rectangle((s1, 0.9), (s2 - s1), 0.03, facecolor='blue', edgecolor="none"))
if 'msex' in name:
if ',MSEX' in name and '.SEX':
s1 = s[i - 1]
s2 = s[i]
self.axes2.add_patch(
patches.Rectangle((s1, 0.87), (s2 - s1), 0.06, facecolor='green', edgecolor="none"))
if 'uind' in name:
if '.UIND' in name and '.WIG' in name:
s1 = s[i - 1]
s2 = s[i]
self.axes2.add_patch(
patches.Rectangle((s1, 0.88), (s2 - s1), 0.04, facecolor='purple', edgecolor="none"))
if 'acc' in name or 'tds' in name:
if '.RACC' in name or '.RTDS' in name:
s1 = s[i - 1]
s2 = s[i]
self.axes2.add_patch(patches.Rectangle((s1, 0.89), (s2 - s1), 0.02, facecolor='cyan', edgecolor="none"))
if 'mqua' in name:
if '.MQUA' in name and '.Q':
if splitquads == True:
if 'end' in name:
if '.Q2' in name:
s1 = sstart
s2 = s[i]
self.axes2.add_patch(
patches.Rectangle((s1, 0.85), (s2 - s1), 0.1, facecolor='red', edgecolor="none"))
splitquads = False
else:
if 'start' in name:
if '.Q1' in name:
splitquads = True
sstart = s[i]
else:
+17 -4
View File
@@ -16,6 +16,7 @@ class Track(QtCore.QObject):
self.isRunning=False
self.dumpPoints=[]
self.parent.UITrack.clicked.connect(self.startTracking)
self.parent.UITrackReload.clicked.connect(self.reloadTracking)
self.parent.UIAddDiagnosticDump.clicked.connect(self.addDiagnosticDump)
self.parent.UIAddSectionDump.clicked.connect(self.addSectionDump)
self.parent.UIDeleteDump.clicked.connect(self.deleteDump)
@@ -27,6 +28,7 @@ class Track(QtCore.QObject):
return
project = str(self.parent.UITrackRootName.text())
self.root= 'Runs/'+project
start=str(self.parent.UITrackStart.text())
end=str(self.parent.UITrackEnd.text())
lsc = self.parent.UITrackDoLSC.isChecked()
@@ -69,25 +71,36 @@ class Track(QtCore.QObject):
self.isRunning=False
self.done.emit()
def reloadTracking(self):
if self.isRunning:
return
project = str(self.parent.UITrackRootName.text())
self.root = 'Runs/' + project
self.loadTracking()
@QtCore.pyqtSlot()
def elegantFinished(self):
self.parent.UITrackStatus.setText('Idle')
self.parent.UITrackStatus.setStyleSheet("background-color: white")
# read central moments
self.loadTracking()
def loadTracking(self):
data = sdds.load(self.root+'.cen')
columns = data.columnName
res = {}
fields = ['s','ElementName','Cx','Cxp','Cy','Cyp','Cdelta','pCentral']
for field in fields:
res[field] = data.columnData[columns.index(field)]
res[field] = data.columnData[columns.index(field)][0]
del data
data = sdds.load(self.root + '.sig')
columns = data.columnName
fields = ['Sx', 'Sxp', 'Sy', 'Syp', 'Sdelta', 'St','enx','eny','ecnx','ecny','betaxBeam','betayBeam','alphaxBeam','alphayBeam']
for field in fields:
res[field] = data.columnData[columns.index(field)]
res[field] = data.columnData[columns.index(field)][0]
del data
self.parent.plot.newData(res)
dist1 = self.root+'Inputdist.sdds'
dist2 = self.root+'.out'
self.parent.plot.newData(res,[dist1,dist2])
@QtCore.pyqtSlot(str)
def trackMessage(self, msg=''):
+95 -106
View File
@@ -35,93 +35,66 @@ class Ui_ElegantPlotGUI(object):
self.verticalLayout_5 = QtWidgets.QVBoxLayout(self.widget_2)
self.verticalLayout_5.setObjectName("verticalLayout_5")
self.label_31 = QtWidgets.QLabel(self.widget_2)
font = QtGui.QFont()
font.setPointSize(10)
font.setBold(True)
font.setWeight(75)
self.label_31.setFont(font)
self.label_31.setObjectName("label_31")
self.verticalLayout_5.addWidget(self.label_31)
self.gridLayout_4 = QtWidgets.QGridLayout()
self.gridLayout_4.setObjectName("gridLayout_4")
self.PY = QtWidgets.QPushButton(self.widget_2)
self.PY.setCheckable(True)
self.PY.setObjectName("PY")
self.gridLayout_4.addWidget(self.PY, 3, 1, 1, 1)
self.PR22 = QtWidgets.QPushButton(self.widget_2)
self.PR22.setEnabled(False)
self.PR22.setObjectName("PR22")
self.gridLayout_4.addWidget(self.PR22, 7, 1, 1, 1)
self.PAlphay = QtWidgets.QPushButton(self.widget_2)
self.PAlphay.setCheckable(True)
self.PAlphay.setObjectName("PAlphay")
self.gridLayout_4.addWidget(self.PAlphay, 1, 1, 1, 1)
self.PR12 = QtWidgets.QPushButton(self.widget_2)
self.PR12.setEnabled(False)
self.PR12.setObjectName("PR12")
self.gridLayout_4.addWidget(self.PR12, 6, 1, 1, 1)
self.PEmity = QtWidgets.QPushButton(self.widget_2)
self.PEmity.setCheckable(True)
self.PEmity.setObjectName("PEmity")
self.gridLayout_4.addWidget(self.PEmity, 1, 1, 1, 1)
self.PDuration = QtWidgets.QPushButton(self.widget_2)
self.PDuration.setCheckable(True)
self.PDuration.setObjectName("PDuration")
self.gridLayout_4.addWidget(self.PDuration, 3, 0, 1, 1)
self.PCy = QtWidgets.QPushButton(self.widget_2)
self.PCy.setEnabled(True)
self.PCy.setCheckable(True)
self.PCy.setObjectName("PCy")
self.gridLayout_4.addWidget(self.PCy, 5, 1, 1, 1)
self.PEnergy = QtWidgets.QPushButton(self.widget_2)
self.PEnergy.setEnabled(True)
self.PEnergy.setCheckable(True)
self.PEnergy.setObjectName("PEnergy")
self.gridLayout_4.addWidget(self.PEnergy, 5, 1, 1, 1)
self.PMux = QtWidgets.QPushButton(self.widget_2)
self.PMux.setCheckable(True)
self.PMux.setObjectName("PMux")
self.gridLayout_4.addWidget(self.PMux, 4, 0, 1, 1)
self.gridLayout_4.addWidget(self.PEnergy, 3, 1, 1, 1)
self.PCx = QtWidgets.QPushButton(self.widget_2)
self.PCx.setCheckable(True)
self.PCx.setObjectName("PCx")
self.gridLayout_4.addWidget(self.PCx, 5, 0, 1, 1)
self.PSpread = QtWidgets.QPushButton(self.widget_2)
self.PSpread.setCheckable(True)
self.PSpread.setObjectName("PSpread")
self.gridLayout_4.addWidget(self.PSpread, 4, 0, 1, 1)
self.PSizey = QtWidgets.QPushButton(self.widget_2)
self.PSizey.setCheckable(True)
self.PSizey.setChecked(True)
self.PSizey.setObjectName("PSizey")
self.gridLayout_4.addWidget(self.PSizey, 0, 1, 1, 1)
self.PSizex = QtWidgets.QPushButton(self.widget_2)
self.PSizex.setCheckable(True)
self.PSizex.setChecked(True)
self.PSizex.setObjectName("PSizex")
self.gridLayout_4.addWidget(self.PSizex, 0, 0, 1, 1)
self.PBetax = QtWidgets.QPushButton(self.widget_2)
self.PBetax.setCheckable(True)
self.PBetax.setChecked(True)
self.PBetax.setObjectName("PBetax")
self.gridLayout_4.addWidget(self.PBetax, 0, 0, 1, 1)
self.PAlphax = QtWidgets.QPushButton(self.widget_2)
self.PAlphax.setCheckable(True)
self.PAlphax.setObjectName("PAlphax")
self.gridLayout_4.addWidget(self.PAlphax, 1, 0, 1, 1)
self.PR56 = QtWidgets.QPushButton(self.widget_2)
self.PR56.setCheckable(True)
self.PR56.setObjectName("PR56")
self.gridLayout_4.addWidget(self.PR56, 5, 0, 1, 1)
self.PR33 = QtWidgets.QPushButton(self.widget_2)
self.PR33.setEnabled(False)
self.PR33.setObjectName("PR33")
self.gridLayout_4.addWidget(self.PR33, 8, 0, 1, 1)
self.PR34 = QtWidgets.QPushButton(self.widget_2)
self.PR34.setEnabled(False)
self.PR34.setObjectName("PR34")
self.gridLayout_4.addWidget(self.PR34, 8, 1, 1, 1)
self.PEtax = QtWidgets.QPushButton(self.widget_2)
self.PEtax.setCheckable(True)
self.PEtax.setObjectName("PEtax")
self.gridLayout_4.addWidget(self.PEtax, 2, 0, 1, 1)
self.PX = QtWidgets.QPushButton(self.widget_2)
self.PX.setCheckable(True)
self.PX.setObjectName("PX")
self.gridLayout_4.addWidget(self.PX, 3, 0, 1, 1)
self.PEtay = QtWidgets.QPushButton(self.widget_2)
self.PEtay.setCheckable(True)
self.PEtay.setObjectName("PEtay")
self.gridLayout_4.addWidget(self.PEtay, 2, 1, 1, 1)
self.PR11 = QtWidgets.QPushButton(self.widget_2)
self.PR11.setEnabled(False)
self.PR11.setObjectName("PR11")
self.gridLayout_4.addWidget(self.PR11, 6, 0, 1, 1)
self.gridLayout_4.addWidget(self.PBetax, 2, 0, 1, 1)
self.PBetay = QtWidgets.QPushButton(self.widget_2)
self.PBetay.setCheckable(True)
self.PBetay.setChecked(True)
self.PBetay.setObjectName("PBetay")
self.gridLayout_4.addWidget(self.PBetay, 0, 1, 1, 1)
self.PR21 = QtWidgets.QPushButton(self.widget_2)
self.PR21.setEnabled(False)
self.PR21.setObjectName("PR21")
self.gridLayout_4.addWidget(self.PR21, 7, 0, 1, 1)
self.PMuy = QtWidgets.QPushButton(self.widget_2)
self.PMuy.setCheckable(True)
self.PMuy.setObjectName("PMuy")
self.gridLayout_4.addWidget(self.PMuy, 4, 1, 1, 1)
self.PR43 = QtWidgets.QPushButton(self.widget_2)
self.PR43.setEnabled(False)
self.PR43.setObjectName("PR43")
self.gridLayout_4.addWidget(self.PR43, 9, 0, 1, 1)
self.PR44 = QtWidgets.QPushButton(self.widget_2)
self.PR44.setEnabled(False)
self.PR44.setObjectName("PR44")
self.gridLayout_4.addWidget(self.PR44, 9, 1, 1, 1)
self.gridLayout_4.addWidget(self.PBetay, 2, 1, 1, 1)
self.PEmitx = QtWidgets.QPushButton(self.widget_2)
self.PEmitx.setCheckable(True)
self.PEmitx.setObjectName("PEmitx")
self.gridLayout_4.addWidget(self.PEmitx, 1, 0, 1, 1)
self.PCEnergy = QtWidgets.QPushButton(self.widget_2)
self.PCEnergy.setCheckable(True)
self.PCEnergy.setObjectName("PCEnergy")
self.gridLayout_4.addWidget(self.PCEnergy, 4, 1, 1, 1)
self.verticalLayout_5.addLayout(self.gridLayout_4)
self.gridLayout_5 = QtWidgets.QGridLayout()
self.gridLayout_5.setObjectName("gridLayout_5")
@@ -148,17 +121,37 @@ class Ui_ElegantPlotGUI(object):
self.PEnd.setObjectName("PEnd")
self.gridLayout_5.addWidget(self.PEnd, 1, 1, 1, 1)
self.verticalLayout_5.addLayout(self.gridLayout_5)
self.label = QtWidgets.QLabel(self.widget_2)
font = QtGui.QFont()
font.setPointSize(10)
font.setBold(True)
font.setWeight(75)
self.label.setFont(font)
self.label.setObjectName("label")
self.verticalLayout_5.addWidget(self.label)
self.PDistList = QtWidgets.QComboBox(self.widget_2)
self.PDistList.setObjectName("PDistList")
self.verticalLayout_5.addWidget(self.PDistList)
self.PDistTE = QtWidgets.QPushButton(self.widget_2)
self.PDistTE.setObjectName("PDistTE")
self.verticalLayout_5.addWidget(self.PDistTE)
self.PDistXPx = QtWidgets.QPushButton(self.widget_2)
self.PDistXPx.setObjectName("PDistXPx")
self.verticalLayout_5.addWidget(self.PDistXPx)
self.PDistYPy = QtWidgets.QPushButton(self.widget_2)
self.PDistYPy.setObjectName("PDistYPy")
self.verticalLayout_5.addWidget(self.PDistYPy)
self.PDistXY = QtWidgets.QPushButton(self.widget_2)
self.PDistXY.setObjectName("PDistXY")
self.verticalLayout_5.addWidget(self.PDistXY)
self.PDistTX = QtWidgets.QPushButton(self.widget_2)
self.PDistTX.setObjectName("PDistTX")
self.verticalLayout_5.addWidget(self.PDistTX)
self.PDistTY = QtWidgets.QPushButton(self.widget_2)
self.PDistTY.setObjectName("PDistTY")
self.verticalLayout_5.addWidget(self.PDistTY)
spacerItem = QtWidgets.QSpacerItem(20, 175, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding)
self.verticalLayout_5.addItem(spacerItem)
self.UIPlotSaveReference = QtWidgets.QPushButton(self.widget_2)
self.UIPlotSaveReference.setObjectName("UIPlotSaveReference")
self.verticalLayout_5.addWidget(self.UIPlotSaveReference)
self.UIPlotClearReference = QtWidgets.QPushButton(self.widget_2)
self.UIPlotClearReference.setObjectName("UIPlotClearReference")
self.verticalLayout_5.addWidget(self.UIPlotClearReference)
self.UIPlotExportOptics = QtWidgets.QPushButton(self.widget_2)
self.UIPlotExportOptics.setObjectName("UIPlotExportOptics")
self.verticalLayout_5.addWidget(self.UIPlotExportOptics)
self.horizontalLayout.addWidget(self.widget_2)
self.mplwindow = QtWidgets.QWidget(self.tab_3)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.MinimumExpanding, QtWidgets.QSizePolicy.Expanding)
@@ -320,34 +313,30 @@ class Ui_ElegantPlotGUI(object):
def retranslateUi(self, ElegantPlotGUI):
_translate = QtCore.QCoreApplication.translate
ElegantPlotGUI.setWindowTitle(_translate("ElegantPlotGUI", "SwissFEL Optics"))
self.label_31.setText(_translate("ElegantPlotGUI", "Plotting"))
self.PY.setText(_translate("ElegantPlotGUI", "Y"))
self.PR22.setText(_translate("ElegantPlotGUI", "R22"))
self.PAlphay.setText(_translate("ElegantPlotGUI", "AlphaY"))
self.PR12.setText(_translate("ElegantPlotGUI", "R12"))
self.label_31.setText(_translate("ElegantPlotGUI", "Plotting along Lattice"))
self.PEmity.setText(_translate("ElegantPlotGUI", "Emit y"))
self.PDuration.setText(_translate("ElegantPlotGUI", "Duration"))
self.PCy.setText(_translate("ElegantPlotGUI", "<y>"))
self.PEnergy.setText(_translate("ElegantPlotGUI", "Energy"))
self.PMux.setText(_translate("ElegantPlotGUI", "Mux"))
self.PBetax.setText(_translate("ElegantPlotGUI", "Betax"))
self.PAlphax.setText(_translate("ElegantPlotGUI", "Alphax"))
self.PR56.setText(_translate("ElegantPlotGUI", "R56"))
self.PR33.setText(_translate("ElegantPlotGUI", "R33"))
self.PR34.setText(_translate("ElegantPlotGUI", "R34"))
self.PEtax.setText(_translate("ElegantPlotGUI", "Etax"))
self.PX.setText(_translate("ElegantPlotGUI", "X"))
self.PEtay.setText(_translate("ElegantPlotGUI", "Etay"))
self.PR11.setText(_translate("ElegantPlotGUI", "R11"))
self.PBetay.setText(_translate("ElegantPlotGUI", "Betay"))
self.PR21.setText(_translate("ElegantPlotGUI", "R21"))
self.PMuy.setText(_translate("ElegantPlotGUI", "Muy"))
self.PR43.setText(_translate("ElegantPlotGUI", "R43"))
self.PR44.setText(_translate("ElegantPlotGUI", "R44"))
self.PCx.setText(_translate("ElegantPlotGUI", "<x>"))
self.PSpread.setText(_translate("ElegantPlotGUI", "Energy Spread"))
self.PSizey.setText(_translate("ElegantPlotGUI", "Size in y"))
self.PSizex.setText(_translate("ElegantPlotGUI", "Size in x"))
self.PBetax.setText(_translate("ElegantPlotGUI", "Beta x"))
self.PBetay.setText(_translate("ElegantPlotGUI", "Beta y"))
self.PEmitx.setText(_translate("ElegantPlotGUI", "Emit x"))
self.PCEnergy.setText(_translate("ElegantPlotGUI", "<Energy>"))
self.label_22.setText(_translate("ElegantPlotGUI", "Plot Start"))
self.PStart.setText(_translate("ElegantPlotGUI", "0"))
self.label_21.setText(_translate("ElegantPlotGUI", "Plot End"))
self.PEnd.setText(_translate("ElegantPlotGUI", "1000"))
self.UIPlotSaveReference.setText(_translate("ElegantPlotGUI", "Save Current Optics as Reference"))
self.UIPlotClearReference.setText(_translate("ElegantPlotGUI", "Clear Reference"))
self.UIPlotExportOptics.setText(_translate("ElegantPlotGUI", "Export Optics"))
self.label.setText(_translate("ElegantPlotGUI", "Distribution"))
self.PDistTE.setText(_translate("ElegantPlotGUI", "Longitudinal Phase Space"))
self.PDistXPx.setText(_translate("ElegantPlotGUI", "Transverse Phase Space in x"))
self.PDistYPy.setText(_translate("ElegantPlotGUI", "Transverse Phase Space in y"))
self.PDistXY.setText(_translate("ElegantPlotGUI", "X-Y"))
self.PDistTX.setText(_translate("ElegantPlotGUI", "T-X"))
self.PDistTY.setText(_translate("ElegantPlotGUI", "T-Y"))
self.TabMaster.setTabText(self.TabMaster.indexOf(self.tab_3), _translate("ElegantPlotGUI", "Plot"))
self.UIPLotNewReference.setText(_translate("ElegantPlotGUI", "Copy Entry as New Reference Point"))
self.TabMaster.setTabText(self.TabMaster.indexOf(self.tab_4), _translate("ElegantPlotGUI", "Values"))
+117 -152
View File
@@ -36,58 +36,55 @@
<layout class="QVBoxLayout" name="verticalLayout_5">
<item>
<widget class="QLabel" name="label_31">
<property name="font">
<font>
<pointsize>10</pointsize>
<weight>75</weight>
<bold>true</bold>
</font>
</property>
<property name="text">
<string>Plotting</string>
<string>Plotting along Lattice</string>
</property>
</widget>
</item>
<item>
<layout class="QGridLayout" name="gridLayout_4">
<item row="3" column="1">
<widget class="QPushButton" name="PY">
<property name="text">
<string>Y</string>
</property>
<property name="checkable">
<bool>true</bool>
</property>
</widget>
</item>
<item row="7" column="1">
<widget class="QPushButton" name="PR22">
<property name="enabled">
<bool>false</bool>
</property>
<property name="text">
<string>R22</string>
</property>
</widget>
</item>
<item row="1" column="1">
<widget class="QPushButton" name="PAlphay">
<widget class="QPushButton" name="PEmity">
<property name="text">
<string>AlphaY</string>
<string>Emit y</string>
</property>
<property name="checkable">
<bool>true</bool>
</property>
</widget>
</item>
<item row="6" column="1">
<widget class="QPushButton" name="PR12">
<property name="enabled">
<bool>false</bool>
</property>
<item row="3" column="0">
<widget class="QPushButton" name="PDuration">
<property name="text">
<string>R12</string>
<string>Duration</string>
</property>
<property name="checkable">
<bool>true</bool>
</property>
</widget>
</item>
<item row="5" column="1">
<widget class="QPushButton" name="PEnergy">
<widget class="QPushButton" name="PCy">
<property name="enabled">
<bool>true</bool>
</property>
<property name="text">
<string>&lt;y&gt;</string>
</property>
<property name="checkable">
<bool>true</bool>
</property>
</widget>
</item>
<item row="3" column="1">
<widget class="QPushButton" name="PEnergy">
<property name="text">
<string>Energy</string>
</property>
@@ -96,20 +93,30 @@
</property>
</widget>
</item>
<item row="4" column="0">
<widget class="QPushButton" name="PMux">
<item row="5" column="0">
<widget class="QPushButton" name="PCx">
<property name="text">
<string>Mux</string>
<string>&lt;x&gt;</string>
</property>
<property name="checkable">
<bool>true</bool>
</property>
</widget>
</item>
<item row="0" column="0">
<widget class="QPushButton" name="PBetax">
<item row="4" column="0">
<widget class="QPushButton" name="PSpread">
<property name="text">
<string>Betax</string>
<string>Energy Spread</string>
</property>
<property name="checkable">
<bool>true</bool>
</property>
</widget>
</item>
<item row="0" column="1">
<widget class="QPushButton" name="PSizey">
<property name="text">
<string>Size in y</string>
</property>
<property name="checkable">
<bool>true</bool>
@@ -119,60 +126,23 @@
</property>
</widget>
</item>
<item row="1" column="0">
<widget class="QPushButton" name="PAlphax">
<item row="0" column="0">
<widget class="QPushButton" name="PSizex">
<property name="text">
<string>Alphax</string>
<string>Size in x</string>
</property>
<property name="checkable">
<bool>true</bool>
</property>
</widget>
</item>
<item row="5" column="0">
<widget class="QPushButton" name="PR56">
<property name="text">
<string>R56</string>
</property>
<property name="checkable">
<property name="checked">
<bool>true</bool>
</property>
</widget>
</item>
<item row="8" column="0">
<widget class="QPushButton" name="PR33">
<property name="enabled">
<bool>false</bool>
</property>
<property name="text">
<string>R33</string>
</property>
</widget>
</item>
<item row="8" column="1">
<widget class="QPushButton" name="PR34">
<property name="enabled">
<bool>false</bool>
</property>
<property name="text">
<string>R34</string>
</property>
</widget>
</item>
<item row="2" column="0">
<widget class="QPushButton" name="PEtax">
<widget class="QPushButton" name="PBetax">
<property name="text">
<string>Etax</string>
</property>
<property name="checkable">
<bool>true</bool>
</property>
</widget>
</item>
<item row="3" column="0">
<widget class="QPushButton" name="PX">
<property name="text">
<string>X</string>
<string>Beta x</string>
</property>
<property name="checkable">
<bool>true</bool>
@@ -180,78 +150,35 @@
</widget>
</item>
<item row="2" column="1">
<widget class="QPushButton" name="PEtay">
<property name="text">
<string>Etay</string>
</property>
<property name="checkable">
<bool>true</bool>
</property>
</widget>
</item>
<item row="6" column="0">
<widget class="QPushButton" name="PR11">
<property name="enabled">
<bool>false</bool>
</property>
<property name="text">
<string>R11</string>
</property>
</widget>
</item>
<item row="0" column="1">
<widget class="QPushButton" name="PBetay">
<property name="text">
<string>Betay</string>
<string>Beta y</string>
</property>
<property name="checkable">
<bool>true</bool>
</property>
<property name="checked">
<bool>true</bool>
</property>
</widget>
</item>
<item row="7" column="0">
<widget class="QPushButton" name="PR21">
<property name="enabled">
<bool>false</bool>
</property>
<item row="1" column="0">
<widget class="QPushButton" name="PEmitx">
<property name="text">
<string>R21</string>
<string>Emit x</string>
</property>
<property name="checkable">
<bool>true</bool>
</property>
</widget>
</item>
<item row="4" column="1">
<widget class="QPushButton" name="PMuy">
<widget class="QPushButton" name="PCEnergy">
<property name="text">
<string>Muy</string>
<string>&lt;Energy&gt;</string>
</property>
<property name="checkable">
<bool>true</bool>
</property>
</widget>
</item>
<item row="9" column="0">
<widget class="QPushButton" name="PR43">
<property name="enabled">
<bool>false</bool>
</property>
<property name="text">
<string>R43</string>
</property>
</widget>
</item>
<item row="9" column="1">
<widget class="QPushButton" name="PR44">
<property name="enabled">
<bool>false</bool>
</property>
<property name="text">
<string>R44</string>
</property>
</widget>
</item>
</layout>
</item>
<item>
@@ -298,6 +225,65 @@
</item>
</layout>
</item>
<item>
<widget class="QLabel" name="label">
<property name="font">
<font>
<pointsize>10</pointsize>
<weight>75</weight>
<bold>true</bold>
</font>
</property>
<property name="text">
<string>Distribution</string>
</property>
</widget>
</item>
<item>
<widget class="QComboBox" name="PDistList"/>
</item>
<item>
<widget class="QPushButton" name="PDistTE">
<property name="text">
<string>Longitudinal Phase Space</string>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="PDistXPx">
<property name="text">
<string>Transverse Phase Space in x</string>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="PDistYPy">
<property name="text">
<string>Transverse Phase Space in y</string>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="PDistXY">
<property name="text">
<string>X-Y</string>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="PDistTX">
<property name="text">
<string>T-X</string>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="PDistTY">
<property name="text">
<string>T-Y</string>
</property>
</widget>
</item>
<item>
<spacer name="verticalSpacer_4">
<property name="orientation">
@@ -311,27 +297,6 @@
</property>
</spacer>
</item>
<item>
<widget class="QPushButton" name="UIPlotSaveReference">
<property name="text">
<string>Save Current Optics as Reference</string>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="UIPlotClearReference">
<property name="text">
<string>Clear Reference</string>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="UIPlotExportOptics">
<property name="text">
<string>Export Optics</string>
</property>
</widget>
</item>
</layout>
</widget>
</item>
+9
View File
@@ -48,6 +48,14 @@ class Ui_ElegantGUI(object):
self.UITrack.setStyleSheet("background-color: rgb(255, 255, 127);")
self.UITrack.setObjectName("UITrack")
self.verticalLayout.addWidget(self.UITrack)
self.UITrackReload = QtWidgets.QPushButton(self.widget_2)
font = QtGui.QFont()
font.setPointSize(12)
font.setBold(True)
font.setWeight(75)
self.UITrackReload.setFont(font)
self.UITrackReload.setObjectName("UITrackReload")
self.verticalLayout.addWidget(self.UITrackReload)
self.label_8 = QtWidgets.QLabel(self.widget_2)
self.label_8.setObjectName("label_8")
self.verticalLayout.addWidget(self.label_8)
@@ -515,6 +523,7 @@ class Ui_ElegantGUI(object):
_translate = QtCore.QCoreApplication.translate
ElegantGUI.setWindowTitle(_translate("ElegantGUI", "SwissFEL Optics"))
self.UITrack.setText(_translate("ElegantGUI", "Track"))
self.UITrackReload.setText(_translate("ElegantGUI", "Reload the Output Files"))
self.label_8.setText(_translate("ElegantGUI", "Root Name"))
self.UITrackRootName.setText(_translate("ElegantGUI", "SwissFEL"))
self.UITrackStart.setText(_translate("ElegantGUI", "SINLH01"))
+14
View File
@@ -57,6 +57,20 @@
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="UITrackReload">
<property name="font">
<font>
<pointsize>12</pointsize>
<weight>75</weight>
<bold>true</bold>
</font>
</property>
<property name="text">
<string>Reload the Output Files</string>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="label_8">
<property name="text">