Optimizing matching procedure for SF+ and reporting matching strengths
This commit is contained in:
@@ -98,8 +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):
|
||||
|
||||
@@ -14,7 +14,7 @@ s20bc01.mqua010.k1:=1.;
|
||||
MATCH,SEQUENCE=Swissfel,range=s20sy02$start/s20bc02$end,beta0=twisssep;
|
||||
VARY,NAME=s20bc01.mqua010.k1,STEP=0.0001;
|
||||
VARY,NAME=s20bc01.mqua030.k1,STEP=0.0001;
|
||||
VARY,NAME=s20bc01.mqua050.k1,STEP=0.0001;
|
||||
VARY,NAME=s20bc01.mqua060.k1,STEP=0.0001;
|
||||
CONSTRAINT,SEQUENCE=SwissFEL,range= s20bc02$end,betx<4;
|
||||
CONSTRAINT,SEQUENCE=SwissFEL,range= s20bc02$end,bety<90;
|
||||
CONSTRAINT,SEQUENCE=SwissFEL,range= s20bc01$end,betx<250;
|
||||
@@ -260,7 +260,7 @@ 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.mqua020.k1,STEP=0.0001,lower=-1., upper =1.;
|
||||
VARY,NAME=sarcl01.mqua050.k1,STEP=0.0001;
|
||||
VARY,NAME=sarcl01.mqua080.k1,STEP=0.0001;
|
||||
VARY,NAME=sarcl01.mqua100.k1,STEP=0.0001;
|
||||
@@ -294,7 +294,7 @@ plot,haxis=s,vaxis=betx,bety,range=S30CB15$START/SARCL02$END,colour=100;
|
||||
|
||||
|
||||
!-----------------
|
||||
muAR=0.17;
|
||||
muAR=0.16;
|
||||
match,SEQUENCE=swissfel,range=sarun02$start/sarun03$end;
|
||||
Vary,name=sarun02.mqua080.k1,step=0.0001;
|
||||
Vary,name=sarun03.mqua080.k1,step=0.0001;
|
||||
|
||||
@@ -117,7 +117,7 @@ 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.mqua220.k1,STEP=0.0001;
|
||||
|
||||
@@ -8,11 +8,11 @@
|
||||
2) switch between references
|
||||
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
|
||||
|
||||
|
||||
#
|
||||
#) Check for maximum gradient for matched values
|
||||
3) Match for sextupoles!
|
||||
|
||||
#) check why program crashes when matching all 3 beamlines
|
||||
|
||||
5
model.py
5
model.py
@@ -33,6 +33,7 @@ class Model:
|
||||
|
||||
def eventHandling(self):
|
||||
self.parent.UITrack.clicked.connect(self.track)
|
||||
self.parent.UIReportMagnetStrength.clicked.connect(self.checkMagnetLimit)
|
||||
|
||||
def forceLatticeUpdate(self):
|
||||
self.forceLat=True
|
||||
@@ -308,6 +309,7 @@ class Model:
|
||||
########################################3
|
||||
def checkMagnetLimit(self):
|
||||
# using magnet calibration
|
||||
self.updateEnergy(140.)
|
||||
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
|
||||
@@ -317,6 +319,7 @@ class Model:
|
||||
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['QFDM'] = quad['QFD'] # same type but weaker windings for corrector
|
||||
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
|
||||
@@ -345,4 +348,6 @@ class Model:
|
||||
k1max=k1brho[bg]/brho
|
||||
rat=np.abs(ele.k1/k1max)*100.
|
||||
print('%s: %5.1f (percent)' % (ele.Name.replace('.','-'),rat))
|
||||
else:
|
||||
print('%s: Unsupported type %s' % (ele.Name.replace('.','-'),bg))
|
||||
|
||||
|
||||
@@ -356,9 +356,6 @@ class Ui_OpticsGUI(object):
|
||||
self.UIInitAllMagnets = QtWidgets.QCheckBox(self.widget)
|
||||
self.UIInitAllMagnets.setObjectName("UIInitAllMagnets")
|
||||
self.verticalLayout_3.addWidget(self.UIInitAllMagnets)
|
||||
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)
|
||||
@@ -383,6 +380,9 @@ class Ui_OpticsGUI(object):
|
||||
item = QtWidgets.QTableWidgetItem()
|
||||
self.UIMatchKnobs.setHorizontalHeaderItem(1, item)
|
||||
self.verticalLayout_3.addWidget(self.UIMatchKnobs)
|
||||
self.UIReportMagnetStrength = QtWidgets.QPushButton(self.widget)
|
||||
self.UIReportMagnetStrength.setObjectName("UIReportMagnetStrength")
|
||||
self.verticalLayout_3.addWidget(self.UIReportMagnetStrength)
|
||||
spacerItem1 = QtWidgets.QSpacerItem(20, 40, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding)
|
||||
self.verticalLayout_3.addItem(spacerItem1)
|
||||
self.horizontalLayout_4.addWidget(self.widget)
|
||||
@@ -660,13 +660,13 @@ 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.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)
|
||||
item.setText(_translate("OpticsGUI", "Value"))
|
||||
self.UIReportMagnetStrength.setText(_translate("OpticsGUI", "Report Matched Quadrupole Strength"))
|
||||
self.TabMaster.setTabText(self.TabMaster.indexOf(self.tab_3), _translate("OpticsGUI", "Track"))
|
||||
self.groupBox_8.setTitle(_translate("OpticsGUI", "Magnets (Angle/ k1L / k2L)"))
|
||||
self.label_23.setText(_translate("OpticsGUI", "Start"))
|
||||
|
||||
@@ -581,13 +581,6 @@
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QCheckBox" name="UIReportMatchStrength">
|
||||
<property name="text">
|
||||
<string>Report matched quadrupole strength</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QLabel" name="label_19">
|
||||
<property name="font">
|
||||
@@ -628,6 +621,13 @@
|
||||
</column>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QPushButton" name="UIReportMagnetStrength">
|
||||
<property name="text">
|
||||
<string>Report Matched Quadrupole Strength</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<spacer name="verticalSpacer_3">
|
||||
<property name="orientation">
|
||||
|
||||
Reference in New Issue
Block a user