Implementing independent plotting window and back tracking
This commit is contained in:
@@ -14,13 +14,12 @@ from PyQt5.uic import loadUiType
|
||||
#from PyQt5.QtGui import QPixmap, QTransform
|
||||
#from PyQt5.QtWidgets import QMessageBox
|
||||
|
||||
|
||||
|
||||
from ui.OpticsToolsGui import Ui_OpticsGUI
|
||||
|
||||
from OpticsPlot import OpticsPlot
|
||||
from OpticsModel import Model
|
||||
from OpticsMachine import Machine
|
||||
from OpticsPlotting import OpticsPlotting
|
||||
|
||||
|
||||
class OpticsTools(QtWidgets.QMainWindow, Ui_OpticsGUI):
|
||||
def __init__(self,phase=0):
|
||||
super(OpticsTools, self).__init__()
|
||||
@@ -30,90 +29,20 @@ class OpticsTools(QtWidgets.QMainWindow, Ui_OpticsGUI):
|
||||
self.setWindowIcon(QtGui.QIcon("rsc/iconoptics.png"))
|
||||
self.setWindowTitle("SwissFEL Optics Tools")
|
||||
|
||||
self.plot = OpticsPlotting()
|
||||
self.plot.initmpl(self.mplvl, self.mplwindow)
|
||||
self.plot = OpticsPlot()
|
||||
self.plot.show()
|
||||
|
||||
# initialize online model
|
||||
self.model = Model(phase)
|
||||
if phase == 0:
|
||||
self.machine = Machine()
|
||||
else:
|
||||
self.machine = None
|
||||
|
||||
|
||||
# widget signals
|
||||
self.UITrack.clicked.connect(self.track)
|
||||
|
||||
# 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.PR56.toggled.connect(self.doplot)
|
||||
# self.PEnergy.toggled.connect(self.doplot)
|
||||
self.PStart.editingFinished.connect(self.doplot)
|
||||
self.PEnd.editingFinished.connect(self.doplot)
|
||||
|
||||
def track(self):
|
||||
start = str(self.UITrackStart.text())
|
||||
end = str(self.UITrackEnd.text())
|
||||
twiss = {}
|
||||
twiss['betax'] = float(str(self.UIBetax.text()))
|
||||
twiss['betay'] = float(str(self.UIBetay.text()))
|
||||
twiss['alphax'] = float(str(self.UIAlphax.text()))
|
||||
twiss['alphay'] = float(str(self.UIAlphay.text()))
|
||||
self.model.track(start,end,twiss)
|
||||
self.updateOpticsTable()
|
||||
|
||||
def updateOpticsTable(self):
|
||||
self.UITwissValues.clear()
|
||||
if self.model.twiss is None:
|
||||
return
|
||||
|
||||
res = self.model.twiss
|
||||
if 'NAME' in res.keys():
|
||||
nrow = len(res['NAME'])
|
||||
if nrow == 0:
|
||||
return
|
||||
else:
|
||||
return
|
||||
ncol = len(res.keys())
|
||||
self.UITwissValues.setColumnCount(ncol + 1)
|
||||
self.UITwissValues.setRowCount(nrow)
|
||||
for j,key in enumerate(res.keys()):
|
||||
col = res[key]
|
||||
self.UITwissValues.setHorizontalHeaderItem(j, QtWidgets.QTableWidgetItem(key))
|
||||
for i,val in enumerate(col):
|
||||
if j == 0:
|
||||
self.UITwissValues.setItem(i, j, QtWidgets.QTableWidgetItem(val))
|
||||
else:
|
||||
self.UITwissValues.setItem(i, j, QtWidgets.QTableWidgetItem('%10.6f' % val))
|
||||
self.UITwissValues.resizeColumnsToContents()
|
||||
self.UITwissValues.verticalHeader().hide()
|
||||
self.UITwissValues.setEditTriggers(QtWidgets.QAbstractItemView.NoEditTriggers)
|
||||
|
||||
|
||||
def doplot(self):
|
||||
if self.model.twiss is None:
|
||||
return
|
||||
|
||||
zstart=float(str(self.PStart.text()))
|
||||
zend=float(str(self.PEnd.text()))
|
||||
|
||||
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()
|
||||
self.plot.plot(self.model.twiss,filt,zstart,zend)
|
||||
self.model = Model(phase=phase,parent=self)
|
||||
# if phase == 0:
|
||||
# self.machine = Machine()
|
||||
# else:
|
||||
# self.machine = None
|
||||
|
||||
|
||||
def closeEvent(self, event):
|
||||
self.plot.close()
|
||||
event.accept()
|
||||
|
||||
# --------------------------------
|
||||
# Main routine
|
||||
|
||||
Reference in New Issue
Block a user