Initial test of matching

This commit is contained in:
2025-05-15 17:49:45 +02:00
parent f67d4ec349
commit c50448113a
8 changed files with 247 additions and 476 deletions

View File

@@ -17,60 +17,63 @@ def MatchReference(loc,twiss):
#def MatchTar(tar_in)
# tar_out={}
# for tar in tar_in:
# if 'Reference' in tar.key():
# res=self.getReferenceByTag(tar['Reference'])
# tar_out[res['Location']]=res['Twiss']
# return tar_out
#def MatchFixed(var0,start,cond):
# var = {key: varypar for key in var0}
# match={'Variable':var,'Start':start,'Constraint':cond}
# return match
#def MatchPeriodic(seq,var,tar,save):
# match={'Sequence':seq,'Variable':var,'Target':tar,'Save':save}
# return match
#def MatchCondition(par,val,loc,cond):
# match={'Parameter':par,'Value':val,'Location':loc,'Condition':cond}
# return match
path ="Settings/"
label='Reference'
order = []
order.append(MatchStep('Start', 'Laser Heater','SINLH02','SATBD01'))
order.append(MatchStep(None, 'SINSB04', None,'SATBD01','SINSB04',True))
order.append(MatchStep('Laser Heater', 'Match to SINSB04','SINSB04','SATBD04'))
#order.append(MatchStep('Laser Heater', 'Bunch Compressor 1','Fixed','Athos'))
#order.append(MatchStep('Bunch Compressor 1', 'Linac 1','Periodic','Athos'))
#order.append(MatchStep('Bunch Compressor 1', 'Match to Linac 1','Dependent','Athos'))
#order.append(MatchStep('Bunch Compressor 1', 'Bunch Compressor 2','Fixed','Athos'))
order.append(MatchStep('Laser Heater', 'Match to SINSB04','SINSB04','SATBD01'))
order.append(MatchStep('Laser Heater', 'Bunch Compressor 1','SINDI02','SATBD01'))
order.append(MatchStep(None, 'Linac 1', None,'SATBD01','S10CB02',True))
order.append(MatchStep('Bunch Compressor 1', 'Match to Linac 1','S10CB02','SATBD01'))
order.append(MatchStep('Bunch Compressor 1', 'End of Linac 1','S10BC01','SATBD01'))
order.append(MatchStep('Bunch Compressor 1', 'Bunch Compressor 2','S10MA01','SATBD01'))
order.append(MatchStep(None, 'Linac 2', None,'SATBD01',['S20CB01','S20CB02'],True))
order.append(MatchStep('Bunch Compressor 2', 'Match to Linac 2','S20CB04','SATBD01'))
order.append(MatchStep(None, 'Resonant Kicker',None,'SATBD01','S20SY02'))
parameter={}
var = ['SINLH01-MQUA020', 'SINLH01-MQUA040','SINLH01-MQUA050','SINLH01-MQUA070','SINLH02-MQUA010']
parameter['Laser Heater'] = MatchParameter(var,[{'Reference':'Laser Heater'}])
var = ['SINSB04-MQUA130','SINSB04-MQUA230']
parameter['SINSB04'] = MatchParameter(var,[{'Fixed':{'Location':'#e','Twiss':{'MUX':0.2,'MUY':0.2}}}])
var = ['SINLH02-MQUA410','SINLH03-MQUA030','SINLH03-MQUA040','SINLH03-MQUA060','SINLH03-MQUA080','SINSB03-MQUA130']
parameter['Match to SINSB04']=MatchParameter(var,[{'Save':{'Location':'sinsb04$start','SaveID':'SINSB04'}}])
var = ['SINBC01-MQUA020','SINBC01-MQUA050','SINBC01-MQUA070','SINBC01-MQUA090','SINBC01-MQUA110','SINDI01-MQUA020','SINDI01-MQUA070']
parameter['Bunch Compressor 1']=MatchParameter(var,[{'Reference':'Bunch Compressor 1'},
{'Fixed':{'Location':'sinbc02.mbnd400','Limit':1,'Twiss':{'betax':5.1,'betay':100}}},
{'Fixed':{'Location':'sinbc01.mqua110$end','Limit':1,'Twiss':{'betax':100}}}])
var = ['S10CB02-MQUA230','S10CB02-MQUA430']
parameter['Linac 1'] = MatchParameter(var,[{'Fixed':{'Location':'#e','Twiss':{'MUX':0.1883,'MUY':0.1883}}}])
var = ['S10CB01-MQUA230','S10CB01-MQUA430','SINDI02-MQUA020','SINDI02-MQUA030','SINDI02-MQUA050','SINDI02-MQUA060','SINDI02-MQUA090']
parameter['Match to Linac 1']=MatchParameter(var,[{'Save':{'Location':'s10cb02$start','SaveID':'Linac 1'}}])
var = ['S10CB07-MQUA430','S10CB08-MQUA230','S10CB08-MQUA430','S10CB09-MQUA230']
parameter['End of Linac 1']=MatchParameter(var,[{'Fixed':{'Location':'s10bc01.mqua020$start','Twiss':{'betax':4.88,'betay':16.11,'alphax':0.5546,'alphay':-1.81}}}])
var = ['S10BC01-MQUA020','S10BC01-MQUA040','S10BC01-MQUA060','S10BC01-MQUA080','S10BC01-MQUA100']
parameter['Bunch Compressor 2']=MatchParameter(var,[{'Reference':'Bunch Compressor 2'}])
var = ['S20CB02-MQUA430','S20CB02-MQUA430']
parameter['Linac 2'] = MatchParameter(var,[{'Fixed':{'Location':'#e','Twiss':{'MUX':0.2,'MUY':0.2}}}])
var = ['S10MA01-MQUA020','S10MA01-MQUA050','S10MA01-MQUA070','S10MA01-MQUA110','S10MA01-MQUA130']
parameter['Match to Linac 2']=MatchParameter(var,[{'Save':{'Location':'s20cb01$start','SaveID':'Linac 2'}}])
var = ['S20SY02-MQUA070','S20SY02-MQUA100','S20SY02-MQUA140','S20SY02-MQUA180','S20SY02-MKDC010','S20SY02-MKDC020','S20SY02-MKDC030','S20SY02-MKDC040','S20SY02-MKDC050']
parameter['Resonant Kicker']=MatchParameter(var,[{'Script':{'Location':'File','Script':'Scripts/switchyard.madx'}}])
dependence={}
dependence['SINSB04-MQUA230']=['SINSB03-MQUA230']
dependence['S10CB01-MQUA230']=['S20CB02-MQUA230','S10DI01-MQUA120'] + ['S20CB%2.2d-MQUA430' %i for i in range(3,9)]
dependence['S10CB01-MQUA430']=['S20CB02-MQUA430'] + ['S20CB%2.2d-MQUA230' %i for i in range(3,9)]
dependence['S10CB02-MQUA230']=['S10DI01-MQUA120'] + ['S10CB%2.2d-MQUA430' % i for i in range(3,9)]
dependence['S10CB02-MQUA430']=['S10CB%2.2d-MQUA230' % i for i in range(3,9)]
dependence['S20CB01-MQUA430']=['S20CB03-MQUA430']
reference={}

View File

@@ -172,8 +172,12 @@ class Model:
config,ID, status = self.parent.reference.getMatchingPoint()
if status is False:
return
self.setBranch(config['Destination'])
sequence = config['Sequence']
if isinstance(sequence,list):
length = [self.om.getSection(ele).LengthRes for ele in sequence]
sequence =self.madx.buildSequence(sequence,length,'seqcompund')
if config['Reference'] is None:
start='#s'
end='#e'
@@ -185,26 +189,31 @@ class Model:
end = config['End']+'$end'
itwiss = {converttwiss[key.lower()]:config['Reference']['Twiss'][key] for key in config['Reference']['Twiss'].keys()}
var={}
random = self.parent.UIMatchRandom.isChecked()
for key in config['Variable'].keys():
key0=key.replace('-','.').lower()
if 'mqua' or 'mqsk' in key0:
if 'mqua' in key0 or 'mqsk' in key0:
key0+='.k1'
elif 'msex' in key0:
key0+='.k2'
elif 'mkac' in key0 or 'mkdc' in key0:
key0+='.cory'
var[key0]=config['Variable'][key]
conf0={}
for key in config['Target'].keys():
sconf = config['Target'][key]
conf0[key] = {converttwiss[key0.lower()]:sconf[key0] for key0 in sconf.keys()}
res,twiss,err=self.madx.match(sequence=config['Sequence'], start=start, end=end,
init=itwiss, var=var, const=conf0,
preset=False,random=False)
if 'File' in config['Target'].keys():
twiss,err=self.madx.callScript(config['Target']['File']['File'],sequence,start,end)
else:
for key in config['Target'].keys():
sconf = config['Target'][key]
conf0[key] = {converttwiss[key0.lower()]:sconf[key0] for key0 in sconf.keys()}
res,twiss,err=self.madx.match(sequence=sequence, start=start, end=end,
init=itwiss, var=var, const=conf0,
preset=False,random=random)
if not config['Save'] == False:
self.parent.reference.saveTwiss(ID,twiss)
self.parent.reference.updateMatchPoint(ID,err)
self.updateModelFromMatching(res)
#self.updateModelFromMatching(res)
energy = self.calcEnergyProfile(twiss)
self.parent.plot.newData(twiss,energy)
@@ -258,27 +267,13 @@ class Model:
for key in twiss_in.keys():
if converttwiss[key] in twiss0.keys():
self.startTwiss[key+'0'] = twiss0[converttwiss[key]]
self.madx.updateVariables(twiss0)
twiss = self.madx.track('swissfel',start+'$START',end+'$END')
# self.madx.updateVariables(twiss0)
twiss = self.madx.track('swissfel',start+'$START',end+'$END',twiss0)
energy = self.calcEnergyProfile(twiss)
if plot:
self.parent.plot.newData(twiss,energy)
def calcEnergyProfile(self,twiss):
energy = np.array([0. for i in range(len(twiss.betx))])
e0 = 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
return energy
def doBackTrack(self,start=None,end=None,twiss0=None):
@@ -289,9 +284,9 @@ class Model:
twiss0['dpy'] = -twiss0['dpy']
twiss0['px'] = -twiss0['px']
twiss0['py'] = -twiss0['py']
self.madx.updateVariables(twiss0)
print(start,end)
twiss = self.madx.track('invswissfel', start, end+'$START')
# self.madx.updateVariables(twiss0)
# print(start,end)
twiss = self.madx.track('invswissfel', start, end+'$START',twiss0)
twiss1 = {}
twiss1['betx'] = twiss.betx[-1] # revert trajectory back
twiss1['bety'] = twiss.bety[-1]
@@ -307,6 +302,21 @@ class Model:
twiss1['py'] = -twiss.py[-1]
return twiss1
def calcEnergyProfile(self,twiss):
energy = np.array([0. for i in range(len(twiss.betx))])
e0 = 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
return energy
def setBranch(self,end):
destination = 'ARAMIS'
if 'SPO' in end:

26
plot.py
View File

@@ -40,6 +40,8 @@ class OpticsPlot(QtWidgets.QMainWindow, Ui_OpticsPlotGUI):
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)
@@ -159,6 +161,8 @@ class OpticsPlot(QtWidgets.QMainWindow, Ui_OpticsPlotGUI):
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()
s = self.twiss.s
i1 = np.argmin(np.abs(s - z0))
@@ -187,9 +191,17 @@ class OpticsPlot(QtWidgets.QMainWindow, Ui_OpticsPlotGUI):
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_{y}$')
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), '
@@ -220,6 +232,18 @@ class OpticsPlot(QtWidgets.QMainWindow, Ui_OpticsPlotGUI):
if filt['DY']:
self.plotSingle(s[i1:i2], self.twissref.dy[i1:i2], (1, 0, 0, 1), r'$\eta_{y}$',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}$',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}$',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$',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$',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}$',dashed=True)
ylabel = ylabel + r'$R_{56}$ (m), '

View File

@@ -41,6 +41,9 @@ class ReferenceManager:
for i,ele in enumerate(self.settings['Order']):
self.parent.UIMatchOrder.addItem(ele['MatchID'])
self.parent.UIMatchOrder.item(i).setBackground(CBeige)
if self.parent.UIMatchOrder.count() > 0:
self.parent.UIMatchOrder.setCurrentRow(0)
self.displayMatchingPoint()
def loadReference(self, filename):
with open(filename) as f:
@@ -84,9 +87,18 @@ class ReferenceManager:
con = {key:{'Val':par['Twiss'][key],'Condition':0} for key in par['Twiss'].keys()}
target[loc]=con
ncon += len(con.keys())
elif 'Script' in tar.keys():
loc = tar['Script']['Location']
file = tar['Script']['Script']
target[loc] = {'File':file} # all condition are in the script
ncon += 100
elif 'Fixed' in tar.keys():
loc=tar['Fixed']['Location']
con = {key: {'Val': tar['Fixed']['Twiss'][key], 'Condition': 0} for key in tar['Fixed']['Twiss'].keys()}
if 'Limit' in tar['Fixed'].keys():
condi = tar['Fixed']['Limit']
else:
condi = 0
con = {key: {'Val': tar['Fixed']['Twiss'][key], 'Condition': condi} for key in tar['Fixed']['Twiss'].keys()}
target[loc]=con
ncon += len(con.keys())
elif 'Save' in tar.keys():
@@ -121,6 +133,11 @@ class ReferenceManager:
else:
color = CRed
self.parent.UIMatchOrder.item(idx).setBackground(color)
if val<1:
idx = self.parent.UIMatchOrder.currentRow()+1
if idx < self.parent.UIMatchOrder.count():
self.parent.UIMatchOrder.setCurrentRow(idx)
self.displayMatchingPoint()
def getDependence(self,ele):
@@ -153,10 +170,14 @@ class ReferenceManager:
info = order['Target'][key0]
for key in info.keys():
self.parent.UIMatchTargets.insertRow(irow)
self.parent.UIMatchTargets.setItem(irow, 0, QtWidgets.QTableWidgetItem(key0))
val = '%7.3f' % info[key]['Val']
txt = key + sym[info[key]['Condition']] + val.strip()
self.parent.UIMatchTargets.setItem(irow, 1, QtWidgets.QTableWidgetItem(txt))
if key == 'File':
self.parent.UIMatchTargets.setItem(irow, 0, QtWidgets.QTableWidgetItem('Script'))
self.parent.UIMatchTargets.setItem(irow, 1, QtWidgets.QTableWidgetItem(info['File']))
else:
self.parent.UIMatchTargets.setItem(irow, 0, QtWidgets.QTableWidgetItem(key0))
val = '%7.3f' % info[key]['Val']
txt = key + sym[info[key]['Condition']] + val.strip()
self.parent.UIMatchTargets.setItem(irow, 1, QtWidgets.QTableWidgetItem(txt))
irow+=1
if irow == 0:
self.parent.UIMatchTargets.insertRow(irow)

View File

@@ -39,11 +39,6 @@ class Ui_OpticsPlotGUI(object):
self.verticalLayout_5.addWidget(self.label_31)
self.gridLayout_4 = QtWidgets.QGridLayout()
self.gridLayout_4.setObjectName("gridLayout_4")
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.PEtax = QtWidgets.QPushButton(self.widget_2)
self.PEtax.setCheckable(True)
self.PEtax.setObjectName("PEtax")
@@ -52,19 +47,23 @@ class Ui_OpticsPlotGUI(object):
self.PEtay.setCheckable(True)
self.PEtay.setObjectName("PEtay")
self.gridLayout_4.addWidget(self.PEtay, 2, 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, 4, 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.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.PR56 = QtWidgets.QPushButton(self.widget_2)
self.PR56.setCheckable(True)
self.PR56.setObjectName("PR56")
self.gridLayout_4.addWidget(self.PR56, 4, 0, 1, 1)
self.gridLayout_4.addWidget(self.PR56, 5, 0, 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.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.PAlphax = QtWidgets.QPushButton(self.widget_2)
self.PAlphax.setCheckable(True)
self.PAlphax.setObjectName("PAlphax")
@@ -74,14 +73,23 @@ class Ui_OpticsPlotGUI(object):
self.PBetay.setChecked(True)
self.PBetay.setObjectName("PBetay")
self.gridLayout_4.addWidget(self.PBetay, 0, 1, 1, 1)
self.PMux = QtWidgets.QPushButton(self.widget_2)
self.PMux.setCheckable(True)
self.PMux.setObjectName("PMux")
self.gridLayout_4.addWidget(self.PMux, 3, 0, 1, 1)
self.PMuy = QtWidgets.QPushButton(self.widget_2)
self.PMuy.setCheckable(True)
self.PMuy.setObjectName("PMuy")
self.gridLayout_4.addWidget(self.PMuy, 3, 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.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.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.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.verticalLayout_5.addLayout(self.gridLayout_4)
self.gridLayout_5 = QtWidgets.QGridLayout()
self.gridLayout_5.setObjectName("gridLayout_5")
@@ -281,16 +289,18 @@ class Ui_OpticsPlotGUI(object):
_translate = QtCore.QCoreApplication.translate
OpticsPlotGUI.setWindowTitle(_translate("OpticsPlotGUI", "SwissFEL Optics"))
self.label_31.setText(_translate("OpticsPlotGUI", "Plotting"))
self.PBetax.setText(_translate("OpticsPlotGUI", "Betax"))
self.PEtax.setText(_translate("OpticsPlotGUI", "Etax"))
self.PEtay.setText(_translate("OpticsPlotGUI", "Etay"))
self.PEnergy.setText(_translate("OpticsPlotGUI", "Energy"))
self.PAlphay.setText(_translate("OpticsPlotGUI", "AlphaY"))
self.PBetax.setText(_translate("OpticsPlotGUI", "Betax"))
self.PR56.setText(_translate("OpticsPlotGUI", "R56"))
self.PAlphax.setText(_translate("OpticsPlotGUI", "Alphax"))
self.PBetay.setText(_translate("OpticsPlotGUI", "Betay"))
self.PMux.setText(_translate("OpticsPlotGUI", "Mux"))
self.PMuy.setText(_translate("OpticsPlotGUI", "Muy"))
self.PAlphax.setText(_translate("OpticsPlotGUI", "Alphax"))
self.PBetay.setText(_translate("OpticsPlotGUI", "Betay"))
self.PEnergy.setText(_translate("OpticsPlotGUI", "Energy"))
self.PAlphay.setText(_translate("OpticsPlotGUI", "AlphaY"))
self.PX.setText(_translate("OpticsPlotGUI", "X"))
self.PY.setText(_translate("OpticsPlotGUI", "Y"))
self.label_22.setText(_translate("OpticsPlotGUI", "Plot Start"))
self.PStart.setText(_translate("OpticsPlotGUI", "0"))
self.label_21.setText(_translate("OpticsPlotGUI", "Plot End"))

View File

@@ -43,19 +43,6 @@
</item>
<item>
<layout class="QGridLayout" name="gridLayout_4">
<item row="0" column="0">
<widget class="QPushButton" name="PBetax">
<property name="text">
<string>Betax</string>
</property>
<property name="checkable">
<bool>true</bool>
</property>
<property name="checked">
<bool>true</bool>
</property>
</widget>
</item>
<item row="2" column="0">
<widget class="QPushButton" name="PEtax">
<property name="text">
@@ -76,23 +63,23 @@
</property>
</widget>
</item>
<item row="4" column="1">
<widget class="QPushButton" name="PEnergy">
<property name="enabled">
<bool>true</bool>
</property>
<item row="0" column="0">
<widget class="QPushButton" name="PBetax">
<property name="text">
<string>Energy</string>
<string>Betax</string>
</property>
<property name="checkable">
<bool>true</bool>
</property>
<property name="checked">
<bool>true</bool>
</property>
</widget>
</item>
<item row="1" column="1">
<widget class="QPushButton" name="PAlphay">
<item row="5" column="0">
<widget class="QPushButton" name="PR56">
<property name="text">
<string>AlphaY</string>
<string>R56</string>
</property>
<property name="checkable">
<bool>true</bool>
@@ -100,9 +87,19 @@
</widget>
</item>
<item row="4" column="0">
<widget class="QPushButton" name="PR56">
<widget class="QPushButton" name="PMux">
<property name="text">
<string>R56</string>
<string>Mux</string>
</property>
<property name="checkable">
<bool>true</bool>
</property>
</widget>
</item>
<item row="4" column="1">
<widget class="QPushButton" name="PMuy">
<property name="text">
<string>Muy</string>
</property>
<property name="checkable">
<bool>true</bool>
@@ -132,10 +129,33 @@
</property>
</widget>
</item>
<item row="3" column="0">
<widget class="QPushButton" name="PMux">
<item row="5" column="1">
<widget class="QPushButton" name="PEnergy">
<property name="enabled">
<bool>true</bool>
</property>
<property name="text">
<string>Mux</string>
<string>Energy</string>
</property>
<property name="checkable">
<bool>true</bool>
</property>
</widget>
</item>
<item row="1" column="1">
<widget class="QPushButton" name="PAlphay">
<property name="text">
<string>AlphaY</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>
</property>
<property name="checkable">
<bool>true</bool>
@@ -143,9 +163,9 @@
</widget>
</item>
<item row="3" column="1">
<widget class="QPushButton" name="PMuy">
<widget class="QPushButton" name="PY">
<property name="text">
<string>Muy</string>
<string>Y</string>
</property>
<property name="checkable">
<bool>true</bool>

View File

@@ -334,109 +334,21 @@ class Ui_OpticsGUI(object):
self.verticalLayout_17.addWidget(self.SB2ModUnd)
self.horizontalLayout_5.addWidget(self.groupBox_9)
self.TabMaster.addTab(self.tab_8, "")
self.tab = QtWidgets.QWidget()
self.tab.setObjectName("tab")
self.horizontalLayout_7 = QtWidgets.QHBoxLayout(self.tab)
self.horizontalLayout_7.setObjectName("horizontalLayout_7")
self.verticalLayout_5 = QtWidgets.QVBoxLayout()
self.verticalLayout_5.setObjectName("verticalLayout_5")
self.groupBox = QtWidgets.QGroupBox(self.tab)
self.groupBox.setObjectName("groupBox")
self.verticalLayout_2 = QtWidgets.QVBoxLayout(self.groupBox)
self.verticalLayout_2.setObjectName("verticalLayout_2")
self.UIMFodoList = QtWidgets.QComboBox(self.groupBox)
self.UIMFodoList.setObjectName("UIMFodoList")
self.UIMFodoList.addItem("")
self.UIMFodoList.addItem("")
self.UIMFodoList.addItem("")
self.UIMFodoList.addItem("")
self.UIMFodoList.addItem("")
self.UIMFodoList.addItem("")
self.verticalLayout_2.addWidget(self.UIMFodoList)
self.horizontalLayout_2 = QtWidgets.QHBoxLayout()
self.horizontalLayout_2.setObjectName("horizontalLayout_2")
self.label_11 = QtWidgets.QLabel(self.groupBox)
self.label_11.setObjectName("label_11")
self.horizontalLayout_2.addWidget(self.label_11)
self.UIMFodoPhase = QtWidgets.QLineEdit(self.groupBox)
self.UIMFodoPhase.setObjectName("UIMFodoPhase")
self.horizontalLayout_2.addWidget(self.UIMFodoPhase)
self.verticalLayout_2.addLayout(self.horizontalLayout_2)
self.UIMFodoFlip = QtWidgets.QCheckBox(self.groupBox)
self.UIMFodoFlip.setObjectName("UIMFodoFlip")
self.verticalLayout_2.addWidget(self.UIMFodoFlip)
self.horizontalLayout_3 = QtWidgets.QHBoxLayout()
self.horizontalLayout_3.setObjectName("horizontalLayout_3")
self.label_12 = QtWidgets.QLabel(self.groupBox)
self.label_12.setObjectName("label_12")
self.horizontalLayout_3.addWidget(self.label_12)
self.UIMFodoResult = QtWidgets.QLineEdit(self.groupBox)
self.UIMFodoResult.setObjectName("UIMFodoResult")
self.horizontalLayout_3.addWidget(self.UIMFodoResult)
self.verticalLayout_2.addLayout(self.horizontalLayout_3)
self.horizontalLayout_4 = QtWidgets.QHBoxLayout()
self.horizontalLayout_4.setObjectName("horizontalLayout_4")
self.UIMFodoMatchSingle = QtWidgets.QPushButton(self.groupBox)
font = QtGui.QFont()
font.setBold(True)
font.setWeight(75)
self.UIMFodoMatchSingle.setFont(font)
self.UIMFodoMatchSingle.setStyleSheet("background-color: rgb(255, 255, 127);")
self.UIMFodoMatchSingle.setObjectName("UIMFodoMatchSingle")
self.horizontalLayout_4.addWidget(self.UIMFodoMatchSingle)
self.UIMFodoMatchAll = QtWidgets.QPushButton(self.groupBox)
font = QtGui.QFont()
font.setBold(True)
font.setWeight(75)
self.UIMFodoMatchAll.setFont(font)
self.UIMFodoMatchAll.setStyleSheet("background-color: rgb(255, 255, 127);")
self.UIMFodoMatchAll.setObjectName("UIMFodoMatchAll")
self.horizontalLayout_4.addWidget(self.UIMFodoMatchAll)
self.verticalLayout_2.addLayout(self.horizontalLayout_4)
self.verticalLayout_5.addWidget(self.groupBox)
self.groupBox_2 = QtWidgets.QGroupBox(self.tab)
self.groupBox_2.setObjectName("groupBox_2")
self.verticalLayout_3 = QtWidgets.QVBoxLayout(self.groupBox_2)
self.verticalLayout_3.setObjectName("verticalLayout_3")
self.comboBox = QtWidgets.QComboBox(self.groupBox_2)
self.comboBox.setObjectName("comboBox")
self.verticalLayout_3.addWidget(self.comboBox)
self.checkBox = QtWidgets.QCheckBox(self.groupBox_2)
self.checkBox.setObjectName("checkBox")
self.verticalLayout_3.addWidget(self.checkBox)
self.horizontalLayout_6 = QtWidgets.QHBoxLayout()
self.horizontalLayout_6.setObjectName("horizontalLayout_6")
self.label_13 = QtWidgets.QLabel(self.groupBox_2)
self.label_13.setObjectName("label_13")
self.horizontalLayout_6.addWidget(self.label_13)
self.lineEdit = QtWidgets.QLineEdit(self.groupBox_2)
self.lineEdit.setObjectName("lineEdit")
self.horizontalLayout_6.addWidget(self.lineEdit)
self.verticalLayout_3.addLayout(self.horizontalLayout_6)
self.verticalLayout_5.addWidget(self.groupBox_2)
spacerItem2 = QtWidgets.QSpacerItem(20, 40, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding)
self.verticalLayout_5.addItem(spacerItem2)
self.horizontalLayout_7.addLayout(self.verticalLayout_5)
self.UIMatchLog = QtWidgets.QPlainTextEdit(self.tab)
self.UIMatchLog.setObjectName("UIMatchLog")
self.horizontalLayout_7.addWidget(self.UIMatchLog)
spacerItem3 = QtWidgets.QSpacerItem(380, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
self.horizontalLayout_7.addItem(spacerItem3)
self.TabMaster.addTab(self.tab, "")
self.tab_2 = QtWidgets.QWidget()
self.tab_2.setObjectName("tab_2")
self.horizontalLayout_9 = QtWidgets.QHBoxLayout(self.tab_2)
self.horizontalLayout_9.setObjectName("horizontalLayout_9")
self.verticalLayout_6 = QtWidgets.QVBoxLayout()
self.verticalLayout_6.setObjectName("verticalLayout_6")
self.label_22 = QtWidgets.QLabel(self.tab_2)
self.UIMatchSelected = QtWidgets.QPushButton(self.tab_2)
font = QtGui.QFont()
font.setPointSize(12)
font.setBold(True)
font.setWeight(75)
self.label_22.setFont(font)
self.label_22.setObjectName("label_22")
self.verticalLayout_6.addWidget(self.label_22)
self.UIMatchSelected.setFont(font)
self.UIMatchSelected.setStyleSheet("background-color: rgb(255, 255, 127);")
self.UIMatchSelected.setObjectName("UIMatchSelected")
self.verticalLayout_6.addWidget(self.UIMatchSelected)
self.horizontalLayout_8 = QtWidgets.QHBoxLayout()
self.horizontalLayout_8.setObjectName("horizontalLayout_8")
self.label_14 = QtWidgets.QLabel(self.tab_2)
@@ -458,15 +370,9 @@ class Ui_OpticsGUI(object):
self.UIMatchOrder.setSizePolicy(sizePolicy)
self.UIMatchOrder.setObjectName("UIMatchOrder")
self.verticalLayout_6.addWidget(self.UIMatchOrder)
self.UIMatchAll = QtWidgets.QPushButton(self.tab_2)
self.UIMatchAll.setObjectName("UIMatchAll")
self.verticalLayout_6.addWidget(self.UIMatchAll)
self.UIMatchFromSelected = QtWidgets.QPushButton(self.tab_2)
self.UIMatchFromSelected.setObjectName("UIMatchFromSelected")
self.verticalLayout_6.addWidget(self.UIMatchFromSelected)
self.UIMatchSelected = QtWidgets.QPushButton(self.tab_2)
self.UIMatchSelected.setObjectName("UIMatchSelected")
self.verticalLayout_6.addWidget(self.UIMatchSelected)
self.UIMatchRandom = QtWidgets.QCheckBox(self.tab_2)
self.UIMatchRandom.setObjectName("UIMatchRandom")
self.verticalLayout_6.addWidget(self.UIMatchRandom)
self.horizontalLayout_9.addLayout(self.verticalLayout_6)
self.verticalLayout_7 = QtWidgets.QVBoxLayout()
self.verticalLayout_7.setObjectName("verticalLayout_7")
@@ -480,24 +386,18 @@ class Ui_OpticsGUI(object):
self.verticalLayout_7.addWidget(self.label_21)
self.gridLayout_5 = QtWidgets.QGridLayout()
self.gridLayout_5.setObjectName("gridLayout_5")
self.label_16 = QtWidgets.QLabel(self.tab_2)
self.label_16.setObjectName("label_16")
self.gridLayout_5.addWidget(self.label_16, 0, 0, 1, 1)
self.UIMatchLabel = QtWidgets.QLineEdit(self.tab_2)
self.UIMatchLabel.setObjectName("UIMatchLabel")
self.gridLayout_5.addWidget(self.UIMatchLabel, 0, 1, 1, 1)
self.label_17 = QtWidgets.QLabel(self.tab_2)
self.label_17.setObjectName("label_17")
self.gridLayout_5.addWidget(self.label_17, 1, 0, 1, 1)
self.UIMatchLabel = QtWidgets.QLineEdit(self.tab_2)
self.UIMatchLabel.setObjectName("UIMatchLabel")
self.gridLayout_5.addWidget(self.UIMatchLabel, 0, 1, 1, 1)
self.label_16 = QtWidgets.QLabel(self.tab_2)
self.label_16.setObjectName("label_16")
self.gridLayout_5.addWidget(self.label_16, 0, 0, 1, 1)
self.UIMatchStart = QtWidgets.QLineEdit(self.tab_2)
self.UIMatchStart.setObjectName("UIMatchStart")
self.gridLayout_5.addWidget(self.UIMatchStart, 1, 1, 1, 1)
self.label_18 = QtWidgets.QLabel(self.tab_2)
self.label_18.setObjectName("label_18")
self.gridLayout_5.addWidget(self.label_18, 2, 0, 1, 1)
self.UIMatchType = QtWidgets.QLineEdit(self.tab_2)
self.UIMatchType.setObjectName("UIMatchType")
self.gridLayout_5.addWidget(self.UIMatchType, 2, 1, 1, 1)
self.verticalLayout_7.addLayout(self.gridLayout_5)
self.label_19 = QtWidgets.QLabel(self.tab_2)
self.label_19.setObjectName("label_19")
@@ -519,8 +419,8 @@ class Ui_OpticsGUI(object):
self.UIMatchTargets.setRowCount(0)
self.verticalLayout_7.addWidget(self.UIMatchTargets)
self.horizontalLayout_9.addLayout(self.verticalLayout_7)
spacerItem4 = QtWidgets.QSpacerItem(242, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
self.horizontalLayout_9.addItem(spacerItem4)
spacerItem2 = QtWidgets.QSpacerItem(242, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
self.horizontalLayout_9.addItem(spacerItem2)
self.TabMaster.addTab(self.tab_2, "")
self.verticalLayout_4.addWidget(self.TabMaster)
OpticsGUI.setCentralWidget(self.centralwidget)
@@ -651,7 +551,7 @@ class Ui_OpticsGUI(object):
self.menubar.addAction(self.menuHelp.menuAction())
self.retranslateUi(OpticsGUI)
self.TabMaster.setCurrentIndex(3)
self.TabMaster.setCurrentIndex(2)
self.actionQuit.triggered.connect(OpticsGUI.close) # type: ignore
QtCore.QMetaObject.connectSlotsByName(OpticsGUI)
@@ -697,32 +597,13 @@ class Ui_OpticsGUI(object):
self.Mach2ModUnd.setText(_translate("OpticsGUI", "Model <- Sandbox <- Machine"))
self.SB2ModUnd.setText(_translate("OpticsGUI", "Model <- Sandbox"))
self.TabMaster.setTabText(self.TabMaster.indexOf(self.tab_8), _translate("OpticsGUI", "Sandbox"))
self.groupBox.setTitle(_translate("OpticsGUI", "FODO"))
self.UIMFodoList.setItemText(0, _translate("OpticsGUI", "Injector"))
self.UIMFodoList.setItemText(1, _translate("OpticsGUI", "Linac 1"))
self.UIMFodoList.setItemText(2, _translate("OpticsGUI", "Linac 2"))
self.UIMFodoList.setItemText(3, _translate("OpticsGUI", "Linac 3"))
self.UIMFodoList.setItemText(4, _translate("OpticsGUI", "Aramis Undulator"))
self.UIMFodoList.setItemText(5, _translate("OpticsGUI", "Athos Undulator"))
self.label_11.setText(_translate("OpticsGUI", "Phase Advance"))
self.UIMFodoFlip.setText(_translate("OpticsGUI", "Flipped Polarity"))
self.label_12.setText(_translate("OpticsGUI", "Result"))
self.UIMFodoMatchSingle.setText(_translate("OpticsGUI", "Match"))
self.UIMFodoMatchAll.setText(_translate("OpticsGUI", "Match All"))
self.groupBox_2.setTitle(_translate("OpticsGUI", "Reference Point"))
self.checkBox.setText(_translate("OpticsGUI", "Random Initialization"))
self.label_13.setText(_translate("OpticsGUI", "Result"))
self.TabMaster.setTabText(self.TabMaster.indexOf(self.tab), _translate("OpticsGUI", "Absolute Matching"))
self.label_22.setText(_translate("OpticsGUI", "Matching Procedure"))
self.label_14.setText(_translate("OpticsGUI", "Label"))
self.label_15.setText(_translate("OpticsGUI", "Order"))
self.UIMatchAll.setText(_translate("OpticsGUI", "Match From Start"))
self.UIMatchFromSelected.setText(_translate("OpticsGUI", "Match From Selected"))
self.UIMatchSelected.setText(_translate("OpticsGUI", "Match Selected"))
self.label_14.setText(_translate("OpticsGUI", "Label"))
self.label_15.setText(_translate("OpticsGUI", "Matching Point Order"))
self.UIMatchRandom.setText(_translate("OpticsGUI", "Random Initialization"))
self.label_21.setText(_translate("OpticsGUI", "Matching Point"))
self.label_16.setText(_translate("OpticsGUI", "Match"))
self.label_17.setText(_translate("OpticsGUI", "Start"))
self.label_18.setText(_translate("OpticsGUI", "Type"))
self.label_16.setText(_translate("OpticsGUI", "Match"))
self.label_19.setText(_translate("OpticsGUI", "Knobs"))
self.label_20.setText(_translate("OpticsGUI", "Target"))
self.TabMaster.setTabText(self.TabMaster.indexOf(self.tab_2), _translate("OpticsGUI", "Matching"))

View File

@@ -24,7 +24,7 @@
</sizepolicy>
</property>
<property name="currentIndex">
<number>3</number>
<number>2</number>
</property>
<widget class="QWidget" name="tab_3">
<attribute name="title">
@@ -549,193 +549,6 @@
</item>
</layout>
</widget>
<widget class="QWidget" name="tab">
<attribute name="title">
<string>Absolute Matching</string>
</attribute>
<layout class="QHBoxLayout" name="horizontalLayout_7">
<item>
<layout class="QVBoxLayout" name="verticalLayout_5">
<item>
<widget class="QGroupBox" name="groupBox">
<property name="title">
<string>FODO</string>
</property>
<layout class="QVBoxLayout" name="verticalLayout_2">
<item>
<widget class="QComboBox" name="UIMFodoList">
<item>
<property name="text">
<string>Injector</string>
</property>
</item>
<item>
<property name="text">
<string>Linac 1</string>
</property>
</item>
<item>
<property name="text">
<string>Linac 2</string>
</property>
</item>
<item>
<property name="text">
<string>Linac 3</string>
</property>
</item>
<item>
<property name="text">
<string>Aramis Undulator</string>
</property>
</item>
<item>
<property name="text">
<string>Athos Undulator</string>
</property>
</item>
</widget>
</item>
<item>
<layout class="QHBoxLayout" name="horizontalLayout_2">
<item>
<widget class="QLabel" name="label_11">
<property name="text">
<string>Phase Advance</string>
</property>
</widget>
</item>
<item>
<widget class="QLineEdit" name="UIMFodoPhase"/>
</item>
</layout>
</item>
<item>
<widget class="QCheckBox" name="UIMFodoFlip">
<property name="text">
<string>Flipped Polarity</string>
</property>
</widget>
</item>
<item>
<layout class="QHBoxLayout" name="horizontalLayout_3">
<item>
<widget class="QLabel" name="label_12">
<property name="text">
<string>Result</string>
</property>
</widget>
</item>
<item>
<widget class="QLineEdit" name="UIMFodoResult"/>
</item>
</layout>
</item>
<item>
<layout class="QHBoxLayout" name="horizontalLayout_4">
<item>
<widget class="QPushButton" name="UIMFodoMatchSingle">
<property name="font">
<font>
<weight>75</weight>
<bold>true</bold>
</font>
</property>
<property name="styleSheet">
<string notr="true">background-color: rgb(255, 255, 127);</string>
</property>
<property name="text">
<string>Match</string>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="UIMFodoMatchAll">
<property name="font">
<font>
<weight>75</weight>
<bold>true</bold>
</font>
</property>
<property name="styleSheet">
<string notr="true">background-color: rgb(255, 255, 127);</string>
</property>
<property name="text">
<string>Match All</string>
</property>
</widget>
</item>
</layout>
</item>
</layout>
</widget>
</item>
<item>
<widget class="QGroupBox" name="groupBox_2">
<property name="title">
<string>Reference Point</string>
</property>
<layout class="QVBoxLayout" name="verticalLayout_3">
<item>
<widget class="QComboBox" name="comboBox"/>
</item>
<item>
<widget class="QCheckBox" name="checkBox">
<property name="text">
<string>Random Initialization</string>
</property>
</widget>
</item>
<item>
<layout class="QHBoxLayout" name="horizontalLayout_6">
<item>
<widget class="QLabel" name="label_13">
<property name="text">
<string>Result</string>
</property>
</widget>
</item>
<item>
<widget class="QLineEdit" name="lineEdit"/>
</item>
</layout>
</item>
</layout>
</widget>
</item>
<item>
<spacer name="verticalSpacer_2">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>40</height>
</size>
</property>
</spacer>
</item>
</layout>
</item>
<item>
<widget class="QPlainTextEdit" name="UIMatchLog"/>
</item>
<item>
<spacer name="horizontalSpacer_2">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>380</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
</layout>
</widget>
<widget class="QWidget" name="tab_2">
<attribute name="title">
<string>Matching</string>
@@ -744,7 +557,7 @@
<item>
<layout class="QVBoxLayout" name="verticalLayout_6">
<item>
<widget class="QLabel" name="label_22">
<widget class="QPushButton" name="UIMatchSelected">
<property name="font">
<font>
<pointsize>12</pointsize>
@@ -752,8 +565,11 @@
<bold>true</bold>
</font>
</property>
<property name="styleSheet">
<string notr="true">background-color: rgb(255, 255, 127);</string>
</property>
<property name="text">
<string>Matching Procedure</string>
<string>Match Selected</string>
</property>
</widget>
</item>
@@ -778,7 +594,7 @@
<item>
<widget class="QLabel" name="label_15">
<property name="text">
<string>Order</string>
<string>Matching Point Order</string>
</property>
</widget>
</item>
@@ -793,23 +609,9 @@
</widget>
</item>
<item>
<widget class="QPushButton" name="UIMatchAll">
<widget class="QCheckBox" name="UIMatchRandom">
<property name="text">
<string>Match From Start</string>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="UIMatchFromSelected">
<property name="text">
<string>Match From Selected</string>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="UIMatchSelected">
<property name="text">
<string>Match Selected</string>
<string>Random Initialization</string>
</property>
</widget>
</item>