Indication of magnet strengths and matching results in GUI
This commit is contained in:
+13
-1
@@ -91,6 +91,7 @@ class OpticsTools(QtWidgets.QMainWindow, QtCore.QObject, Ui_OpticsGUI):
|
|||||||
else:
|
else:
|
||||||
vars = None
|
vars = None
|
||||||
twiss = self.match.match(self.model.om, variables = vars, Injector = injector,Athos = athos, Aramis = aramis, Porthos = porthos)
|
twiss = self.match.match(self.model.om, variables = vars, Injector = injector,Athos = athos, Aramis = aramis, Porthos = porthos)
|
||||||
|
self.updateMatchResult(self.match.matchresult)
|
||||||
energy = self.model.calcEnergyProfile(twiss)
|
energy = self.model.calcEnergyProfile(twiss)
|
||||||
#enfore the writing of a new lattice so that the magnet settings are in the new lattice
|
#enfore the writing of a new lattice so that the magnet settings are in the new lattice
|
||||||
self.model.forceLat = True
|
self.model.forceLat = True
|
||||||
@@ -100,7 +101,18 @@ class OpticsTools(QtWidgets.QMainWindow, QtCore.QObject, Ui_OpticsGUI):
|
|||||||
self.saveSettingsdirect(fileName)
|
self.saveSettingsdirect(fileName)
|
||||||
|
|
||||||
|
|
||||||
|
def updateMatchResult(self,result):
|
||||||
|
self.UIReportMatchResult.clear()
|
||||||
|
for ele in result:
|
||||||
|
label = '%s (%6.2e)' % (ele['Location'],ele['Error'])
|
||||||
|
listitem = QtWidgets.QListWidgetItem(label)
|
||||||
|
color = QtGui.QColor(100, 255, 100) # white
|
||||||
|
if ele['Error'] > 1e-5:
|
||||||
|
color = QtGui.QColor(255, 255, 100)
|
||||||
|
if ele['Error'] > 1:
|
||||||
|
color = QtGui.QColor(255, 100, 100)
|
||||||
|
listitem.setBackground(color)
|
||||||
|
self.UIReportMatchResult.addItem(listitem)
|
||||||
|
|
||||||
def updateMatchingCase(self):
|
def updateMatchingCase(self):
|
||||||
"""
|
"""
|
||||||
|
|||||||
@@ -10,7 +10,7 @@ S20SY02.MKDC050.cory:= SYKICK*2;
|
|||||||
|
|
||||||
|
|
||||||
s20bc01.mqua010.k1:=1.;
|
s20bc01.mqua010.k1:=1.;
|
||||||
|
Print,text='MATCH POINT: BC2 in Linac 2';
|
||||||
MATCH,SEQUENCE=Swissfel,range=s20sy02$start/s20bc02$end,beta0=twisssep;
|
MATCH,SEQUENCE=Swissfel,range=s20sy02$start/s20bc02$end,beta0=twisssep;
|
||||||
VARY,NAME=s20bc01.mqua010.k1,STEP=0.0001;
|
VARY,NAME=s20bc01.mqua010.k1,STEP=0.0001;
|
||||||
VARY,NAME=s20bc01.mqua030.k1,STEP=0.0001;
|
VARY,NAME=s20bc01.mqua030.k1,STEP=0.0001;
|
||||||
@@ -32,6 +32,7 @@ pol = 1;
|
|||||||
s20cb01.mqua430.k1=0.5*pol;
|
s20cb01.mqua430.k1=0.5*pol;
|
||||||
s20cb02.mqua430.k1=-0.5*pol;
|
s20cb02.mqua430.k1=-0.5*pol;
|
||||||
|
|
||||||
|
Print,text='MATCH POINT: FODO - Linac 2';
|
||||||
match,SEQUENCE=swissfel,range=S20cb01$start/s20cb02$end;
|
match,SEQUENCE=swissfel,range=S20cb01$start/s20cb02$end;
|
||||||
Vary,name=S20CB01.MQUA430.k1,step=0.0001;
|
Vary,name=S20CB01.MQUA430.k1,step=0.0001;
|
||||||
Vary,name=S20CB02.MQUA430.k1,step=0.0001;
|
Vary,name=S20CB02.MQUA430.k1,step=0.0001;
|
||||||
@@ -70,6 +71,7 @@ s30cb14.mqua430.k1 = s20cb02.mqua430.k1;
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Print,text='MATCH POINT: Match into Linac 2';
|
||||||
MATCH,SEQUENCE=Swissfel,range=s20sy02$start/s20cb04$end,beta0=twisssep;
|
MATCH,SEQUENCE=Swissfel,range=s20sy02$start/s20cb04$end,beta0=twisssep;
|
||||||
VARY,NAME=s20ma01.mqua010.k1,STEP=0.0001;
|
VARY,NAME=s20ma01.mqua010.k1,STEP=0.0001;
|
||||||
VARY,NAME=s20ma01.mqua020.k1,STEP=0.0001;
|
VARY,NAME=s20ma01.mqua020.k1,STEP=0.0001;
|
||||||
@@ -86,6 +88,8 @@ twiss,SEQUENCE=swissfel,range=s20sy02$start/S20cb04$end,beta0=twisssep;
|
|||||||
plot,haxis=s,vaxis=betx,bety,range=#s/#e,colour=100;
|
plot,haxis=s,vaxis=betx,bety,range=#s/#e,colour=100;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Print,text='MATCH POINT: Corrected Matching into Linac 3';
|
||||||
MATCH,SEQUENCE=Swissfel,range=s20sy02$start/s30cb07$end,beta0=twisssep;
|
MATCH,SEQUENCE=Swissfel,range=s20sy02$start/s30cb07$end,beta0=twisssep;
|
||||||
VARY,NAME=s30cb01.mqua430.k1,STEP=0.0001;
|
VARY,NAME=s30cb01.mqua430.k1,STEP=0.0001;
|
||||||
VARY,NAME=s30cb02.mqua430.k1,STEP=0.0001;
|
VARY,NAME=s30cb02.mqua430.k1,STEP=0.0001;
|
||||||
@@ -119,6 +123,7 @@ pqf:=1;
|
|||||||
S30cb15.mqua100.k1 := -0.2*pqf;
|
S30cb15.mqua100.k1 := -0.2*pqf;
|
||||||
S30cb15.mqua200.k1 := -pqf;
|
S30cb15.mqua200.k1 := -pqf;
|
||||||
|
|
||||||
|
Print,text='MATCH POINT: Kicker Strength for Porthos Septum';
|
||||||
MATCH,SEQUENCE=Swissfel,range=S30CB15$START/s30cb15$END,BETA0 = TWISSsep;
|
MATCH,SEQUENCE=Swissfel,range=S30CB15$START/s30cb15$END,BETA0 = TWISSsep;
|
||||||
VARY, NAME=PSYKICK, STEP=0.00001;
|
VARY, NAME=PSYKICK, STEP=0.00001;
|
||||||
VARY, NAME=PQF, STEP=0.00001;
|
VARY, NAME=PQF, STEP=0.00001;
|
||||||
@@ -134,6 +139,8 @@ s30cb15.mqua010.k1 = 1.1533;
|
|||||||
s30cb15.mqua020.k1 = -0.0961;
|
s30cb15.mqua020.k1 = -0.0961;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Print,text='MATCH POINT: Match into Porthos Septum';
|
||||||
MATCH,SEQUENCE=Swissfel,range=s20sy02$start/s30sy01$end,beta0=twisssep;
|
MATCH,SEQUENCE=Swissfel,range=s20sy02$start/s30sy01$end,beta0=twisssep;
|
||||||
VARY,NAME=s30cb13.mqua430.k1,STEP=0.0001;
|
VARY,NAME=s30cb13.mqua430.k1,STEP=0.0001;
|
||||||
VARY,NAME=s30cb14.mqua430.k1,STEP=0.0001;
|
VARY,NAME=s30cb14.mqua430.k1,STEP=0.0001;
|
||||||
@@ -171,6 +178,7 @@ if (ECOLasBC ==0.) {
|
|||||||
sarcl02.mqua130.k1=1.8;
|
sarcl02.mqua130.k1=1.8;
|
||||||
R56 = -000e-6;
|
R56 = -000e-6;
|
||||||
|
|
||||||
|
Print,text='MATCH POINT: Isochronous Setup of Energy Collimator';
|
||||||
MATCH,RMATRIX,SEQUENCE=swissfel,range=SARCL02$START/SARCL02$END,betx=10,alfx=0,bety=10,alfy=0;
|
MATCH,RMATRIX,SEQUENCE=swissfel,range=SARCL02$START/SARCL02$END,betx=10,alfx=0,bety=10,alfy=0;
|
||||||
VARY,NAME=sarcl02.mqua130.k1,STEP=0.0001;
|
VARY,NAME=sarcl02.mqua130.k1,STEP=0.0001;
|
||||||
CONSTRAINT,SEQUENCE=swissfel,range=sarcl02.mqua210,re56=R56*0.5;
|
CONSTRAINT,SEQUENCE=swissfel,range=sarcl02.mqua210,re56=R56*0.5;
|
||||||
@@ -180,6 +188,7 @@ if (ECOLasBC ==0.) {
|
|||||||
sarcl02.mqua210.k1=-sarcl02.mqua130.k1*0.9;
|
sarcl02.mqua210.k1=-sarcl02.mqua130.k1*0.9;
|
||||||
sarcl02.mqua250.k1= sarcl02.mqua130.k1;
|
sarcl02.mqua250.k1= sarcl02.mqua130.k1;
|
||||||
|
|
||||||
|
Print,text='MATCH POINT: Dispersion Symmetry Point of Energy Collimator';
|
||||||
MATCH,SEQUENCE=swissfel,range=SARCL02$START/SARCL02$END,betx=10,alfx=0,bety=10,alfy=0;
|
MATCH,SEQUENCE=swissfel,range=SARCL02$START/SARCL02$END,betx=10,alfx=0,bety=10,alfy=0;
|
||||||
VARY,NAME=sarcl02.mqua250.k1,STEP=0.0001;
|
VARY,NAME=sarcl02.mqua250.k1,STEP=0.0001;
|
||||||
CONSTRAINT,SEQUENCE=swissfel,range=sarcl02.dbpm260$end,dpx=0;
|
CONSTRAINT,SEQUENCE=swissfel,range=sarcl02.dbpm260$end,dpx=0;
|
||||||
@@ -210,7 +219,7 @@ if (ECOLasBC ==0.) {
|
|||||||
sarcl02.msex255.k2:=110;
|
sarcl02.msex255.k2:=110;
|
||||||
sarcl02.msex305.k2:=110;
|
sarcl02.msex305.k2:=110;
|
||||||
|
|
||||||
|
Print,text='MATCH POINT: Sextupoles in Energy Collimator';
|
||||||
MATCH,chrom,SEQUENCE=sarcl02,range=#s/#e,betx=nbetx,alfx=nalfx,bety=nbety,alfy=nalfy;
|
MATCH,chrom,SEQUENCE=sarcl02,range=#s/#e,betx=nbetx,alfx=nalfx,bety=nbety,alfy=nalfy;
|
||||||
VARY,NAME=ecol_k2,STEP=0.0001;
|
VARY,NAME=ecol_k2,STEP=0.0001;
|
||||||
CONSTRAINT,SEQUENCE=Sarcl02,range=#e,ddx=0;
|
CONSTRAINT,SEQUENCE=Sarcl02,range=#e,ddx=0;
|
||||||
@@ -259,6 +268,7 @@ sarcl01.mqua190.k1 := -1.475278354;
|
|||||||
|
|
||||||
|
|
||||||
use,sequence=swissfel;
|
use,sequence=swissfel;
|
||||||
|
Print,text='MATCH POINT: Match into Energy Collimator';
|
||||||
MATCH,SEQUENCE=swissfel,range=s20SY02$start/sarma02$start,beta0=twisssep;
|
MATCH,SEQUENCE=swissfel,range=s20SY02$start/sarma02$start,beta0=twisssep;
|
||||||
VARY,NAME=sarcl01.mqua020.k1,STEP=0.0001,lower=-1., upper =1.;
|
VARY,NAME=sarcl01.mqua020.k1,STEP=0.0001,lower=-1., upper =1.;
|
||||||
VARY,NAME=sarcl01.mqua050.k1,STEP=0.0001;
|
VARY,NAME=sarcl01.mqua050.k1,STEP=0.0001;
|
||||||
@@ -295,6 +305,7 @@ plot,haxis=s,vaxis=betx,bety,range=S30CB15$START/SARCL02$END,colour=100;
|
|||||||
|
|
||||||
!-----------------
|
!-----------------
|
||||||
muAR=0.16;
|
muAR=0.16;
|
||||||
|
Print,text='MATCH POINT: FODO - Aramis Undulator';
|
||||||
match,SEQUENCE=swissfel,range=sarun02$start/sarun03$end;
|
match,SEQUENCE=swissfel,range=sarun02$start/sarun03$end;
|
||||||
Vary,name=sarun02.mqua080.k1,step=0.0001;
|
Vary,name=sarun02.mqua080.k1,step=0.0001;
|
||||||
Vary,name=sarun03.mqua080.k1,step=0.0001;
|
Vary,name=sarun03.mqua080.k1,step=0.0001;
|
||||||
@@ -338,6 +349,7 @@ sarma01.mqua080.k1 := -1.1356922498;
|
|||||||
sarma01.mqua120.k1 := 0.4142170392;
|
sarma01.mqua120.k1 := 0.4142170392;
|
||||||
sarma01.mqua140.k1 := -0.4428419456;
|
sarma01.mqua140.k1 := -0.4428419456;
|
||||||
|
|
||||||
|
Print,text='MATCH POINT: Match into Aramis Undulator';
|
||||||
MATCH,SEQUENCE=swissfel,range=S30SY01$start/sarun02$start,beta0=twisspor;
|
MATCH,SEQUENCE=swissfel,range=S30SY01$start/sarun02$start,beta0=twisspor;
|
||||||
VARY,NAME=sarma01.mqua010.k1,STEP=0.0001;
|
VARY,NAME=sarma01.mqua010.k1,STEP=0.0001;
|
||||||
VARY,NAME=sarma01.mqua060.k1,STEP=0.0001;
|
VARY,NAME=sarma01.mqua060.k1,STEP=0.0001;
|
||||||
@@ -369,7 +381,7 @@ twiss,SEQUENCE=swissfel,range=#s/sarbd02.dscr050$end,beta0=twiss0;
|
|||||||
plot,haxis=s,vaxis=betx,bety,range=#s/#e,colour=100;
|
plot,haxis=s,vaxis=betx,bety,range=#s/#e,colour=100;
|
||||||
plot,haxis=s,vaxis=dx,dy,range=#s/#e,colour=100;
|
plot,haxis=s,vaxis=dx,dy,range=#s/#e,colour=100;
|
||||||
|
|
||||||
exit;
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -17,6 +17,9 @@ use,sequence=swissfel;
|
|||||||
select,flag=Error,pattern="SAT.*";
|
select,flag=Error,pattern="SAT.*";
|
||||||
ealign,DY=0.01;
|
ealign,DY=0.01;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Print,text='MATCH POINT: Kicker Strength of Septum';
|
||||||
MATCH,SEQUENCE=swissfel,range=s20sy02$start/s20sy02$end,beta0=Twisssep;
|
MATCH,SEQUENCE=swissfel,range=s20sy02$start/s20sy02$end,beta0=Twisssep;
|
||||||
VARY,NAME=s20sy02.mqua070.k1,STEP=0.0001,lower=-3,upper=3;
|
VARY,NAME=s20sy02.mqua070.k1,STEP=0.0001,lower=-3,upper=3;
|
||||||
VARY,NAME=s20sy02.mqua100.k1,STEP=0.0001,lower=-3,upper=3;
|
VARY,NAME=s20sy02.mqua100.k1,STEP=0.0001,lower=-3,upper=3;
|
||||||
@@ -49,7 +52,7 @@ plot,haxis=s,vaxis=y,dy,range=#s/#e,colour=100;
|
|||||||
satsy01.mqua110.k1=-0.7;
|
satsy01.mqua110.k1=-0.7;
|
||||||
|
|
||||||
|
|
||||||
|
Print,text='MATCH POINT: Closed Dispersion in Switchyard';
|
||||||
MATCH,SEQUENCE=Swissfel,range=s20sy02$start/satsy02$end,beta0=twisssep;
|
MATCH,SEQUENCE=Swissfel,range=s20sy02$start/satsy02$end,beta0=twisssep;
|
||||||
VARY,NAME=satsy01.mqua020.k1,STEP=0.0001;
|
VARY,NAME=satsy01.mqua020.k1,STEP=0.0001;
|
||||||
VARY,NAME=satsy01.mqua050.k1,STEP=0.0001;
|
VARY,NAME=satsy01.mqua050.k1,STEP=0.0001;
|
||||||
@@ -73,7 +76,7 @@ plot,haxis=s,vaxis=dx,dy,range=#s/#e,colour=100;
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Print,text='MATCH POINT: Closed Dispersion in SATSY03';
|
||||||
MATCH,SEQUENCE=SwissFEL,range=s20sy02$start/satsy03$end,beta0=twisssep;
|
MATCH,SEQUENCE=SwissFEL,range=s20sy02$start/satsy03$end,beta0=twisssep;
|
||||||
VARY,NAME=satsy03.mqua120.k1,STEP=0.0001;
|
VARY,NAME=satsy03.mqua120.k1,STEP=0.0001;
|
||||||
CONSTRAINT,SEQUENCE=SwissFEL,range= satsy03.mbnd200,DX=0.0;
|
CONSTRAINT,SEQUENCE=SwissFEL,range= satsy03.mbnd200,DX=0.0;
|
||||||
@@ -85,6 +88,7 @@ satsy02.mqua230.k1=0;
|
|||||||
satsy02.mqua240.k1=0;
|
satsy02.mqua240.k1=0;
|
||||||
satsy02.mqua260.k1=0;
|
satsy02.mqua260.k1=0;
|
||||||
|
|
||||||
|
Print,text='MATCH POINT: Switchyard Drift';
|
||||||
MATCH,SEQUENCE=SwissFEL,range=s20sy02$start/satsy03$end,beta0=twisssep;
|
MATCH,SEQUENCE=SwissFEL,range=s20sy02$start/satsy03$end,beta0=twisssep;
|
||||||
VARY,NAME=satsy02.mqua210.k1,STEP=0.0001;
|
VARY,NAME=satsy02.mqua210.k1,STEP=0.0001;
|
||||||
VARY,NAME=satsy02.mqua230.k1,STEP=0.0001;
|
VARY,NAME=satsy02.mqua230.k1,STEP=0.0001;
|
||||||
@@ -98,6 +102,7 @@ LMDIF,CALLS=1000,TOLERANCE=1.e-21;
|
|||||||
ENDMATCH;
|
ENDMATCH;
|
||||||
|
|
||||||
|
|
||||||
|
Print,text='MATCH POINT: Match into SATSY03';
|
||||||
MATCH,SEQUENCE=SwissFEL,range=s20sy02$start/satsy03$end,beta0=twisssep;
|
MATCH,SEQUENCE=SwissFEL,range=s20sy02$start/satsy03$end,beta0=twisssep;
|
||||||
VARY,NAME=satsy02.mqua300.k1,STEP=0.0001;
|
VARY,NAME=satsy02.mqua300.k1,STEP=0.0001;
|
||||||
VARY,NAME=satsy02.mqua310.k1,STEP=0.0001;
|
VARY,NAME=satsy02.mqua310.k1,STEP=0.0001;
|
||||||
@@ -119,6 +124,7 @@ plot,haxis=s,vaxis=dx,dy,range=#s/#e,colour=100;
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Print,text='MATCH POINT: BC2 in Switchyard';
|
||||||
MATCH,SEQUENCE=SwissFEL,range=s20sy02$start/satbc01$end,beta0=twisssep;
|
MATCH,SEQUENCE=SwissFEL,range=s20sy02$start/satbc01$end,beta0=twisssep;
|
||||||
VARY,NAME=satsy03.mqua220.k1,STEP=0.0001;
|
VARY,NAME=satsy03.mqua220.k1,STEP=0.0001;
|
||||||
VARY,NAME=satsy03.mqua310.k1,STEP=0.0001;
|
VARY,NAME=satsy03.mqua310.k1,STEP=0.0001;
|
||||||
@@ -137,6 +143,7 @@ satcl01.mqua180.k1 := CL2.k1;
|
|||||||
satcl01.mqua190.k1 := CL1.k1;
|
satcl01.mqua190.k1 := CL1.k1;
|
||||||
|
|
||||||
|
|
||||||
|
Print,text='MATCH POINT: Closed Dispersion in SATCL01';
|
||||||
MATCH,SEQUENCE=SwissFEL,range=satcl01$start/satcl01$end,betx=3,alfx=0,bety=50,alfy=5;
|
MATCH,SEQUENCE=SwissFEL,range=satcl01$start/satcl01$end,betx=3,alfx=0,bety=50,alfy=5;
|
||||||
VARY,NAME=cl1.k1,STEP=0.0001;
|
VARY,NAME=cl1.k1,STEP=0.0001;
|
||||||
VARY,NAME=cl2.k1,STEP=0.0001;
|
VARY,NAME=cl2.k1,STEP=0.0001;
|
||||||
@@ -148,7 +155,7 @@ LMDIF,CALLS=1000,TOLERANCE=1.e-21;
|
|||||||
ENDMATCH;
|
ENDMATCH;
|
||||||
|
|
||||||
|
|
||||||
|
Print,text='MATCH POINT: Match into SATCL01';
|
||||||
MATCH,SEQUENCE=SwissFEL,range=s20sy02$start/satcl01$end,beta0=twisssep;
|
MATCH,SEQUENCE=SwissFEL,range=s20sy02$start/satcl01$end,beta0=twisssep;
|
||||||
VARY,NAME=satbc01.mqua410.k1,STEP=0.0001;
|
VARY,NAME=satbc01.mqua410.k1,STEP=0.0001;
|
||||||
VARY,NAME=satbc01.mqua430.k1,STEP=0.0001;
|
VARY,NAME=satbc01.mqua430.k1,STEP=0.0001;
|
||||||
@@ -162,6 +169,10 @@ CONSTRAINT,SEQUENCE=SwissFEL,range= satcl01.msex160, bety < 5;
|
|||||||
LMDIF,CALLS=1000,TOLERANCE=1.e-21;
|
LMDIF,CALLS=1000,TOLERANCE=1.e-21;
|
||||||
ENDMATCH;
|
ENDMATCH;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Print,text='MATCH POINT: Minimizing Beam Size in HERO Modulator';
|
||||||
|
|
||||||
MATCH,SEQUENCE=SwissFEL,range=s20sy02$start/satdi01$end,beta0=twisssep;
|
MATCH,SEQUENCE=SwissFEL,range=s20sy02$start/satdi01$end,beta0=twisssep;
|
||||||
VARY,NAME=satdi01.mqua025.k1,STEP=0.0001;
|
VARY,NAME=satdi01.mqua025.k1,STEP=0.0001;
|
||||||
CONSTRAINT,SEQUENCE=SwissFEL,range= satdi01.dscr065$start, betx<19;
|
CONSTRAINT,SEQUENCE=SwissFEL,range= satdi01.dscr065$start, betx<19;
|
||||||
@@ -191,6 +202,7 @@ L = 20.;
|
|||||||
alpha=0.7;
|
alpha=0.7;
|
||||||
beta=L*alpha;
|
beta=L*alpha;
|
||||||
|
|
||||||
|
Print,text='MATCH POINT: Match through Athos C-Band Linac';
|
||||||
|
|
||||||
MATCH, SEQUENCE=SwissFEL,range=s20sy02$start/satcb01$end,beta0=twisssep;
|
MATCH, SEQUENCE=SwissFEL,range=s20sy02$start/satcb01$end,beta0=twisssep;
|
||||||
VARY,NAME=satdi01.mqua080.k1,STEP=0.0001,lower=-1.8,upper=1.8;
|
VARY,NAME=satdi01.mqua080.k1,STEP=0.0001,lower=-1.8,upper=1.8;
|
||||||
@@ -220,6 +232,8 @@ pol=-1;
|
|||||||
satun06.mqua080.k1 := -1.699673315*pol;
|
satun06.mqua080.k1 := -1.699673315*pol;
|
||||||
satun07.mqua080.k1 := 1.746074065*pol;
|
satun07.mqua080.k1 := 1.746074065*pol;
|
||||||
muAT=0.15;
|
muAT=0.15;
|
||||||
|
|
||||||
|
Print,text='MATCH POINT: FODO - Athos Undulator';
|
||||||
match,SEQUENCE=swissfel,range=satun06$start/satun07$end;
|
match,SEQUENCE=swissfel,range=satun06$start/satun07$end;
|
||||||
Vary,name=satun06.mqua080.k1,step=0.0001;
|
Vary,name=satun06.mqua080.k1,step=0.0001;
|
||||||
Vary,name=satun07.mqua080.k1,step=0.0001;
|
Vary,name=satun07.mqua080.k1,step=0.0001;
|
||||||
@@ -271,6 +285,7 @@ eealfy=1.5;
|
|||||||
|
|
||||||
twissee: beta0,betx=eebetx,bety=eebety,alfx=eealfx,alfy=eealfy;
|
twissee: beta0,betx=eebetx,bety=eebety,alfx=eealfx,alfy=eealfy;
|
||||||
|
|
||||||
|
Print,text='MATCH POINT: Match into Athos Undulator';
|
||||||
MATCH, SEQUENCE=swissfel,range=satma01.mqua250$end/satun07$end,beta0=twissee;
|
MATCH, SEQUENCE=swissfel,range=satma01.mqua250$end/satun07$end,beta0=twissee;
|
||||||
VARY,NAME=satma01.mqua610.k1,STEP=0.0001,lower=-2.0,upper=2.0;
|
VARY,NAME=satma01.mqua610.k1,STEP=0.0001,lower=-2.0,upper=2.0;
|
||||||
VARY,NAME=satma01.mqua630.k1,STEP=0.0001,lower=-2.0,upper=2.0;
|
VARY,NAME=satma01.mqua630.k1,STEP=0.0001,lower=-2.0,upper=2.0;
|
||||||
@@ -298,7 +313,7 @@ satcb03.mqua230.k1=scl*0.2;
|
|||||||
satcb03.mqua430.k1=-scl*0.2;
|
satcb03.mqua430.k1=-scl*0.2;
|
||||||
|
|
||||||
|
|
||||||
|
Print,text='MATCH POINT: Match through EEHG Section';
|
||||||
MATCH, SEQUENCE=swissfel,range=s20sy02$start/satma01$end,beta0=twisssep;
|
MATCH, SEQUENCE=swissfel,range=s20sy02$start/satma01$end,beta0=twisssep;
|
||||||
VARY,NAME=satcb03.mqua430.k1,STEP=0.0001,lower=-3.8,upper=3.8;
|
VARY,NAME=satcb03.mqua430.k1,STEP=0.0001,lower=-3.8,upper=3.8;
|
||||||
VARY,NAME=satma01.mqua120.k1,STEP=0.0001,lower=-3.8,upper=3.8;
|
VARY,NAME=satma01.mqua120.k1,STEP=0.0001,lower=-3.8,upper=3.8;
|
||||||
@@ -329,3 +344,4 @@ plot,haxis=s,vaxis=betx,bety,range=satdi01$start/#e,colour=100;
|
|||||||
twiss,SEQUENCE=swissfel,range=#s/satun26$end,beta0=twiss0;
|
twiss,SEQUENCE=swissfel,range=#s/satun26$end,beta0=twiss0;
|
||||||
plot,haxis=s,vaxis=betx,bety,range=#s/#e,colour=100;
|
plot,haxis=s,vaxis=betx,bety,range=#s/#e,colour=100;
|
||||||
plot,haxis=s,vaxis=dx,dy,range=#s/#e,colour=100;
|
plot,haxis=s,vaxis=dx,dy,range=#s/#e,colour=100;
|
||||||
|
|
||||||
|
|||||||
@@ -8,7 +8,7 @@ alpha = 1;
|
|||||||
beta = alpha*L;
|
beta = alpha*L;
|
||||||
|
|
||||||
|
|
||||||
|
Print,text='MATCH POINT: Laser Heater';
|
||||||
MATCH,SEQUENCE=SwissFEL,range=#s/sinbc02$start,beta0 = Twiss0;
|
MATCH,SEQUENCE=SwissFEL,range=#s/sinbc02$start,beta0 = Twiss0;
|
||||||
VARY,NAME=sinlh01.MQUA020.k1,STEP=0.0001;
|
VARY,NAME=sinlh01.MQUA020.k1,STEP=0.0001;
|
||||||
VARY,NAME=sinlh01.MQUA040.k1,STEP=0.0001;
|
VARY,NAME=sinlh01.MQUA040.k1,STEP=0.0001;
|
||||||
@@ -35,6 +35,7 @@ ENDMATCH;
|
|||||||
twiss,SEQUENCE=swissfel,range=#s/sinbc01$end,beta0 = Twiss0;
|
twiss,SEQUENCE=swissfel,range=#s/sinbc01$end,beta0 = Twiss0;
|
||||||
plot,haxis=s,vaxis=betx,bety,range=#s/#e,colour=100;
|
plot,haxis=s,vaxis=betx,bety,range=#s/#e,colour=100;
|
||||||
|
|
||||||
|
Print,text='MATCH POINT: BC 1';
|
||||||
MATCH,SEQUENCE=SwissFEL,range=#s/sinma01$start,beta0 = Twiss0;
|
MATCH,SEQUENCE=SwissFEL,range=#s/sinma01$start,beta0 = Twiss0;
|
||||||
VARY,NAME=sinbc01.MQUA020.k1,STEP=0.0001;
|
VARY,NAME=sinbc01.MQUA020.k1,STEP=0.0001;
|
||||||
VARY,NAME=sinbc01.MQUA050.k1,STEP=0.0001;
|
VARY,NAME=sinbc01.MQUA050.k1,STEP=0.0001;
|
||||||
@@ -54,6 +55,7 @@ plot,haxis=s,vaxis=betx,bety,range=#s/#e,colour=100;
|
|||||||
|
|
||||||
sinma01.mqua020.k1=-0.1;
|
sinma01.mqua020.k1=-0.1;
|
||||||
|
|
||||||
|
Print,text='MATCH POINT: Injector-TDS';
|
||||||
MATCH,SEQUENCE=SwissFEL,range=#s/sindi02$end,beta0 = Twiss0;
|
MATCH,SEQUENCE=SwissFEL,range=#s/sindi02$end,beta0 = Twiss0;
|
||||||
VARY,NAME=sinma01.MQUA020.k1,STEP=0.0001;
|
VARY,NAME=sinma01.MQUA020.k1,STEP=0.0001;
|
||||||
VARY,NAME=sinma01.MQUA030.k1,STEP=0.0001;
|
VARY,NAME=sinma01.MQUA030.k1,STEP=0.0001;
|
||||||
@@ -83,7 +85,7 @@ s10cb02.mqua230.k1=0.2;
|
|||||||
s10cb02.mqua430.k1=-0.2;
|
s10cb02.mqua430.k1=-0.2;
|
||||||
|
|
||||||
muLin1=0.2;
|
muLin1=0.2;
|
||||||
|
Print,text='MATCH POINT: FODO - Linac 1';
|
||||||
match,SEQUENCE=swissfel,range=S10cb02$start/s10cb02$end;
|
match,SEQUENCE=swissfel,range=S10cb02$start/s10cb02$end;
|
||||||
Vary,name=S10CB02.MQUA230.k1,step=0.0001;
|
Vary,name=S10CB02.MQUA230.k1,step=0.0001;
|
||||||
Vary,name=S10CB02.MQUA430.k1,step=0.0001;
|
Vary,name=S10CB02.MQUA430.k1,step=0.0001;
|
||||||
@@ -103,7 +105,7 @@ nbety=table(twiss,s10cb02$end,bety);
|
|||||||
nalfy=table(twiss,s10cb02$end,alfy);
|
nalfy=table(twiss,s10cb02$end,alfy);
|
||||||
plot,haxis=s,vaxis=betx,bety,colour=100;
|
plot,haxis=s,vaxis=betx,bety,colour=100;
|
||||||
|
|
||||||
|
Print,text='MATCH POINT: Match into Linac 1';
|
||||||
MATCH,SEQUENCE=SwissFEL,range=#s/s10cb02$end,beta0 = Twiss0;
|
MATCH,SEQUENCE=SwissFEL,range=#s/s10cb02$end,beta0 = Twiss0;
|
||||||
VARY,NAME=sindi02.mqua020.k1,STEP=0.0001,lower=-5.5,upper=5.5;
|
VARY,NAME=sindi02.mqua020.k1,STEP=0.0001,lower=-5.5,upper=5.5;
|
||||||
VARY,NAME=sindi02.mqua030.k1,STEP=0.0001,lower=-5.5,upper=5.5;
|
VARY,NAME=sindi02.mqua030.k1,STEP=0.0001,lower=-5.5,upper=5.5;
|
||||||
@@ -151,7 +153,7 @@ twiss,SEQUENCE=swissfel,range=#s/s10cb10$end,beta0 = Twiss0;
|
|||||||
plot,haxis=s,vaxis=betx,bety,range=#s/#e,colour=100;
|
plot,haxis=s,vaxis=betx,bety,range=#s/#e,colour=100;
|
||||||
|
|
||||||
|
|
||||||
|
Print,text='MATCH POINT: Match into Athos Septum';
|
||||||
MATCH,SEQUENCE=SwissFEL,range=#s/s20sy02$start,beta0 = Twiss0;
|
MATCH,SEQUENCE=SwissFEL,range=#s/s20sy02$start,beta0 = Twiss0;
|
||||||
VARY,NAME=s20sy01.mqua010.k1,STEP=0.0001,lower=-5.5,upper=5.5;
|
VARY,NAME=s20sy01.mqua010.k1,STEP=0.0001,lower=-5.5,upper=5.5;
|
||||||
VARY,NAME=s20sy01.mqua060.k1,STEP=0.0001,lower=-5.5,upper=5.5;
|
VARY,NAME=s20sy01.mqua060.k1,STEP=0.0001,lower=-5.5,upper=5.5;
|
||||||
|
|||||||
+3
-3
@@ -9,10 +9,10 @@
|
|||||||
3) Allo filter to update quadrupoles to be part of the match scripts and not globally written in the code
|
3) Allo filter to update quadrupoles to be part of the match scripts and not globally written in the code
|
||||||
|
|
||||||
|
|
||||||
#) Give feedback on the matching results to GUI
|
|
||||||
#) allow for some progress indication of matching
|
#) allow for some progress indication of matching
|
||||||
|
|
||||||
#) Check for maximum gradient for matched values
|
|
||||||
3) Match for sextupoles!
|
3) Match for sextupoles!
|
||||||
|
|
||||||
#) check why program crashes when matching all 3 beamlines
|
|
||||||
|
|||||||
+30
-16
@@ -2,10 +2,10 @@ import os
|
|||||||
import re
|
import re
|
||||||
from onlinemodel.madx import CMadX
|
from onlinemodel.madx import CMadX
|
||||||
import io
|
import io
|
||||||
import contextlib
|
|
||||||
|
|
||||||
from io import StringIO
|
import copy
|
||||||
import sys
|
|
||||||
|
|
||||||
|
|
||||||
class MatchMaker:
|
class MatchMaker:
|
||||||
def __init__(self,signal = None):
|
def __init__(self,signal = None):
|
||||||
@@ -14,6 +14,7 @@ class MatchMaker:
|
|||||||
self.variables={}
|
self.variables={}
|
||||||
self.scriptdir = None
|
self.scriptdir = None
|
||||||
self.signal=signal
|
self.signal=signal
|
||||||
|
self.matchresult=[]
|
||||||
|
|
||||||
def initScripts(self,target):
|
def initScripts(self,target):
|
||||||
self.scriptdir = self.matchlist[target]
|
self.scriptdir = self.matchlist[target]
|
||||||
@@ -56,6 +57,9 @@ class MatchMaker:
|
|||||||
|
|
||||||
def match(self, om, variables = None, Injector=True, Athos = True, Aramis = False, Porthos = False):
|
def match(self, om, variables = None, Injector=True, Athos = True, Aramis = False, Porthos = False):
|
||||||
|
|
||||||
|
self.matchresult.clear()
|
||||||
|
cwd = os.getcwd()
|
||||||
|
os.chdir(self.scriptdir)
|
||||||
if Athos:
|
if Athos:
|
||||||
target = 'SATBD02'
|
target = 'SATBD02'
|
||||||
else:
|
else:
|
||||||
@@ -67,58 +71,68 @@ class MatchMaker:
|
|||||||
om.setBranch(target, 'SINLH01')
|
om.setBranch(target, 'SINLH01')
|
||||||
madx.updateLattice(om, target) # write lattice
|
madx.updateLattice(om, target) # write lattice
|
||||||
madx.commonHeader('SwissFEL', '#s/#e', None) # sets header
|
madx.commonHeader('SwissFEL', '#s/#e', None) # sets header
|
||||||
madx.madx.call(self.scriptdir + '/initTwiss.madx')
|
madx.madx.call('initTwiss.madx')
|
||||||
if not variables is None:
|
if not variables is None:
|
||||||
madx.definePresets(variables)
|
madx.definePresets(variables)
|
||||||
if Injector:
|
if Injector:
|
||||||
print('Matching Injector ...')
|
print('Matching Injector ...')
|
||||||
madx.madx.call(self.scriptdir+'/matchInjector.madx', chdir=True)
|
madx.madx.call('matchInjector.madx')
|
||||||
self.updateOnlineModel(om,madx.madx, 's[i1].*k[12]|s20cb.*k1|s20sy01.*k1')
|
self.updateOnlineModel(om,madx.madx, 's[i1].*k[12]|s20cb.*k1|s20sy01.*k1')
|
||||||
self.parseMatchOutput(f.getvalue().split('\n'),'Injector')
|
self.parseMatchOutput(f.getvalue().split('\n'),'Injector')
|
||||||
if Athos:
|
if Athos:
|
||||||
f.truncate(0)
|
f.truncate(0)
|
||||||
print('Matching Athos ...')
|
print('Matching Athos ...')
|
||||||
if self.signal:
|
madx.madx.call('matchAthos.madx')
|
||||||
self.signal.emit('Matching Athos ...')
|
|
||||||
madx.madx.call(self.scriptdir+'/matchAthos.madx', chdir=True)
|
|
||||||
self.updateOnlineModel(om, madx.madx, 'sat.*mqua.*k1|sat.*msex.*k2|s20sy02.*m[kq]')
|
self.updateOnlineModel(om, madx.madx, 'sat.*mqua.*k1|sat.*msex.*k2|s20sy02.*m[kq]')
|
||||||
self.parseMatchOutput(f.getvalue().split('\n'), 'Athos')
|
self.parseMatchOutput(f.getvalue().split('\n'), 'Athos')
|
||||||
if Aramis:
|
if Aramis:
|
||||||
f.truncate(0)
|
f.truncate(0)
|
||||||
print('Matching Aramis ...')
|
print('Matching Aramis ...')
|
||||||
if target=='SATBD01':
|
if target=='SATBD02':
|
||||||
target = 'SARUN20'
|
target = 'SARUN20'
|
||||||
om.setBranch(target, 'SINLH01')
|
om.setBranch(target, 'SINLH01')
|
||||||
madx.updateLattice(om, target) # write lattice
|
madx.updateLattice(om, target) # write lattice
|
||||||
madx.commonHeader('SwissFEL', '#s/#e', None) # sets header
|
madx.commonHeader('SwissFEL', '#s/#e', None) # sets header
|
||||||
madx.madx.call(self.scriptdir + '/initTwiss.madx')
|
madx.madx.call('initTwiss.madx')
|
||||||
madx.madx.call(self.scriptdir + '/matchAramis.madx', chdir=True)
|
madx.madx.call('matchAramis.madx')
|
||||||
self.updateOnlineModel(om, madx.madx, 's[3a][0r].*k[12]|s20sy03.*k1')
|
self.updateOnlineModel(om, madx.madx, 's[3a][0r].*k[12]|s20sy03.*k1')
|
||||||
self.parseMatchOutput(f.getvalue().split('\n'), 'Aramis')
|
self.parseMatchOutput(f.getvalue().split('\n'), 'Aramis')
|
||||||
if self.signal:
|
os.chdir(cwd)
|
||||||
self.signal.emit('Matching done')
|
|
||||||
return madx.madx.table.twiss
|
return madx.madx.table.twiss
|
||||||
|
|
||||||
def parseMatchOutput(self, result,prefix,full=False):
|
def parseMatchOutput(self, result,prefix,full=False):
|
||||||
|
|
||||||
|
loc = None
|
||||||
|
locidx = 1
|
||||||
isMatch = False
|
isMatch = False
|
||||||
penalty = 1
|
penalty = 1
|
||||||
report=[]
|
report=[]
|
||||||
|
|
||||||
for line in result:
|
for line in result:
|
||||||
if full:
|
if full:
|
||||||
print(line)
|
print(line)
|
||||||
|
if 'MATCH POINT' in line:
|
||||||
|
isMatch = False
|
||||||
|
print("--------------------------------------")
|
||||||
|
print(line)
|
||||||
|
loc = line.split(':')[1].strip()
|
||||||
continue
|
continue
|
||||||
if 'MATCH SUMMARY' in line:
|
if 'MATCH SUMMARY' in line.upper():
|
||||||
isMatch = True
|
isMatch = True
|
||||||
continue
|
continue
|
||||||
if 'VARIABLE "TAR"' in line:
|
if 'VARIABLE "TAR"' in line:
|
||||||
isMatch = False
|
isMatch = False
|
||||||
print("--------------------------------------")
|
|
||||||
print('MATCHING RESULTS: %s (error: %e)' % (prefix,penalty))
|
print('MATCHING RESULTS: %s (error: %e)' % (prefix,penalty))
|
||||||
|
if loc is None:
|
||||||
|
loc = 'Matchpoint %d' % locidx
|
||||||
|
locidx +=1
|
||||||
|
self.matchresult.append({'Location':loc,'Error':penalty})
|
||||||
if penalty > 1e-5:
|
if penalty > 1e-5:
|
||||||
for rep in report:
|
for rep in report:
|
||||||
print(rep)
|
print(rep)
|
||||||
penalty = 1
|
penalty = 1
|
||||||
|
loc = None
|
||||||
report.clear()
|
report.clear()
|
||||||
continue
|
continue
|
||||||
if isMatch and len(line) > 4:
|
if isMatch and len(line) > 4:
|
||||||
@@ -126,7 +140,7 @@ class MatchMaker:
|
|||||||
penalty = float(line.split('=')[1].strip())
|
penalty = float(line.split('=')[1].strip())
|
||||||
else:
|
else:
|
||||||
report.append(line)
|
report.append(line)
|
||||||
|
return
|
||||||
|
|
||||||
def updateOnlineModel(self,om,madx,filter):
|
def updateOnlineModel(self,om,madx,filter):
|
||||||
reg = re.compile(filter)
|
reg = re.compile(filter)
|
||||||
|
|||||||
@@ -2,9 +2,10 @@ import json
|
|||||||
import copy
|
import copy
|
||||||
import numpy as np
|
import numpy as np
|
||||||
|
|
||||||
|
from PyQt5 import QtWidgets,QtGui
|
||||||
from onlinemodel.core import Facility
|
from onlinemodel.core import Facility
|
||||||
from onlinemodel.madx import CMadX
|
from onlinemodel.madx import CMadX
|
||||||
#from sipbuild.generator.outputs.formatters import variable
|
|
||||||
|
|
||||||
converttwiss= {'betx':'betx','bety':'bety','alfx':'alfx','alfy':'alfy',
|
converttwiss= {'betx':'betx','bety':'bety','alfx':'alfx','alfy':'alfy',
|
||||||
'etax':'dx','etay':'dy','etapx':'dpx','etapy':'dpy','mux':'mux','muy':'muy',
|
'etax':'dx','etay':'dy','etapx':'dpx','etapy':'dpy','mux':'mux','muy':'muy',
|
||||||
@@ -309,6 +310,7 @@ class Model:
|
|||||||
########################################3
|
########################################3
|
||||||
def checkMagnetLimit(self):
|
def checkMagnetLimit(self):
|
||||||
# using magnet calibration
|
# using magnet calibration
|
||||||
|
self.parent.UIReportMagnetResult.clear()
|
||||||
self.updateEnergy(140.)
|
self.updateEnergy(140.)
|
||||||
quad={}
|
quad={}
|
||||||
quad['QFA'] = [0.15, 0.173, 150.0, 91.1, 0.0, 0.74521, -0.00813, -0.03542,
|
quad['QFA'] = [0.15, 0.173, 150.0, 91.1, 0.0, 0.74521, -0.00813, -0.03542,
|
||||||
@@ -347,7 +349,16 @@ class Model:
|
|||||||
if bg in k1brho.keys():
|
if bg in k1brho.keys():
|
||||||
k1max=k1brho[bg]/brho
|
k1max=k1brho[bg]/brho
|
||||||
rat=np.abs(ele.k1/k1max)*100.
|
rat=np.abs(ele.k1/k1max)*100.
|
||||||
print('%s: %5.1f (percent)' % (ele.Name.replace('.','-'),rat))
|
label = '%s: %5.1f %%' % (ele.Name.replace('.','-'),rat)
|
||||||
|
print(label)
|
||||||
|
listitem = QtWidgets.QListWidgetItem(label)
|
||||||
|
color = QtGui.QColor(255,255,255) # white
|
||||||
|
if rat>95:
|
||||||
|
color = QtGui.QColor(255,255,0)
|
||||||
|
if rat>100:
|
||||||
|
color = QtGui.QColor(255,0,0)
|
||||||
|
listitem.setBackground(color)
|
||||||
|
self.parent.UIReportMagnetResult.addItem(listitem)
|
||||||
else:
|
else:
|
||||||
print('%s: Unsupported type %s' % (ele.Name.replace('.','-'),bg))
|
print('%s: Unsupported type %s' % (ele.Name.replace('.','-'),bg))
|
||||||
|
|
||||||
|
|||||||
+37
-2
@@ -14,7 +14,7 @@ from PyQt5 import QtCore, QtGui, QtWidgets
|
|||||||
class Ui_OpticsGUI(object):
|
class Ui_OpticsGUI(object):
|
||||||
def setupUi(self, OpticsGUI):
|
def setupUi(self, OpticsGUI):
|
||||||
OpticsGUI.setObjectName("OpticsGUI")
|
OpticsGUI.setObjectName("OpticsGUI")
|
||||||
OpticsGUI.resize(813, 775)
|
OpticsGUI.resize(938, 791)
|
||||||
self.centralwidget = QtWidgets.QWidget(OpticsGUI)
|
self.centralwidget = QtWidgets.QWidget(OpticsGUI)
|
||||||
self.centralwidget.setObjectName("centralwidget")
|
self.centralwidget.setObjectName("centralwidget")
|
||||||
self.verticalLayout_4 = QtWidgets.QVBoxLayout(self.centralwidget)
|
self.verticalLayout_4 = QtWidgets.QVBoxLayout(self.centralwidget)
|
||||||
@@ -386,6 +386,38 @@ class Ui_OpticsGUI(object):
|
|||||||
spacerItem1 = QtWidgets.QSpacerItem(20, 40, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding)
|
spacerItem1 = QtWidgets.QSpacerItem(20, 40, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding)
|
||||||
self.verticalLayout_3.addItem(spacerItem1)
|
self.verticalLayout_3.addItem(spacerItem1)
|
||||||
self.horizontalLayout_4.addWidget(self.widget)
|
self.horizontalLayout_4.addWidget(self.widget)
|
||||||
|
self.groupBox = QtWidgets.QGroupBox(self.tab_3)
|
||||||
|
font = QtGui.QFont()
|
||||||
|
font.setPointSize(9)
|
||||||
|
font.setBold(True)
|
||||||
|
font.setWeight(75)
|
||||||
|
self.groupBox.setFont(font)
|
||||||
|
self.groupBox.setObjectName("groupBox")
|
||||||
|
self.verticalLayout_2 = QtWidgets.QVBoxLayout(self.groupBox)
|
||||||
|
self.verticalLayout_2.setObjectName("verticalLayout_2")
|
||||||
|
self.label_11 = QtWidgets.QLabel(self.groupBox)
|
||||||
|
self.label_11.setObjectName("label_11")
|
||||||
|
self.verticalLayout_2.addWidget(self.label_11)
|
||||||
|
self.UIReportMatchResult = QtWidgets.QListWidget(self.groupBox)
|
||||||
|
font = QtGui.QFont()
|
||||||
|
font.setPointSize(9)
|
||||||
|
font.setBold(False)
|
||||||
|
font.setWeight(50)
|
||||||
|
self.UIReportMatchResult.setFont(font)
|
||||||
|
self.UIReportMatchResult.setObjectName("UIReportMatchResult")
|
||||||
|
self.verticalLayout_2.addWidget(self.UIReportMatchResult)
|
||||||
|
self.label_12 = QtWidgets.QLabel(self.groupBox)
|
||||||
|
self.label_12.setObjectName("label_12")
|
||||||
|
self.verticalLayout_2.addWidget(self.label_12)
|
||||||
|
self.UIReportMagnetResult = QtWidgets.QListWidget(self.groupBox)
|
||||||
|
font = QtGui.QFont()
|
||||||
|
font.setPointSize(9)
|
||||||
|
font.setBold(False)
|
||||||
|
font.setWeight(50)
|
||||||
|
self.UIReportMagnetResult.setFont(font)
|
||||||
|
self.UIReportMagnetResult.setObjectName("UIReportMagnetResult")
|
||||||
|
self.verticalLayout_2.addWidget(self.UIReportMagnetResult)
|
||||||
|
self.horizontalLayout_4.addWidget(self.groupBox)
|
||||||
spacerItem2 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
|
spacerItem2 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
|
||||||
self.horizontalLayout_4.addItem(spacerItem2)
|
self.horizontalLayout_4.addItem(spacerItem2)
|
||||||
self.TabMaster.addTab(self.tab_3, "")
|
self.TabMaster.addTab(self.tab_3, "")
|
||||||
@@ -477,7 +509,7 @@ class Ui_OpticsGUI(object):
|
|||||||
self.verticalLayout_4.addWidget(self.TabMaster)
|
self.verticalLayout_4.addWidget(self.TabMaster)
|
||||||
OpticsGUI.setCentralWidget(self.centralwidget)
|
OpticsGUI.setCentralWidget(self.centralwidget)
|
||||||
self.menubar = QtWidgets.QMenuBar(OpticsGUI)
|
self.menubar = QtWidgets.QMenuBar(OpticsGUI)
|
||||||
self.menubar.setGeometry(QtCore.QRect(0, 0, 813, 22))
|
self.menubar.setGeometry(QtCore.QRect(0, 0, 938, 22))
|
||||||
self.menubar.setObjectName("menubar")
|
self.menubar.setObjectName("menubar")
|
||||||
self.menuFile = QtWidgets.QMenu(self.menubar)
|
self.menuFile = QtWidgets.QMenu(self.menubar)
|
||||||
self.menuFile.setObjectName("menuFile")
|
self.menuFile.setObjectName("menuFile")
|
||||||
@@ -667,6 +699,9 @@ class Ui_OpticsGUI(object):
|
|||||||
item = self.UIMatchKnobs.horizontalHeaderItem(1)
|
item = self.UIMatchKnobs.horizontalHeaderItem(1)
|
||||||
item.setText(_translate("OpticsGUI", "Value"))
|
item.setText(_translate("OpticsGUI", "Value"))
|
||||||
self.UIReportMagnetStrength.setText(_translate("OpticsGUI", "Report Matched Quadrupole Strength"))
|
self.UIReportMagnetStrength.setText(_translate("OpticsGUI", "Report Matched Quadrupole Strength"))
|
||||||
|
self.groupBox.setTitle(_translate("OpticsGUI", "Matching Results"))
|
||||||
|
self.label_11.setText(_translate("OpticsGUI", "Matching"))
|
||||||
|
self.label_12.setText(_translate("OpticsGUI", "Magnet Strength"))
|
||||||
self.TabMaster.setTabText(self.TabMaster.indexOf(self.tab_3), _translate("OpticsGUI", "Track"))
|
self.TabMaster.setTabText(self.TabMaster.indexOf(self.tab_3), _translate("OpticsGUI", "Track"))
|
||||||
self.groupBox_8.setTitle(_translate("OpticsGUI", "Magnets (Angle/ k1L / k2L)"))
|
self.groupBox_8.setTitle(_translate("OpticsGUI", "Magnets (Angle/ k1L / k2L)"))
|
||||||
self.label_23.setText(_translate("OpticsGUI", "Start"))
|
self.label_23.setText(_translate("OpticsGUI", "Start"))
|
||||||
|
|||||||
+55
-3
@@ -6,8 +6,8 @@
|
|||||||
<rect>
|
<rect>
|
||||||
<x>0</x>
|
<x>0</x>
|
||||||
<y>0</y>
|
<y>0</y>
|
||||||
<width>813</width>
|
<width>938</width>
|
||||||
<height>775</height>
|
<height>791</height>
|
||||||
</rect>
|
</rect>
|
||||||
</property>
|
</property>
|
||||||
<property name="windowTitle">
|
<property name="windowTitle">
|
||||||
@@ -644,6 +644,58 @@
|
|||||||
</layout>
|
</layout>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QGroupBox" name="groupBox">
|
||||||
|
<property name="font">
|
||||||
|
<font>
|
||||||
|
<pointsize>9</pointsize>
|
||||||
|
<weight>75</weight>
|
||||||
|
<bold>true</bold>
|
||||||
|
</font>
|
||||||
|
</property>
|
||||||
|
<property name="title">
|
||||||
|
<string>Matching Results</string>
|
||||||
|
</property>
|
||||||
|
<layout class="QVBoxLayout" name="verticalLayout_2">
|
||||||
|
<item>
|
||||||
|
<widget class="QLabel" name="label_11">
|
||||||
|
<property name="text">
|
||||||
|
<string>Matching</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QListWidget" name="UIReportMatchResult">
|
||||||
|
<property name="font">
|
||||||
|
<font>
|
||||||
|
<pointsize>9</pointsize>
|
||||||
|
<weight>50</weight>
|
||||||
|
<bold>false</bold>
|
||||||
|
</font>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QLabel" name="label_12">
|
||||||
|
<property name="text">
|
||||||
|
<string>Magnet Strength</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QListWidget" name="UIReportMagnetResult">
|
||||||
|
<property name="font">
|
||||||
|
<font>
|
||||||
|
<pointsize>9</pointsize>
|
||||||
|
<weight>50</weight>
|
||||||
|
<bold>false</bold>
|
||||||
|
</font>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
<item>
|
<item>
|
||||||
<spacer name="horizontalSpacer">
|
<spacer name="horizontalSpacer">
|
||||||
<property name="orientation">
|
<property name="orientation">
|
||||||
@@ -805,7 +857,7 @@
|
|||||||
<rect>
|
<rect>
|
||||||
<x>0</x>
|
<x>0</x>
|
||||||
<y>0</y>
|
<y>0</y>
|
||||||
<width>813</width>
|
<width>938</width>
|
||||||
<height>22</height>
|
<height>22</height>
|
||||||
</rect>
|
</rect>
|
||||||
</property>
|
</property>
|
||||||
|
|||||||
Reference in New Issue
Block a user