Initial Commit

This commit is contained in:
2025-07-16 16:33:06 +02:00
committed by Sven
parent d8f420764b
commit 4db50ced8f
9 changed files with 2853 additions and 1035 deletions
+2 -3
View File
@@ -1,5 +1,4 @@
.idea/modules.xml
.idea/vcs.xml
.idea/workspace.xml
/ReferenceDistribution/dist.sdds
/.idea/
/Runs/
+12 -2
View File
@@ -9,7 +9,8 @@ from PyQt5 import QtWidgets,QtGui
from ui.ElegantToolsGui import Ui_ElegantGUI
from distribution import Distribution
from plot import ElegantPlot
#from model import Model
from model import Model
from track import Track
#from machine import Machine
#from reference import ReferenceManager
#from sandbox import Sandbox
@@ -27,17 +28,26 @@ class ElegantTools(QtWidgets.QMainWindow, Ui_ElegantGUI):
self.plot = ElegantPlot(parent=self)
self.plot.show()
self.model = Model(phase=phase,parent=self)
self.track = Track(parent=self)
self.dists={}
self.distMapping={}
self.preferredDist = None
self.UIDistLoad.clicked.connect(self.loadDist)
self.UIDistSave.clicked.connect(self.saveDist)
self.UIDistBlurr.clicked.connect(self.addBlurr)
self.UIDistCenter.clicked.connect(self.centerDist)
self.UIDistCut.clicked.connect(self.cutDist)
self.UIDistInput.clicked.connect(self.setPreferredDist)
def setPreferredDist(self):
self.preferredDist = self.getDist()
def getDist(self):
if self.UIDistList.count() == 0:
return None
tag = self.UIDistList.currentText()
return self.dists[self.distMapping[tag]]
File diff suppressed because it is too large Load Diff
+15 -10
View File
@@ -13,7 +13,8 @@ class Distribution:
self.parameters = None
self.loadDist()
def getQ(self):
return self.dist.parameterData[self.parameters.index('Charge')][0]
def plotLPS(self):
x = self.dist.columnData[self.columns.index('t')][0]
@@ -31,16 +32,24 @@ class Distribution:
Q = self.dist.parameterData[self.parameters.index('Charge')][0]
if Q < 1e-15:
Q = float(str(self.parent.UIDistCharge.text()))*1e-12
for i in range(7):
data = self.dist.columnData[i]
print(type(data),len(data))
print(type(data[0]), len(data[0]))
self.dist.setParameterValue('Charge',Q)
self.analyseBeam(self.filename,Q)
self.plotLPS()
def analyseBeamShort(self,filename):
output = 'Runs/analysebeam.sdds'
subprocess.run(['sddsanalyzebeam', filename, output])
fields = ['betax', 'betay', 'alphax', 'alphay', 'pAverage']
out = sdds.load(output)
res={}
for i ,field in enumerate(fields):
idx = out.columnName.index(field)
res[field]=out.columnData[idx][0][0]
res['Q']=self.dist.parameterData[self.parameters.index('Charge')][0]
del out
return res
def analyseBeam(self,filename,Q):
output = 'Runs/analysebeam.sdds'
@@ -60,7 +69,7 @@ class Distribution:
val=scl[i]*out.columnData[idx][0][0]
self.parent.UIDistAnalysis.appendPlainText('%s: %7.3f (%s)' % (names[i],val,units[i]))
self.parent.UIDistAnalysis.appendPlainText('Charge: %7.3f (pC)' % (Q*1e12))
del out
def addBlurr(self):
p=self.dist.columnData[self.columns.index('p')][0]
@@ -108,10 +117,6 @@ class Distribution:
x.parameterData=self.dist.parameterData
x.parameterDefinition = self.dist.parameterDefinition
x.columnName=self.dist.columnName
for i in range(7):
data = self.dist.columnData[i]
print(type(data),len(data))
print(type(data[0]), len(data[0]))
x.columnData=[self.dist.columnData[i] for i in range(len(self.dist.columnName))]
x.columnDefinition=self.dist.columnDefinition
x.save(filename)
+370
View File
@@ -0,0 +1,370 @@
import math
from onlinemodel.core.apptemplate import ApplicationTemplate
# Elegant Interface
class Lattice(ApplicationTemplate):
def __init__(self,sessionID='.'):
ApplicationTemplate.__init__(self)
self.wpath='ReferenceFiles' # path for reference files
self.fid = 0
self.lsc = 0 # flag whether lsc is enabled
self.csr = 0 # flag whether csr is enabled or not
self.wakebins=0 # automatic calculation of
self.charge = 200e-12 # default charge in the lattice
self.dump = [] # diagnostics location where to dump particle distribution
self.seq=[]
self.driftcount = 1 # drift counter
self.lscbins=100 # number of bins for lsc calculation
self.csrbins=100 # number of bins for CSR calculation
self.csrmaxlen=10. # distance over which the CSR wake is considered after a dipole
self.csrlen=0 # running variable to count distance after last bend
self.center=[] # location where the beam is centered due to CSR kicks
self.Distribution = 1
def openLatticeStream(self,path,name):
filename='%s/%s.lat' % (path,name)
# self.path=path
self.path='.'
self.savepath=path
self.seq=[]
self.fid=open(filename,'w')
self.driftcount=1
self.write('Q: CHARGE, TOTAL=%e\n' % self.charge)
self.write('ALTER: CENTER, DELTA=1,T=1\n') # put the beam on the right energy
return filename
def closeLatticeStream(self):
self.fid.close()
# routines to write lattice
def setCSR(self):
self.csrlen=self.csrmaxlen
def isType(self,name):
if (name.find('elegant')>-1):
return 1
else:
return 0
def write(self,line):
self.fid.write(line)
def writeLine(self,line,seq):
lc=1
name=line.Name
seqloop=seq
if len(name)==7:
seqloop=self.seq
if len(name) < 1:
name='SwissFEL'
self.write("\n%s.Start: MARKER\n" % (name))
secend = name+'.End'
if secend in self.dump:
print('Adding dump in Elegant output for',name)
self.write('%s.End: WATCH, FILENAME="%%s.%s.End.sdds", MODE=COORD\n' % (name,name))
else:
self.write("%s.End: MARKER\n" % (name))
if (name=="SwissFEL"):
self.write("\n%s: Line=(Q, ALTER, %s.Start, " % (name,name))
else:
self.write("\n%s: Line=(%s.Start, " % (name,name))
for ele in seqloop:
# print ele
if isinstance(ele,str):
self.write("%s, " % (ele))
else:
self.write("%s, " % (ele['Name']))
lc=lc+1
if (lc>5):
self.write("&\n\t")
lc=0
self.write("%s.End)\n\n" % (name))
if len(name)==7:
del self.seq[:]
def writeDrift(self,l):
if l <= 0 :
return 0
name="Drift%4.4d" % (self.driftcount)
if self.csrlen > 0:
self.write("%s.csr: CSRDRIFT, L=%f, DZ=0.1, USE_STUPAKOV=1, CSR=%d\n" % (name,l,self.csr))
self.write("%s.lsc: LSCDRIFT, L=0, LEFFECTIVE=%f, BINS=%d, SMOOTHING=1, LSC=%d\n" % (name,l,self.lscbins,self.lsc))
self.write("%s: LINE=(%s.csr,%s.lsc)\n" % (name,name,name))
self.csrlen=self.csrlen-l
else:
self.write("%s: LSCDRIFT, L=%f, LEFFECTIVE=%f, BINS=%d, SMOOTHING=1, LSC=%d\n" % (name,l,l,self.lscbins,self.lsc))
self.seq.append(name)
self.driftcount=self.driftcount+1
return name
def writeMarker(self,ele):
if 'ALIG' in ele.Name and 'dy' in ele.__dict__.keys():
self.write('%s: MALIGN, DY=-%f \n' % (ele.Name,ele.dy))
else:
self.write('%s: MARK \n' % (ele.Name))
self.seq.append(ele.Name)
def writeVacuum(self,ele):
ds=ele.sRef+0.5*ele.getLength();
if ds>0:
self.writeDrift(ds)
self.writeMarker(ele)
ds=ele.getResLength()-ele.sRef-0.5*ele.getLength();
if ds>0:
self.writeDrift(ds)
def writeDiagnostic(self,ele):
Seval=ele.Seval
if (Seval<0):
Seval=0.5*ele.Length
ds=ele.sRef+Seval;
if ds>0:
self.writeDrift(ds)
if ele.Name in self.center:
print('Adding center in Elegant output for',ele.Name)
self.write('%s_CENTER: CENTER\n' % ele.Name)
self.seq.append('%s_CENTER' % ele.Name)
if ele.Name in self.dump:
print('Adding dump in Elegant output for',ele.Name)
self.write('%s: WATCH, FILENAME="%%s.%s.sdds", MODE=COORD\n' % (ele.Name,ele.Name))
self.seq.append(ele.Name)
else:
self.writeMarker(ele)
ds=ele.getResLength()-ds
if ds>0:
self.writeDrift(ds)
def writeCorrector(self,ele):
corx=0
cory=0
if 'corx' in ele.__dict__:
corx=ele.corx
if 'cory' in ele.__dict__:
cory=ele.cory
if 'MADthin' in ele.__dict__:
if 'MADshift' in ele.__dict__:
ds=ele.Length*0.5+ele.MADshift
self.writeDrift(ds)
self.write("%s: KICKER, L=%f, HKICK=%e,VKICK=%e\n" % (ele.Name,0,corx,cory))
self.seq.append(ele.Name)
return
if (ele.sRef>0):
self.writeDrift(ele.sRef)
if self.lsc==0 or ele.getLength()==0:
self.write("%s: KICKER, L=%f, HKICK=%e,VKICK=%e\n" % (ele.Name,ele.getLength(),corx,cory))
self.seq.append(ele.Name)
else:
self.write("%s.cor: KICKER, L=%f, HKICK=%e,VKICK=%e\n" % (ele.Name,ele.getLength(),corx,cory))
self.write("%s.lsc: LSCDRIFT, L=0, LEFFECTIVE=%f, BINS=%d, SMOOTHING=1, LSC=%d\n" % (ele.Name,ele.getLength(),self.lscbins,self.lsc))
self.write("%s: LINE=(%s.cor,%s.lsc)\n" % (ele.Name,ele.Name,ele.Name))
self.seq.append(ele.Name)
ds=ele.getResLength()-ele.getLength()-ele.sRef
if ds > 0:
self.writeDrift(ds)
def writeSextupole(self,ele):
if (ele.sRef>0):
self.writeDrift(ele.sRef)
if self.lsc==0:
self.write("%s: SEXTUPOLE, L=%f, K2=%e, Tilt=%f\n" % (ele.Name,ele.getLength(),ele.k2,ele.Tilt))
self.seq.append(ele.Name)
else:
self.write("%s.sex: SEXTUPOLE, L=%f, K2=%e, Tilt=%f\n" % (ele.Name,ele.getLength(),ele.k2,ele.Tilt))
self.write("%s.lsc: LSCDRIFT, L=0, LEFFECTIVE=%f, BINS=%d, SMOOTHING=1, LSC=%d\n" % (ele.Name,ele.getLength(),self.lscbins,self.lsc))
self.fid.write("%s: LINE=(%s.sex,%s.lsc)\n" % (ele.Name,ele.Name,ele.Name))
self.seq.append(ele.Name)
ds=ele.getResLength()-ele.getLength()-ele.sRef
if ds > 0:
self.writeDrift(ds)
def writeQuadrupole(self,ele):
if (ele.sRef>0):
self.writeDrift(ele.sRef)
if self.lsc!=0 or ('corx' in ele.__dict__) or 'cory' in ele.__dict__:
locseq=[]
if self.lsc>0:
self.write("%s.lsc: LSCDRIFT, L=0, LEFFECTIVE=%f, BINS=%d, SMOOTHING=1, LSC=%d\n" % (ele.Name,ele.getLength(),self.lscbins,self.lsc))
locseq.append("%s.lsc" % (ele.Name))
if ('corx' in ele.__dict__) or 'cory' in ele.__dict__:
corx=0
cory=0
if 'corx' in ele.__dict__:
corx=ele.corx
if 'cory' in ele.__dict__:
corx=ele.cory
self.write("%s.q1: QUADRUPOLE, L=%f, K1=%e, Tilt=%f\n" % (ele.Name,ele.getLength()*0.5,ele.k1,ele.Tilt))
self.write("%s.cor: KICKER, L=0, HKICK=%e,VKICK=%e\n" % (ele.Name,corx,cory))
self.write("%s.q2: QUADRUPOLE, L=%f, K1=%e, Tilt=%f\n" % (ele.Name,ele.getLength()*0.5,ele.k1,ele.Tilt))
locseq.append("%s.q1" % (ele.Name))
locseq.append("%s.cor" % (ele.Name))
locseq.append("%s.q2" % (ele.Name))
else:
self.write("%s.q: QUADRUPOLE, L=%f, K1=%e, Tilt=%f\n" % (ele.Name,ele.getLength(),ele.k1,ele.Tilt))
locseq.append("%s.q" % (ele.Name))
self.fid.write("%s: LINE=(%s" % (ele.Name,locseq[0]))
for p in locseq[1:len(locseq)]:
self.fid.write(",%s" % p)
self.fid.write(")\n")
self.seq.append(ele.Name)
else:
self.write("%s: QUADRUPOLE, L=%f, K1=%e, Tilt=%f\n" % (ele.Name,ele.getLength(),ele.k1,ele.Tilt))
self.seq.append(ele.Name)
ds=ele.getResLength()-ele.getLength()-ele.sRef
if ds > 0:
self.writeDrift(ds)
def writeBend(self,ele):
if (ele.sRef>0):
self.writeDrift(ele.sRef)
Lpath=ele.getLength()
angrad=ele.angle*math.asin(1)/90
angradcor=angrad
if 'cor' in ele.__dict__:
angradcor=angrad+ele.cor
if (self.lsc!=0):
self.write("%s.lsc: LSCDRIFT, L=0, LEFFECTIVE=%f, BINS=%d, SMOOTHING=1, LSC=%d\n" % (ele.Name,Lpath,self.lscbins,self.lsc))
self.seq.append("%s.lsc" % ele.Name)
self.write("%s.b: CSRCSBEND, L=%f, ANGLE=%f, &\n" % (ele.Name,Lpath,angradcor))
self.write("\tE1=%f, E2=%f, TILT=%f, &\n" % (ele.e1*angrad,ele.e2*angrad,ele.Tilt))
self.write("\tHGAP=0.015, FINT=0.5, NONLINEAR=1, N_KICKS=10,INTEGRATION_ORDER=4, &\n")
self.write("\tBINS=%d,SG_HALFWIDTH=2, ISR=%d, SYNCH_RAD=%d, CSR=%d\n" % (self.csrbins,self.csr,self.csr,self.csr))
self.write("%s: LINE=(%s.lsc,%s.b)\n" % (ele.Name,ele.Name,ele.Name))
self.seq.append(ele.Name)
else:
self.write("%s: CSRCSBEND, L=%f, ANGLE=%f, &\n" % (ele.Name,Lpath,angradcor))
self.write("\tE1=%f, E2=%f, TILT=%f, &\n" % (ele.e1*angrad,ele.e2*angrad,ele.Tilt))
self.write("\tHGAP=0.015, FINT=0.5, NONLINEAR=1, N_KICKS=10,INTEGRATION_ORDER=4, &\n")
self.write("\tBINS=%d,SG_HALFWIDTH=2, ISR=%d, SYNCH_RAD=%d, CSR=%d\n" % (self.csrbins,self.csr,self.csr,self.csr))
self.seq.append(ele.Name)
if abs(angrad)>0:
self.setCSR()
ds=ele.getResLength()-ele.getLength()-ele.sRef
if ds > 0:
self.writeDrift(ds)
def writeUndulator(self,ele):
pi=2*math.asin(1)
Nu=round(ele.getLength()*ele.ku/pi)
r=3e8/511000/2/pi/100;
Bu=ele.K*ele.ku*0.01/2/pi/r;
LaserHeater=0
if 'UPHS' in ele.Name:
ele.K=0
if 'UDLY' in ele.Name:
ele.K=0
if 'Power' in ele.__dict__:
if ele.Power>0:
LaserHeater=0 ######## disable laser modulator, since energy spread is not correct anyhow
if ele.sRef>0:
self.writeDrift(ele.sRef)
if ele.K==0:
self.write("%s: LSCDRIFT, L=%f, LEFFECTIVE=%f, BINS=%d, SMOOTHING=1, LSC=%d\n" % (ele.Name,ele.getLength(),ele.getLength(),self.lscbins,self.lsc))
self.seq.append(ele.Name)
# add dechirper here
if 'UDCP' in ele.Name:
wake=Dechirper()
wake.getWake(ele.gap, ele.Name,self.savepath)
print('Write wakefile for %s with gap: %f mm' % (ele.Name,ele.gap*1e3))
self.write('%s_LW : WAKE, INPUTFILE = "%s/wake_%s.sdds", CHANGE_P0 = 1, &\n' % (ele.Name,self.path,ele.Name))
self.write('\t TCOLUMN="t",WCOLUMN="W", INTERPOLATE=1, FACTOR = %f, N_BINS=%d, SMOOTHING=1 \n'% (ele.getLength(),self.wakebins))
self.seq.append('%s_LW' % ele.Name)
if 'DECHIRPER-V' in ele.Baugruppe:
self.write('%s_DW : TRWAKE, INPUTFILE = "%s/wake_%s.sdds", &\n' % (ele.Name,self.path,ele.Name))
self.write('\t TCOLUMN="t",WXCOLUMN="WD", WYCOLUMN="WD", XFACTOR = 0, YFACTOR = %f, &\n' % (ele.getLength()))
self.write('\t INTERPOLATE=1, N_BINS=%d, SMOOTHING=1 \n'% self.wakebins)
self.write('%s_QW : TRWAKE, INPUTFILE = "%s/wake_%s.sdds", &\n' % (ele.Name,self.path,ele.Name))
self.write('\t TCOLUMN="t",WXCOLUMN="WQP", WYCOLUMN="WQ", XFACTOR = %f, YFACTOR = %f, &\n' % (ele.getLength(),ele.getLength()))
self.write('\t INTERPOLATE=1, N_BINS=%d, SMOOTHING=1, & \n'% self.wakebins)
self.write('\t X_DRIVE_EXPONENT=0, Y_DRIVE_EXPONENT = 0, X_PROBE_EXPONENT = 1, Y_PROBE_EXPONENT = 1\n')
self.seq.append('%s_DW' % ele.Name)
self.seq.append('%s_QW' % ele.Name)
elif 'DECHIRPER-H' in ele.Baugruppe:
self.write('%s_DW : TRWAKE, INPUTFILE = "%s/wake_%s.sdds", &\n' % (ele.Name,self.path,ele.Name))
self.write('\t TCOLUMN="t",WXCOLUMN="WD", WYCOLUMN="WD", XFACTOR = %f, YFACTOR = 0, &\n' % (ele.getLength()))
self.write('\t INTERPOLATE=1, N_BINS=%d, SMOOTHING=1 \n'% self.wakebins)
self.write('%s_QW : TRWAKE, INPUTFILE = "%s/wake_%s.sdds", &\n' % (ele.Name,self.path,ele.Name))
self.write('\t TCOLUMN="t",WXCOLUMN="WQ", WYCOLUMN="WQP", XFACTOR = %f, YFACTOR = %f, &\n' % (ele.getLength(),ele.getLength()))
self.write('\t INTERPOLATE=1, N_BINS=%d, SMOOTHING=1, & \n'% self.wakebins)
self.write('\t X_DRIVE_EXPONENT=0, Y_DRIVE_EXPONENT = 0, X_PROBE_EXPONENT = 1, Y_PROBE_EXPONENT = 1\n')
self.seq.append('%s_DW' % ele.Name)
self.seq.append('%s_QW' % ele.Name)
ds=ele.getResLength()-ele.getLength()-ele.sRef
if ds>0:
self.writeDrift(ds)
return
name=ele.Name
if self.lsc!=0:
self.write("%s.lsc: LSCDRIFT, L=0, LEFFECTIVE=%f, BINS=%d, SMOOTHING=1, LSC=%d\n" % (ele.Name,ele.getLength(),self.lscbins,self.lsc))
self.seq.append("%s.lsc" % ele.Name)
name="%s.wig" % ele.Name
if LaserHeater==0:
self.write("%s : WIGGLER, L=%f, K=%f, POLES=%d, TILT=%f\n" % (name,ele.getLength(),ele.K,Nu,ele.Tilt))
else:
self.write("%s : LSRMDLTR, L=%f, PERIODS=%d, BU=%f, &\n" % (name, ele.getLength(),Nu/2,Bu));
self.write("\t LASER_W0=%e, LASER_PEAK_POWER=%e, &\n" %(ele.Waist,ele.Power));
self.write("\t N_STEPS=%d, ACCURACY=0.001, POLE_FACTOR1=1, POLE_FACTOR2=1,POLE_FACTOR3=1\n" % (Nu*60));
self.seq.append(name)
ds=ele.getResLength()-ele.getLength()-ele.sRef
if ds>0:
self.writeDrift(ds)
def writeRF(self,ele):
if ele.sRef>0:
self.writeDrift(ele.sRef)
if ele.Tag=="RACC":
self.write('%s : RFCW, FREQ=%f, CELL_LENGTH=1.0, &\n' % (ele.Name,ele.Frequency))
self.write('\t L=%f, VOLT=%e, PHASE= %f, &\n' % (ele.getLength(),ele.Gradient*ele.getLength(),ele.Phase))
self.write('\t CHANGE_P0=1, END1_FOCUS=1, END2_FOCUS=1, &\n');
self.write('\t BODY_FOCUS_MODEL="NONE",INTERPOLATE=1, N_BINS=%d, SMOOTHING=1, &\n' % (self.wakebins));
self.write('\t ZWAKEFILE="%s/wake_l_%s-band.sdds", &\n' % (self.wpath,ele.Band));
self.write('\t TRWAKEFILE="%s/wake_t_%s-band.sdds", &\n' % (self.wpath,ele.Band));
self.write('\t LSC=%d, LSC_BINS=%d, N_KICKS=10, &\n' % (self.lsc,self.lscbins));
self.write('\t TCOLUMN="t",WXCOLUMN="W", WYCOLUMN="W", WZCOLUMN="W"\n');
else:
if ele.Band=='S':
SWave=1
else:
SWave=0
self.write('%s : RFDF, FREQUENCY=%f, STANDING_WAVE=%d, TILT=%f, &\n' % (ele.Name,ele.Frequency,SWave,math.asin(1)))
self.write('\t L=%f, VOLTAGE=%e, PHASE= %f\n' % (ele.getLength(),ele.Gradient*ele.getLength(),ele.Phase))
self.seq.append(ele.Name)
ds=ele.getResLength()-ele.getLength()-ele.sRef
if ds>0:
self.writeDrift(ds)
+146
View File
@@ -0,0 +1,146 @@
import json
import numpy as np
from PyQt5 import QtCore, QtGui, QtWidgets
from onlinemodel.core import Facility
from lattice import Lattice
class Model:
def __init__(self, phase=0, parent=None):
print('Initializing online model ...')
self.phase = phase # current planned future
self.parent=parent
self.om = Facility(init=1, alt = phase)
self.defineDumpPoints()
self.modelPath=''
self.initModel('OnlineModelLattices/ReferenceSetting.json')
self.parent.UIUpdateRFSettings.clicked.connect(self.updateRF)
def writeLattice(self,project='SwissFEL',start='SINLH01',end='SARBD01',lsc=True,csr=True,Q=200e-12,dump=[]):
start,end=self.checkRange(start,end)
self.setBranch(end)
lat=Lattice()
lat.charge = Q
lat.dump = dump
print(dump)
if lsc:
lat.lsc=1
else:
lat.lsc=0
if csr:
lat.csr=1
else:
lat.csr=0
filename = lat.openLatticeStream('Runs', project)
self.om.exportBranch(lat)
lat.closeLatticeStream()
return filename
def checkRange(self,start,end):
if self.om.getSection(start) is None:
print('Invalid staring point for tracking. Setting to SINLH01')
start='SINLH01'
if self.om.getSection(end) is None:
print('Invalid end point for tracking. Setting to SARBD02')
end= 'SARBD01'
return start,end
def setBranch(self,end):
destination = 'ARAMIS'
if 'SPO' in end:
destination = 'PORTHOS'
elif 'SAT' in end:
destination = 'ATHOS'
elif 'S10BD' in end or 'SIN' in end:
destination = 'INJECTOR'
self.om.setBranch(destination,'SINLH01',end)
self.order=self.om.getBranchElements()
def initModel(self, modelPath):
self.modelPath = modelPath
print('Updating model with settings:',self.modelPath)
with open(modelPath, 'r', encoding='utf-8') as f:
settings = json.load(f)
self.loadSettings(settings)
def loadSettingsGroup(self,group,fields,normalized=False):
for key in group.keys():
ele = self.om.getElement(key)
for field in fields:
ele.__dict__[field]=group[key][field]
if normalized:
ele.__dict__[field]/=ele.Length
def loadSettings(self,settings):
self.loadSettingsGroup(settings['Quadrupole'],['k1'])
self.loadSettingsGroup(settings['Sextupole'], ['k2'])
self.loadSettingsGroup(settings['Dipole'], ['angle'])
self.loadSettingsGroup(settings['RF'], ['Gradient'],normalized=True)
self.loadSettingsGroup(settings['RF'], ['Phase'])
self.loadSettingsGroup(settings['Undulator'], ['K','kx','ky'])
self.loadSettingsGroup(settings['Kicker'], ['cory','design_kick'])
E0 = settings['Energy']['energy']
if isinstance(E0,list):
E0=E0[0]
E0Ref = settings['Energy']['location']
if isinstance(E0,list):
E0=E0[0]
self.initEnergy=E0
self.initEnergyRef=E0Ref
self.om.forceEnergyAt(E0Ref, E0*1e6)
self.startTwiss = settings['InitialCondition']
self.parent.UIDistBetax.setText('%7.3f' % self.startTwiss['betax0'])
self.parent.UIDistBetay.setText('%7.3f' % self.startTwiss['betay0'])
self.parent.UIDistAlphax.setText('%7.3f' % self.startTwiss['alphax0'])
self.parent.UIDistAlphay.setText('%7.3f' % self.startTwiss['alphay0'])
self.parent.UIDistEnergy.setText('%7.3f' % E0)
self.updateRFTable(settings['RF'])
def defineDumpPoints(self):
self.parent.UISectionList.clear()
secs=self.om.listSection('*')
for sec in secs:
self.parent.UISectionList.addItem(sec)
self.parent.UIDiagnosticList.clear()
digs=self.om.listElement('DBPM')
for dig in digs:
self.parent.UIDiagnosticList.addItem(dig.replace('.','-'))
def updateRFTable(self,settings):
secs = ['SINSB0[34]','SINXB','S10CB','S20CB','S30CB','SATCB']
for j,sec in enumerate(secs):
grad = self.om.getRegExpElement(sec,'RACC','Gradient')
L = self.om.getRegExpElement(sec, 'RACC', 'Length')
Phi = self.om.getRegExpElement(sec, 'RACC', 'Phase')
vec = 0*1j
for i,grad0 in enumerate(grad):
phase = Phi[i]*np.pi/180
vec += grad0*L[i]*np.exp(1j*phase)*1e-6
phase=np.mod(np.angle(vec),2*np.pi)*180/np.pi
self.parent.UIRFSettings.setItem(j,1,QtWidgets.QTableWidgetItem('%7.1f' % np.abs(vec)))
self.parent.UIRFSettings.setItem(j, 2, QtWidgets.QTableWidgetItem('%7.2f' % phase))
self.parent.UIRFSettings.setItem(j, 3, QtWidgets.QTableWidgetItem('%7.1f' % vec.imag))
self.parent.UIRFSettings.resizeColumnsToContents()
self.parent.UIRFSettings.horizontalHeader().show()
def updateRF(self):
secs = ['SINSB0[34]', 'SINXB', 'S10CB', 'S20CB', 'S30CB', 'SATCB']
for i,sec in enumerate(secs):
grad=float(str(self.parent.UIRFSettings.item(i,1).text()))
phase = float(str(self.parent.UIRFSettings.item(i, 2).text()))*np.pi/180.
gain=grad*np.sin(phase)
self.parent.UIRFSettings.setItem(i, 3, QtWidgets.QTableWidgetItem('%7.2f' % gain))
L = self.om.getRegExpElement(sec, 'RACC', 'Length')
nl=len(L)
volt=grad/nl/L[0]*1e6
print(sec,volt,phase)
self.om.setRegExpElement(sec, 'RACC', 'Gradient', volt)
self.om.setRegExpElement(sec, 'RACC', 'Phase', phase)
self.om.forceEnergyAt(self.initEnergyRef, self.initEnergy * 1e6)
self.parent.UIRFSettings.resizeColumnsToContents()
self.parent.UIRFSettings.horizontalHeader().show()
+118
View File
@@ -0,0 +1,118 @@
from threading import Thread
import subprocess
class Track:
def __init__(self, parent=None):
self.parent=parent
self.dumpPoints=[]
self.parent.UITrack.clicked.connect(self.startTracking)
self.parent.UIAddDiagnosticDump.clicked.connect(self.addDiagnosticDump)
self.parent.UIAddSectionDump.clicked.connect(self.addSectionDump)
self.parent.UIDeleteDump.clicked.connect(self.deleteDump)
def startTracking(self):
project = 'SwissFEL'
start=str(self.parent.UITrackStart.text())
end=str(self.parent.UITrackEnd.text())
lsc = self.parent.UITrackDoLSC.isChecked()
csr = self.parent.UITrackDoCSR.isChecked()
print('Tracking from',start,'to',end,'...')
if self.parent.preferredDist is None:
Q = 200e-12
else:
Q = self.parent.preferredDist.getQ()
dumps = []
for ele in self.dumpPoints:
if '-' in ele:
dumps.append(ele.replace('-','.'))
else:
dumps.append(ele+'.End')
latfile = self.parent.model.writeLattice(project,start,end,lsc,csr,Q,dumps)
print('Lattice written to',latfile)
if self.parent.preferredDist is None:
print('No distribution defined')
print('Only lattice file written to Directory ./Runs/')
return
distfile='Runs/'+project+'Inputdist.sdds'
self.parent.preferredDist.saveDist(distfile)
print('Input distribution copied to',distfile)
res=self.parent.preferredDist.analyseBeamShort(distfile)
inputfile=self.writeInputFile('Runs',project,latfile,distfile,res)
print('Input file written to',inputfile)
self.cmd=['elegant',inputfile]
Thread(name='Elegant Run', target=self.Telegant).start()
def Telegant(self):
print('Starting thread to run elegant')
subprocess.run(self.cmd)
def writeInputFile(self,path,name,latfile,distfile,distinfo):
filename = '%s/%s.ele' % (path, name)
with open(filename, 'w') as fid:
fid.write('&run_setup\n')
fid.write('\tlattice\t\t= %s,\n' % (latfile))
fid.write('\tuse_beamline\t= SwissFEL,\n')
fid.write('\trootname\t= %s,\n' % name)
fid.write('\toutput\t\t= %s/%%s.out,\n' % path)
fid.write('\tcentroid\t\t= %s/%%s.cen,\n' % path)
fid.write('\tsigma\t\t= %s/%%s.sig,\n' % path)
fid.write('\tfinal\t\t= %s/%%s.fin,\n' % path)
fid.write('\tparameters\t= %s/%%s.par,\n' % path)
fid.write('\tmagnets\t\t= %s/%%s.mag,\n' % path)
fid.write('\tcombine_bunch_statistics = 0,\n')
fid.write('\tdefault_order\t= 2,\n')
fid.write('\tconcat_order\t= 0,\n')
fid.write('\tprint_statistics\t= 0,\n')
fid.write('\trandom_number_seed\t= 9876543210,\n')
fid.write('\tp_central\t= %f,\n' % distinfo['pAverage'])
fid.write('\ttracking_updates\t= 1\n')
fid.write('\talways_change_p0\t= 1\n')
fid.write('&end\n\n')
fid.write('&run_control\n')
fid.write('\tn_steps\t= 1,\n')
fid.write('\treset_rf_for_each_step = 1\n')
fid.write('&end\n\n')
fid.write('&twiss_output\n')
fid.write('\tfilename\t= %s/%%s.twi,\n' % path)
fid.write('\tmatched\t\t= 0,\n')
fid.write('\tbeta_x\t\t= %f,\n' % distinfo['betax'])
fid.write('\tbeta_y\t\t= %f,\n' % distinfo['betay'])
fid.write('\talpha_x\t\t= %f,\n' % distinfo['alphax'])
fid.write('\talpha_y\t\t= %f,\n' % distinfo['alphay'])
fid.write('&end\n\n')
fid.write('&sdds_beam\n')
fid.write('\tinput_type= "elegant",\n')
fid.write('\tsample_interval\t= 1,\n')
fid.write('\tinput = %s,\n' % distfile)
fid.write('\treuse_bunch\t= 0 \n')
fid.write('&end\n\n')
fid.write('&track\n')
fid.write('&end\n\n')
fid.close()
return filename
def addDiagnosticDump(self):
self.addDump(self.parent.UIDiagnosticList)
def addSectionDump(self):
self.addDump(self.parent.UISectionList)
def addDump(self,qwidget):
elements=[str(ele.text()) for ele in qwidget.selectedItems()]
for ele in elements:
if not ele in self.dumpPoints:
self.dumpPoints.append(ele)
self.parent.UIDumpLocation.clear()
for ele in self.dumpPoints:
self.parent.UIDumpLocation.addItem(ele)
def deleteDump(self):
sels = [str(ele.text()) for ele in self.parent.UIDumpLocation.selectedItems()]
self.dumpPoints = [ele for ele in self.dumpPoints if not ele in sels]
self.parent.UIDumpLocation.clear()
for ele in self.dumpPoints:
self.parent.UIDumpLocation.addItem(ele)
+197 -424
View File
@@ -14,7 +14,7 @@ from PyQt5 import QtCore, QtGui, QtWidgets
class Ui_ElegantGUI(object):
def setupUi(self, ElegantGUI):
ElegantGUI.setObjectName("ElegantGUI")
ElegantGUI.resize(813, 775)
ElegantGUI.resize(813, 951)
self.centralwidget = QtWidgets.QWidget(ElegantGUI)
self.centralwidget.setObjectName("centralwidget")
self.verticalLayout_5 = QtWidgets.QVBoxLayout(self.centralwidget)
@@ -83,196 +83,20 @@ class Ui_ElegantGUI(object):
self.UITrackEnd.setObjectName("UITrackEnd")
self.gridLayout_4.addWidget(self.UITrackEnd, 1, 1, 1, 1)
self.verticalLayout.addLayout(self.gridLayout_4)
self.label_9 = QtWidgets.QLabel(self.widget_2)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Preferred)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.label_9.sizePolicy().hasHeightForWidth())
self.label_9.setSizePolicy(sizePolicy)
self.label_9.setObjectName("label_9")
self.verticalLayout.addWidget(self.label_9)
self.UITrackReference = QtWidgets.QComboBox(self.widget_2)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Fixed)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.UITrackReference.sizePolicy().hasHeightForWidth())
self.UITrackReference.setSizePolicy(sizePolicy)
self.UITrackReference.setObjectName("UITrackReference")
self.verticalLayout.addWidget(self.UITrackReference)
self.label_10 = QtWidgets.QLabel(self.widget_2)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Preferred)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.label_10.sizePolicy().hasHeightForWidth())
self.label_10.setSizePolicy(sizePolicy)
self.label_10.setObjectName("label_10")
self.verticalLayout.addWidget(self.label_10)
self.UITrackLocation = QtWidgets.QLineEdit(self.widget_2)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Fixed)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.UITrackLocation.sizePolicy().hasHeightForWidth())
self.UITrackLocation.setSizePolicy(sizePolicy)
self.UITrackLocation.setObjectName("UITrackLocation")
self.verticalLayout.addWidget(self.UITrackLocation)
self.gridLayout_3 = QtWidgets.QGridLayout()
self.gridLayout_3.setObjectName("gridLayout_3")
self.UIBetax = QtWidgets.QLineEdit(self.widget_2)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Fixed)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.UIBetax.sizePolicy().hasHeightForWidth())
self.UIBetax.setSizePolicy(sizePolicy)
self.UIBetax.setObjectName("UIBetax")
self.gridLayout_3.addWidget(self.UIBetax, 1, 1, 1, 1)
self.label_5 = QtWidgets.QLabel(self.widget_2)
self.label_5.setObjectName("label_5")
self.gridLayout_3.addWidget(self.label_5, 1, 0, 1, 1)
self.UIAlphax = QtWidgets.QLineEdit(self.widget_2)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Fixed)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.UIAlphax.sizePolicy().hasHeightForWidth())
self.UIAlphax.setSizePolicy(sizePolicy)
self.UIAlphax.setObjectName("UIAlphax")
self.gridLayout_3.addWidget(self.UIAlphax, 3, 1, 1, 1)
self.UIBetay = QtWidgets.QLineEdit(self.widget_2)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Fixed)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.UIBetay.sizePolicy().hasHeightForWidth())
self.UIBetay.setSizePolicy(sizePolicy)
self.UIBetay.setObjectName("UIBetay")
self.gridLayout_3.addWidget(self.UIBetay, 1, 2, 1, 1)
self.label_3 = QtWidgets.QLabel(self.widget_2)
self.label_3.setObjectName("label_3")
self.gridLayout_3.addWidget(self.label_3, 4, 0, 1, 1)
self.label_7 = QtWidgets.QLabel(self.widget_2)
self.label_7.setObjectName("label_7")
self.gridLayout_3.addWidget(self.label_7, 6, 0, 1, 1)
self.label_4 = QtWidgets.QLabel(self.widget_2)
self.label_4.setObjectName("label_4")
self.gridLayout_3.addWidget(self.label_4, 5, 0, 1, 1)
self.label_6 = QtWidgets.QLabel(self.widget_2)
self.label_6.setObjectName("label_6")
self.gridLayout_3.addWidget(self.label_6, 3, 0, 1, 1)
self.label_30 = QtWidgets.QLabel(self.widget_2)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Preferred)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.label_30.sizePolicy().hasHeightForWidth())
self.label_30.setSizePolicy(sizePolicy)
self.label_30.setObjectName("label_30")
self.gridLayout_3.addWidget(self.label_30, 0, 2, 1, 1)
self.label_29 = QtWidgets.QLabel(self.widget_2)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Preferred)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.label_29.sizePolicy().hasHeightForWidth())
self.label_29.setSizePolicy(sizePolicy)
self.label_29.setObjectName("label_29")
self.gridLayout_3.addWidget(self.label_29, 0, 1, 1, 1)
self.UIAlphay = QtWidgets.QLineEdit(self.widget_2)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Fixed)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.UIAlphay.sizePolicy().hasHeightForWidth())
self.UIAlphay.setSizePolicy(sizePolicy)
self.UIAlphay.setObjectName("UIAlphay")
self.gridLayout_3.addWidget(self.UIAlphay, 3, 2, 1, 1)
self.label_8 = QtWidgets.QLabel(self.widget_2)
self.label_8.setObjectName("label_8")
self.gridLayout_3.addWidget(self.label_8, 7, 0, 1, 1)
self.UIEtax = QtWidgets.QLineEdit(self.widget_2)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Fixed)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.UIEtax.sizePolicy().hasHeightForWidth())
self.UIEtax.setSizePolicy(sizePolicy)
self.UIEtax.setObjectName("UIEtax")
self.gridLayout_3.addWidget(self.UIEtax, 4, 1, 1, 1)
self.UIEtapx = QtWidgets.QLineEdit(self.widget_2)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Fixed)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.UIEtapx.sizePolicy().hasHeightForWidth())
self.UIEtapx.setSizePolicy(sizePolicy)
self.UIEtapx.setObjectName("UIEtapx")
self.gridLayout_3.addWidget(self.UIEtapx, 5, 1, 1, 1)
self.UIX = QtWidgets.QLineEdit(self.widget_2)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Fixed)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.UIX.sizePolicy().hasHeightForWidth())
self.UIX.setSizePolicy(sizePolicy)
self.UIX.setObjectName("UIX")
self.gridLayout_3.addWidget(self.UIX, 6, 1, 1, 1)
self.UIPX = QtWidgets.QLineEdit(self.widget_2)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Fixed)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.UIPX.sizePolicy().hasHeightForWidth())
self.UIPX.setSizePolicy(sizePolicy)
self.UIPX.setObjectName("UIPX")
self.gridLayout_3.addWidget(self.UIPX, 7, 1, 1, 1)
self.UIEtay = QtWidgets.QLineEdit(self.widget_2)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Fixed)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.UIEtay.sizePolicy().hasHeightForWidth())
self.UIEtay.setSizePolicy(sizePolicy)
self.UIEtay.setObjectName("UIEtay")
self.gridLayout_3.addWidget(self.UIEtay, 4, 2, 1, 1)
self.UIEtapy = QtWidgets.QLineEdit(self.widget_2)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Fixed)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.UIEtapy.sizePolicy().hasHeightForWidth())
self.UIEtapy.setSizePolicy(sizePolicy)
self.UIEtapy.setObjectName("UIEtapy")
self.gridLayout_3.addWidget(self.UIEtapy, 5, 2, 1, 1)
self.UIY = QtWidgets.QLineEdit(self.widget_2)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Fixed)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.UIY.sizePolicy().hasHeightForWidth())
self.UIY.setSizePolicy(sizePolicy)
self.UIY.setObjectName("UIY")
self.gridLayout_3.addWidget(self.UIY, 6, 2, 1, 1)
self.UIPY = QtWidgets.QLineEdit(self.widget_2)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Fixed)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.UIPY.sizePolicy().hasHeightForWidth())
self.UIPY.setSizePolicy(sizePolicy)
self.UIPY.setObjectName("UIPY")
self.gridLayout_3.addWidget(self.UIPY, 7, 2, 1, 1)
self.verticalLayout.addLayout(self.gridLayout_3)
spacerItem = QtWidgets.QSpacerItem(20, 40, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding)
self.verticalLayout.addItem(spacerItem)
self.UIUpdateFromMachine = QtWidgets.QPushButton(self.widget_2)
self.UIUpdateFromMachine.setObjectName("UIUpdateFromMachine")
self.verticalLayout.addWidget(self.UIUpdateFromMachine)
self.label_13 = QtWidgets.QLabel(self.widget_2)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Preferred)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.label_13.sizePolicy().hasHeightForWidth())
self.label_13.setSizePolicy(sizePolicy)
self.label_13.setObjectName("label_13")
self.verticalLayout.addWidget(self.label_13)
self.UIStatus = QtWidgets.QLineEdit(self.widget_2)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Ignored, QtWidgets.QSizePolicy.Fixed)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.UIStatus.sizePolicy().hasHeightForWidth())
self.UIStatus.setSizePolicy(sizePolicy)
self.UIStatus.setMinimumSize(QtCore.QSize(150, 0))
self.UIStatus.setObjectName("UIStatus")
self.verticalLayout.addWidget(self.UIStatus)
self.UITrackDoLSC = QtWidgets.QCheckBox(self.widget_2)
self.UITrackDoLSC.setChecked(True)
self.UITrackDoLSC.setObjectName("UITrackDoLSC")
self.verticalLayout.addWidget(self.UITrackDoLSC)
self.UITrackDoCSR = QtWidgets.QCheckBox(self.widget_2)
self.UITrackDoCSR.setChecked(True)
self.UITrackDoCSR.setObjectName("UITrackDoCSR")
self.verticalLayout.addWidget(self.UITrackDoCSR)
self.plainTextEdit = QtWidgets.QPlainTextEdit(self.widget_2)
self.plainTextEdit.setObjectName("plainTextEdit")
self.verticalLayout.addWidget(self.plainTextEdit)
self.horizontalLayout.addWidget(self.widget_2)
spacerItem1 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
self.horizontalLayout.addItem(spacerItem1)
spacerItem = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
self.horizontalLayout.addItem(spacerItem)
self.TabMaster.addTab(self.tab_3, "")
self.tab_8 = QtWidgets.QWidget()
self.tab_8.setObjectName("tab_8")
@@ -296,8 +120,8 @@ class Ui_ElegantGUI(object):
self.UIDistAnalysis.setReadOnly(True)
self.UIDistAnalysis.setObjectName("UIDistAnalysis")
self.verticalLayout_4.addWidget(self.UIDistAnalysis)
spacerItem2 = QtWidgets.QSpacerItem(20, 40, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding)
self.verticalLayout_4.addItem(spacerItem2)
spacerItem1 = QtWidgets.QSpacerItem(20, 40, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding)
self.verticalLayout_4.addItem(spacerItem1)
self.UIDistInput = QtWidgets.QPushButton(self.tab_8)
self.UIDistInput.setObjectName("UIDistInput")
self.verticalLayout_4.addWidget(self.UIDistInput)
@@ -376,188 +200,149 @@ class Ui_ElegantGUI(object):
self.UIDistCut = QtWidgets.QPushButton(self.tab_8)
self.UIDistCut.setObjectName("UIDistCut")
self.verticalLayout_3.addWidget(self.UIDistCut)
spacerItem3 = QtWidgets.QSpacerItem(20, 40, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding)
self.verticalLayout_3.addItem(spacerItem3)
spacerItem2 = QtWidgets.QSpacerItem(20, 40, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding)
self.verticalLayout_3.addItem(spacerItem2)
self.UIDistSave = QtWidgets.QPushButton(self.tab_8)
self.UIDistSave.setObjectName("UIDistSave")
self.verticalLayout_3.addWidget(self.UIDistSave)
self.horizontalLayout_7.addLayout(self.verticalLayout_3)
spacerItem4 = QtWidgets.QSpacerItem(248, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
self.horizontalLayout_7.addItem(spacerItem4)
spacerItem3 = QtWidgets.QSpacerItem(248, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
self.horizontalLayout_7.addItem(spacerItem3)
self.TabMaster.addTab(self.tab_8, "")
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.UIMatchSelected = QtWidgets.QPushButton(self.tab_2)
font = QtGui.QFont()
font.setPointSize(12)
font.setBold(True)
font.setWeight(75)
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)
self.label_14.setObjectName("label_14")
self.horizontalLayout_8.addWidget(self.label_14)
self.UIMatchSequenceLabel = QtWidgets.QLineEdit(self.tab_2)
self.UIMatchSequenceLabel.setText("")
self.UIMatchSequenceLabel.setObjectName("UIMatchSequenceLabel")
self.horizontalLayout_8.addWidget(self.UIMatchSequenceLabel)
self.verticalLayout_6.addLayout(self.horizontalLayout_8)
self.label_15 = QtWidgets.QLabel(self.tab_2)
self.label_15.setObjectName("label_15")
self.verticalLayout_6.addWidget(self.label_15)
self.UIMatchOrder = QtWidgets.QListWidget(self.tab_2)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.MinimumExpanding, QtWidgets.QSizePolicy.Expanding)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.UIMatchOrder.sizePolicy().hasHeightForWidth())
self.UIMatchOrder.setSizePolicy(sizePolicy)
self.UIMatchOrder.setMinimumSize(QtCore.QSize(350, 0))
self.UIMatchOrder.setObjectName("UIMatchOrder")
self.verticalLayout_6.addWidget(self.UIMatchOrder)
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")
self.label_21 = QtWidgets.QLabel(self.tab_2)
font = QtGui.QFont()
font.setPointSize(12)
font.setBold(True)
font.setWeight(75)
self.label_21.setFont(font)
self.label_21.setObjectName("label_21")
self.verticalLayout_7.addWidget(self.label_21)
self.gridLayout_5 = QtWidgets.QGridLayout()
self.gridLayout_5.setObjectName("gridLayout_5")
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.UIMatchSequence = QtWidgets.QLineEdit(self.tab_2)
self.UIMatchSequence.setReadOnly(True)
self.UIMatchSequence.setObjectName("UIMatchSequence")
self.gridLayout_5.addWidget(self.UIMatchSequence, 3, 1, 1, 1)
self.UIMatchLabel = QtWidgets.QLineEdit(self.tab_2)
self.UIMatchLabel.setReadOnly(True)
self.UIMatchLabel.setObjectName("UIMatchLabel")
self.gridLayout_5.addWidget(self.UIMatchLabel, 0, 1, 1, 1)
self.label_11 = QtWidgets.QLabel(self.tab_2)
self.label_11.setObjectName("label_11")
self.gridLayout_5.addWidget(self.label_11, 3, 0, 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.setReadOnly(True)
self.UIMatchStart.setObjectName("UIMatchStart")
self.gridLayout_5.addWidget(self.UIMatchStart, 1, 1, 1, 1)
self.label_12 = QtWidgets.QLabel(self.tab_2)
self.label_12.setObjectName("label_12")
self.gridLayout_5.addWidget(self.label_12, 2, 0, 1, 1)
self.UIMatchEnd = QtWidgets.QLineEdit(self.tab_2)
self.UIMatchEnd.setReadOnly(True)
self.UIMatchEnd.setObjectName("UIMatchEnd")
self.gridLayout_5.addWidget(self.UIMatchEnd, 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")
self.verticalLayout_7.addWidget(self.label_19)
self.UIMatchKnobs = QtWidgets.QTableWidget(self.tab_2)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.MinimumExpanding, QtWidgets.QSizePolicy.Expanding)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.UIMatchKnobs.sizePolicy().hasHeightForWidth())
self.UIMatchKnobs.setSizePolicy(sizePolicy)
self.UIMatchKnobs.setObjectName("UIMatchKnobs")
self.UIMatchKnobs.setColumnCount(3)
self.UIMatchKnobs.setRowCount(0)
item = QtWidgets.QTableWidgetItem()
self.UIMatchKnobs.setHorizontalHeaderItem(0, item)
item = QtWidgets.QTableWidgetItem()
self.UIMatchKnobs.setHorizontalHeaderItem(1, item)
item = QtWidgets.QTableWidgetItem()
self.UIMatchKnobs.setHorizontalHeaderItem(2, item)
self.verticalLayout_7.addWidget(self.UIMatchKnobs)
self.label_20 = QtWidgets.QLabel(self.tab_2)
self.label_20.setObjectName("label_20")
self.verticalLayout_7.addWidget(self.label_20)
self.UIMatchTargets = QtWidgets.QTableWidget(self.tab_2)
self.UIMatchTargets.setObjectName("UIMatchTargets")
self.UIMatchTargets.setColumnCount(2)
self.UIMatchTargets.setRowCount(0)
item = QtWidgets.QTableWidgetItem()
self.UIMatchTargets.setHorizontalHeaderItem(0, item)
item = QtWidgets.QTableWidgetItem()
self.UIMatchTargets.setHorizontalHeaderItem(1, item)
self.verticalLayout_7.addWidget(self.UIMatchTargets)
self.horizontalLayout_9.addLayout(self.verticalLayout_7)
spacerItem5 = QtWidgets.QSpacerItem(242, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
self.horizontalLayout_9.addItem(spacerItem5)
self.TabMaster.addTab(self.tab_2, "")
self.tab = QtWidgets.QWidget()
self.tab.setObjectName("tab")
self.horizontalLayout_3 = QtWidgets.QHBoxLayout(self.tab)
self.horizontalLayout_3.setObjectName("horizontalLayout_3")
self.horizontalLayout_2 = QtWidgets.QHBoxLayout(self.tab_2)
self.horizontalLayout_2.setObjectName("horizontalLayout_2")
self.verticalLayout_2 = QtWidgets.QVBoxLayout()
self.verticalLayout_2.setObjectName("verticalLayout_2")
self.UIConfigMatching = QtWidgets.QPushButton(self.tab)
self.UIConfigMatching.setObjectName("UIConfigMatching")
self.verticalLayout_2.addWidget(self.UIConfigMatching)
self.horizontalLayout_2 = QtWidgets.QHBoxLayout()
self.horizontalLayout_2.setObjectName("horizontalLayout_2")
self.label_18 = QtWidgets.QLabel(self.tab)
self.label_18.setObjectName("label_18")
self.horizontalLayout_2.addWidget(self.label_18)
self.UIMatchingConfigLabel = QtWidgets.QLineEdit(self.tab)
self.UIMatchingConfigLabel.setObjectName("UIMatchingConfigLabel")
self.horizontalLayout_2.addWidget(self.UIMatchingConfigLabel)
self.verticalLayout_2.addLayout(self.horizontalLayout_2)
self.line = QtWidgets.QFrame(self.tab)
self.line.setFrameShape(QtWidgets.QFrame.HLine)
self.line.setFrameShadow(QtWidgets.QFrame.Sunken)
self.line.setObjectName("line")
self.verticalLayout_2.addWidget(self.line)
self.label_22 = QtWidgets.QLabel(self.tab)
self.label_22.setObjectName("label_22")
self.verticalLayout_2.addWidget(self.label_22)
self.UIMatchConfigSYComp = QtWidgets.QLineEdit(self.tab)
self.UIMatchConfigSYComp.setObjectName("UIMatchConfigSYComp")
self.verticalLayout_2.addWidget(self.UIMatchConfigSYComp)
self.label_25 = QtWidgets.QLabel(self.tab)
self.label_25.setObjectName("label_25")
self.verticalLayout_2.addWidget(self.label_25)
self.UIMatchConfigARFoc = QtWidgets.QLineEdit(self.tab)
self.UIMatchConfigARFoc.setObjectName("UIMatchConfigARFoc")
self.verticalLayout_2.addWidget(self.UIMatchConfigARFoc)
self.label_27 = QtWidgets.QLabel(self.tab)
self.label_27.setObjectName("label_27")
self.verticalLayout_2.addWidget(self.label_27)
self.UIMatchConfigATFoc = QtWidgets.QLineEdit(self.tab)
self.UIMatchConfigATFoc.setObjectName("UIMatchConfigATFoc")
self.verticalLayout_2.addWidget(self.UIMatchConfigATFoc)
self.UIMatchConfigECOLAsBC = QtWidgets.QCheckBox(self.tab)
self.UIMatchConfigECOLAsBC.setObjectName("UIMatchConfigECOLAsBC")
self.verticalLayout_2.addWidget(self.UIMatchConfigECOLAsBC)
self.label_28 = QtWidgets.QLabel(self.tab)
self.label_28.setObjectName("label_28")
self.verticalLayout_2.addWidget(self.label_28)
self.UIMatchConfigECOLR56 = QtWidgets.QLineEdit(self.tab)
self.UIMatchConfigECOLR56.setObjectName("UIMatchConfigECOLR56")
self.verticalLayout_2.addWidget(self.UIMatchConfigECOLR56)
spacerItem6 = QtWidgets.QSpacerItem(20, 40, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding)
self.verticalLayout_2.addItem(spacerItem6)
self.horizontalLayout_3.addLayout(self.verticalLayout_2)
spacerItem7 = QtWidgets.QSpacerItem(380, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
self.horizontalLayout_3.addItem(spacerItem7)
self.TabMaster.addTab(self.tab, "")
self.UILoadReference = QtWidgets.QPushButton(self.tab_2)
self.UILoadReference.setObjectName("UILoadReference")
self.verticalLayout_2.addWidget(self.UILoadReference)
self.label_3 = QtWidgets.QLabel(self.tab_2)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Fixed)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.label_3.sizePolicy().hasHeightForWidth())
self.label_3.setSizePolicy(sizePolicy)
self.label_3.setObjectName("label_3")
self.verticalLayout_2.addWidget(self.label_3)
self.UIRFSettings = QtWidgets.QTableWidget(self.tab_2)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Fixed)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.UIRFSettings.sizePolicy().hasHeightForWidth())
self.UIRFSettings.setSizePolicy(sizePolicy)
self.UIRFSettings.setObjectName("UIRFSettings")
self.UIRFSettings.setColumnCount(4)
self.UIRFSettings.setRowCount(6)
item = QtWidgets.QTableWidgetItem()
self.UIRFSettings.setVerticalHeaderItem(0, item)
item = QtWidgets.QTableWidgetItem()
self.UIRFSettings.setVerticalHeaderItem(1, item)
item = QtWidgets.QTableWidgetItem()
self.UIRFSettings.setVerticalHeaderItem(2, item)
item = QtWidgets.QTableWidgetItem()
self.UIRFSettings.setVerticalHeaderItem(3, item)
item = QtWidgets.QTableWidgetItem()
self.UIRFSettings.setVerticalHeaderItem(4, item)
item = QtWidgets.QTableWidgetItem()
self.UIRFSettings.setVerticalHeaderItem(5, item)
item = QtWidgets.QTableWidgetItem()
self.UIRFSettings.setHorizontalHeaderItem(0, item)
item = QtWidgets.QTableWidgetItem()
self.UIRFSettings.setHorizontalHeaderItem(1, item)
item = QtWidgets.QTableWidgetItem()
self.UIRFSettings.setHorizontalHeaderItem(2, item)
item = QtWidgets.QTableWidgetItem()
self.UIRFSettings.setHorizontalHeaderItem(3, item)
item = QtWidgets.QTableWidgetItem()
self.UIRFSettings.setItem(0, 0, item)
item = QtWidgets.QTableWidgetItem()
self.UIRFSettings.setItem(1, 0, item)
item = QtWidgets.QTableWidgetItem()
self.UIRFSettings.setItem(2, 0, item)
item = QtWidgets.QTableWidgetItem()
self.UIRFSettings.setItem(3, 0, item)
item = QtWidgets.QTableWidgetItem()
self.UIRFSettings.setItem(4, 0, item)
item = QtWidgets.QTableWidgetItem()
self.UIRFSettings.setItem(5, 0, item)
self.UIRFSettings.horizontalHeader().setVisible(False)
self.UIRFSettings.verticalHeader().setVisible(False)
self.verticalLayout_2.addWidget(self.UIRFSettings)
self.UIUpdateRFSettings = QtWidgets.QPushButton(self.tab_2)
self.UIUpdateRFSettings.setObjectName("UIUpdateRFSettings")
self.verticalLayout_2.addWidget(self.UIUpdateRFSettings)
self.label_4 = QtWidgets.QLabel(self.tab_2)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Fixed)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.label_4.sizePolicy().hasHeightForWidth())
self.label_4.setSizePolicy(sizePolicy)
self.label_4.setObjectName("label_4")
self.verticalLayout_2.addWidget(self.label_4)
self.UIDumpLocation = QtWidgets.QListWidget(self.tab_2)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.MinimumExpanding)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.UIDumpLocation.sizePolicy().hasHeightForWidth())
self.UIDumpLocation.setSizePolicy(sizePolicy)
self.UIDumpLocation.setObjectName("UIDumpLocation")
self.verticalLayout_2.addWidget(self.UIDumpLocation)
self.UIDeleteDump = QtWidgets.QPushButton(self.tab_2)
self.UIDeleteDump.setObjectName("UIDeleteDump")
self.verticalLayout_2.addWidget(self.UIDeleteDump)
spacerItem4 = QtWidgets.QSpacerItem(20, 40, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding)
self.verticalLayout_2.addItem(spacerItem4)
self.horizontalLayout_2.addLayout(self.verticalLayout_2)
self.verticalLayout_6 = QtWidgets.QVBoxLayout()
self.verticalLayout_6.setObjectName("verticalLayout_6")
self.label_5 = QtWidgets.QLabel(self.tab_2)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Fixed)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.label_5.sizePolicy().hasHeightForWidth())
self.label_5.setSizePolicy(sizePolicy)
self.label_5.setObjectName("label_5")
self.verticalLayout_6.addWidget(self.label_5)
self.UIDiagnosticList = QtWidgets.QListWidget(self.tab_2)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Fixed)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.UIDiagnosticList.sizePolicy().hasHeightForWidth())
self.UIDiagnosticList.setSizePolicy(sizePolicy)
self.UIDiagnosticList.setSelectionMode(QtWidgets.QAbstractItemView.MultiSelection)
self.UIDiagnosticList.setObjectName("UIDiagnosticList")
self.verticalLayout_6.addWidget(self.UIDiagnosticList)
self.UIAddDiagnosticDump = QtWidgets.QPushButton(self.tab_2)
self.UIAddDiagnosticDump.setObjectName("UIAddDiagnosticDump")
self.verticalLayout_6.addWidget(self.UIAddDiagnosticDump)
self.label_6 = QtWidgets.QLabel(self.tab_2)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Fixed)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.label_6.sizePolicy().hasHeightForWidth())
self.label_6.setSizePolicy(sizePolicy)
self.label_6.setObjectName("label_6")
self.verticalLayout_6.addWidget(self.label_6)
self.UISectionList = QtWidgets.QListWidget(self.tab_2)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Fixed)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.UISectionList.sizePolicy().hasHeightForWidth())
self.UISectionList.setSizePolicy(sizePolicy)
self.UISectionList.setSelectionMode(QtWidgets.QAbstractItemView.MultiSelection)
self.UISectionList.setObjectName("UISectionList")
self.verticalLayout_6.addWidget(self.UISectionList)
self.UIAddSectionDump = QtWidgets.QPushButton(self.tab_2)
self.UIAddSectionDump.setObjectName("UIAddSectionDump")
self.verticalLayout_6.addWidget(self.UIAddSectionDump)
spacerItem5 = QtWidgets.QSpacerItem(20, 40, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding)
self.verticalLayout_6.addItem(spacerItem5)
self.horizontalLayout_2.addLayout(self.verticalLayout_6)
spacerItem6 = QtWidgets.QSpacerItem(242, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
self.horizontalLayout_2.addItem(spacerItem6)
self.TabMaster.addTab(self.tab_2, "")
self.verticalLayout_5.addWidget(self.TabMaster)
ElegantGUI.setCentralWidget(self.centralwidget)
self.menubar = QtWidgets.QMenuBar(ElegantGUI)
@@ -707,7 +492,7 @@ class Ui_ElegantGUI(object):
self.menubar.addAction(self.menuHelp.menuAction())
self.retranslateUi(ElegantGUI)
self.TabMaster.setCurrentIndex(1)
self.TabMaster.setCurrentIndex(2)
self.actionQuit.triggered.connect(ElegantGUI.close) # type: ignore
QtCore.QMetaObject.connectSlotsByName(ElegantGUI)
@@ -719,30 +504,8 @@ class Ui_ElegantGUI(object):
self.label_2.setText(_translate("ElegantGUI", "End-Section"))
self.label.setText(_translate("ElegantGUI", "Start-Section"))
self.UITrackEnd.setText(_translate("ElegantGUI", "SINDI02"))
self.label_9.setText(_translate("ElegantGUI", "Reference Point"))
self.label_10.setText(_translate("ElegantGUI", "Location"))
self.UIBetax.setText(_translate("ElegantGUI", "30"))
self.label_5.setText(_translate("ElegantGUI", "beta"))
self.UIAlphax.setText(_translate("ElegantGUI", "0"))
self.UIBetay.setText(_translate("ElegantGUI", "30"))
self.label_3.setText(_translate("ElegantGUI", "eta"))
self.label_7.setText(_translate("ElegantGUI", "offset"))
self.label_4.setText(_translate("ElegantGUI", "eta\'"))
self.label_6.setText(_translate("ElegantGUI", "alpha"))
self.label_30.setText(_translate("ElegantGUI", "y"))
self.label_29.setText(_translate("ElegantGUI", "x"))
self.UIAlphay.setText(_translate("ElegantGUI", "0"))
self.label_8.setText(_translate("ElegantGUI", "angle"))
self.UIEtax.setText(_translate("ElegantGUI", "0"))
self.UIEtapx.setText(_translate("ElegantGUI", "0"))
self.UIX.setText(_translate("ElegantGUI", "30"))
self.UIPX.setText(_translate("ElegantGUI", "30"))
self.UIEtay.setText(_translate("ElegantGUI", "30"))
self.UIEtapy.setText(_translate("ElegantGUI", "30"))
self.UIY.setText(_translate("ElegantGUI", "30"))
self.UIPY.setText(_translate("ElegantGUI", "30"))
self.UIUpdateFromMachine.setText(_translate("ElegantGUI", "Update Model from Machine"))
self.label_13.setText(_translate("ElegantGUI", "Status"))
self.UITrackDoLSC.setText(_translate("ElegantGUI", "Include Longitudinal Space Charge"))
self.UITrackDoCSR.setText(_translate("ElegantGUI", "Include Coherent Synchrotron Radiation"))
self.TabMaster.setTabText(self.TabMaster.indexOf(self.tab_3), _translate("ElegantGUI", "Track"))
self.label_23.setText(_translate("ElegantGUI", "Distributions"))
self.UIDistLoad.setText(_translate("ElegantGUI", "Load Distribution"))
@@ -770,41 +533,51 @@ class Ui_ElegantGUI(object):
self.UIDistCut.setText(_translate("ElegantGUI", "Cut"))
self.UIDistSave.setText(_translate("ElegantGUI", "Save Distribution"))
self.TabMaster.setTabText(self.TabMaster.indexOf(self.tab_8), _translate("ElegantGUI", "Distribution"))
self.UIMatchSelected.setText(_translate("ElegantGUI", "Match Selected"))
self.label_14.setText(_translate("ElegantGUI", "Label"))
self.label_15.setText(_translate("ElegantGUI", "Matching Order (Closest Reference Point)"))
self.UIMatchRandom.setText(_translate("ElegantGUI", "Random Initialization"))
self.label_21.setText(_translate("ElegantGUI", "Matching Point"))
self.label_17.setText(_translate("ElegantGUI", "Start"))
self.label_11.setText(_translate("ElegantGUI", "Sequence"))
self.label_16.setText(_translate("ElegantGUI", "Match"))
self.label_12.setText(_translate("ElegantGUI", "End"))
self.label_19.setText(_translate("ElegantGUI", "Knobs"))
item = self.UIMatchKnobs.horizontalHeaderItem(0)
item.setText(_translate("ElegantGUI", "Parameter"))
item = self.UIMatchKnobs.horizontalHeaderItem(1)
item.setText(_translate("ElegantGUI", "Value"))
item = self.UIMatchKnobs.horizontalHeaderItem(2)
item.setText(_translate("ElegantGUI", "Limit"))
self.label_20.setText(_translate("ElegantGUI", "Target"))
item = self.UIMatchTargets.horizontalHeaderItem(0)
item.setText(_translate("ElegantGUI", "Location"))
item = self.UIMatchTargets.horizontalHeaderItem(1)
item.setText(_translate("ElegantGUI", "Condition"))
self.UILoadReference.setText(_translate("ElegantGUI", "Load Settings"))
self.label_3.setText(_translate("ElegantGUI", "RF Settings"))
item = self.UIRFSettings.verticalHeaderItem(0)
item.setText(_translate("ElegantGUI", "New Row"))
item = self.UIRFSettings.verticalHeaderItem(1)
item.setText(_translate("ElegantGUI", "New Row"))
item = self.UIRFSettings.verticalHeaderItem(2)
item.setText(_translate("ElegantGUI", "New Row"))
item = self.UIRFSettings.verticalHeaderItem(3)
item.setText(_translate("ElegantGUI", "New Row"))
item = self.UIRFSettings.verticalHeaderItem(4)
item.setText(_translate("ElegantGUI", "New Row"))
item = self.UIRFSettings.verticalHeaderItem(5)
item.setText(_translate("ElegantGUI", "New Row"))
item = self.UIRFSettings.horizontalHeaderItem(0)
item.setText(_translate("ElegantGUI", "Section"))
item = self.UIRFSettings.horizontalHeaderItem(1)
item.setText(_translate("ElegantGUI", "Voltage"))
item = self.UIRFSettings.horizontalHeaderItem(2)
item.setText(_translate("ElegantGUI", "Phase"))
item = self.UIRFSettings.horizontalHeaderItem(3)
item.setText(_translate("ElegantGUI", "Energy Gain"))
__sortingEnabled = self.UIRFSettings.isSortingEnabled()
self.UIRFSettings.setSortingEnabled(False)
item = self.UIRFSettings.item(0, 0)
item.setText(_translate("ElegantGUI", "Injector S-Band"))
item = self.UIRFSettings.item(1, 0)
item.setText(_translate("ElegantGUI", "Injector X-Band"))
item = self.UIRFSettings.item(2, 0)
item.setText(_translate("ElegantGUI", "Linac 1 C-Band"))
item = self.UIRFSettings.item(3, 0)
item.setText(_translate("ElegantGUI", "Linac 2 C-Band"))
item = self.UIRFSettings.item(4, 0)
item.setText(_translate("ElegantGUI", "Linac 3 C-Band"))
item = self.UIRFSettings.item(5, 0)
item.setText(_translate("ElegantGUI", "Athos C-Band"))
self.UIRFSettings.setSortingEnabled(__sortingEnabled)
self.UIUpdateRFSettings.setText(_translate("ElegantGUI", "Update RF Settings"))
self.label_4.setText(_translate("ElegantGUI", "Particle Dump Location"))
self.UIDeleteDump.setText(_translate("ElegantGUI", "Delete Selected"))
self.label_5.setText(_translate("ElegantGUI", "Available Diagnostic Elements"))
self.UIAddDiagnosticDump.setText(_translate("ElegantGUI", "Add Selected"))
self.label_6.setText(_translate("ElegantGUI", "Available Sections"))
self.UIAddSectionDump.setText(_translate("ElegantGUI", "Add Selected"))
self.TabMaster.setTabText(self.TabMaster.indexOf(self.tab_2), _translate("ElegantGUI", "Lattice"))
self.UIConfigMatching.setText(_translate("ElegantGUI", "Generate Matching File"))
self.label_18.setText(_translate("ElegantGUI", "Label"))
self.UIMatchingConfigLabel.setText(_translate("ElegantGUI", "Custom"))
self.label_22.setText(_translate("ElegantGUI", "Compression in Switchyard (%)"))
self.UIMatchConfigSYComp.setText(_translate("ElegantGUI", "0"))
self.label_25.setText(_translate("ElegantGUI", "Focal Strength Aramis (%)"))
self.UIMatchConfigARFoc.setText(_translate("ElegantGUI", "100"))
self.label_27.setText(_translate("ElegantGUI", "Focal Strength Aramis (%)"))
self.UIMatchConfigATFoc.setText(_translate("ElegantGUI", "100"))
self.UIMatchConfigECOLAsBC.setText(_translate("ElegantGUI", "SARCL02 as BC"))
self.label_28.setText(_translate("ElegantGUI", "R56 in SARCL02 (mm)"))
self.UIMatchConfigECOLR56.setText(_translate("ElegantGUI", "0"))
self.TabMaster.setTabText(self.TabMaster.indexOf(self.tab), _translate("ElegantGUI", "Matching Config (Expert)"))
self.menuFile.setTitle(_translate("ElegantGUI", "File"))
self.menuHelp.setTitle(_translate("ElegantGUI", "Help"))
self.menuMatching.setTitle(_translate("ElegantGUI", "Matching"))
+217 -596
View File
@@ -7,7 +7,7 @@
<x>0</x>
<y>0</y>
<width>813</width>
<height>775</height>
<height>951</height>
</rect>
</property>
<property name="windowTitle">
@@ -24,7 +24,7 @@
</sizepolicy>
</property>
<property name="currentIndex">
<number>1</number>
<number>0</number>
</property>
<widget class="QWidget" name="tab_3">
<attribute name="title">
@@ -114,327 +114,27 @@
</layout>
</item>
<item>
<widget class="QLabel" name="label_9">
<property name="sizePolicy">
<sizepolicy hsizetype="Minimum" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<widget class="QCheckBox" name="UITrackDoLSC">
<property name="text">
<string>Reference Point</string>
<string>Include Longitudinal Space Charge</string>
</property>
<property name="checked">
<bool>true</bool>
</property>
</widget>
</item>
<item>
<widget class="QComboBox" name="UITrackReference">
<property name="sizePolicy">
<sizepolicy hsizetype="Minimum" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="label_10">
<property name="sizePolicy">
<sizepolicy hsizetype="Minimum" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<widget class="QCheckBox" name="UITrackDoCSR">
<property name="text">
<string>Location</string>
<string>Include Coherent Synchrotron Radiation</string>
</property>
<property name="checked">
<bool>true</bool>
</property>
</widget>
</item>
<item>
<widget class="QLineEdit" name="UITrackLocation">
<property name="sizePolicy">
<sizepolicy hsizetype="Minimum" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
</widget>
</item>
<item>
<layout class="QGridLayout" name="gridLayout_3">
<item row="1" column="1">
<widget class="QLineEdit" name="UIBetax">
<property name="sizePolicy">
<sizepolicy hsizetype="Minimum" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string>30</string>
</property>
</widget>
</item>
<item row="1" column="0">
<widget class="QLabel" name="label_5">
<property name="text">
<string>beta</string>
</property>
</widget>
</item>
<item row="3" column="1">
<widget class="QLineEdit" name="UIAlphax">
<property name="sizePolicy">
<sizepolicy hsizetype="Minimum" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string>0</string>
</property>
</widget>
</item>
<item row="1" column="2">
<widget class="QLineEdit" name="UIBetay">
<property name="sizePolicy">
<sizepolicy hsizetype="Minimum" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string>30</string>
</property>
</widget>
</item>
<item row="4" column="0">
<widget class="QLabel" name="label_3">
<property name="text">
<string>eta</string>
</property>
</widget>
</item>
<item row="6" column="0">
<widget class="QLabel" name="label_7">
<property name="text">
<string>offset</string>
</property>
</widget>
</item>
<item row="5" column="0">
<widget class="QLabel" name="label_4">
<property name="text">
<string>eta'</string>
</property>
</widget>
</item>
<item row="3" column="0">
<widget class="QLabel" name="label_6">
<property name="text">
<string>alpha</string>
</property>
</widget>
</item>
<item row="0" column="2">
<widget class="QLabel" name="label_30">
<property name="sizePolicy">
<sizepolicy hsizetype="Minimum" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string>y</string>
</property>
</widget>
</item>
<item row="0" column="1">
<widget class="QLabel" name="label_29">
<property name="sizePolicy">
<sizepolicy hsizetype="Minimum" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string>x</string>
</property>
</widget>
</item>
<item row="3" column="2">
<widget class="QLineEdit" name="UIAlphay">
<property name="sizePolicy">
<sizepolicy hsizetype="Minimum" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string>0</string>
</property>
</widget>
</item>
<item row="7" column="0">
<widget class="QLabel" name="label_8">
<property name="text">
<string>angle</string>
</property>
</widget>
</item>
<item row="4" column="1">
<widget class="QLineEdit" name="UIEtax">
<property name="sizePolicy">
<sizepolicy hsizetype="Minimum" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string>0</string>
</property>
</widget>
</item>
<item row="5" column="1">
<widget class="QLineEdit" name="UIEtapx">
<property name="sizePolicy">
<sizepolicy hsizetype="Minimum" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string>0</string>
</property>
</widget>
</item>
<item row="6" column="1">
<widget class="QLineEdit" name="UIX">
<property name="sizePolicy">
<sizepolicy hsizetype="Minimum" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string>30</string>
</property>
</widget>
</item>
<item row="7" column="1">
<widget class="QLineEdit" name="UIPX">
<property name="sizePolicy">
<sizepolicy hsizetype="Minimum" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string>30</string>
</property>
</widget>
</item>
<item row="4" column="2">
<widget class="QLineEdit" name="UIEtay">
<property name="sizePolicy">
<sizepolicy hsizetype="Minimum" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string>30</string>
</property>
</widget>
</item>
<item row="5" column="2">
<widget class="QLineEdit" name="UIEtapy">
<property name="sizePolicy">
<sizepolicy hsizetype="Minimum" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string>30</string>
</property>
</widget>
</item>
<item row="6" column="2">
<widget class="QLineEdit" name="UIY">
<property name="sizePolicy">
<sizepolicy hsizetype="Minimum" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string>30</string>
</property>
</widget>
</item>
<item row="7" column="2">
<widget class="QLineEdit" name="UIPY">
<property name="sizePolicy">
<sizepolicy hsizetype="Minimum" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string>30</string>
</property>
</widget>
</item>
</layout>
</item>
<item>
<spacer name="verticalSpacer">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>40</height>
</size>
</property>
</spacer>
</item>
<item>
<widget class="QPushButton" name="UIUpdateFromMachine">
<property name="text">
<string>Update Model from Machine</string>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="label_13">
<property name="sizePolicy">
<sizepolicy hsizetype="Minimum" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string>Status</string>
</property>
</widget>
</item>
<item>
<widget class="QLineEdit" name="UIStatus">
<property name="sizePolicy">
<sizepolicy hsizetype="Ignored" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>150</width>
<height>0</height>
</size>
</property>
</widget>
<widget class="QPlainTextEdit" name="plainTextEdit"/>
</item>
</layout>
</widget>
@@ -713,321 +413,242 @@
<attribute name="title">
<string>Lattice</string>
</attribute>
<layout class="QHBoxLayout" name="horizontalLayout_9">
<item>
<layout class="QVBoxLayout" name="verticalLayout_6">
<item>
<widget class="QPushButton" name="UIMatchSelected">
<property name="font">
<font>
<pointsize>12</pointsize>
<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 Selected</string>
</property>
</widget>
</item>
<item>
<layout class="QHBoxLayout" name="horizontalLayout_8">
<item>
<widget class="QLabel" name="label_14">
<property name="text">
<string>Label</string>
</property>
</widget>
</item>
<item>
<widget class="QLineEdit" name="UIMatchSequenceLabel">
<property name="text">
<string/>
</property>
</widget>
</item>
</layout>
</item>
<item>
<widget class="QLabel" name="label_15">
<property name="text">
<string>Matching Order (Closest Reference Point)</string>
</property>
</widget>
</item>
<item>
<widget class="QListWidget" name="UIMatchOrder">
<property name="sizePolicy">
<sizepolicy hsizetype="MinimumExpanding" vsizetype="Expanding">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>350</width>
<height>0</height>
</size>
</property>
</widget>
</item>
<item>
<widget class="QCheckBox" name="UIMatchRandom">
<property name="text">
<string>Random Initialization</string>
</property>
</widget>
</item>
</layout>
</item>
<item>
<layout class="QVBoxLayout" name="verticalLayout_7">
<item>
<widget class="QLabel" name="label_21">
<property name="font">
<font>
<pointsize>12</pointsize>
<weight>75</weight>
<bold>true</bold>
</font>
</property>
<property name="text">
<string>Matching Point</string>
</property>
</widget>
</item>
<item>
<layout class="QGridLayout" name="gridLayout_5">
<item row="1" column="0">
<widget class="QLabel" name="label_17">
<property name="text">
<string>Start</string>
</property>
</widget>
</item>
<item row="3" column="1">
<widget class="QLineEdit" name="UIMatchSequence">
<property name="readOnly">
<bool>true</bool>
</property>
</widget>
</item>
<item row="0" column="1">
<widget class="QLineEdit" name="UIMatchLabel">
<property name="readOnly">
<bool>true</bool>
</property>
</widget>
</item>
<item row="3" column="0">
<widget class="QLabel" name="label_11">
<property name="text">
<string>Sequence</string>
</property>
</widget>
</item>
<item row="0" column="0">
<widget class="QLabel" name="label_16">
<property name="text">
<string>Match</string>
</property>
</widget>
</item>
<item row="1" column="1">
<widget class="QLineEdit" name="UIMatchStart">
<property name="readOnly">
<bool>true</bool>
</property>
</widget>
</item>
<item row="2" column="0">
<widget class="QLabel" name="label_12">
<property name="text">
<string>End</string>
</property>
</widget>
</item>
<item row="2" column="1">
<widget class="QLineEdit" name="UIMatchEnd">
<property name="readOnly">
<bool>true</bool>
</property>
</widget>
</item>
</layout>
</item>
<item>
<widget class="QLabel" name="label_19">
<property name="text">
<string>Knobs</string>
</property>
</widget>
</item>
<item>
<widget class="QTableWidget" name="UIMatchKnobs">
<property name="sizePolicy">
<sizepolicy hsizetype="MinimumExpanding" vsizetype="Expanding">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<column>
<property name="text">
<string>Parameter</string>
</property>
</column>
<column>
<property name="text">
<string>Value</string>
</property>
</column>
<column>
<property name="text">
<string>Limit</string>
</property>
</column>
</widget>
</item>
<item>
<widget class="QLabel" name="label_20">
<property name="text">
<string>Target</string>
</property>
</widget>
</item>
<item>
<widget class="QTableWidget" name="UIMatchTargets">
<column>
<property name="text">
<string>Location</string>
</property>
</column>
<column>
<property name="text">
<string>Condition</string>
</property>
</column>
</widget>
</item>
</layout>
</item>
<item>
<spacer name="horizontalSpacer_3">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>242</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
</layout>
</widget>
<widget class="QWidget" name="tab">
<attribute name="title">
<string>Matching Config (Expert)</string>
</attribute>
<layout class="QHBoxLayout" name="horizontalLayout_3">
<layout class="QHBoxLayout" name="horizontalLayout_2">
<item>
<layout class="QVBoxLayout" name="verticalLayout_2">
<item>
<widget class="QPushButton" name="UIConfigMatching">
<widget class="QPushButton" name="UILoadReference">
<property name="text">
<string>Generate Matching File</string>
<string>Load Settings</string>
</property>
</widget>
</item>
<item>
<layout class="QHBoxLayout" name="horizontalLayout_2">
<item>
<widget class="QLabel" name="label_18">
<property name="text">
<string>Label</string>
</property>
</widget>
</item>
<item>
<widget class="QLineEdit" name="UIMatchingConfigLabel">
<property name="text">
<string>Custom</string>
</property>
</widget>
</item>
</layout>
<widget class="QLabel" name="label_3">
<property name="sizePolicy">
<sizepolicy hsizetype="Minimum" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string>RF Settings</string>
</property>
</widget>
</item>
<item>
<widget class="Line" name="line">
<widget class="QTableWidget" name="UIRFSettings">
<property name="sizePolicy">
<sizepolicy hsizetype="Minimum" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<attribute name="horizontalHeaderVisible">
<bool>false</bool>
</attribute>
<attribute name="verticalHeaderVisible">
<bool>false</bool>
</attribute>
<row>
<property name="text">
<string>New Row</string>
</property>
</row>
<row>
<property name="text">
<string>New Row</string>
</property>
</row>
<row>
<property name="text">
<string>New Row</string>
</property>
</row>
<row>
<property name="text">
<string>New Row</string>
</property>
</row>
<row>
<property name="text">
<string>New Row</string>
</property>
</row>
<row>
<property name="text">
<string>New Row</string>
</property>
</row>
<column>
<property name="text">
<string>Section</string>
</property>
</column>
<column>
<property name="text">
<string>Voltage</string>
</property>
</column>
<column>
<property name="text">
<string>Phase</string>
</property>
</column>
<column>
<property name="text">
<string>Energy Gain</string>
</property>
</column>
<item row="0" column="0">
<property name="text">
<string>Injector S-Band</string>
</property>
</item>
<item row="1" column="0">
<property name="text">
<string>Injector X-Band</string>
</property>
</item>
<item row="2" column="0">
<property name="text">
<string>Linac 1 C-Band</string>
</property>
</item>
<item row="3" column="0">
<property name="text">
<string>Linac 2 C-Band</string>
</property>
</item>
<item row="4" column="0">
<property name="text">
<string>Linac 3 C-Band</string>
</property>
</item>
<item row="5" column="0">
<property name="text">
<string>Athos C-Band</string>
</property>
</item>
</widget>
</item>
<item>
<widget class="QPushButton" name="UIUpdateRFSettings">
<property name="text">
<string>Update RF Settings</string>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="label_4">
<property name="sizePolicy">
<sizepolicy hsizetype="Minimum" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string>Particle Dump Location</string>
</property>
</widget>
</item>
<item>
<widget class="QListWidget" name="UIDumpLocation">
<property name="sizePolicy">
<sizepolicy hsizetype="Minimum" vsizetype="MinimumExpanding">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="UIDeleteDump">
<property name="text">
<string>Delete Selected</string>
</property>
</widget>
</item>
<item>
<spacer name="verticalSpacer">
<property name="orientation">
<enum>Qt::Horizontal</enum>
<enum>Qt::Vertical</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>40</height>
</size>
</property>
</spacer>
</item>
</layout>
</item>
<item>
<layout class="QVBoxLayout" name="verticalLayout_6">
<item>
<widget class="QLabel" name="label_5">
<property name="sizePolicy">
<sizepolicy hsizetype="Minimum" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string>Available Diagnostic Elements</string>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="label_22">
<property name="text">
<string>Compression in Switchyard (%)</string>
<widget class="QListWidget" name="UIDiagnosticList">
<property name="sizePolicy">
<sizepolicy hsizetype="Minimum" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="selectionMode">
<enum>QAbstractItemView::MultiSelection</enum>
</property>
</widget>
</item>
<item>
<widget class="QLineEdit" name="UIMatchConfigSYComp">
<widget class="QPushButton" name="UIAddDiagnosticDump">
<property name="text">
<string>0</string>
<string>Add Selected</string>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="label_25">
<widget class="QLabel" name="label_6">
<property name="sizePolicy">
<sizepolicy hsizetype="Minimum" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string>Focal Strength Aramis (%)</string>
<string>Available Sections</string>
</property>
</widget>
</item>
<item>
<widget class="QLineEdit" name="UIMatchConfigARFoc">
<property name="text">
<string>100</string>
<widget class="QListWidget" name="UISectionList">
<property name="sizePolicy">
<sizepolicy hsizetype="Minimum" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="selectionMode">
<enum>QAbstractItemView::MultiSelection</enum>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="label_27">
<widget class="QPushButton" name="UIAddSectionDump">
<property name="text">
<string>Focal Strength Aramis (%)</string>
</property>
</widget>
</item>
<item>
<widget class="QLineEdit" name="UIMatchConfigATFoc">
<property name="text">
<string>100</string>
</property>
</widget>
</item>
<item>
<widget class="QCheckBox" name="UIMatchConfigECOLAsBC">
<property name="text">
<string>SARCL02 as BC</string>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="label_28">
<property name="text">
<string>R56 in SARCL02 (mm)</string>
</property>
</widget>
</item>
<item>
<widget class="QLineEdit" name="UIMatchConfigECOLR56">
<property name="text">
<string>0</string>
<string>Add Selected</string>
</property>
</widget>
</item>
@@ -1047,13 +668,13 @@
</layout>
</item>
<item>
<spacer name="horizontalSpacer_2">
<spacer name="horizontalSpacer_3">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>380</width>
<width>242</width>
<height>20</height>
</size>
</property>