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