Basic Tracking done

This commit is contained in:
2025-05-05 17:52:45 +02:00
parent 93527fc7e5
commit b4c25511d1
10 changed files with 100017 additions and 278 deletions

View File

@@ -1,67 +1,170 @@
import sys
import json
import numpy as np
from onlinemodel.core import Facility
from onlinemodel.code import CMadX
from onlinemodel.madx import CMadX
class Model:
def __init__(self, phase=0, parent=None):
print('Initializing online model ...')
self.phase = phase # current planned future
self.parent=parent
self.om = Facility(phase)
self.om = Facility(init=1, alt = phase)
self.order = None
self.madx = CMadX()
self.twiss = None
# hook up events
self.eventHandling()
def getSettings(self):
elements = self.om.listElement('*',1)
quadrupoles={}
sextupoles={}
dipoles={}
rf={}
undulators={}
kicker={}
loc = 'SINLH01.DBAM010'
energy={'location': loc, 'energy':self.om.EnergyAt(loc)}
for ele in elements:
if 'MQUA' in ele.Name:
quadrupoles[ele.Name]={'k1':ele.k1,'k1L':ele.k1*ele.Length}
elif 'MSEX' in ele.Name:
sextupoles[ele.Name]={'k2':ele.k2,'k2L':ele.k2*ele.Length}
elif 'MBND' in ele.Name:
if 'SINLH' in ele.Name or 'SINBC' in ele.Name or 'S10BC' in ele.Name or 'SATMA' in ele.Name or 'SATUN' in ele.Name:
dipoles[ele.Name]={'angle':ele.angle}
elif 'UIND' in ele.Name:
undulators[ele.Name]={'K':ele.K,'kx':ele.kx,'ky':ele.ky}
elif 'RACC' in ele.Name:
rf[ele.Name]={'Gradient':ele.Gradient,'Phase':ele.Phase}
elif 'MKAC' in ele.Name or 'MKDC' in ele.Name:
kicker[ele.Name] = {'cory': ele.cory}
return {'Quadrupole':quadrupoles,'Sextupole':sextupoles,'Dipole':dipoles,'RF':rf,'Undulator':undulators,'Kicker':kicker,'Energy':energy}
def loadSettingsGroup(self,group,fields):
for key in group.keys():
ele = self.om.getElement(key)
for field in fields:
ele.__dict__[field]=group[key][field]
def loadSettings(self,settings):
self.loadSettingsGroup(settings['Quadrupole'],['k1'])
self.loadSettingsGroup(settings['Sextupole'], ['k2'])
self.loadSettingsGroup(settings['Dipole'], ['angle'])
self.loadSettingsGroup(settings['RF'], ['Gradient','Phase'])
self.loadSettingsGroup(settings['Undulator'], ['K','kx','ky'])
self.loadSettingsGroup(settings['Kicker'], ['cory'])
self.om.forceEnergyAt(settings['Energy']['location'],settings['Energy']['energy'][0])
def updateModel(self):
file ='SwissFELRef.json'
with open(file) as f:
data = json.load(f)
for key in data['settings'].keys():
tags=key.split(':')
elename = tags[0].replace('-','.')
fld = tags[1]
ele = self.om.getElement(elename)
if 'K1L' == fld:
ele.k1 = data['settings'][key]/ele.Length
elif 'K2L' == fld:
ele.k2 = data['settings'][key]/ele.Length
elif 'Grad' == fld:
ele.Gradient = data['settings'][key]
elif 'Phase' == fld:
ele.Phase = data['settings'][key]
elif 'kx' == fld:
ele.kx = data['settings'][key]
elif 'ky' == fld:
ele.ky = data['settings'][key]
elif 'K' == fld:
ele.K = data['settings'][key]
elif 'Gap' == fld:
ele.Gap = data['settings'][key]
elif 'Offset' == fld:
ele.Offset = data['settings'][key]
elif 'K0L' == fld:
ele.angle = data['settings'][key]
elif 'KICK' == fld:
ele.cory=data['settings'][key]
else:
print('Unknown tag:', key, data['settings'][key])
def eventHandling(self):
self.parent.UITrack.clicked.connect(self.track)
def track(self):
start = str(self.parent.UITrackStart.text())
end = str(self.parent.UITrackEnd.text())
twiss = {}
twiss['betax0'] = float(str(self.parent.UIBetax.text()))
twiss['betay0'] = float(str(self.parent.UIBetay.text()))
twiss['alphax0'] = float(str(self.parent.UIAlphax.text()))
twiss['alphay0'] = float(str(self.parent.UIAlphay.text()))
twiss['energy0'] = 150
self.doTrack(start,end,'SINLH02.MQUA410$START',twiss)
start = str(self.parent.UITrackStart.text()).upper()
end = str(self.parent.UITrackEnd.text()).upper()
if len(start)>7:
start = start[0:7]
if len(end)>7:
end = end[0:7]
twiss0 = self.parent.reference.getReferencePoint()
refloc = self.parent.reference.getReferenceLocation().upper()
twiss0['energy'] = 150.
start, end = self.checkRange(start, end, refloc[0:7])
if start is None:
return
print('Tracking from',start,'to',end)
self.doTrack(start,end,refloc,twiss0)
def doBackTrack(self,start=None,end=None,twiss=None):
twiss['alphax0'] = -twiss['alphax0']
twiss['alphay0'] = -twiss['alphay0']
self.madx.updateVariables(twiss)
self.madx.updateLattice(self.om)
twiss = self.madx.track(start, end, reverse=True)
#self.parent.plot.newData(twiss)
twiss0 = {}
twiss0['betax0']= twiss.betx[-1]
twiss0['betay0'] = twiss.bety[-1]
twiss0['alphax0'] = -twiss.alfx[-1]
twiss0['alphay0'] = -twiss.alfy[-1]
self.madx.clear()
return twiss0
def doTrack(self, start,end,refloc, twiss):
self.setBranch(start,end)
# check if refloc is in the range of start and end
def doTrack(self, start,end, refloc, twiss_in, plot = True):
twiss0={key+'0':twiss_in[key] for key in twiss_in.keys()}
self.setBranch(end.upper())
if not refloc == start:
twiss = self.doBackTrack(refloc,start,twiss)
twiss0 = self.doBackTrack(refloc,start,twiss0)
self.madx.updateVariables(twiss0)
twiss = self.madx.track(start+'$START',end+'$END')
self.madx.updateVariables(twiss)
self.madx.updateLattice(self.om)
energy = np.array([0. for i in range(len(twiss.betx))])
twiss = self.madx.track()
self.parent.plot.newData(twiss)
e0 = 0.
de = 0
for i, name in enumerate(twiss.name):
if len(name) > 15:
elename = name[0:15]
ele = self.om.getElement(elename)
if not ele is None:
erg= self.om.EnergyAt(ele)
if e0 == 0.:
energy[:i]+=erg[0]*1e-6
e0 = (erg[0]+erg[1])*1e-6
energy[i]=e0
if plot:
self.parent.plot.newData(twiss,energy)
def setBranch(self,start,end):
start0 = start[0:7]
end0 = end[0:7]
def doBackTrack(self,start=None,end=None,twiss0=None):
twiss0['alphax0'] = -twiss0['alphax0'] # revert particle trajectories
twiss0['alphay0'] = -twiss0['alphay0']
twiss0['etapx0'] = -twiss0['etapx0']
twiss0['etapy0'] = -twiss0['etapx0']
twiss0['px0'] = -twiss0['px0']
twiss0['py0'] = -twiss0['py0']
self.madx.updateVariables(twiss0)
twiss = self.madx.track(start, end+'$START', reverse=True)
twiss1 = {}
twiss1['betax0'] = twiss.betx[-1] # revert trajectory back
twiss1['betay0'] = twiss.bety[-1]
twiss1['alphax0'] = -twiss.alfx[-1]
twiss1['alphay0'] = -twiss.alfy[-1]
twiss1['etax0'] = twiss.dx[-1]
twiss1['etay0'] = twiss.dy[-1]
twiss1['etapx0'] = -twiss.dpx[-1]
twiss1['etapy0'] = -twiss.dpy[-1]
twiss1['x0'] = twiss.x[-1]
twiss1['y0'] = twiss.y[-1]
twiss1['px0'] = -twiss.px[-1]
twiss1['py0'] = -twiss.py[-1]
return twiss1
def setBranch(self,end):
destination = 'ARAMIS'
if 'SPO' in end:
destination = 'PORTHOS'
@@ -69,4 +172,31 @@ class Model:
destination = 'ATHOS'
elif 'S10BD' in end or 'SIN' in end:
destination = 'INJECTOR'
self.om.setBranch(destination,start0,end0)
self.om.setBranch(destination,'SINLH01')
self.order=self.om.getBranchElements()
self.madx.updateLattice(self.om,destination)
def checkRange(self,start,end,ref):
if self.om.getSection(start) is None:
print('Invalid staring point for tracking. Setting to SINLH01')
startsec='SINLH01'
else:
startsec = self.om.getSection(start).Element[0].Name
if self.om.getSection(end) is None:
print('Invalid staring point for tracking. Setting to starting section')
endsec = startsec
else:
endsec = self.om.getSection(end).Element[0].Name
if self.om.getSection(ref) is None:
print('Invalid section for reference. Aborting tracking')
return None,None
refsec = self.om.getSection(ref).Element[0].Name
if not self.om.isUpstream(startsec,endsec):
return self.checkRange(end,start,ref)
if not self.om.isUpstream(startsec,refsec):
start = ref
print('Reference point is upstream the tracking range. Extending range')
if not self.om.isUpstream(refsec,endsec):
end = ref
print('Reference point is downstream the tracking range. Extending range')
return start,end

View File

@@ -28,6 +28,7 @@ class OpticsPlot(QtWidgets.QMainWindow, Ui_OpticsPlotGUI):
self.initmpl(self.mplvl, self.mplwindow)
self.twiss=None
self.energy=None
# all action for optics plotting
self.PBetax.toggled.connect(self.doplot)
@@ -37,12 +38,14 @@ class OpticsPlot(QtWidgets.QMainWindow, Ui_OpticsPlotGUI):
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 newData(self,twiss):
def newData(self,twiss,energy):
self.twiss=twiss
self.energy=energy
self.updateOpticsTable()
self.doplot()
@@ -52,10 +55,10 @@ class OpticsPlot(QtWidgets.QMainWindow, Ui_OpticsPlotGUI):
return
nrow = len(self.twiss.s)
ncol = 9
ncol = 10
self.UITwissValues.setColumnCount(ncol)
self.UITwissValues.setRowCount(nrow)
self.UITwissValues.setHorizontalHeaderLabels(['Name','s','betax','betay','alphax','alphay','etax','etay','r56'])
self.UITwissValues.setHorizontalHeaderLabels(['Name','s','betax','betay','alphax','alphay','etax','etay','r56','energy'])
for i in range(nrow):
self.UITwissValues.setItem(i, 0, QtWidgets.QTableWidgetItem(self.twiss.name[i].split(':')[0]))
self.UITwissValues.setItem(i, 1, QtWidgets.QTableWidgetItem('%10.6f' % self.twiss.s[i]))
@@ -66,6 +69,7 @@ class OpticsPlot(QtWidgets.QMainWindow, Ui_OpticsPlotGUI):
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.energy[i]))
self.UITwissValues.resizeColumnsToContents()
self.UITwissValues.verticalHeader().hide()
self.UITwissValues.setEditTriggers(QtWidgets.QAbstractItemView.NoEditTriggers)
@@ -91,7 +95,7 @@ class OpticsPlot(QtWidgets.QMainWindow, Ui_OpticsPlotGUI):
filt['DX']=self.PEtax.isChecked()
filt['DY']=self.PEtay.isChecked()
filt['RE56']=self.PR56.isChecked()
# filt['Energy']=self.PEnergy.isChecked()
filt['Energy']=self.PEnergy.isChecked()
s = self.twiss.s
i1 = np.argmin(np.abs(s - z0))
@@ -122,9 +126,9 @@ class OpticsPlot(QtWidgets.QMainWindow, Ui_OpticsPlotGUI):
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], data['Energy'][i1:i2], (0, 1, 0, 1), r'$E$')
# ylabel = ylabel + r'$E$ (MeV), '
if filt['Energy']:
self.plotSingle(s[i1:i2], self.energy[i1:i2], (0, 1, 0, 1), r'$E$')
ylabel = ylabel + r'$E$ (MeV), '
if len(ylabel) < 3:
self.canvas.draw()

View File

@@ -1,27 +1,20 @@
import sys
#import re
#import numpy as np
#import copy
#import os
#import json
import json
from datetime import datetime
import time
#from shutil import copyfile
#from os.path import isfile, join
from PyQt5 import QtWidgets,QtGui
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 reference import ReferenceManager
from sandbox import Sandbox
class OpticsTools(QtWidgets.QMainWindow, Ui_OpticsGUI):
def __init__(self,phase=0):
def __init__(self,phase=0, office = False):
super(OpticsTools, self).__init__()
self.setupUi(self)
@@ -34,16 +27,51 @@ class OpticsTools(QtWidgets.QMainWindow, Ui_OpticsGUI):
# initialize online model
self.model = Model(phase=phase,parent=self)
# if phase == 0:
# self.machine = Machine()
# else:
# self.machine = None
if phase == 0 and office == False:
self.machine = Machine()
else:
self.machine = None
self.reference = ReferenceManager(parent = self)
self.sandbox = Sandbox(parent = self, machine = self.machine)
self.loadSettingsdirect("/sf/data/applications/BD-OpticsTools/reference/settings/ReferenceSetting.json")
# events handling
self.actionOpen_2.triggered.connect(self.loadSettings)
self.actionSave.triggered.connect(self.saveSettings)
def closeEvent(self, event):
self.plot.close()
event.accept()
def saveSettings(self):
options = QtWidgets.QFileDialog.Options()
options |= QtWidgets.QFileDialog.DontUseNativeDialog
fileName, _ = QtWidgets.QFileDialog.getSaveFileName(self, "Save Settings",
"/sf/data/applications/BD-OpticsTools/saved_settings/newSetting.json",
"Json Files (*.json)", options=options)
if not fileName:
return
settings=self.model.getSettings()
with open(fileName, 'w', encoding='utf-8') as f:
json.dump(settings, f, ensure_ascii=False, indent=4)
def loadSettings(self):
options = QtWidgets.QFileDialog.Options()
options |= QtWidgets.QFileDialog.DontUseNativeDialog
fileName, _ = QtWidgets.QFileDialog.getOpenFileName(self, "Open Settings",
"/sf/data/applications/BD-OpticsTools/saved_settings/newSetting.json",
"Json Files (*.json)", options=options)
if not fileName:
return
self.loadSettingsdirect(fileName)
def loadSettingsdirect(self,fileName):
with open(fileName, 'r', encoding='utf-8') as f:
settings = json.load(f)
self.model.loadSettings(settings)
# --------------------------------
# Main routine
@@ -55,6 +83,6 @@ if __name__ == '__main__':
arg=int(sys.argv[1])
else:
arg=0
main = OpticsTools()
main = OpticsTools(phase = 0 , office = True)
main.show()
sys.exit(app.exec_())

99244
SwissFELRef.json Normal file

File diff suppressed because it is too large Load Diff

88
reference.py Normal file
View File

@@ -0,0 +1,88 @@
class ReferenceManager:
def __init__(self, parent):
self.parent = parent
self.reference={}
self.twisswidget={'betax':self.parent.UIBetax,'betay':self.parent.UIBetay,
'alphax':self.parent.UIAlphax,'alphay':self.parent.UIAlphay,
'etax':self.parent.UIEtax,'etay':self.parent.UIEtay,
'etapx':self.parent.UIEtapx,'etapy':self.parent.UIEtapy,
'x':self.parent.UIX,'y':self.parent.UIY,
'px':self.parent.UIPX,'py':self.parent.UIPY}
self.defineReferencePoints()
self.updateReferenceComboBox()
self.updateReferenceWidgets()
self.parent.UITrackReference.currentIndexChanged.connect(self.updateReferenceWidgets)
#### all event selecting some tracking points
def updateReferencePoint(self,twiss):
for key in self.twisswidget.keys():
if key in twiss.keys():
value = twiss[key]
else:
value = 0
if 'beta' in key:
value = 30
self.twisswidget[key].setText(str(value))
def getReferencePoint(self):
self.updateReferenceWidgets() # enforce that the data is consistent
twiss = {key:float(str(self.twisswidget[key].text())) for key in self.twisswidget.keys()}
return twiss
def getReferenceLocation(self):
return str(self.parent.UITrackLocation.text())
def updateReferenceWidgets(self):
key = str(self.parent.UITrackReference.currentText())
if key == 'User Defined':
return
twiss = self.reference['Reference'][key]['twiss']
name = self.reference['Reference'][key]['location']
self.parent.UITrackLocation.setText(name)
self.updateReferencePoint(twiss)
def updateReferenceComboBox(self):
self.parent.UITrackReference.clear()
for ref in self.reference['Reference'].keys():
self.parent.UITrackReference.addItem(ref)
self.parent.UITrackReference.addItem('User Defined')
def defineReferencePoints(self):
self.reference={'Reference':{}}
self.reference['Reference']['Laser Heater']=self.defineRef('sinlh02.mqua410$start',
{'betax':11.2,'alphax':3.2,
'betay':0.8,'alphay':0.75})
self.reference['Reference']['Bunch Compressor1']=self.defineRef('sindi02.mqua020$start',
{'betax': 11.1557,'alphax': -1.17,
'betay': 50, 'alphay': 0.})
self.reference['Reference']['Bunch Compressor 2']=self.defineRef('s10ma01.mqua020$start',
{'betax': 6.14, 'alphax': -0.83,
'betay': 22.86,'alphay': -1.18})
self.reference['Reference']['Switchyard']=self.defineRef('s20sy02.mqua070$start',
{'betax': 12.99, 'alphax': 3.7011,
'betay': 46.339,'alphay': -6.501})
self.reference['Reference']['Linac3']=self.defineRef('s30cb10.mqua430$start',
{'betax': 8.83, 'alphax': 0.548,
'betay': 30.44, 'alphay': -1.866})
self.reference['Reference']['Aramis Stopper']=self.defineRef('sarma01.mqua010$start',
{'betax': 2.304, 'alphax': -1.4045,
'betay': 25.929, 'alphay': -6.363})
self.reference['Reference']['Athos HERO']=self.defineRef('satdi01.mqua250$start',
{'betax': 35.76, 'alphax': -1.166,
'betay': 24.087, 'alphay': 0.648})
self.reference['Reference']['Athos Deflector']=self.defineRef('satbd01.mqua010$start',
{'betax': 50, 'alphax': 0,
'betay': 50, 'alphay': 0})
def defineRef(self,location,twiss):
ref={'location':location,'twiss':twiss}
return ref

10
sandbox.py Normal file
View File

@@ -0,0 +1,10 @@
class Sandbox:
def __init__(self, parent=None,machine=False):
self.parent=parent
self.machine=machine
def updateSandbox(self):
a = 1

View File

@@ -70,7 +70,7 @@ class Ui_OpticsPlotGUI(object):
self.PR56.setObjectName("PR56")
self.gridLayout_4.addWidget(self.PR56, 3, 0, 1, 1)
self.PEnergy = QtWidgets.QPushButton(self.widget_2)
self.PEnergy.setEnabled(False)
self.PEnergy.setEnabled(True)
self.PEnergy.setCheckable(True)
self.PEnergy.setObjectName("PEnergy")
self.gridLayout_4.addWidget(self.PEnergy, 3, 1, 1, 1)

View File

@@ -122,7 +122,7 @@
<item row="3" column="1">
<widget class="QPushButton" name="PEnergy">
<property name="enabled">
<bool>false</bool>
<bool>true</bool>
</property>
<property name="text">
<string>Energy</string>

View File

@@ -32,19 +32,13 @@ class Ui_OpticsGUI(object):
self.horizontalLayout.setObjectName("horizontalLayout")
self.widget_2 = QtWidgets.QWidget(self.tab_3)
self.widget_2.setObjectName("widget_2")
self.verticalLayout_5 = QtWidgets.QVBoxLayout(self.widget_2)
self.verticalLayout_5.setObjectName("verticalLayout_5")
self.verticalLayout = QtWidgets.QVBoxLayout(self.widget_2)
self.verticalLayout.setObjectName("verticalLayout")
self.UITrack = QtWidgets.QPushButton(self.widget_2)
self.UITrack.setObjectName("UITrack")
self.verticalLayout_5.addWidget(self.UITrack)
self.label = QtWidgets.QLabel(self.widget_2)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Preferred)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.label.sizePolicy().hasHeightForWidth())
self.label.setSizePolicy(sizePolicy)
self.label.setObjectName("label")
self.verticalLayout_5.addWidget(self.label)
self.verticalLayout.addWidget(self.UITrack)
self.gridLayout_4 = QtWidgets.QGridLayout()
self.gridLayout_4.setObjectName("gridLayout_4")
self.UITrackStart = QtWidgets.QLineEdit(self.widget_2)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Fixed)
sizePolicy.setHorizontalStretch(0)
@@ -52,7 +46,7 @@ class Ui_OpticsGUI(object):
sizePolicy.setHeightForWidth(self.UITrackStart.sizePolicy().hasHeightForWidth())
self.UITrackStart.setSizePolicy(sizePolicy)
self.UITrackStart.setObjectName("UITrackStart")
self.verticalLayout_5.addWidget(self.UITrackStart)
self.gridLayout_4.addWidget(self.UITrackStart, 1, 0, 1, 1)
self.label_2 = QtWidgets.QLabel(self.widget_2)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Preferred)
sizePolicy.setHorizontalStretch(0)
@@ -60,7 +54,15 @@ class Ui_OpticsGUI(object):
sizePolicy.setHeightForWidth(self.label_2.sizePolicy().hasHeightForWidth())
self.label_2.setSizePolicy(sizePolicy)
self.label_2.setObjectName("label_2")
self.verticalLayout_5.addWidget(self.label_2)
self.gridLayout_4.addWidget(self.label_2, 0, 1, 1, 1)
self.label = QtWidgets.QLabel(self.widget_2)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Preferred)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.label.sizePolicy().hasHeightForWidth())
self.label.setSizePolicy(sizePolicy)
self.label.setObjectName("label")
self.gridLayout_4.addWidget(self.label, 0, 0, 1, 1)
self.UITrackEnd = QtWidgets.QLineEdit(self.widget_2)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Fixed)
sizePolicy.setHorizontalStretch(0)
@@ -68,17 +70,42 @@ class Ui_OpticsGUI(object):
sizePolicy.setHeightForWidth(self.UITrackEnd.sizePolicy().hasHeightForWidth())
self.UITrackEnd.setSizePolicy(sizePolicy)
self.UITrackEnd.setObjectName("UITrackEnd")
self.verticalLayout_5.addWidget(self.UITrackEnd)
self.gridLayout_3 = QtWidgets.QGridLayout()
self.gridLayout_3.setObjectName("gridLayout_3")
self.UIAlphay = QtWidgets.QLineEdit(self.widget_2)
self.gridLayout_4.addWidget(self.UITrackEnd, 1, 1, 1, 1)
self.verticalLayout.addLayout(self.gridLayout_4)
self.label_9 = QtWidgets.QLabel(self.widget_2)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Preferred)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.label_9.sizePolicy().hasHeightForWidth())
self.label_9.setSizePolicy(sizePolicy)
self.label_9.setObjectName("label_9")
self.verticalLayout.addWidget(self.label_9)
self.UITrackReference = QtWidgets.QComboBox(self.widget_2)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Fixed)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.UIAlphay.sizePolicy().hasHeightForWidth())
self.UIAlphay.setSizePolicy(sizePolicy)
self.UIAlphay.setObjectName("UIAlphay")
self.gridLayout_3.addWidget(self.UIAlphay, 3, 2, 1, 1)
sizePolicy.setHeightForWidth(self.UITrackReference.sizePolicy().hasHeightForWidth())
self.UITrackReference.setSizePolicy(sizePolicy)
self.UITrackReference.setObjectName("UITrackReference")
self.verticalLayout.addWidget(self.UITrackReference)
self.label_10 = QtWidgets.QLabel(self.widget_2)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Preferred)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.label_10.sizePolicy().hasHeightForWidth())
self.label_10.setSizePolicy(sizePolicy)
self.label_10.setObjectName("label_10")
self.verticalLayout.addWidget(self.label_10)
self.UITrackLocation = QtWidgets.QLineEdit(self.widget_2)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Fixed)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.UITrackLocation.sizePolicy().hasHeightForWidth())
self.UITrackLocation.setSizePolicy(sizePolicy)
self.UITrackLocation.setObjectName("UITrackLocation")
self.verticalLayout.addWidget(self.UITrackLocation)
self.gridLayout_3 = QtWidgets.QGridLayout()
self.gridLayout_3.setObjectName("gridLayout_3")
self.UIBetax = QtWidgets.QLineEdit(self.widget_2)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Fixed)
sizePolicy.setHorizontalStretch(0)
@@ -87,6 +114,9 @@ class Ui_OpticsGUI(object):
self.UIBetax.setSizePolicy(sizePolicy)
self.UIBetax.setObjectName("UIBetax")
self.gridLayout_3.addWidget(self.UIBetax, 1, 1, 1, 1)
self.label_5 = QtWidgets.QLabel(self.widget_2)
self.label_5.setObjectName("label_5")
self.gridLayout_3.addWidget(self.label_5, 1, 0, 1, 1)
self.UIAlphax = QtWidgets.QLineEdit(self.widget_2)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Fixed)
sizePolicy.setHorizontalStretch(0)
@@ -103,20 +133,18 @@ class Ui_OpticsGUI(object):
self.UIBetay.setSizePolicy(sizePolicy)
self.UIBetay.setObjectName("UIBetay")
self.gridLayout_3.addWidget(self.UIBetay, 1, 2, 1, 1)
self.label_3 = QtWidgets.QLabel(self.widget_2)
self.label_3.setObjectName("label_3")
self.gridLayout_3.addWidget(self.label_3, 4, 0, 1, 1)
self.label_7 = QtWidgets.QLabel(self.widget_2)
self.label_7.setObjectName("label_7")
self.gridLayout_3.addWidget(self.label_7, 6, 0, 1, 1)
self.label_4 = QtWidgets.QLabel(self.widget_2)
self.label_4.setObjectName("label_4")
self.gridLayout_3.addWidget(self.label_4, 5, 0, 1, 1)
self.label_6 = QtWidgets.QLabel(self.widget_2)
self.label_6.setObjectName("label_6")
self.gridLayout_3.addWidget(self.label_6, 3, 0, 1, 1)
self.label_5 = QtWidgets.QLabel(self.widget_2)
self.label_5.setObjectName("label_5")
self.gridLayout_3.addWidget(self.label_5, 1, 0, 1, 1)
self.label_29 = QtWidgets.QLabel(self.widget_2)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Preferred)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.label_29.sizePolicy().hasHeightForWidth())
self.label_29.setSizePolicy(sizePolicy)
self.label_29.setObjectName("label_29")
self.gridLayout_3.addWidget(self.label_29, 0, 1, 1, 1)
self.label_30 = QtWidgets.QLabel(self.widget_2)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Preferred)
sizePolicy.setHorizontalStretch(0)
@@ -125,9 +153,92 @@ class Ui_OpticsGUI(object):
self.label_30.setSizePolicy(sizePolicy)
self.label_30.setObjectName("label_30")
self.gridLayout_3.addWidget(self.label_30, 0, 2, 1, 1)
self.verticalLayout_5.addLayout(self.gridLayout_3)
self.label_29 = QtWidgets.QLabel(self.widget_2)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Preferred)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.label_29.sizePolicy().hasHeightForWidth())
self.label_29.setSizePolicy(sizePolicy)
self.label_29.setObjectName("label_29")
self.gridLayout_3.addWidget(self.label_29, 0, 1, 1, 1)
self.UIAlphay = QtWidgets.QLineEdit(self.widget_2)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Fixed)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.UIAlphay.sizePolicy().hasHeightForWidth())
self.UIAlphay.setSizePolicy(sizePolicy)
self.UIAlphay.setObjectName("UIAlphay")
self.gridLayout_3.addWidget(self.UIAlphay, 3, 2, 1, 1)
self.label_8 = QtWidgets.QLabel(self.widget_2)
self.label_8.setObjectName("label_8")
self.gridLayout_3.addWidget(self.label_8, 7, 0, 1, 1)
self.UIEtax = QtWidgets.QLineEdit(self.widget_2)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Fixed)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.UIEtax.sizePolicy().hasHeightForWidth())
self.UIEtax.setSizePolicy(sizePolicy)
self.UIEtax.setObjectName("UIEtax")
self.gridLayout_3.addWidget(self.UIEtax, 4, 1, 1, 1)
self.UIEtapx = QtWidgets.QLineEdit(self.widget_2)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Fixed)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.UIEtapx.sizePolicy().hasHeightForWidth())
self.UIEtapx.setSizePolicy(sizePolicy)
self.UIEtapx.setObjectName("UIEtapx")
self.gridLayout_3.addWidget(self.UIEtapx, 5, 1, 1, 1)
self.UIX = QtWidgets.QLineEdit(self.widget_2)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Fixed)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.UIX.sizePolicy().hasHeightForWidth())
self.UIX.setSizePolicy(sizePolicy)
self.UIX.setObjectName("UIX")
self.gridLayout_3.addWidget(self.UIX, 6, 1, 1, 1)
self.UIPX = QtWidgets.QLineEdit(self.widget_2)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Fixed)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.UIPX.sizePolicy().hasHeightForWidth())
self.UIPX.setSizePolicy(sizePolicy)
self.UIPX.setObjectName("UIPX")
self.gridLayout_3.addWidget(self.UIPX, 7, 1, 1, 1)
self.UIEtay = QtWidgets.QLineEdit(self.widget_2)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Fixed)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.UIEtay.sizePolicy().hasHeightForWidth())
self.UIEtay.setSizePolicy(sizePolicy)
self.UIEtay.setObjectName("UIEtay")
self.gridLayout_3.addWidget(self.UIEtay, 4, 2, 1, 1)
self.UIEtapy = QtWidgets.QLineEdit(self.widget_2)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Fixed)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.UIEtapy.sizePolicy().hasHeightForWidth())
self.UIEtapy.setSizePolicy(sizePolicy)
self.UIEtapy.setObjectName("UIEtapy")
self.gridLayout_3.addWidget(self.UIEtapy, 5, 2, 1, 1)
self.UIY = QtWidgets.QLineEdit(self.widget_2)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Fixed)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.UIY.sizePolicy().hasHeightForWidth())
self.UIY.setSizePolicy(sizePolicy)
self.UIY.setObjectName("UIY")
self.gridLayout_3.addWidget(self.UIY, 6, 2, 1, 1)
self.UIPY = QtWidgets.QLineEdit(self.widget_2)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Fixed)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.UIPY.sizePolicy().hasHeightForWidth())
self.UIPY.setSizePolicy(sizePolicy)
self.UIPY.setObjectName("UIPY")
self.gridLayout_3.addWidget(self.UIPY, 7, 2, 1, 1)
self.verticalLayout.addLayout(self.gridLayout_3)
spacerItem = QtWidgets.QSpacerItem(20, 40, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding)
self.verticalLayout_5.addItem(spacerItem)
self.verticalLayout.addItem(spacerItem)
self.horizontalLayout.addWidget(self.widget_2)
spacerItem1 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
self.horizontalLayout.addItem(spacerItem1)
@@ -247,22 +358,14 @@ class Ui_OpticsGUI(object):
self.menubar.setObjectName("menubar")
self.menuFile = QtWidgets.QMenu(self.menubar)
self.menuFile.setObjectName("menuFile")
self.menuRun = QtWidgets.QMenu(self.menubar)
self.menuRun.setObjectName("menuRun")
self.menuHelp = QtWidgets.QMenu(self.menubar)
self.menuHelp.setObjectName("menuHelp")
self.menuEdit = QtWidgets.QMenu(self.menubar)
self.menuEdit.setObjectName("menuEdit")
self.menuSettings = QtWidgets.QMenu(self.menubar)
self.menuSettings.setObjectName("menuSettings")
self.menuElegant = QtWidgets.QMenu(self.menubar)
self.menuElegant.setObjectName("menuElegant")
OpticsGUI.setMenuBar(self.menubar)
self.statusbar = QtWidgets.QStatusBar(OpticsGUI)
self.statusbar.setObjectName("statusbar")
OpticsGUI.setStatusBar(self.statusbar)
self.actionNew = QtWidgets.QAction(OpticsGUI)
self.actionNew.setObjectName("actionNew")
self.actionOpen_2 = QtWidgets.QAction(OpticsGUI)
self.actionOpen_2.setObjectName("actionOpen_2")
self.actionOpen = QtWidgets.QAction(OpticsGUI)
self.actionOpen.setObjectName("actionOpen")
self.actionSave_Model = QtWidgets.QAction(OpticsGUI)
@@ -365,37 +468,15 @@ class Ui_OpticsGUI(object):
self.actionSave_Reference.setObjectName("actionSave_Reference")
self.actionNew_Reference = QtWidgets.QAction(OpticsGUI)
self.actionNew_Reference.setObjectName("actionNew_Reference")
self.menuFile.addAction(self.actionNew)
self.menuFile.addAction(self.actionOpen)
self.menuFile.addAction(self.actionSave_Model)
self.menuFile.addAction(self.actionSave_Model_as)
self.actionSave = QtWidgets.QAction(OpticsGUI)
self.actionSave.setObjectName("actionSave")
self.menuFile.addAction(self.actionOpen_2)
self.menuFile.addAction(self.actionSave)
self.menuFile.addSeparator()
self.menuFile.addAction(self.actionNew_Script)
self.menuFile.addAction(self.actionOpen_Script)
self.menuFile.addAction(self.actionSave_Script)
self.menuFile.addAction(self.actionDuplicate_Script)
self.menuFile.addSeparator()
self.menuFile.addAction(self.actionBackup)
self.menuFile.addAction(self.actionQuit)
self.menuRun.addAction(self.actionTrack)
self.menuRun.addAction(self.actionMatch)
self.menuRun.addSeparator()
self.menuRun.addAction(self.actionExport_Lattice)
self.menuHelp.addAction(self.actionInfo)
self.menuHelp.addAction(self.actionWebsite)
self.menuEdit.addAction(self.actionCut)
self.menuEdit.addAction(self.actionCopy)
self.menuEdit.addAction(self.actionPaste)
self.menuSettings.addAction(self.actionRefreshSettings)
self.menuSettings.addAction(self.actionLoad_From_LongTracker)
self.menuSettings.addAction(self.actionExport_Optics_Functions)
self.menuElegant.addAction(self.actionImport_Initial_Distribution)
self.menuElegant.addAction(self.actionExport_Lattice_for_Elegant)
self.menubar.addAction(self.menuFile.menuAction())
self.menubar.addAction(self.menuEdit.menuAction())
self.menubar.addAction(self.menuSettings.menuAction())
self.menubar.addAction(self.menuRun.menuAction())
self.menubar.addAction(self.menuElegant.menuAction())
self.menubar.addAction(self.menuHelp.menuAction())
self.retranslateUi(OpticsGUI)
@@ -407,18 +488,32 @@ class Ui_OpticsGUI(object):
_translate = QtCore.QCoreApplication.translate
OpticsGUI.setWindowTitle(_translate("OpticsGUI", "SwissFEL Optics"))
self.UITrack.setText(_translate("OpticsGUI", "Track"))
self.label.setText(_translate("OpticsGUI", "Start"))
self.UITrackStart.setText(_translate("OpticsGUI", "SINLH01"))
self.label_2.setText(_translate("OpticsGUI", "End"))
self.label_2.setText(_translate("OpticsGUI", "End-Section"))
self.label.setText(_translate("OpticsGUI", "Start-Section"))
self.UITrackEnd.setText(_translate("OpticsGUI", "SINDI02"))
self.UIAlphay.setText(_translate("OpticsGUI", "0"))
self.label_9.setText(_translate("OpticsGUI", "Reference Point"))
self.label_10.setText(_translate("OpticsGUI", "Location"))
self.UIBetax.setText(_translate("OpticsGUI", "30"))
self.label_5.setText(_translate("OpticsGUI", "beta"))
self.UIAlphax.setText(_translate("OpticsGUI", "0"))
self.UIBetay.setText(_translate("OpticsGUI", "30"))
self.label_3.setText(_translate("OpticsGUI", "eta"))
self.label_7.setText(_translate("OpticsGUI", "offset"))
self.label_4.setText(_translate("OpticsGUI", "eta\'"))
self.label_6.setText(_translate("OpticsGUI", "alpha"))
self.label_5.setText(_translate("OpticsGUI", "beta"))
self.label_29.setText(_translate("OpticsGUI", "x"))
self.label_30.setText(_translate("OpticsGUI", "y"))
self.label_29.setText(_translate("OpticsGUI", "x"))
self.UIAlphay.setText(_translate("OpticsGUI", "0"))
self.label_8.setText(_translate("OpticsGUI", "angle"))
self.UIEtax.setText(_translate("OpticsGUI", "0"))
self.UIEtapx.setText(_translate("OpticsGUI", "0"))
self.UIX.setText(_translate("OpticsGUI", "30"))
self.UIPX.setText(_translate("OpticsGUI", "30"))
self.UIEtay.setText(_translate("OpticsGUI", "30"))
self.UIEtapy.setText(_translate("OpticsGUI", "30"))
self.UIY.setText(_translate("OpticsGUI", "30"))
self.UIPY.setText(_translate("OpticsGUI", "30"))
self.TabMaster.setTabText(self.TabMaster.indexOf(self.tab_3), _translate("OpticsGUI", "Track"))
self.groupBox_8.setTitle(_translate("OpticsGUI", "Magnets (Angle/ k1L / k2L)"))
self.label_23.setText(_translate("OpticsGUI", "Start"))
@@ -437,13 +532,9 @@ class Ui_OpticsGUI(object):
self.SB2ModRF.setText(_translate("OpticsGUI", "Model <- Sandbox"))
self.TabMaster.setTabText(self.TabMaster.indexOf(self.tab_8), _translate("OpticsGUI", "Settings Sandbox"))
self.menuFile.setTitle(_translate("OpticsGUI", "File"))
self.menuRun.setTitle(_translate("OpticsGUI", "MadX"))
self.menuHelp.setTitle(_translate("OpticsGUI", "Help"))
self.menuEdit.setTitle(_translate("OpticsGUI", "Edit"))
self.menuSettings.setTitle(_translate("OpticsGUI", "Settings"))
self.menuElegant.setTitle(_translate("OpticsGUI", "Elegant"))
self.actionNew.setText(_translate("OpticsGUI", "New Model"))
self.actionNew.setShortcut(_translate("OpticsGUI", "Ctrl+N"))
self.actionOpen_2.setText(_translate("OpticsGUI", "Open Settings..."))
self.actionOpen_2.setShortcut(_translate("OpticsGUI", "Ctrl+O"))
self.actionOpen.setText(_translate("OpticsGUI", "Open Model..."))
self.actionOpen.setShortcut(_translate("OpticsGUI", "Ctrl+O"))
self.actionSave_Model.setText(_translate("OpticsGUI", "Save Model"))
@@ -495,3 +586,4 @@ class Ui_OpticsGUI(object):
self.actionLoad_Reference.setText(_translate("OpticsGUI", "Load Reference..."))
self.actionSave_Reference.setText(_translate("OpticsGUI", "Save Reference"))
self.actionNew_Reference.setText(_translate("OpticsGUI", "New Reference"))
self.actionSave.setText(_translate("OpticsGUI", "Save Settings..."))

View File

@@ -24,7 +24,7 @@
</sizepolicy>
</property>
<property name="currentIndex">
<number>0</number>
<number>1</number>
</property>
<widget class="QWidget" name="tab_3">
<attribute name="title">
@@ -33,7 +33,7 @@
<layout class="QHBoxLayout" name="horizontalLayout">
<item>
<widget class="QWidget" name="widget_2" native="true">
<layout class="QVBoxLayout" name="verticalLayout_5">
<layout class="QVBoxLayout" name="verticalLayout">
<item>
<widget class="QPushButton" name="UITrack">
<property name="text">
@@ -42,61 +42,9 @@
</widget>
</item>
<item>
<widget class="QLabel" name="label">
<property name="sizePolicy">
<sizepolicy hsizetype="Minimum" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string>Start</string>
</property>
</widget>
</item>
<item>
<widget class="QLineEdit" name="UITrackStart">
<property name="sizePolicy">
<sizepolicy hsizetype="Minimum" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string>SINLH01</string>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="label_2">
<property name="sizePolicy">
<sizepolicy hsizetype="Minimum" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string>End</string>
</property>
</widget>
</item>
<item>
<widget class="QLineEdit" name="UITrackEnd">
<property name="sizePolicy">
<sizepolicy hsizetype="Minimum" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string>SINDI02</string>
</property>
</widget>
</item>
<item>
<layout class="QGridLayout" name="gridLayout_3">
<item row="3" column="2">
<widget class="QLineEdit" name="UIAlphay">
<layout class="QGridLayout" name="gridLayout_4">
<item row="1" column="0">
<widget class="QLineEdit" name="UITrackStart">
<property name="sizePolicy">
<sizepolicy hsizetype="Minimum" vsizetype="Fixed">
<horstretch>0</horstretch>
@@ -104,10 +52,99 @@
</sizepolicy>
</property>
<property name="text">
<string>0</string>
<string>SINLH01</string>
</property>
</widget>
</item>
<item row="0" column="1">
<widget class="QLabel" name="label_2">
<property name="sizePolicy">
<sizepolicy hsizetype="Minimum" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string>End-Section</string>
</property>
</widget>
</item>
<item row="0" column="0">
<widget class="QLabel" name="label">
<property name="sizePolicy">
<sizepolicy hsizetype="Minimum" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string>Start-Section</string>
</property>
</widget>
</item>
<item row="1" column="1">
<widget class="QLineEdit" name="UITrackEnd">
<property name="sizePolicy">
<sizepolicy hsizetype="Minimum" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string>SINDI02</string>
</property>
</widget>
</item>
</layout>
</item>
<item>
<widget class="QLabel" name="label_9">
<property name="sizePolicy">
<sizepolicy hsizetype="Minimum" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string>Reference Point</string>
</property>
</widget>
</item>
<item>
<widget class="QComboBox" name="UITrackReference">
<property name="sizePolicy">
<sizepolicy hsizetype="Minimum" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="label_10">
<property name="sizePolicy">
<sizepolicy hsizetype="Minimum" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string>Location</string>
</property>
</widget>
</item>
<item>
<widget class="QLineEdit" name="UITrackLocation">
<property name="sizePolicy">
<sizepolicy hsizetype="Minimum" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
</widget>
</item>
<item>
<layout class="QGridLayout" name="gridLayout_3">
<item row="1" column="1">
<widget class="QLineEdit" name="UIBetax">
<property name="sizePolicy">
@@ -121,6 +158,13 @@
</property>
</widget>
</item>
<item row="1" column="0">
<widget class="QLabel" name="label_5">
<property name="text">
<string>beta</string>
</property>
</widget>
</item>
<item row="3" column="1">
<widget class="QLineEdit" name="UIAlphax">
<property name="sizePolicy">
@@ -147,6 +191,27 @@
</property>
</widget>
</item>
<item row="4" column="0">
<widget class="QLabel" name="label_3">
<property name="text">
<string>eta</string>
</property>
</widget>
</item>
<item row="6" column="0">
<widget class="QLabel" name="label_7">
<property name="text">
<string>offset</string>
</property>
</widget>
</item>
<item row="5" column="0">
<widget class="QLabel" name="label_4">
<property name="text">
<string>eta'</string>
</property>
</widget>
</item>
<item row="3" column="0">
<widget class="QLabel" name="label_6">
<property name="text">
@@ -154,26 +219,6 @@
</property>
</widget>
</item>
<item row="1" column="0">
<widget class="QLabel" name="label_5">
<property name="text">
<string>beta</string>
</property>
</widget>
</item>
<item row="0" column="1">
<widget class="QLabel" name="label_29">
<property name="sizePolicy">
<sizepolicy hsizetype="Minimum" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string>x</string>
</property>
</widget>
</item>
<item row="0" column="2">
<widget class="QLabel" name="label_30">
<property name="sizePolicy">
@@ -187,10 +232,147 @@
</property>
</widget>
</item>
<item row="0" column="1">
<widget class="QLabel" name="label_29">
<property name="sizePolicy">
<sizepolicy hsizetype="Minimum" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string>x</string>
</property>
</widget>
</item>
<item row="3" column="2">
<widget class="QLineEdit" name="UIAlphay">
<property name="sizePolicy">
<sizepolicy hsizetype="Minimum" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string>0</string>
</property>
</widget>
</item>
<item row="7" column="0">
<widget class="QLabel" name="label_8">
<property name="text">
<string>angle</string>
</property>
</widget>
</item>
<item row="4" column="1">
<widget class="QLineEdit" name="UIEtax">
<property name="sizePolicy">
<sizepolicy hsizetype="Minimum" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string>0</string>
</property>
</widget>
</item>
<item row="5" column="1">
<widget class="QLineEdit" name="UIEtapx">
<property name="sizePolicy">
<sizepolicy hsizetype="Minimum" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string>0</string>
</property>
</widget>
</item>
<item row="6" column="1">
<widget class="QLineEdit" name="UIX">
<property name="sizePolicy">
<sizepolicy hsizetype="Minimum" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string>30</string>
</property>
</widget>
</item>
<item row="7" column="1">
<widget class="QLineEdit" name="UIPX">
<property name="sizePolicy">
<sizepolicy hsizetype="Minimum" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string>30</string>
</property>
</widget>
</item>
<item row="4" column="2">
<widget class="QLineEdit" name="UIEtay">
<property name="sizePolicy">
<sizepolicy hsizetype="Minimum" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string>30</string>
</property>
</widget>
</item>
<item row="5" column="2">
<widget class="QLineEdit" name="UIEtapy">
<property name="sizePolicy">
<sizepolicy hsizetype="Minimum" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string>30</string>
</property>
</widget>
</item>
<item row="6" column="2">
<widget class="QLineEdit" name="UIY">
<property name="sizePolicy">
<sizepolicy hsizetype="Minimum" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string>30</string>
</property>
</widget>
</item>
<item row="7" column="2">
<widget class="QLineEdit" name="UIPY">
<property name="sizePolicy">
<sizepolicy hsizetype="Minimum" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string>30</string>
</property>
</widget>
</item>
</layout>
</item>
<item>
<spacer name="verticalSpacer_5">
<spacer name="verticalSpacer">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
@@ -222,7 +404,7 @@
</widget>
<widget class="QWidget" name="tab_8">
<attribute name="title">
<string>Settings Sandbox</string>
<string>Sandbox</string>
</attribute>
<layout class="QHBoxLayout" name="horizontalLayout_5">
<item>
@@ -423,28 +605,11 @@
<property name="title">
<string>File</string>
</property>
<addaction name="actionNew"/>
<addaction name="actionOpen"/>
<addaction name="actionSave_Model"/>
<addaction name="actionSave_Model_as"/>
<addaction name="actionOpen_2"/>
<addaction name="actionSave"/>
<addaction name="separator"/>
<addaction name="actionNew_Script"/>
<addaction name="actionOpen_Script"/>
<addaction name="actionSave_Script"/>
<addaction name="actionDuplicate_Script"/>
<addaction name="separator"/>
<addaction name="actionBackup"/>
<addaction name="actionQuit"/>
</widget>
<widget class="QMenu" name="menuRun">
<property name="title">
<string>MadX</string>
</property>
<addaction name="actionTrack"/>
<addaction name="actionMatch"/>
<addaction name="separator"/>
<addaction name="actionExport_Lattice"/>
</widget>
<widget class="QMenu" name="menuHelp">
<property name="title">
<string>Help</string>
@@ -452,43 +617,16 @@
<addaction name="actionInfo"/>
<addaction name="actionWebsite"/>
</widget>
<widget class="QMenu" name="menuEdit">
<property name="title">
<string>Edit</string>
</property>
<addaction name="actionCut"/>
<addaction name="actionCopy"/>
<addaction name="actionPaste"/>
</widget>
<widget class="QMenu" name="menuSettings">
<property name="title">
<string>Settings</string>
</property>
<addaction name="actionRefreshSettings"/>
<addaction name="actionLoad_From_LongTracker"/>
<addaction name="actionExport_Optics_Functions"/>
</widget>
<widget class="QMenu" name="menuElegant">
<property name="title">
<string>Elegant</string>
</property>
<addaction name="actionImport_Initial_Distribution"/>
<addaction name="actionExport_Lattice_for_Elegant"/>
</widget>
<addaction name="menuFile"/>
<addaction name="menuEdit"/>
<addaction name="menuSettings"/>
<addaction name="menuRun"/>
<addaction name="menuElegant"/>
<addaction name="menuHelp"/>
</widget>
<widget class="QStatusBar" name="statusbar"/>
<action name="actionNew">
<action name="actionOpen_2">
<property name="text">
<string>New Model</string>
<string>Open Settings...</string>
</property>
<property name="shortcut">
<string>Ctrl+N</string>
<string>Ctrl+O</string>
</property>
</action>
<action name="actionOpen">
@@ -790,6 +928,11 @@
<string>New Reference</string>
</property>
</action>
<action name="actionSave">
<property name="text">
<string>Save Settings...</string>
</property>
</action>
</widget>
<resources/>
<connections>