diff --git a/OpticsTools.py b/OpticsTools.py
index 6d4dced..c7ae160 100644
--- a/OpticsTools.py
+++ b/OpticsTools.py
@@ -41,7 +41,10 @@ class OpticsTools(QtWidgets.QMainWindow, QtCore.QObject, Ui_OpticsGUI):
self.UIMatchOpticsSelect.clear()
for key in self.match.matchlist.keys():
self.UIMatchOpticsSelect.addItem(key)
- self.UIMatchOpticsSelect.setCurrentIndex(0)
+ if phase == 0:
+ self.UIMatchOpticsSelect.setCurrentIndex(0)
+ else:
+ self.UIMatchOpticsSelect.setCurrentIndex(1)
self.updateMatchingCase()
@@ -95,6 +98,8 @@ class OpticsTools(QtWidgets.QMainWindow, QtCore.QObject, Ui_OpticsGUI):
if self.UISaveMatchSettings.isChecked():
fileName = self.match.scriptdir+'/settings.json'
self.saveSettingsdirect(fileName)
+ if self.UIReportMatchStrength.isChecked():
+ self.model.checkMagnetLimit()
def updateMatchingCase(self):
diff --git a/Scripts/Reference-SwissFEL/matchInjector.madx b/Scripts/Reference-SwissFEL/matchInjector.madx
index df8737e..a69c03b 100644
--- a/Scripts/Reference-SwissFEL/matchInjector.madx
+++ b/Scripts/Reference-SwissFEL/matchInjector.madx
@@ -271,11 +271,17 @@ ENDMATCH;
!-----------------
! into septum
+S20SY01.MQUA020.k1= -1.4084554435040675;
+S20SY01.MQUA030.k1= 1.6527516900200674;
+S20SY01.MQUA050.k1= -1.2455405678473916;
+S20SY01.MQUA080.k1= 1.3915642831470632;
+
+
MATCH,SEQUENCE=SwissFEL,range=#s/s20sy02$start,beta0 = Twiss0;
-VARY,NAME=s20sy01.mqua020.k1,STEP=0.0001,lower=-5.5,upper=5.5;
-VARY,NAME=s20sy01.mqua030.k1,STEP=0.0001,lower=-5.5,upper=5.5;
-VARY,NAME=s20sy01.mqua050.k1,STEP=0.0001,lower=-5.5,upper=5.5;
-VARY,NAME=s20sy01.mqua080.k1,STEP=0.0001,lower=-5.5,upper=5.5;
+VARY,NAME=s20sy01.mqua020.k1,STEP=0.0001,lower=-2.2,upper=2.2;
+VARY,NAME=s20sy01.mqua030.k1,STEP=0.0001,lower=-2.2,upper=2.2;
+VARY,NAME=s20sy01.mqua050.k1,STEP=0.0001,lower=-2.2,upper=2.2;
+VARY,NAME=s20sy01.mqua080.k1,STEP=0.0001,lower=-2.2,upper=2.2;
CONSTRAINT,SEQUENCE=swissfel,range=s20sy01$end,betx=Twisssep->BETX;
CONSTRAINT,SEQUENCE=swissfel,range=s20sy01$end,alfx=Twisssep->ALFX;
diff --git a/Scripts/SFPlus/initTwiss.madx b/Scripts/SFPlus/initTwiss.madx
index de079a1..befddc7 100644
--- a/Scripts/SFPlus/initTwiss.madx
+++ b/Scripts/SFPlus/initTwiss.madx
@@ -1,4 +1,16 @@
option,-echo;
! starting condition
-Twiss0: beta0,betx=10,alfx=0,bety=10,alfy=0;
-Twisssep: beta0,betx=10,alfx=-0.2,bety=15,alfy=1;
\ No newline at end of file
+Twiss0: beta0,betx=10,alfx=0,bety=10,alfy=0; ! location:swissfel$start
+TwissM1: beta0,betx=8.72,alfx=1,bety=8.72,alfy=1; ! location:sinsb04.mqua230$end
+TwissM2: beta0, betx = 11.1557, alfx = -1.17, bety = 50, alfy = 0.; ! label: After BC1 location:sindi02.mqua020$start
+Twisssep: beta0,betx=10,alfx=-0.2,bety=20,alfy=1.0; ! label: Septum location:s20sy02$start
+
+
+TwissAT1: beta0,betx=34.45,alfx=1,bety=34.45,alfy=1; ! label: Switchyard - Drift location:satsy02.mqua230
+TwissAT2: beta0,betx=5,alfx=1.77,bety=4,alfy=-1.04; ! label: Switchyard - Double Bend location:satsy03.mqua110
+TwissAT3: beta0,betx=14,alfx=0.7,bety=14,alfy=0.7; ! label: Beam Stopper location:satcb01.mqua430$end
+twissee: beta0,betx=7,bety=30,alfx=0.5,alfy=1.5; ! label: EEHG location:satma01.mqua250$end
+twisspor: beta0, betx=3.9036,alfx=-0.05021,bety=37.6374,alfy=4.4433; ! label: Porthos Septum location:s30cb15$end
+twissARECOL:beta0, betx = 2.304, alfx = -1.4045, bety = 25.929, alfy = -6.363; ! label: Aramis ECOL location:sarma01.mqua010$start
+! variables
+ECOLasBC = 0; ! Description: Flag to configure Aramis Energy collimator as a bunch compressor
\ No newline at end of file
diff --git a/Scripts/SFPlus/matchAramis.madx b/Scripts/SFPlus/matchAramis.madx
index 29b1359..3d59dbd 100644
--- a/Scripts/SFPlus/matchAramis.madx
+++ b/Scripts/SFPlus/matchAramis.madx
@@ -1,48 +1,12 @@
-
-
-
-y_sep=0.01;
-py_sep=0.0;
-
-
-
-S20SY02.MKDC010.cory := SYKICK*2;
-S20SY02.MKAC020.cory := SYKICK*3;
-S20SY02.MKDC030.cory := SYKICK*2;
-S20SY02.MKAC040.cory := SYKICK*3;
-S20SY02.MKDC050.cory := SYKICK*2;
-
-
-
-use,sequence=swissfel;
-select,flag=Error,pattern="SAT.*";
-ealign,DY=0.01;
-
-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.mqua100.k1,STEP=0.0001,lower=-3,upper=3;
-VARY,NAME=s20sy02.mqua140.k1,STEP=0.0001,lower=-3,upper=3;
-VARY,NAME=s20sy02.mqua180.k1,STEP=0.0001,lower=-3,upper=3;
-VARY,NAME=SYKICK,STEP=0.0001;
-CONSTRAINT,SEQUENCE=swissfel,range=S20SY02.mbnd200,y=y_sep;
-CONSTRAINT,SEQUENCE=swissfel,range=S20SY02.mbnd200,py=py_sep;
-CONSTRAINT,SEQUENCE=swissfel,range=S20SY02.mbnd200,dy=-0.007;
-CONSTRAINT,SEQUENCE=swissfel,range=S20SY02.mbnd200,dpy=1.7e-3;
-CONSTRAINT,SEQUENCE=swissfel,range=S20SY02.mqua180, BETY < 60;
-LMDIF,CALLS=8000,TOLERANCE=1.e-21;
-ENDMATCH;
-
-
-
! this statements are needed to have explicit values in the output file
SYKICK=0;
-S20SY02.MKDC010.c1:= SYKICK*2;
-S20SY02.MKAC020.c1:= SYKICK*3;
-S20SY02.MKDC030.c1:= SYKICK*2;
-S20SY02.MKAC040.c1:= SYKICK*3;
-S20SY02.MKDC050.c1:= SYKICK*2;
+S20SY02.MKDC010.cory:= SYKICK*2;
+S20SY02.MKAC020.cory:= SYKICK*3;
+S20SY02.MKDC030.cory:= SYKICK*2;
+S20SY02.MKAC040.cory:= SYKICK*3;
+S20SY02.MKDC050.cory:= SYKICK*2;
s20bc01.mqua010.k1:=1.;
@@ -135,32 +99,13 @@ LMDIF,CALLS=1000,TOLERANCE=1.e-21;
ENDMATCH;
-!L = 9;
-!alpha = 1.5;
-!beta = alpha*L;
-!MATCH,SEQUENCE=Swissfel,range=s20sy02$start/s30cb14$end,beta0=twisssep;
-!VARY,NAME=s30cb10.mqua430.k1,STEP=0.0001;
-!VARY,NAME=s30cb11.mqua430.k1,STEP=0.0001;
-!VARY,NAME=s30cb12.mqua430.k1,STEP=0.0001;
-!VARY,NAME=s30cb13.mqua430.k1,STEP=0.0001;
-!VARY,NAME=s30cb14.mqua430.k1,STEP=0.0001;
-!CONSTRAINT,SEQUENCE=SwissFEL,range= s30cb14.mqua430$end,betx=beta;
-!CONSTRAINT,SEQUENCE=SwissFEL,range= s30cb14.mqua430$end,bety=beta;
-!CONSTRAINT,SEQUENCE=SwissFEL,range= s30cb14.mqua430$end,alfx=alpha;
-!CONSTRAINT,SEQUENCE=SwissFEL,range= s30cb14.mqua430$end,alfy=alpha;
-!CONSTRAINT,SEQUENCE=SwissFEL,range= s30cb14.mqua430$end,X<1;
-!LMDIF,CALLS=1000,TOLERANCE=1.e-21;
-!ENDMATCH;
-
twiss,SEQUENCE=swissfel,range=s20sy02$start/S30cb14$END,beta0=twisssep;
plot,haxis=s,vaxis=betx,bety,range=#s/#e,colour=100;
-Select,flag=Error,pattern="SPO.*";
-EALIGN,DY=0.01;
PSYKICK:=0.1;
@@ -183,27 +128,21 @@ LMDIF, CALLS=1000, TOLERANCE=1.E-21;
ENDMATCH;
-pbetx=3.9036;
-palfx=-0.05021;
-pbety=37.6374;
-palfy=4.4433;
-
-twisspor: beta0, betx=pbetx,alfx=palfx, bety=pbety,alfy=palfy;
-
s30cb13.mqua430.k1 = 0.456;
s30cb14.mqua430.k1 = -1.741;
s30cb15.mqua010.k1 = 1.1533;
s30cb15.mqua020.k1 = -0.0961;
+
MATCH,SEQUENCE=Swissfel,range=s20sy02$start/s30sy01$end,beta0=twisssep;
VARY,NAME=s30cb13.mqua430.k1,STEP=0.0001;
VARY,NAME=s30cb14.mqua430.k1,STEP=0.0001;
VARY,NAME=s30cb15.mqua010.k1,STEP=0.0001;
VARY,NAME=s30cb15.mqua020.k1,STEP=0.0001;
-CONSTRAINT, SEQUENCE=swissfel, RANGE=s30cb15$end,betx=pbetx;
-CONSTRAINT, SEQUENCE=swissfel, RANGE=s30cb15$end,bety=pbety;
-CONSTRAINT, SEQUENCE=swissfel, RANGE=s30cb15$end,alfx=palfx;
-CONSTRAINT, SEQUENCE=swissfel, RANGE=s30cb15$end,alfy=palfy;
+CONSTRAINT, SEQUENCE=swissfel, RANGE=s30cb15$end,betx=twisspor->betx;
+CONSTRAINT, SEQUENCE=swissfel, RANGE=s30cb15$end,bety=twisspor->bety;
+CONSTRAINT, SEQUENCE=swissfel, RANGE=s30cb15$end,alfx=twisspor->alfx;
+CONSTRAINT, SEQUENCE=swissfel, RANGE=s30cb15$end,alfy=twisspor->alfy;
!LMDIF, CALLS=1000, TOLERANCE=1.E-21;
Simplex, CALLS=1000, TOLERANCE=1.E-21;
ENDMATCH;
@@ -214,76 +153,147 @@ plot,haxis=s,vaxis=y,dy,range=s30cb15$start/#e,colour=100;
-
S30cb15.MKDC010.cory := 0;
S30cb15.MKAC020.cory := 0;
S30cb15.MKDC030.cory := 0;
S30cb15.MKAC040.cory := 0;
S30CB15.MKDC050.cory := 0;
-R56 = -000e-6;
-
-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;
-CONSTRAINT,SEQUENCE=swissfel,range=sarcl02.mqua210,re56=R56*0.5;
-LMDIF,CALLS=100,TOLERANCE=1.e-21;
-ENDMATCH;
-
-
-sarcl02.mqua210.k1=-sarcl02.mqua130.k1*0.9;
-
-MATCH,SEQUENCE=swissfel,range=sarcl02$start/sarma01.mqua010,betx=10,alfx=0,bety=10,alfy=0;
-VARY,NAME=sarcl02.mqua250.k1,STEP=0.0001;
-CONSTRAINT,SEQUENCE=swissfel,range=sarcl02.dbpm260$end,dpx=0;
-LMDIF,CALLS=100,TOLERANCE=1.e-21;
-ENDMATCH;
-
-
-sarcl02.mqua310.k1=sarcl02.mqua250.k1;
-sarcl02.mqua350.k1=sarcl02.mqua210.k1;
-sarcl02.mqua460.k1=sarcl02.mqua130.k1;
-
-
-dL=0.625+0.25;
-bx0=25;
-bx=bx0+dL*dL/bx0;
-ax=-dL/bx0;
-by0=0.8;
-by=by0+dL*dL/by0;
-ay=-dL/by0;
-
-
-twiss,sequence=swissfel,range=sarcl02.mqsk300/sarma01.mqua010,betx=bx,alfx=ax,bety=by,alfy=ay;
-
-nbetx= table(twiss,sarma01$start,betx);
-nalfx=-table(twiss,sarma01$start,alfx);
-nbety= table(twiss,sarma01$start,bety);
-nalfy=-table(twiss,sarma01$start,alfy);
-MATCH,SEQUENCE=swissfel,range=S30SY01$start/sarma01.mqua010,beta0=twisspor;
+!--------------------------------------------------
+! Match ecol
+
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!1
+! energy collimator
+if (ECOLasBC ==0.) {
+ sarcl02.mqua130.k1=1.8;
+ R56 = -000e-6;
+
+ 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;
+ CONSTRAINT,SEQUENCE=swissfel,range=sarcl02.mqua210,re56=R56*0.5;
+ LMDIF,CALLS=100,TOLERANCE=1.e-21;
+ ENDMATCH;
+
+ sarcl02.mqua210.k1=-sarcl02.mqua130.k1*0.9;
+ sarcl02.mqua250.k1= sarcl02.mqua130.k1;
+
+ MATCH,SEQUENCE=swissfel,range=SARCL02$START/SARCL02$END,betx=10,alfx=0,bety=10,alfy=0;
+ VARY,NAME=sarcl02.mqua250.k1,STEP=0.0001;
+ CONSTRAINT,SEQUENCE=swissfel,range=sarcl02.dbpm260$end,dpx=0;
+ LMDIF,CALLS=100,TOLERANCE=1.e-21;
+ ENDMATCH;
+
+ sarcl02.mqua310.k1=sarcl02.mqua250.k1;
+ sarcl02.mqua350.k1=sarcl02.mqua210.k1;
+ sarcl02.mqua460.k1=sarcl02.mqua130.k1;
+
+ dL=0.625+0.25;
+ bx0=25;
+ bx=bx0+dL*dL/bx0;
+ ax=-dL/bx0;
+ by0=0.8;
+ by=by0+dL*dL/by0;
+ ay=-dL/by0;
+
+ twiss,sequence=swissfel,range=sarcl02.mqsk300/sarcl02$end,betx=bx,alfx=ax,bety=by,alfy=ay;
+ plot,haxis=s,vaxis=betx,bety,colour=100;
+
+ nbetx= table(twiss,sarcl02$end,betx);
+ nalfx=-table(twiss,sarcl02$end,alfx);
+ nbety= table(twiss,sarcl02$end,bety);
+ nalfy=-table(twiss,sarcl02$end,alfy);
+
+
+ sarcl02.msex255.k2:=110;
+ sarcl02.msex305.k2:=110;
+
+
+ MATCH,chrom,SEQUENCE=sarcl02,range=#s/#e,betx=nbetx,alfx=nalfx,bety=nbety,alfy=nalfy;
+ VARY,NAME=ecol_k2,STEP=0.0001;
+ CONSTRAINT,SEQUENCE=Sarcl02,range=#e,ddx=0;
+ LMDIF,CALLS=100,TOLERANCE=1.e-21;
+ ENDMATCH;
+
+ sarcl02.msex255.k2=ecol_k2;
+ sarcl02.msex305.k2=ecol_k2;
+
+ twiss,chrom,rmatrix,range=SARCL02$START/SARCL02$END,betx=nbetx,alfx=nalfx,bety=nbety,alfy=nalfy;
+ plot,haxis=s,vaxis=betx,colour=100;
+ plot,haxis=s,vaxis=bety,colour=100;
+ plot,haxis=s,vaxis=dx,colour=100;
+ plot,haxis=s,vaxis=ddx,colour=100;
+ plot,haxis=s,vaxis=re56,colour=100;
+
+
+} else {
+ sarcl02.mqua130.k1=0;
+ sarcl02.mqua210.k1=0;
+ sarcl02.mqua250.k1=0;
+ sarcl02.mqua310.k1=0;
+ sarcl02.mqua350.k1=0;
+ sarcl02.mqua460.k1=0;
+ sarcl02.msex255.k2=0;
+ sarcl02.msex305.k2=0;
+}
+
+
+
+
+
+
+
+!---------------------------------
+! match into energy collimator
+! reference point is sarma01-mqua010
+
+
+sarcl01.mqua020.k1 := 0.4550820417;
+sarcl01.mqua050.k1 := -0.02350776516;
+sarcl01.mqua080.k1 := -0.3705426893;
+sarcl01.mqua100.k1 := 0.3937186328;
+sarcl01.mqua140.k1 := 1.214406656;
+sarcl01.mqua190.k1 := -1.475278354;
+
+
+use,sequence=swissfel;
+MATCH,SEQUENCE=swissfel,range=s20SY02$start/sarma02$start,beta0=twisssep;
VARY,NAME=sarcl01.mqua020.k1,STEP=0.0001;
VARY,NAME=sarcl01.mqua050.k1,STEP=0.0001;
VARY,NAME=sarcl01.mqua080.k1,STEP=0.0001;
VARY,NAME=sarcl01.mqua100.k1,STEP=0.0001;
VARY,NAME=sarcl01.mqua140.k1,STEP=0.0001;
VARY,NAME=sarcl01.mqua190.k1,STEP=0.0001;
-!CONSTRAINT,SEQUENCE=swissfel,range=sarcl01.mqua080,betx=beta;
-!CONSTRAINT,SEQUENCE=swissfel,range=sarcl01.mqua080,alfx=alpha;
-!CONSTRAINT,SEQUENCE=swissfel,range=sarcl01.mqua080,bety=beta;
-!CONSTRAINT,SEQUENCE=swissfel,range=sarcl01.mqua080,alfy=alpha;
-
-CONSTRAINT,SEQUENCE=swissfel,range=sarcl02$start,betx=nbetx;
-CONSTRAINT,SEQUENCE=swissfel,range=sarcl02$start,alfx=nalfx;
-CONSTRAINT,SEQUENCE=swissfel,range=sarcl02$start,bety=nbety;
-CONSTRAINT,SEQUENCE=swissfel,range=sarcl02$start,alfy=nalfy;
-CONSTRAINT,SEQUENCE=swissfel,range=sarcl01.mqua050,bety<30;
-CONSTRAINT,SEQUENCE=swissfel,range=sarcl01.mqua190,betx<30;
+if (ECOLasBC ==0.){
+ CONSTRAINT,SEQUENCE=swissfel,range=sarma01.mqua010$start,betx=twissARECOL->BETX;
+ CONSTRAINT,SEQUENCE=swissfel,range=sarma01.mqua010$start,alfx=twissARECOL->ALFX;
+ CONSTRAINT,SEQUENCE=swissfel,range=sarma01.mqua010$start,bety=twissARECOL->BETY;
+ CONSTRAINT,SEQUENCE=swissfel,range=sarma01.mqua010$start,alfy=twissARECOL->ALFY;
+ CONSTRAINT,SEQUENCE=swissfel,range=sarcl01.mqua050,bety<30;
+ CONSTRAINT,SEQUENCE=swissfel,range=sarcl01.mqua190,betx<30;
+ } else {
+ CONSTRAINT,SEQUENCE=swissfel,range=sarcl02.dscr280$start,betx = 10;
+ CONSTRAINT,SEQUENCE=swissfel,range=sarcl02.dscr280$start,alfx=0.14;
+ CONSTRAINT,SEQUENCE=swissfel,range=sarcl02.dscr280$start,bety = 10;
+ CONSTRAINT,SEQUENCE=swissfel,range=sarcl02.dscr280$start,alfy=0.14;
+ CONSTRAINT,SEQUENCE=swissfel,range=sarcl01.mqua050,bety<70;
+ CONSTRAINT,SEQUENCE=swissfel,range=sarcl01.mqua190,betx<70;
+ }
LMDIF,CALLS=100,TOLERANCE=1.e-21;
ENDMATCH;
+
+twiss,sequence=swissfel,range=s20SY02$start/sarcl01$start,beta0=twisssep;
+plot,haxis=s,vaxis=betx,bety,range=S30CB15$START/SARCL02$END,colour=100;
+
+
+
+
+
+!-----------------
muAR=0.17;
match,SEQUENCE=swissfel,range=sarun02$start/sarun03$end;
Vary,name=sarun02.mqua080.k1,step=0.0001;
@@ -342,9 +352,20 @@ CONSTRAINT,SEQUENCE=swissfel,range=sarun02$start,x<5;
LMDIF,CALLS=100,TOLERANCE=1.e-21;
ENDMATCH;
+! from eduard
+SARUN18.MQUA080.K1= -6.305232722687153e-01;
+SARUN19.MQUA080.K1= 1.167256186348939e+00;
+SARUN20.mqua220.K1= 8.363412365675689e-01;
+SARBD01.MQUA010.K1= -2.099999992065428e+00;
+SARBD01.MQUA020.K1= -2.099998228837625e+00;
+SARBD02.MQUA030.K1= -2.099998942347312e+00;
+!The matching routine imposes bx=50 and ax=0 at the TDS,
+!sin(mux)~1 between the TDS and the dump screen,
+!and minimization of by/dispy^2 at the dump screen.
+!I find a solution fulfilling the conditions with by=1.136313m and dispy= 2.534262e-01 m at the screen.
-twiss,SEQUENCE=swissfel,range=#s/sarun19$end,beta0=twiss0;
+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=dx,dy,range=#s/#e,colour=100;
diff --git a/Scripts/SFPlus/matchAthos.madx b/Scripts/SFPlus/matchAthos.madx
index 3af9c2c..30b25ab 100644
--- a/Scripts/SFPlus/matchAthos.madx
+++ b/Scripts/SFPlus/matchAthos.madx
@@ -46,27 +46,28 @@ plot,haxis=s,vaxis=betx,bety,range=#s/#e,colour=100;
plot,haxis=s,vaxis=y,dy,range=#s/#e,colour=100;
+satsy01.mqua110.k1=-0.7;
+
-satsy01.mqua040.k1=0.7;
MATCH,SEQUENCE=Swissfel,range=s20sy02$start/satsy02$end,beta0=twisssep;
-VARY,NAME=satsy01.mqua010.k1,STEP=0.0001;
VARY,NAME=satsy01.mqua020.k1,STEP=0.0001;
-VARY,NAME=satsy01.mqua030.k1,STEP=0.0001;
+VARY,NAME=satsy01.mqua050.k1,STEP=0.0001;
+VARY,NAME=satsy01.mqua080.k1,STEP=0.0001;
VARY,NAME=satsy02.mqua010.k1,STEP=0.0001;
-
-
+!VARY,NAME=satsy01.mqua110.k1,STEP=0.0001;
CONSTRAINT,SEQUENCE=SwissFEL,range= satsy01$end,DX=0.0;
CONSTRAINT,SEQUENCE=SwissFEL,range= satsy01$end,DPX=0.0;
CONSTRAINT,SEQUENCE=SwissFEL,range= satsy02.mbnd200,DY=0.0;
CONSTRAINT,SEQUENCE=SwissFEL,range= satsy02.mbnd200,DPY=0.0;
-LMDIF,CALLS=1000,TOLERANCE=1.e-21;
+JACOBIAN,CALLS=1000,TOLERANCE=1.e-21;
+SIMPLEX,CALLS=1000,TOLERANCE=1.e-21;
ENDMATCH;
-twiss,SEQUENCE=swissfel,range=s20sy02$start/Satsy02.mbnd200,beta0=twisssep;
+twiss,SEQUENCE=swissfel,range=s20sy02$start/Satsy02.mqua210$start,beta0=twisssep;
plot,haxis=s,vaxis=betx,bety,range=#s/#e,colour=100;
plot,haxis=s,vaxis=dx,dy,range=#s/#e,colour=100;
@@ -74,24 +75,25 @@ plot,haxis=s,vaxis=dx,dy,range=#s/#e,colour=100;
MATCH,SEQUENCE=SwissFEL,range=s20sy02$start/satsy03$end,beta0=twisssep;
-VARY,NAME=satsy03.mqua110.k1,STEP=0.0001;
+VARY,NAME=satsy03.mqua120.k1,STEP=0.0001;
CONSTRAINT,SEQUENCE=SwissFEL,range= satsy03.mbnd200,DX=0.0;
LMDIF,CALLS=1000,TOLERANCE=1.e-21;
ENDMATCH;
-L = 38-9.8+6.25;
+satsy02.mqua210.k1=1;
+satsy02.mqua230.k1=0;
+satsy02.mqua240.k1=0;
+satsy02.mqua260.k1=0;
-alpha=1.0;
-beta = L*alpha;
MATCH,SEQUENCE=SwissFEL,range=s20sy02$start/satsy03$end,beta0=twisssep;
-VARY,NAME=satsy02.mqua205.k1,STEP=0.0001;
VARY,NAME=satsy02.mqua210.k1,STEP=0.0001;
-VARY,NAME=satsy02.mqua220.k1,STEP=0.0001;
VARY,NAME=satsy02.mqua230.k1,STEP=0.0001;
-CONSTRAINT,SEQUENCE=SwissFEL,range= satsy02.mqua230,betx=beta;
-CONSTRAINT,SEQUENCE=SwissFEL,range= satsy02.mqua230,bety=beta;
-CONSTRAINT,SEQUENCE=SwissFEL,range= satsy02.mqua230,alfx=alpha;
-CONSTRAINT,SEQUENCE=SwissFEL,range= satsy02.mqua230,alfy=alpha;
+VARY,NAME=satsy02.mqua240.k1,STEP=0.0001;
+VARY,NAME=satsy02.mqua260.k1,STEP=0.0001;
+CONSTRAINT,SEQUENCE=SwissFEL,range= satsy02.mqua260$end,betx=twissAT1->BETX;
+CONSTRAINT,SEQUENCE=SwissFEL,range= satsy02.mqua260$end,bety=twissAT1->BETY;
+CONSTRAINT,SEQUENCE=SwissFEL,range= satsy02.mqua260$end,alfx=twissAT1->ALFX;
+CONSTRAINT,SEQUENCE=SwissFEL,range= satsy02.mqua260$end,alfy=twissAT1->ALFY;
LMDIF,CALLS=1000,TOLERANCE=1.e-21;
ENDMATCH;
@@ -99,13 +101,13 @@ ENDMATCH;
MATCH,SEQUENCE=SwissFEL,range=s20sy02$start/satsy03$end,beta0=twisssep;
VARY,NAME=satsy02.mqua300.k1,STEP=0.0001;
VARY,NAME=satsy02.mqua310.k1,STEP=0.0001;
-VARY,NAME=satsy02.mqua320.k1,STEP=0.0001;
VARY,NAME=satsy02.mqua330.k1,STEP=0.0001;
+VARY,NAME=satsy02.mqua340.k1,STEP=0.0001;
-CONSTRAINT,SEQUENCE=SwissFEL,range= satsy03.mqua110,betx=5;
-CONSTRAINT,SEQUENCE=SwissFEL,range= satsy03.mqua110,bety=4;
-CONSTRAINT,SEQUENCE=SwissFEL,range= satsy03.mqua110,alfx=1.77;
-CONSTRAINT,SEQUENCE=SwissFEL,range= satsy03.mqua110,alfy=-1.04;
+CONSTRAINT,SEQUENCE=SwissFEL,range= satsy03.mqua120,betx=twissAT2->BETX;
+CONSTRAINT,SEQUENCE=SwissFEL,range= satsy03.mqua120,bety=twissAT2->BETY;
+CONSTRAINT,SEQUENCE=SwissFEL,range= satsy03.mqua120,alfx=twissAT2->ALFX;
+CONSTRAINT,SEQUENCE=SwissFEL,range= satsy03.mqua120,alfy=twissAT2->ALFY;
LMDIF,CALLS=1000,TOLERANCE=1.e-21;
ENDMATCH;
@@ -115,12 +117,12 @@ twiss,SEQUENCE=swissfel,range=s20sy02$start/Satsy03.mbnd200,beta0=twisssep;
plot,haxis=s,vaxis=betx,bety,range=#s/#e,colour=100;
plot,haxis=s,vaxis=dx,dy,range=#s/#e,colour=100;
-
+exit;
MATCH,SEQUENCE=SwissFEL,range=s20sy02$start/satbc01$end,beta0=twisssep;
-VARY,NAME=satsy03.mqua210.k1,STEP=0.0001;
+VARY,NAME=satsy03.mqua220.k1,STEP=0.0001;
VARY,NAME=satsy03.mqua310.k1,STEP=0.0001;
-VARY,NAME=satsy03.mqua410.k1,STEP=0.0001;
+VARY,NAME=satsy03.mqua430.k1,STEP=0.0001;
CONSTRAINT,SEQUENCE=SwissFEL,range= satbc01.mbnd400,BETX<5;
CONSTRAINT,SEQUENCE=SwissFEL,range= satbc01.mbnd400,BETY<60;
CONSTRAINT,SEQUENCE=SwissFEL,range= satbc01.mbnd100,BETX<80;
@@ -149,9 +151,9 @@ ENDMATCH;
MATCH,SEQUENCE=SwissFEL,range=s20sy02$start/satcl01$end,beta0=twisssep;
VARY,NAME=satbc01.mqua410.k1,STEP=0.0001;
-VARY,NAME=satbc01.mqua420.k1,STEP=0.0001;
VARY,NAME=satbc01.mqua430.k1,STEP=0.0001;
-VARY,NAME=satbc01.mqua440.k1,STEP=0.0001;
+VARY,NAME=satbc01.mqua450.k1,STEP=0.0001;
+VARY,NAME=satbc01.mqua470.k1,STEP=0.0001;
CONSTRAINT,SEQUENCE=SwissFEL,range= satcl01.msex160, alfx = 0;
CONSTRAINT,SEQUENCE=SwissFEL,range= satcl01.msex160, alfy = 0;
@@ -162,8 +164,8 @@ ENDMATCH;
MATCH,SEQUENCE=SwissFEL,range=s20sy02$start/satdi01$end,beta0=twisssep;
VARY,NAME=satdi01.mqua025.k1,STEP=0.0001;
-CONSTRAINT,SEQUENCE=SwissFEL,range= satdi01.dscr065$start, betx<18;
-CONSTRAINT,SEQUENCE=SwissFEL,range= satdi01.dscr065$start, bety<18;
+CONSTRAINT,SEQUENCE=SwissFEL,range= satdi01.dscr065$start, betx<19;
+CONSTRAINT,SEQUENCE=SwissFEL,range= satdi01.dscr065$start, bety<19;
LMDIF,CALLS=1000,TOLERANCE=1.e-21;
ENDMATCH;
@@ -174,19 +176,6 @@ plot,haxis=s,vaxis=re56,range=#s/#e,colour=100;
-
-
-
-
-
-
-
-
-
-
-
-
-
scl:=1.5;
ss:=0.83;
@@ -210,10 +199,10 @@ VARY,NAME=satdi01.mqua230.k1,STEP=0.0001,lower=-1.8,upper=1.8;
VARY,NAME=satdi01.mqua250.k1,STEP=0.0001,lower=-1.8,upper=1.8;
VARY,NAME=satcb01.mqua230.k1,STEP=0.0001,lower=-1.8,upper=1.8;
VARY,NAME=satcb01.mqua430.k1,STEP=0.0001,lower=-1.8,upper=1.8;
-CONSTRAINT,SEQUENCE=swissfel,range=satcb01.mqua430$end,betx=beta;
-CONSTRAINT,SEQUENCE=swissfel,range=satcb01.mqua430$end,alfx=alpha;
-CONSTRAINT,SEQUENCE=swissfel,range=satcb01.mqua430$end,bety=beta;
-CONSTRAINT,SEQUENCE=swissfel,range=satcb01.mqua430$end,alfy=alpha;
+CONSTRAINT,SEQUENCE=swissfel,range=satcb01.mqua430$end,betx=twissAT3->BETX;
+CONSTRAINT,SEQUENCE=swissfel,range=satcb01.mqua430$end,alfx=twissAT3->ALFX;
+CONSTRAINT,SEQUENCE=swissfel,range=satcb01.mqua430$end,bety=twissAT3->BETY;
+CONSTRAINT,SEQUENCE=swissfel,range=satcb01.mqua430$end,alfy=twissAT3->ALFY;
CONSTRAINT,SEQUENCE=swissfel,range=satcb01.mqua430$start,x<10;
CONSTRAINT,SEQUENCE=swissfel,range=satcb01.mqua430$start,y<10;
CONSTRAINT,SEQUENCE=swissfel,range=satcb01.mqua430$start,DX<10;
@@ -298,13 +287,10 @@ ENDMATCH;
-
-
twiss,SEQUENCE=swissfel,range=satma01.mqua250$end/satun11$end,beta0=twissee;
plot,haxis=s,vaxis=betx,bety,range=#s/#e,colour=100;
-
scl=4;
satcb02.mqua230.k1=scl*0.2;
satcb02.mqua430.k1=-scl*0.2;
@@ -313,14 +299,6 @@ satcb03.mqua430.k1=-scl*0.2;
-satma01.mqua120.k1=0;
-satma01.mqua140.k1=0;
-satma01.mqua160.k1=0;
-satma01.mqua180.k1=0;
-satma01.mqua230.k1=0;
-satma01.mqua250.k1=0;
-
-
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=satma01.mqua120.k1,STEP=0.0001,lower=-3.8,upper=3.8;
@@ -329,10 +307,10 @@ VARY,NAME=satma01.mqua160.k1,STEP=0.0001,lower=-3.8,upper=3.8;
VARY,NAME=satma01.mqua180.k1,STEP=0.0001,lower=-3.8,upper=3.8;
VARY,NAME=satma01.mqua230.k1,STEP=0.0001,lower=-3.0,upper=3.0;
VARY,NAME=satma01.mqua250.k1,STEP=0.0001,lower=-3.0,upper=3.0;
-CONSTRAINT,SEQUENCE=swissfel,range=satma01.mqua250$end,betx=eebetx;
-CONSTRAINT,SEQUENCE=swissfel,range=satma01.mqua250$end,bety=eebety;
-CONSTRAINT,SEQUENCE=swissfel,range=satma01.mqua250$end,alfx=eealfx;
-CONSTRAINT,SEQUENCE=swissfel,range=satma01.mqua250$end,alfy=eealfy;
+CONSTRAINT,SEQUENCE=swissfel,range=satma01.mqua250$end,betx=twissee->BETX;
+CONSTRAINT,SEQUENCE=swissfel,range=satma01.mqua250$end,bety=twissee->BETY;
+CONSTRAINT,SEQUENCE=swissfel,range=satma01.mqua250$end,alfx=twissee->ALFX;
+CONSTRAINT,SEQUENCE=swissfel,range=satma01.mqua250$end,alfy=twissee->ALFY;
CONSTRAINT,SEQUENCE=swissFEL,range=satma01.mqua120$start, betx <70;
CONSTRAINT,SEQUENCE=swissFEL,range=satma01.mqua120$start, bety <70;
CONSTRAINT,SEQUENCE=swissFEL,range=satma01.mqua140$start, betx <70;
diff --git a/Scripts/SFPlus/matchInjector.madx b/Scripts/SFPlus/matchInjector.madx
index 3d40296..7028c97 100644
--- a/Scripts/SFPlus/matchInjector.madx
+++ b/Scripts/SFPlus/matchInjector.madx
@@ -1,14 +1,7 @@
-! reg filter for updated variables
-updateInjector := "S[I1].*k1;S20SY01.*k1";
! into laser heater
-sinlh01.mqua020.k1 = 0;
-sinlh01.mqua040.k1 = 0;
-sinlh01.mqua070.k1 = 0;
-sinsb03.mqua130.k1 = 0;
-sinsb03.mqua230.k1 = 0;
L = 8.72;
alpha = 1;
@@ -25,10 +18,10 @@ VARY,NAME=sinsb03.MQUA230.k1,STEP=0.0001;
VARY,NAME=sinsb04.MQUA130.k1,STEP=0.0001;
VARY,NAME=sinsb04.MQUA230.k1,STEP=0.0001;
-CONSTRAINT,SEQUENCE=SwissFEL,range=sinsb04.mqua230$end, alfx = alpha;
-CONSTRAINT,SEQUENCE=SwissFEL,range=sinsb04.mqua230$end, alfy = alpha;
-CONSTRAINT,SEQUENCE=SwissFEL,range=sinsb04.mqua230$end, betx = beta;
-CONSTRAINT,SEQUENCE=SwissFEL,range=sinsb04.mqua230$end, bety = beta;
+CONSTRAINT,SEQUENCE=SwissFEL,range=sinsb04.mqua230$end, alfx = TwissM1->ALFX;
+CONSTRAINT,SEQUENCE=SwissFEL,range=sinsb04.mqua230$end, alfy = TwissM1->ALFY;
+CONSTRAINT,SEQUENCE=SwissFEL,range=sinsb04.mqua230$end, betx = TwissM1->BETX;
+CONSTRAINT,SEQUENCE=SwissFEL,range=sinsb04.mqua230$end, bety = TwissM1->BETY;
CONSTRAINT,SEQUENCE=SwissFEL,range=sinsb04.mqua130$end, betx < 100;
CONSTRAINT,SEQUENCE=SwissFEL,range=sinsb04.mqua130$end, bety < 100;
CONSTRAINT,SEQUENCE=SwissFEL,range=sinlh01.mqua070$end, betx < 100;
@@ -37,11 +30,7 @@ LMDIF,CALLS=1000,TOLERANCE=1.e-21;
SIMPLEX,CALLS=1000,TOLERANCE=1.e-21;
ENDMATCH;
-sinbc01.mqua020.k1=0.0;
-sinbc01.mqua050.k1=0;
-sinbc01.mqua070.k1=0;
-sinbc01.mqua090.k1=0;
-sinbc01.mqua110.k1=0;
+
twiss,SEQUENCE=swissfel,range=#s/sinbc01$end,beta0 = Twiss0;
plot,haxis=s,vaxis=betx,bety,range=#s/#e,colour=100;
@@ -64,27 +53,7 @@ twiss,SEQUENCE=swissfel,range=#s/sinbc02$end,beta0 = Twiss0;
plot,haxis=s,vaxis=betx,bety,range=#s/#e,colour=100;
sinma01.mqua020.k1=-0.1;
-sinma01.mqua030.k1=0;
-sinma01.mqua050.k1=0;
-sincb01.mqua230.k1=0;
-sincb01.mqua430.k1=0;
-
-sindi01.mqua020.k1=0;
-sindi01.mqua070.k1=0;
-
-sindi02.mqua020.k1=0.0;
-sindi02.mqua030.k1=0.0;
-sindi02.mqua050.k1=0;
-sindi02.mqua060.k1=0;
-sindi02.mqua090.k1=0;
-
-bc1betx=11.1557;
-bc1alfx=-1.17;
-bc1bety=50;
-bc1alfy=0;
-
-beta=50;
MATCH,SEQUENCE=SwissFEL,range=#s/sindi02$end,beta0 = Twiss0;
VARY,NAME=sinma01.MQUA020.k1,STEP=0.0001;
VARY,NAME=sinma01.MQUA030.k1,STEP=0.0001;
@@ -93,10 +62,10 @@ VARY,NAME=sincb01.MQUA230.k1,STEP=0.0001;
VARY,NAME=sincb01.MQUA430.k1,STEP=0.0001;
VARY,NAME=sindi01.mqua020.k1,STEP=0.0001,lower=-3.5,upper=3.5;
VARY,NAME=sindi01.mqua070.k1,STEP=0.0001,lower=-3.5,upper=3.5;
-CONSTRAINT,SEQUENCE=SwissFEL,range=sindi02.mqua020$start,bety=bc1bety;
-CONSTRAINT,SEQUENCE=SwissFEL,range=sindi02.mqua020$start,alfy=bc1alfy;
-CONSTRAINT,SEQUENCE=SwissFEL,range=sindi02.mqua020$start,betx=bc1betx;
-CONSTRAINT,SEQUENCE=SwissFEL,range=sindi02.mqua020$start,alfx=bc1alfx;
+CONSTRAINT,SEQUENCE=SwissFEL,range=sindi02.mqua020$start,bety=TwissM2->BETY;
+CONSTRAINT,SEQUENCE=SwissFEL,range=sindi02.mqua020$start,alfy=TwissM2->ALFY;
+CONSTRAINT,SEQUENCE=SwissFEL,range=sindi02.mqua020$start,betx=TwissM2->BETX;
+CONSTRAINT,SEQUENCE=SwissFEL,range=sindi02.mqua020$start,alfx=TwissM2->ALFX;
CONSTRAINT,SEQUENCE=SwissFEL,range=sinma01$end, betx < 100;
CONSTRAINT,SEQUENCE=SwissFEL,range=sinma01$end, bety < 100;
CONSTRAINT,SEQUENCE=SwissFEL,range=sincb01$end, betx < 100;
@@ -110,28 +79,28 @@ twiss,SEQUENCE=swissfel,range=#s/sindi02$end,beta0 = Twiss0;
plot,haxis=s,vaxis=betx,bety,range=sinbc02$start/#e,colour=100;
-s10cb01.mqua230.k1=0.2;
-s10cb01.mqua430.k1=-0.2;
+s10cb02.mqua230.k1=0.2;
+s10cb02.mqua430.k1=-0.2;
muLin1=0.2;
-match,SEQUENCE=swissfel,range=S10cb01$start/s10cb01$end;
-Vary,name=S10CB01.MQUA230.k1,step=0.0001;
-Vary,name=S10CB01.MQUA430.k1,step=0.0001;
-constraint,sequence=swissfel,range=s10cb01$end,mux=muLin1;
-constraint,sequence=swissfel,range=s10cb01$end,muy=muLin1;
+match,SEQUENCE=swissfel,range=S10cb02$start/s10cb02$end;
+Vary,name=S10CB02.MQUA230.k1,step=0.0001;
+Vary,name=S10CB02.MQUA430.k1,step=0.0001;
+constraint,sequence=swissfel,range=s10cb02$end,mux=muLin1;
+constraint,sequence=swissfel,range=s10cb02$end,muy=muLin1;
lmdif,calls=100,tolerance=1e-21;
endmatch;
-s10cb02.mqua230.k1 = s10cb01.mqua230.k1;
-s10cb02.mqua430.k1 = s10cb01.mqua430.k1;
+s10cb01.mqua230.k1 = s10cb02.mqua230.k1;
+s10cb01.mqua430.k1 = s10cb02.mqua430.k1;
-twiss,SEQUENCE=swissfel,range=s10cb01$start/s10cb01$end;
+twiss,SEQUENCE=swissfel,range=s10cb02$start/s10cb02$end;
-nbetx=table(twiss,s10cb01$end,betx);
-nalfx=table(twiss,s10cb01$end,alfx);
-nbety=table(twiss,s10cb01$end,bety);
-nalfy=table(twiss,s10cb01$end,alfy);
+nbetx=table(twiss,s10cb02$end,betx);
+nalfx=table(twiss,s10cb02$end,alfx);
+nbety=table(twiss,s10cb02$end,bety);
+nalfy=table(twiss,s10cb02$end,alfy);
plot,haxis=s,vaxis=betx,bety,colour=100;
@@ -178,33 +147,24 @@ S10CB10.MQUA430.k1=S10CB02.MQUA230.k1;
S10CB11.MQUA230.k1=S10CB02.MQUA430.k1;
-
-
twiss,SEQUENCE=swissfel,range=#s/s10cb10$end,beta0 = Twiss0;
plot,haxis=s,vaxis=betx,bety,range=#s/#e,colour=100;
-s20sy01.mqua010.k1:=0;
-s20sy01.mqua020.k1:=0;
-s20sy01.mqua030.k1:=0;
-s20sy01.mqua040.k1:=0;
-
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.mqua020.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.mqua030.k1,STEP=0.0001,lower=-5.5,upper=5.5;
VARY,NAME=s20sy01.mqua040.k1,STEP=0.0001,lower=-5.5,upper=5.5;
-!VARY,NAME=s20sy01.mqua080.k1,STEP=0.0001,lower=-5.5,upper=5.5;
-CONSTRAINT,SEQUENCE=swissfel,range=s20sy01$end,betx=10;
-CONSTRAINT,SEQUENCE=swissfel,range=s20sy01$end,alfx=-0.2;
-CONSTRAINT,SEQUENCE=swissfel,range=s20sy01$end,bety=15;
-CONSTRAINT,SEQUENCE=swissfel,range=s20sy01$end,alfy=1;
+CONSTRAINT,SEQUENCE=swissfel,range=s20sy01$end,betx=twisssep->BETX;
+CONSTRAINT,SEQUENCE=swissfel,range=s20sy01$end,alfx=twisssep->ALFX;
+CONSTRAINT,SEQUENCE=swissfel,range=s20sy01$end,bety=twisssep->BETY;
+CONSTRAINT,SEQUENCE=swissfel,range=s20sy01$end,alfy=twisssep->ALFY;
!CONSTRAINT,SEQUENCE=swissfel,range=s20sy01.mqua020$end,bety<80;
LMDIF,CALLS=1000,TOLERANCE=1.e-21;
ENDMATCH;
-!Twisssep: beta0,betx=20,alfx=-0.5,bety=15,alfy=1;
twiss,SEQUENCE=swissfel,range=#s/s20sy01$end,beta0 = Twiss0;
plot,haxis=s,vaxis=betx,bety,range=s10cb08$start/#e,colour=100;
diff --git a/matchmaker.py b/matchmaker.py
index 12efb9f..6b42526 100644
--- a/matchmaker.py
+++ b/matchmaker.py
@@ -57,9 +57,9 @@ class MatchMaker:
def match(self, om, variables = None, Injector=True, Athos = True, Aramis = False, Porthos = False):
if Athos:
- target = 'SATBD01'
+ target = 'SATBD02'
else:
- target = 'SARBD01'
+ target = 'SARBD02'
f = io.StringIO()
madx = CMadX(f)
diff --git a/model.py b/model.py
index 84ce3fa..97f5bf9 100644
--- a/model.py
+++ b/model.py
@@ -305,3 +305,44 @@ class Model:
return start,end
+########################################3
+ def checkMagnetLimit(self):
+ # using magnet calibration
+ quad={}
+ quad['QFA'] = [0.15, 0.173, 150.0, 91.1, 0.0, 0.74521, -0.00813, -0.03542,
+ 22.5e-3] # From MEASUREMENT. Documentation: https://intranet.psi.ch/pub/Swiss_FEL/FinQuadrupoles/QFA.pdf
+ quad['QFB'] = [0.08, 0.11, 10.0, 4.9, 0.0, 0.03815, -1.8e-4, -0.7e-3,
+ 22.5e-3] # From MEASUREMENT(?). Documentation(Implementaion): the matlab version Injector on-line model, Curr2KLquad.m
+ quad['QFC'] = [0.08, 0.11, 10.0, 10.1, 0.0, 0.5, 0.0, 0.0,
+ 1.0] # From DESIGN(?). Documentation: Injector wiki, Subsystems (as of 14th Aug 2014)
+ quad['QFD'] = [0.15, 0.1628, 10.0, 5.6, 0.0, 0.23313, -27.6e-4, 15.5e-4,
+ 0.011] # From Measurement. Documentation: FEL-SS88-007-7.pdf (found in Alfresco: Company Home > Projects > SwissFEL > Facility > 8850 Magnets)
+ quad['QFF'] = [0.08, 0.0875, 10.0, 2.9, 0.0, 0.32897, -0.5e-4, -42.9e-4,
+ 0.006] # From Measurement. Documentation: FEL-SS88-008-8.pdf (found in Alfresco)
+ quad['QFM'] = [0.3, 0.311, 50.0, 21.1, 0.0, 0.64541, -0.00296, -0.00617, 0.011] # From Measurement
+
+ k1brho={}
+ for key in quad.keys():
+ [PhysicalLength, MagneticLength, Imax, Ilin, b0, b1, b2, b3, R] = quad[key] # quick conversion for quadrupoles and sextupoles
+ if abs(Imax) < Ilin:
+ B = b0 + b1
+ else:
+ B = b0 + b1 + b2 +b3
+ k1brho[key]= B * MagneticLength/R/PhysicalLength
+ #k1 = val/brho
+
+ elements=self.getElements()
+ print('Relative Magnet Strength')
+ for ele in elements:
+ if 'MQUA' in ele.Name.upper():
+ bg = ele.Baugruppe
+ Energy = self.om.EnergyAt(ele.Name)[0]*1e-6
+ gamma = (Energy + 0.511) / 0.511 # Energy in units of MeV since 29.06.2015
+ beta = np.sqrt(1 - 1 / gamma ** 2)
+ p = 511e3 * beta * gamma / 1e9 # momentum in GeV/c
+ brho = p / 0.299792 # P[GeV/c]=0.3*Brho[T.m]
+ if bg in k1brho.keys():
+ k1max=k1brho[bg]/brho
+ rat=np.abs(ele.k1/k1max)*100.
+ print('%s: %5.1f (percent)' % (ele.Name.replace('.','-'),rat))
+
diff --git a/ui/OpticsToolsGui.py b/ui/OpticsToolsGui.py
index d666b16..c317936 100644
--- a/ui/OpticsToolsGui.py
+++ b/ui/OpticsToolsGui.py
@@ -356,9 +356,9 @@ class Ui_OpticsGUI(object):
self.UIInitAllMagnets = QtWidgets.QCheckBox(self.widget)
self.UIInitAllMagnets.setObjectName("UIInitAllMagnets")
self.verticalLayout_3.addWidget(self.UIInitAllMagnets)
- self.UIModifyKnobs = QtWidgets.QCheckBox(self.widget)
- self.UIModifyKnobs.setObjectName("UIModifyKnobs")
- self.verticalLayout_3.addWidget(self.UIModifyKnobs)
+ self.UIReportMatchStrength = QtWidgets.QCheckBox(self.widget)
+ self.UIReportMatchStrength.setObjectName("UIReportMatchStrength")
+ self.verticalLayout_3.addWidget(self.UIReportMatchStrength)
self.label_19 = QtWidgets.QLabel(self.widget)
font = QtGui.QFont()
font.setBold(True)
@@ -366,6 +366,9 @@ class Ui_OpticsGUI(object):
self.label_19.setFont(font)
self.label_19.setObjectName("label_19")
self.verticalLayout_3.addWidget(self.label_19)
+ self.UIModifyKnobs = QtWidgets.QCheckBox(self.widget)
+ self.UIModifyKnobs.setObjectName("UIModifyKnobs")
+ self.verticalLayout_3.addWidget(self.UIModifyKnobs)
self.UIMatchKnobs = QtWidgets.QTableWidget(self.widget)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.MinimumExpanding, QtWidgets.QSizePolicy.Expanding)
sizePolicy.setHorizontalStretch(0)
@@ -657,8 +660,9 @@ class Ui_OpticsGUI(object):
self.UIMatchAramis.setText(_translate("OpticsGUI", "Aramis"))
self.UISaveMatchSettings.setText(_translate("OpticsGUI", "Save matched machine settings automtically"))
self.UIInitAllMagnets.setText(_translate("OpticsGUI", "Initialize all magnets to zero before matching"))
- self.UIModifyKnobs.setText(_translate("OpticsGUI", "Overwrite default values for matching variables "))
+ self.UIReportMatchStrength.setText(_translate("OpticsGUI", "Report matched quadrupole strength"))
self.label_19.setText(_translate("OpticsGUI", "Matching Variables"))
+ self.UIModifyKnobs.setText(_translate("OpticsGUI", "Overwrite default values for matching variables "))
item = self.UIMatchKnobs.horizontalHeaderItem(0)
item.setText(_translate("OpticsGUI", "Parameter"))
item = self.UIMatchKnobs.horizontalHeaderItem(1)
diff --git a/ui/OpticsToolsGui.ui b/ui/OpticsToolsGui.ui
index c6e344b..8326cea 100644
--- a/ui/OpticsToolsGui.ui
+++ b/ui/OpticsToolsGui.ui
@@ -582,9 +582,9 @@
-
-
+
- Overwrite default values for matching variables
+ Report matched quadrupole strength
@@ -601,6 +601,13 @@
+ -
+
+
+ Overwrite default values for matching variables
+
+
+
-