diff --git a/generateMatchSettings.py b/generateMatchSettings.py
index cf18906..fd0bfef 100644
--- a/generateMatchSettings.py
+++ b/generateMatchSettings.py
@@ -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={}
diff --git a/model.py b/model.py
index 704417f..d770e39 100644
--- a/model.py
+++ b/model.py
@@ -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:
diff --git a/plot.py b/plot.py
index f4f4795..3ac578a 100644
--- a/plot.py
+++ b/plot.py
@@ -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), '
diff --git a/reference.py b/reference.py
index 85233e2..e0948e0 100644
--- a/reference.py
+++ b/reference.py
@@ -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)
diff --git a/ui/OpticsPlotGui.py b/ui/OpticsPlotGui.py
index dd6cc33..e27a0ff 100644
--- a/ui/OpticsPlotGui.py
+++ b/ui/OpticsPlotGui.py
@@ -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"))
diff --git a/ui/OpticsPlotGui.ui b/ui/OpticsPlotGui.ui
index 78cb7c8..7a1fc9c 100644
--- a/ui/OpticsPlotGui.ui
+++ b/ui/OpticsPlotGui.ui
@@ -43,19 +43,6 @@
-
-
-
-
-
- Betax
-
-
- true
-
-
- true
-
-
-
-
@@ -76,23 +63,23 @@
- -
-
-
- true
-
+
-
+
- Energy
+ Betax
true
+
+ true
+
- -
-
+
-
+
- AlphaY
+ R56
true
@@ -100,9 +87,19 @@
-
-
+
- R56
+ Mux
+
+
+ true
+
+
+
+ -
+
+
+ Muy
true
@@ -132,10 +129,33 @@
- -
-
+
-
+
+
+ true
+
- Mux
+ Energy
+
+
+ true
+
+
+
+ -
+
+
+ AlphaY
+
+
+ true
+
+
+
+ -
+
+
+ X
true
@@ -143,9 +163,9 @@
-
-
+
- Muy
+ Y
true
diff --git a/ui/OpticsToolsGui.py b/ui/OpticsToolsGui.py
index 7a3b7cd..a13ecff 100644
--- a/ui/OpticsToolsGui.py
+++ b/ui/OpticsToolsGui.py
@@ -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"))
diff --git a/ui/OpticsToolsGui.ui b/ui/OpticsToolsGui.ui
index c09507b..a4ca532 100644
--- a/ui/OpticsToolsGui.ui
+++ b/ui/OpticsToolsGui.ui
@@ -24,7 +24,7 @@
- 3
+ 2
@@ -549,193 +549,6 @@
-
-
- Absolute Matching
-
-
- -
-
-
-
-
-
- FODO
-
-
-
-
-
-
-
-
- Injector
-
-
- -
-
- Linac 1
-
-
- -
-
- Linac 2
-
-
- -
-
- Linac 3
-
-
- -
-
- Aramis Undulator
-
-
- -
-
- Athos Undulator
-
-
-
-
- -
-
-
-
-
-
- Phase Advance
-
-
-
- -
-
-
-
-
- -
-
-
- Flipped Polarity
-
-
-
- -
-
-
-
-
-
- Result
-
-
-
- -
-
-
-
-
- -
-
-
-
-
-
-
- 75
- true
-
-
-
- background-color: rgb(255, 255, 127);
-
-
- Match
-
-
-
- -
-
-
-
- 75
- true
-
-
-
- background-color: rgb(255, 255, 127);
-
-
- Match All
-
-
-
-
-
-
-
-
- -
-
-
- Reference Point
-
-
-
-
-
-
- -
-
-
- Random Initialization
-
-
-
- -
-
-
-
-
-
- Result
-
-
-
- -
-
-
-
-
-
-
-
- -
-
-
- Qt::Vertical
-
-
-
- 20
- 40
-
-
-
-
-
-
- -
-
-
- -
-
-
- Qt::Horizontal
-
-
-
- 380
- 20
-
-
-
-
-
-
Matching
@@ -744,7 +557,7 @@
-
-
-
+
12
@@ -752,8 +565,11 @@
true
+
+ background-color: rgb(255, 255, 127);
+
- Matching Procedure
+ Match Selected
@@ -778,7 +594,7 @@
-
- Order
+ Matching Point Order
@@ -793,23 +609,9 @@
-
-
+
- Match From Start
-
-
-
- -
-
-
- Match From Selected
-
-
-
- -
-
-
- Match Selected
+ Random Initialization