diff --git a/.gitignore b/.gitignore
index ddec50f..9e67323 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,5 +1,4 @@
-.idea/modules.xml
-.idea/vcs.xml
-.idea/workspace.xml
/ReferenceDistribution/dist.sdds
+/.idea/
+/Runs/
diff --git a/ElegantTools.py b/ElegantTools.py
index 84992ce..16f027e 100644
--- a/ElegantTools.py
+++ b/ElegantTools.py
@@ -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]]
diff --git a/OnlineModelLattices/ReferenceSetting.json b/OnlineModelLattices/ReferenceSetting.json
new file mode 100644
index 0000000..2f50cf4
--- /dev/null
+++ b/OnlineModelLattices/ReferenceSetting.json
@@ -0,0 +1,1776 @@
+{
+ "Quadrupole": {
+ "SINEG01.MQUA140": {
+ "k1": 0.0,
+ "k1L": 0.0
+ },
+ "SINEG01.MQSK150": {
+ "k1": 0.0,
+ "k1L": 0.0
+ },
+ "SINEG01.MQUA212": {
+ "k1": 0.0,
+ "k1L": 0.0
+ },
+ "SINEG01.MQSK320": {
+ "k1": 0.0,
+ "k1L": 0.0
+ },
+ "SINLH01.MQUA020": {
+ "k1": -0.237197,
+ "k1L": -0.035579549999999995
+ },
+ "SINLH01.MQSK030": {
+ "k1": 0,
+ "k1L": 0.0
+ },
+ "SINLH01.MQUA040": {
+ "k1": -1.60556,
+ "k1L": -0.240834
+ },
+ "SINLH01.MQUA050": {
+ "k1": 14.036618,
+ "k1L": 2.1054927
+ },
+ "SINLH01.MQUA070": {
+ "k1": -12.81601,
+ "k1L": -1.9224014999999999
+ },
+ "SINLH02.MQUA010": {
+ "k1": 12.371069,
+ "k1L": 1.85566035
+ },
+ "SINLH02.MQUA410": {
+ "k1": -3.437811,
+ "k1L": -0.5156716499999999
+ },
+ "SINLH03.MQUA030": {
+ "k1": 3.457337,
+ "k1L": 0.5186005499999999
+ },
+ "SINLH03.MQUA040": {
+ "k1": 0.383356,
+ "k1L": 0.057503399999999996
+ },
+ "SINLH03.MQUA060": {
+ "k1": -1.451497,
+ "k1L": -0.21772455
+ },
+ "SINLH03.MQUA080": {
+ "k1": -3.154329,
+ "k1L": -0.47314935
+ },
+ "SINSB03.MQUA130": {
+ "k1": 1.405904,
+ "k1L": 0.2108856
+ },
+ "SINSB03.MQUA230": {
+ "k1": -1.42634,
+ "k1L": -0.21395099999999997
+ },
+ "SINSB04.MQUA130": {
+ "k1": 1.42664,
+ "k1L": 0.213996
+ },
+ "SINSB04.MQUA230": {
+ "k1": -1.42634,
+ "k1L": -0.21395099999999997
+ },
+ "SINSB05.MQUA130": {
+ "k1": 1.42664,
+ "k1L": 0.213996
+ },
+ "SINSB05.MQUA230": {
+ "k1": -1.4263400000000002,
+ "k1L": -0.21395100000000003
+ },
+ "SINBC01.MQUA020": {
+ "k1": 0.300317,
+ "k1L": 0.04504755
+ },
+ "SINBC01.MQUA050": {
+ "k1": -0.050687,
+ "k1L": -0.00760305
+ },
+ "SINBC01.MQUA070": {
+ "k1": 0.62809,
+ "k1L": 0.0942135
+ },
+ "SINBC01.MQUA090": {
+ "k1": -2.208796,
+ "k1L": -0.3313194
+ },
+ "SINBC01.MQUA110": {
+ "k1": 1.816601,
+ "k1L": 0.27249015
+ },
+ "SINBC02.MQSK110": {
+ "k1": 0,
+ "k1L": 0.0
+ },
+ "SINBC02.MQUA120": {
+ "k1": 0,
+ "k1L": 0.0
+ },
+ "SINBC02.MQUA340": {
+ "k1": 0,
+ "k1L": 0.0
+ },
+ "SINBC02.MQSK350": {
+ "k1": 0,
+ "k1L": 0.0
+ },
+ "SINDI01.MQUA020": {
+ "k1": -0.229526,
+ "k1L": -0.0344289
+ },
+ "SINDI01.MQSK030": {
+ "k1": 0,
+ "k1L": 0.0
+ },
+ "SINDI01.MQUA070": {
+ "k1": 0.051959,
+ "k1L": 0.00779385
+ },
+ "SINDI02.MQUA020": {
+ "k1": -0.315785,
+ "k1L": -0.04736774999999999
+ },
+ "SINDI02.MQUA030": {
+ "k1": 0.230334,
+ "k1L": 0.0345501
+ },
+ "SINDI02.MQUA050": {
+ "k1": -1.474177,
+ "k1L": -0.22112655
+ },
+ "SINDI02.MQUA060": {
+ "k1": 1.015862,
+ "k1L": 0.1523793
+ },
+ "SINDI02.MQUA090": {
+ "k1": 0.917869,
+ "k1L": 0.13768035
+ },
+ "S10CB01.MQUA230": {
+ "k1": -0.386507,
+ "k1L": -0.057976049999999994
+ },
+ "S10CB01.MQUA430": {
+ "k1": 0.580752,
+ "k1L": 0.0871128
+ },
+ "S10CB02.MQUA230": {
+ "k1": -1.494493,
+ "k1L": -0.22417395
+ },
+ "S10CB02.MQUA430": {
+ "k1": 1.49398,
+ "k1L": 0.22409700000000002
+ },
+ "S10DI01.MQUA030": {
+ "k1": 0.0,
+ "k1L": 0.0
+ },
+ "S10DI01.MQUA120": {
+ "k1": -1.494493,
+ "k1L": -0.22417395
+ },
+ "S10CB03.MQUA230": {
+ "k1": 1.49398,
+ "k1L": 0.22409700000000002
+ },
+ "S10CB03.MQUA430": {
+ "k1": -1.494493,
+ "k1L": -0.22417395
+ },
+ "S10CB04.MQUA230": {
+ "k1": 1.49398,
+ "k1L": 0.22409700000000002
+ },
+ "S10CB04.MQUA430": {
+ "k1": -1.494493,
+ "k1L": -0.22417395
+ },
+ "S10CB05.MQUA230": {
+ "k1": 1.49398,
+ "k1L": 0.22409700000000002
+ },
+ "S10CB05.MQUA430": {
+ "k1": -1.494493,
+ "k1L": -0.22417395
+ },
+ "S10CB06.MQUA230": {
+ "k1": 1.49398,
+ "k1L": 0.22409700000000002
+ },
+ "S10CB06.MQUA430": {
+ "k1": -1.494493,
+ "k1L": -0.22417395
+ },
+ "S10CB07.MQUA230": {
+ "k1": 1.49398,
+ "k1L": 0.22409700000000002
+ },
+ "S10CB07.MQUA430": {
+ "k1": -1.507062,
+ "k1L": -0.22605929999999996
+ },
+ "S10CB08.MQUA230": {
+ "k1": 1.507972,
+ "k1L": 0.2261958
+ },
+ "S10CB08.MQUA430": {
+ "k1": -1.511842,
+ "k1L": -0.2267763
+ },
+ "S10CB09.MQUA230": {
+ "k1": 1.497173,
+ "k1L": 0.22457595
+ },
+ "S10BC01.MQUA020": {
+ "k1": 1.7509920631209006,
+ "k1L": 0.26264880946813507
+ },
+ "S10BC01.MQUA040": {
+ "k1": -1.2404153564733533,
+ "k1L": -0.186062303471003
+ },
+ "S10BC01.MQUA060": {
+ "k1": -0.7554981318790087,
+ "k1L": -0.1133247197818513
+ },
+ "S10BC01.MQUA080": {
+ "k1": -0.9235765786782661,
+ "k1L": -0.1385364868017399
+ },
+ "S10BC01.MQUA100": {
+ "k1": 1.8427068967306495,
+ "k1L": 0.2764060345095974
+ },
+ "S10BC02.MQSK110": {
+ "k1": 0,
+ "k1L": 0.0
+ },
+ "S10BC02.MQUA120": {
+ "k1": 0,
+ "k1L": 0.0
+ },
+ "S10BC02.MQUA340": {
+ "k1": 0,
+ "k1L": 0.0
+ },
+ "S10BC02.MQSK350": {
+ "k1": 0,
+ "k1L": 0.0
+ },
+ "S10MA01.MQUA020": {
+ "k1": -1.032398,
+ "k1L": -0.1548597
+ },
+ "S10MA01.MQUA050": {
+ "k1": -0.204591,
+ "k1L": -0.030688649999999998
+ },
+ "S10MA01.MQUA070": {
+ "k1": 0.505964,
+ "k1L": 0.07589459999999999
+ },
+ "S10MA01.MQUA110": {
+ "k1": 1.179931,
+ "k1L": 0.17698965
+ },
+ "S10MA01.MQUA130": {
+ "k1": -0.535232,
+ "k1L": -0.0802848
+ },
+ "S20CB01.MQUA430": {
+ "k1": -0.86332,
+ "k1L": -0.129498
+ },
+ "S20CB02.MQUA430": {
+ "k1": 0.863313,
+ "k1L": 0.12949695
+ },
+ "S20CB03.MQUA430": {
+ "k1": -0.86332,
+ "k1L": -0.129498
+ },
+ "S20SY01.MQUA020": {
+ "k1": -1.409264,
+ "k1L": -0.2113896
+ },
+ "S20SY01.MQUA030": {
+ "k1": 1.653329,
+ "k1L": 0.24799935
+ },
+ "S20SY01.MQUA050": {
+ "k1": -1.245714,
+ "k1L": -0.1868571
+ },
+ "S20SY01.MQUA080": {
+ "k1": 1.391126,
+ "k1L": 0.20866890000000002
+ },
+ "S20SY02.MQUA070": {
+ "k1": -2.1177854407305055,
+ "k1L": -0.3176678161095758
+ },
+ "S20SY02.MQUA100": {
+ "k1": 1.33996,
+ "k1L": 0.200994
+ },
+ "S20SY02.MQUA140": {
+ "k1": 1.1490188410542805,
+ "k1L": 0.17235282615814207
+ },
+ "S20SY02.MQUA180": {
+ "k1": -1.4912517785966812,
+ "k1L": -0.22368776678950217
+ },
+ "S20SY03.MQUA020": {
+ "k1": 1.473735,
+ "k1L": 0.22106024999999999
+ },
+ "S20SY03.MQUA030": {
+ "k1": -0.663295,
+ "k1L": -0.09949424999999999
+ },
+ "S20SY03.MQUA050": {
+ "k1": 1.263242,
+ "k1L": 0.1894863
+ },
+ "S20SY03.MQUA060": {
+ "k1": -1.857068,
+ "k1L": -0.2785602
+ },
+ "S20SY03.MQUA100": {
+ "k1": 1.544442,
+ "k1L": 0.2316663
+ },
+ "S30CB01.MQUA430": {
+ "k1": 0.8212229144957932,
+ "k1L": 0.12318343717436897
+ },
+ "S30CB02.MQUA430": {
+ "k1": -0.820147,
+ "k1L": -0.12302205
+ },
+ "S30CB03.MQUA430": {
+ "k1": 0.8212229144957932,
+ "k1L": 0.12318343717436897
+ },
+ "S30CB04.MQUA430": {
+ "k1": -0.820147,
+ "k1L": -0.12302205
+ },
+ "S30CB05.MQUA430": {
+ "k1": 0.8212229144957932,
+ "k1L": 0.12318343717436897
+ },
+ "S30CB06.MQUA430": {
+ "k1": -0.820147,
+ "k1L": -0.12302205
+ },
+ "S30CB07.MQUA430": {
+ "k1": 0.8212229144957932,
+ "k1L": 0.12318343717436897
+ },
+ "S30CB08.MQUA430": {
+ "k1": -0.820147,
+ "k1L": -0.12302205
+ },
+ "S30CB09.MQUA430": {
+ "k1": 0.8212229144957932,
+ "k1L": 0.12318343717436897
+ },
+ "S30CB10.MQUA430": {
+ "k1": -0.820147,
+ "k1L": -0.12302205
+ },
+ "S30CB11.MQUA430": {
+ "k1": 0.8212229144957932,
+ "k1L": 0.12318343717436897
+ },
+ "S30CB12.MQUA430": {
+ "k1": -0.820147,
+ "k1L": -0.12302205
+ },
+ "S30CB13.MQUA430": {
+ "k1": 0.8212229144957932,
+ "k1L": 0.12318343717436897
+ },
+ "S30CB14.MQUA430": {
+ "k1": -0.820147,
+ "k1L": -0.12302205
+ },
+ "S30CB15.MQUA430": {
+ "k1": 0.8212229144957932,
+ "k1L": 0.12318343717436897
+ },
+ "SARCL01.MQUA020": {
+ "k1": -0.576714,
+ "k1L": -0.08650709999999999
+ },
+ "SARCL01.MQUA050": {
+ "k1": 0.8480939373513464,
+ "k1L": 0.2544281812054039
+ },
+ "SARCL01.MQUA080": {
+ "k1": -0.7346228977112695,
+ "k1L": -0.22038686931338086
+ },
+ "SARCL01.MQUA100": {
+ "k1": -0.20022480217977656,
+ "k1L": -0.06006744065393296
+ },
+ "SARCL01.MQUA140": {
+ "k1": 1.7781965839840568,
+ "k1L": 0.533458975195217
+ },
+ "SARCL01.MQUA190": {
+ "k1": -1.37416301794214,
+ "k1L": -0.412248905382642
+ },
+ "SARCL02.MQUA130": {
+ "k1": 2.4704683873487707,
+ "k1L": 0.7411405162046312
+ },
+ "SARCL02.MQUA150": {
+ "k1": 0,
+ "k1L": 0.0
+ },
+ "SARCL02.MQSK160": {
+ "k1": 0,
+ "k1L": 0.0
+ },
+ "SARCL02.MQUA210": {
+ "k1": -2.2234215486138935,
+ "k1L": -0.667026464584168
+ },
+ "SARCL02.MQUA250": {
+ "k1": 1.477250383147381,
+ "k1L": 0.4431751149442143
+ },
+ "SARCL02.MQSK300": {
+ "k1": 0,
+ "k1L": 0.0
+ },
+ "SARCL02.MQUA310": {
+ "k1": 1.477250383147381,
+ "k1L": 0.4431751149442143
+ },
+ "SARCL02.MQUA350": {
+ "k1": -2.2234215486138935,
+ "k1L": -0.667026464584168
+ },
+ "SARCL02.MQSK420": {
+ "k1": 0,
+ "k1L": 0.0
+ },
+ "SARCL02.MQUA430": {
+ "k1": 0,
+ "k1L": 0.0
+ },
+ "SARCL02.MQUA460": {
+ "k1": 2.4704683873487707,
+ "k1L": 0.7411405162046312
+ },
+ "SARMA01.MQUA010": {
+ "k1": -1.6446759674440306,
+ "k1L": -0.49340279023320915
+ },
+ "SARMA01.MQUA060": {
+ "k1": 1.267424452836345,
+ "k1L": 0.38022733585090346
+ },
+ "SARMA01.MQUA080": {
+ "k1": 0.11258063665701519,
+ "k1L": 0.033774190997104554
+ },
+ "SARMA01.MQUA120": {
+ "k1": -0.8871549810184883,
+ "k1L": -0.2661464943055465
+ },
+ "SARMA01.MQUA140": {
+ "k1": 0.6931139484990629,
+ "k1L": 0.20793418454971888
+ },
+ "SARMA02.MQUA050": {
+ "k1": -2.716737,
+ "k1L": -0.21733896000000003
+ },
+ "SARMA02.MQUA120": {
+ "k1": 2.806338,
+ "k1L": 0.22450704000000002
+ },
+ "SARUN01.MQUA080": {
+ "k1": -2.716737,
+ "k1L": -0.21733896000000003
+ },
+ "SARUN02.MQUA080": {
+ "k1": 2.806338,
+ "k1L": 0.22450704000000002
+ },
+ "SARUN03.MQUA080": {
+ "k1": -2.716737,
+ "k1L": -0.21733896000000003
+ },
+ "SARUN04.MQUA080": {
+ "k1": 2.806338,
+ "k1L": 0.22450704000000002
+ },
+ "SARUN05.MQUA080": {
+ "k1": -2.716737,
+ "k1L": -0.21733896000000003
+ },
+ "SARUN06.MQUA080": {
+ "k1": 2.806338,
+ "k1L": 0.22450704000000002
+ },
+ "SARUN07.MQUA080": {
+ "k1": -2.716737,
+ "k1L": -0.21733896000000003
+ },
+ "SARUN08.MQUA080": {
+ "k1": 2.806338,
+ "k1L": 0.22450704000000002
+ },
+ "SARUN09.MQUA080": {
+ "k1": -2.716737,
+ "k1L": -0.21733896000000003
+ },
+ "SARUN10.MQUA080": {
+ "k1": 2.806338,
+ "k1L": 0.22450704000000002
+ },
+ "SARUN11.MQUA080": {
+ "k1": -2.716737,
+ "k1L": -0.21733896000000003
+ },
+ "SARUN12.MQUA080": {
+ "k1": 2.806338,
+ "k1L": 0.22450704000000002
+ },
+ "SARUN13.MQUA080": {
+ "k1": -2.716737,
+ "k1L": -0.21733896000000003
+ },
+ "SARUN14.MQUA080": {
+ "k1": 2.806338,
+ "k1L": 0.22450704000000002
+ },
+ "SARUN15.MQUA080": {
+ "k1": -2.716737,
+ "k1L": -0.21733896000000003
+ },
+ "SARUN16.MQUA080": {
+ "k1": 2.806338,
+ "k1L": 0.22450704000000002
+ },
+ "SARUN17.MQUA080": {
+ "k1": -2.716737,
+ "k1L": -0.21733896000000003
+ },
+ "SARUN18.MQUA080": {
+ "k1": 2.806338,
+ "k1L": 0.22450704000000002
+ },
+ "SARUN19.MQUA080": {
+ "k1": -3.192157,
+ "k1L": -0.25537255999999997
+ },
+ "SARUN20.MQUA080": {
+ "k1": 2.885175,
+ "k1L": 0.230814
+ },
+ "SARBD01.MQUA020": {
+ "k1": 0.083362,
+ "k1L": 0.006668960000000001
+ },
+ "SATSY01.MQUA020": {
+ "k1": 0.3440667119021981,
+ "k1L": 0.10322001357065944
+ },
+ "SATSY01.MQSK030": {
+ "k1": 0,
+ "k1L": 0.0
+ },
+ "SATSY01.MQUA040": {
+ "k1": 1.5356338017985782,
+ "k1L": 0.23034507026978673
+ },
+ "SATSY01.MQUA070": {
+ "k1": -1.0352780197445182,
+ "k1L": -0.1552917029616777
+ },
+ "SATSY01.MQUA090": {
+ "k1": -0.34581315599708934,
+ "k1L": -0.0518719733995634
+ },
+ "SATSY01.MQUA210": {
+ "k1": -0.4278259402930389,
+ "k1L": -0.06417389104395584
+ },
+ "SATSY01.MQUA230": {
+ "k1": -1.0352780197445182,
+ "k1L": -0.1552917029616777
+ },
+ "SATSY01.MQUA260": {
+ "k1": 1.5356338017985782,
+ "k1L": 0.23034507026978673
+ },
+ "SATSY01.MQSK270": {
+ "k1": 0,
+ "k1L": 0.0
+ },
+ "SATSY01.MQUA280": {
+ "k1": 0.33271858589438225,
+ "k1L": 0.09981557576831467
+ },
+ "SATSY01.MQUA300": {
+ "k1": 0.3037703404982664,
+ "k1L": 0.04556555107473996
+ },
+ "SATSY02.MQUA010": {
+ "k1": -1.0866051739709974,
+ "k1L": -0.1629907760956496
+ },
+ "SATSY02.MQUA110": {
+ "k1": -0.5365921755530061,
+ "k1L": -0.08048882633295092
+ },
+ "SATSY02.MQUA120": {
+ "k1": 1.4244326447862972,
+ "k1L": 0.21366489671794456
+ },
+ "SATSY02.MQUA230": {
+ "k1": -1.1149417204728553,
+ "k1L": -0.1672412580709283
+ },
+ "SATSY03.MQUA010": {
+ "k1": 1.2550710068351227,
+ "k1L": 0.1882606510252684
+ },
+ "SATSY03.MQUA040": {
+ "k1": -0.3692659680970286,
+ "k1L": -0.05538989521455429
+ },
+ "SATSY03.MQUA070": {
+ "k1": 1.2192943281016324,
+ "k1L": 0.18289414921524486
+ },
+ "SATSY03.MQUA100": {
+ "k1": -1.8125244015335604,
+ "k1L": -0.27187866023003404
+ },
+ "SATSY03.MQUA130": {
+ "k1": 1.1785454555122787,
+ "k1L": 0.1767818183268418
+ },
+ "SATCL01.MQUA120": {
+ "k1": -1.1820586458351845,
+ "k1L": -0.17730879687527767
+ },
+ "SATCL01.MQUA130": {
+ "k1": 1.7726821739375485,
+ "k1L": 0.26590232609063225
+ },
+ "SATCL01.MQUA180": {
+ "k1": 1.707590237646083,
+ "k1L": 0.2561385356469124
+ },
+ "SATCL01.MQUA190": {
+ "k1": -1.0704136224569918,
+ "k1L": -0.16056204336854876
+ },
+ "SATDI01.MQUA025": {
+ "k1": -1.0983553906315382,
+ "k1L": -0.16475330859473072
+ },
+ "SATDI01.MQUA080": {
+ "k1": 0.9285218397639249,
+ "k1L": 0.13927827596458872
+ },
+ "SATDI01.MQUA220": {
+ "k1": 0.6806403246032996,
+ "k1L": 0.10209604869049493
+ },
+ "SATDI01.MQUA230": {
+ "k1": -0.8069619959120209,
+ "k1L": -0.12104429938680313
+ },
+ "SATDI01.MQUA250": {
+ "k1": 0.513373,
+ "k1L": 0.07700594999999999
+ },
+ "SATDI01.MQUA260": {
+ "k1": 0.020907,
+ "k1L": 0.0031360499999999996
+ },
+ "SATDI01.MQUA280": {
+ "k1": -0.153973,
+ "k1L": -0.02309595
+ },
+ "SATDI01.MQUA300": {
+ "k1": -0.407693,
+ "k1L": -0.06115395
+ },
+ "SATCB01.MQUA230": {
+ "k1": 0.455653,
+ "k1L": 0.06834794999999999
+ },
+ "SATCB01.MQUA430": {
+ "k1": -0.455653,
+ "k1L": -0.06834794999999999
+ },
+ "SATCL02.MQUA230": {
+ "k1": 0.4556533333333334,
+ "k1L": 0.068348
+ },
+ "SATCL02.MQUA430": {
+ "k1": -0.455653,
+ "k1L": -0.06834794999999999
+ },
+ "SATMA01.MQUA050": {
+ "k1": -1.811994,
+ "k1L": -0.14495952
+ },
+ "SATMA01.MQUA120": {
+ "k1": 2.493105,
+ "k1L": 0.1994484
+ },
+ "SATMA01.MQUA140": {
+ "k1": -0.52144,
+ "k1L": -0.0417152
+ },
+ "SATMA01.MQUA160": {
+ "k1": -1.209155,
+ "k1L": -0.0967324
+ },
+ "SATMA01.MQUA180": {
+ "k1": -3.314513,
+ "k1L": -0.26516104
+ },
+ "SATMA01.MQUA230": {
+ "k1": 3.291655,
+ "k1L": 0.2633324
+ },
+ "SATMA01.MQUA250": {
+ "k1": 1.627992,
+ "k1L": 0.13023936
+ },
+ "SATMA01.MQUA610": {
+ "k1": 0.356469,
+ "k1L": 0.05347034999999999
+ },
+ "SATMA01.MQUA630": {
+ "k1": 0.131533,
+ "k1L": 0.01972995
+ },
+ "SATMA01.MQUA640": {
+ "k1": -1.838876,
+ "k1L": -0.2758314
+ },
+ "SATUN04.MQUA060": {
+ "k1": 3.427495,
+ "k1L": 0.2741996
+ },
+ "SATUN05.MQUA420": {
+ "k1": -0.620101,
+ "k1L": -0.04960808
+ },
+ "SATUN06.MQUA080": {
+ "k1": -4.015237,
+ "k1L": -0.32121896
+ },
+ "SATUN07.MQUA080": {
+ "k1": 4.063162,
+ "k1L": 0.32505296
+ },
+ "SATUN08.MQUA080": {
+ "k1": -4.015237,
+ "k1L": -0.32121896
+ },
+ "SATUN09.MQUA080": {
+ "k1": 4.063162,
+ "k1L": 0.32505296
+ },
+ "SATUN10.MQUA080": {
+ "k1": -4.015237,
+ "k1L": -0.32121896
+ },
+ "SATUN11.MQUA080": {
+ "k1": 4.063162,
+ "k1L": 0.32505296
+ },
+ "SATUN12.MQUA080": {
+ "k1": -4.015237,
+ "k1L": -0.32121896
+ },
+ "SATUN13.MQUA080": {
+ "k1": 4.063162,
+ "k1L": 0.32505296
+ },
+ "SATUN14.MQUA420": {
+ "k1": -4.015237,
+ "k1L": -0.32121896
+ },
+ "SATUN15.MQUA080": {
+ "k1": 4.063162,
+ "k1L": 0.32505296
+ },
+ "SATUN16.MQUA080": {
+ "k1": -4.015237,
+ "k1L": -0.32121896
+ },
+ "SATUN17.MQUA080": {
+ "k1": 4.063162,
+ "k1L": 0.32505296
+ },
+ "SATUN18.MQUA080": {
+ "k1": -4.015237,
+ "k1L": -0.32121896
+ },
+ "SATUN19.MQUA080": {
+ "k1": 4.063162,
+ "k1L": 0.32505296
+ },
+ "SATUN20.MQUA080": {
+ "k1": -4.015237,
+ "k1L": -0.32121896
+ },
+ "SATUN21.MQUA080": {
+ "k1": 4.063162,
+ "k1L": 0.32505296
+ },
+ "SATUN22.MQUA080": {
+ "k1": 0.496433,
+ "k1L": 0.03971464
+ },
+ "SATMA02.MQUA010": {
+ "k1": -0.423153,
+ "k1L": -0.03385224
+ },
+ "SATMA02.MQUA020": {
+ "k1": 1.483811,
+ "k1L": 0.11870488
+ },
+ "SATMA02.MQUA040": {
+ "k1": -0.396826,
+ "k1L": -0.03174608
+ },
+ "SATMA02.MQUA050": {
+ "k1": -2.912309,
+ "k1L": -0.23298472
+ },
+ "SATMA02.MQUA070": {
+ "k1": 2.546737,
+ "k1L": 0.20373896
+ },
+ "SATBD01.MQUA010": {
+ "k1": 0.50697,
+ "k1L": 0.152091
+ },
+ "SATBD01.MQUA030": {
+ "k1": -0.618466,
+ "k1L": -0.18553979999999998
+ },
+ "SATBD01.MQUA050": {
+ "k1": 0.13249,
+ "k1L": 0.039747
+ },
+ "SATBD01.MQUA070": {
+ "k1": 0.47403,
+ "k1L": 0.142209
+ },
+ "SATBD01.MQUA090": {
+ "k1": -0.74426,
+ "k1L": -0.223278
+ },
+ "S10BD01.MQUA010": {
+ "k1": 0.0,
+ "k1L": 0.0
+ },
+ "SARBD02.MQUA030": {
+ "k1": -1.131908,
+ "k1L": -0.33957239999999994
+ },
+ "SATBD02.MQUA030": {
+ "k1": -1.05081,
+ "k1L": -0.315243
+ }
+ },
+ "Sextupole": {
+ "SINBC02.MSEX130": {
+ "k2": -4.7,
+ "k2L": -0.376
+ },
+ "SINBC02.MSEX330": {
+ "k2": 0.1875,
+ "k2L": 0.015
+ },
+ "S10BC02.MSEX130": {
+ "k2": -0.9625,
+ "k2L": -0.077
+ },
+ "S10BC02.MSEX330": {
+ "k2": 3.8625,
+ "k2L": 0.309
+ },
+ "SARCL02.MSEX255": {
+ "k2": 89.42632499999999,
+ "k2L": 7.154106
+ },
+ "SARCL02.MSEX305": {
+ "k2": 89.42632499999999,
+ "k2L": 7.154106
+ },
+ "SATSY01.MSEX050": {
+ "k2": 46.178075,
+ "k2L": 3.694246
+ },
+ "SATSY01.MSEX080": {
+ "k2": -108.128425,
+ "k2L": -8.650274
+ },
+ "SATSY01.MSEX220": {
+ "k2": -13.3583125,
+ "k2L": -1.068665
+ },
+ "SATSY01.MSEX250": {
+ "k2": 41.50265,
+ "k2L": 3.320212
+ },
+ "SATCL01.MSEX110": {
+ "k2": 199.999975,
+ "k2L": 15.999998000000001
+ },
+ "SATCL01.MSEX160": {
+ "k2": -88.6932625,
+ "k2L": -7.095461
+ }
+ },
+ "Dipole": {
+ "SINLH02.MBND100": {
+ "angle": -2.988
+ },
+ "SINLH02.MBND200": {
+ "angle": 2.988
+ },
+ "SINLH02.MBND300": {
+ "angle": 2.988
+ },
+ "SINLH02.MBND400": {
+ "angle": -2.988
+ },
+ "SINBC02.MBND100": {
+ "angle": -4.072
+ },
+ "SINBC02.MBND200": {
+ "angle": 4.072
+ },
+ "SINBC02.MBND300": {
+ "angle": 4.072
+ },
+ "SINBC02.MBND400": {
+ "angle": -4.072
+ },
+ "S10BC02.MBND100": {
+ "angle": -2.079
+ },
+ "S10BC02.MBND200": {
+ "angle": 2.079
+ },
+ "S10BC02.MBND300": {
+ "angle": 2.079
+ },
+ "S10BC02.MBND400": {
+ "angle": -2.079
+ },
+ "SATMA01.MBND300": {
+ "angle": -0.0
+ },
+ "SATMA01.MBND400": {
+ "angle": 0.0
+ },
+ "SATMA01.MBND500": {
+ "angle": 0.0
+ },
+ "SATMA01.MBND600": {
+ "angle": -0.0
+ },
+ "SATUN05.MBND100": {
+ "angle": 0.0
+ },
+ "SATUN05.MBND200": {
+ "angle": -0.0
+ },
+ "SATUN05.MBND300": {
+ "angle": -0.0
+ },
+ "SATUN05.MBND400": {
+ "angle": 0.0
+ },
+ "SATUN14.MBND100": {
+ "angle": 0.0
+ },
+ "SATUN14.MBND200": {
+ "angle": -0.0
+ },
+ "SATUN14.MBND300": {
+ "angle": -0.0
+ },
+ "SATUN14.MBND400": {
+ "angle": 0.0
+ }
+ },
+ "RF": {
+ "SINSB01.RACC100": {
+ "Gradient": 73494000.0,
+ "Phase": 90.0
+ },
+ "SINSB02.RACC100": {
+ "Gradient": 71615820.0,
+ "Phase": 90.0
+ },
+ "SINSB03.RACC100": {
+ "Gradient": 43150000.0,
+ "Phase": 68.52
+ },
+ "SINSB03.RACC200": {
+ "Gradient": 43150000.0,
+ "Phase": 68.52
+ },
+ "SINSB04.RACC100": {
+ "Gradient": 43150000.0,
+ "Phase": 68.52
+ },
+ "SINSB04.RACC200": {
+ "Gradient": 43150000.0,
+ "Phase": 68.52
+ },
+ "SINXB01.RACC100": {
+ "Gradient": 7900000.0,
+ "Phase": 270.0
+ },
+ "SINXB01.RACC200": {
+ "Gradient": 7900000.0,
+ "Phase": 270.0
+ },
+ "S10CB01.RACC100": {
+ "Gradient": 57500000.0,
+ "Phase": 53.96
+ },
+ "S10CB01.RACC200": {
+ "Gradient": 57500000.0,
+ "Phase": 53.96
+ },
+ "S10CB01.RACC300": {
+ "Gradient": 57500000.0,
+ "Phase": 53.96
+ },
+ "S10CB01.RACC400": {
+ "Gradient": 57500000.0,
+ "Phase": 53.96
+ },
+ "S10CB02.RACC100": {
+ "Gradient": 60000000.0,
+ "Phase": 84.87
+ },
+ "S10CB02.RACC200": {
+ "Gradient": 60000000.0,
+ "Phase": 84.87
+ },
+ "S10CB02.RACC300": {
+ "Gradient": 60000000.0,
+ "Phase": 84.87
+ },
+ "S10CB02.RACC400": {
+ "Gradient": 60000000.0,
+ "Phase": 84.87
+ },
+ "S10CB03.RACC100": {
+ "Gradient": 66750000.0,
+ "Phase": 53.96
+ },
+ "S10CB03.RACC200": {
+ "Gradient": 66750000.0,
+ "Phase": 53.96
+ },
+ "S10CB03.RACC300": {
+ "Gradient": 66750000.0,
+ "Phase": 53.96
+ },
+ "S10CB03.RACC400": {
+ "Gradient": 66750000.0,
+ "Phase": 53.96
+ },
+ "S10CB04.RACC100": {
+ "Gradient": 62500000.0,
+ "Phase": 84.87
+ },
+ "S10CB04.RACC200": {
+ "Gradient": 62500000.0,
+ "Phase": 84.87
+ },
+ "S10CB04.RACC300": {
+ "Gradient": 62500000.0,
+ "Phase": 84.87
+ },
+ "S10CB04.RACC400": {
+ "Gradient": 62500000.0,
+ "Phase": 84.87
+ },
+ "S10CB05.RACC100": {
+ "Gradient": 61250000.0,
+ "Phase": 53.96
+ },
+ "S10CB05.RACC200": {
+ "Gradient": 61250000.0,
+ "Phase": 53.96
+ },
+ "S10CB05.RACC300": {
+ "Gradient": 61250000.0,
+ "Phase": 53.96
+ },
+ "S10CB05.RACC400": {
+ "Gradient": 61250000.0,
+ "Phase": 53.96
+ },
+ "S10CB06.RACC100": {
+ "Gradient": 59750000.0,
+ "Phase": 84.87
+ },
+ "S10CB06.RACC200": {
+ "Gradient": 59750000.0,
+ "Phase": 84.87
+ },
+ "S10CB06.RACC300": {
+ "Gradient": 59750000.0,
+ "Phase": 84.87
+ },
+ "S10CB06.RACC400": {
+ "Gradient": 59750000.0,
+ "Phase": 84.87
+ },
+ "S10CB07.RACC100": {
+ "Gradient": 61000000.0,
+ "Phase": 53.96
+ },
+ "S10CB07.RACC200": {
+ "Gradient": 61000000.0,
+ "Phase": 53.96
+ },
+ "S10CB07.RACC300": {
+ "Gradient": 61000000.0,
+ "Phase": 53.96
+ },
+ "S10CB07.RACC400": {
+ "Gradient": 61000000.0,
+ "Phase": 53.96
+ },
+ "S10CB08.RACC100": {
+ "Gradient": 58750000.0,
+ "Phase": 84.87
+ },
+ "S10CB08.RACC200": {
+ "Gradient": 58750000.0,
+ "Phase": 84.87
+ },
+ "S10CB08.RACC300": {
+ "Gradient": 58750000.0,
+ "Phase": 84.87
+ },
+ "S10CB08.RACC400": {
+ "Gradient": 58750000.0,
+ "Phase": 84.87
+ },
+ "S10CB09.RACC100": {
+ "Gradient": 57500000.0,
+ "Phase": 69.24
+ },
+ "S10CB09.RACC200": {
+ "Gradient": 57500000.0,
+ "Phase": 69.24
+ },
+ "S10CB09.RACC300": {
+ "Gradient": 57500000.0,
+ "Phase": 69.24
+ },
+ "S10CB09.RACC400": {
+ "Gradient": 57500000.0,
+ "Phase": 69.24
+ },
+ "S20CB01.RACC100": {
+ "Gradient": 60500000.0,
+ "Phase": 72.21
+ },
+ "S20CB01.RACC200": {
+ "Gradient": 60500000.0,
+ "Phase": 72.21
+ },
+ "S20CB01.RACC300": {
+ "Gradient": 60500000.0,
+ "Phase": 72.21
+ },
+ "S20CB01.RACC400": {
+ "Gradient": 60500000.0,
+ "Phase": 72.21
+ },
+ "S20CB02.RACC100": {
+ "Gradient": 60500000.0,
+ "Phase": 107.52
+ },
+ "S20CB02.RACC200": {
+ "Gradient": 60500000.0,
+ "Phase": 107.52
+ },
+ "S20CB02.RACC300": {
+ "Gradient": 60500000.0,
+ "Phase": 107.52
+ },
+ "S20CB02.RACC400": {
+ "Gradient": 60500000.0,
+ "Phase": 107.52
+ },
+ "S20CB03.RACC100": {
+ "Gradient": 56250000.0,
+ "Phase": 72.21
+ },
+ "S20CB03.RACC200": {
+ "Gradient": 56250000.0,
+ "Phase": 72.21
+ },
+ "S20CB03.RACC300": {
+ "Gradient": 56250000.0,
+ "Phase": 72.21
+ },
+ "S20CB03.RACC400": {
+ "Gradient": 56250000.0,
+ "Phase": 72.21
+ },
+ "S20CB04.RACC100": {
+ "Gradient": 58000000.0,
+ "Phase": 107.52
+ },
+ "S20CB04.RACC200": {
+ "Gradient": 58000000.0,
+ "Phase": 107.52
+ },
+ "S20CB04.RACC300": {
+ "Gradient": 58000000.0,
+ "Phase": 107.52
+ },
+ "S20CB04.RACC400": {
+ "Gradient": 58000000.0,
+ "Phase": 107.52
+ },
+ "S30CB01.RACC100": {
+ "Gradient": 60000000.0,
+ "Phase": 67.39
+ },
+ "S30CB01.RACC200": {
+ "Gradient": 60000000.0,
+ "Phase": 67.39
+ },
+ "S30CB01.RACC300": {
+ "Gradient": 60000000.0,
+ "Phase": 67.39
+ },
+ "S30CB01.RACC400": {
+ "Gradient": 60000000.0,
+ "Phase": 67.39
+ },
+ "S30CB02.RACC100": {
+ "Gradient": 61250000.0,
+ "Phase": 112.59
+ },
+ "S30CB02.RACC200": {
+ "Gradient": 61250000.0,
+ "Phase": 112.59
+ },
+ "S30CB02.RACC300": {
+ "Gradient": 61250000.0,
+ "Phase": 112.59
+ },
+ "S30CB02.RACC400": {
+ "Gradient": 61250000.0,
+ "Phase": 112.59
+ },
+ "S30CB03.RACC100": {
+ "Gradient": 60000000.0,
+ "Phase": 67.39
+ },
+ "S30CB03.RACC200": {
+ "Gradient": 60000000.0,
+ "Phase": 67.39
+ },
+ "S30CB03.RACC300": {
+ "Gradient": 60000000.0,
+ "Phase": 67.39
+ },
+ "S30CB03.RACC400": {
+ "Gradient": 60000000.0,
+ "Phase": 67.39
+ },
+ "S30CB04.RACC100": {
+ "Gradient": 59000000.0,
+ "Phase": 112.59
+ },
+ "S30CB04.RACC200": {
+ "Gradient": 59000000.0,
+ "Phase": 112.59
+ },
+ "S30CB04.RACC300": {
+ "Gradient": 59000000.0,
+ "Phase": 112.59
+ },
+ "S30CB04.RACC400": {
+ "Gradient": 59000000.0,
+ "Phase": 112.59
+ },
+ "S30CB05.RACC100": {
+ "Gradient": 57500000.0,
+ "Phase": 67.39
+ },
+ "S30CB05.RACC200": {
+ "Gradient": 57500000.0,
+ "Phase": 67.39
+ },
+ "S30CB05.RACC300": {
+ "Gradient": 57500000.0,
+ "Phase": 67.39
+ },
+ "S30CB05.RACC400": {
+ "Gradient": 57500000.0,
+ "Phase": 67.39
+ },
+ "S30CB06.RACC100": {
+ "Gradient": 57500000.0,
+ "Phase": 112.59
+ },
+ "S30CB06.RACC200": {
+ "Gradient": 57500000.0,
+ "Phase": 112.59
+ },
+ "S30CB06.RACC300": {
+ "Gradient": 57500000.0,
+ "Phase": 112.59
+ },
+ "S30CB06.RACC400": {
+ "Gradient": 57500000.0,
+ "Phase": 112.59
+ },
+ "S30CB07.RACC100": {
+ "Gradient": 58775000.0,
+ "Phase": 67.39
+ },
+ "S30CB07.RACC200": {
+ "Gradient": 58775000.0,
+ "Phase": 67.39
+ },
+ "S30CB07.RACC300": {
+ "Gradient": 58775000.0,
+ "Phase": 67.39
+ },
+ "S30CB07.RACC400": {
+ "Gradient": 58775000.0,
+ "Phase": 67.39
+ },
+ "S30CB08.RACC100": {
+ "Gradient": 58750000.0,
+ "Phase": 112.59
+ },
+ "S30CB08.RACC200": {
+ "Gradient": 58750000.0,
+ "Phase": 112.59
+ },
+ "S30CB08.RACC300": {
+ "Gradient": 58750000.0,
+ "Phase": 112.59
+ },
+ "S30CB08.RACC400": {
+ "Gradient": 58750000.0,
+ "Phase": 112.59
+ },
+ "S30CB09.RACC100": {
+ "Gradient": 57500000.0,
+ "Phase": 67.39
+ },
+ "S30CB09.RACC200": {
+ "Gradient": 57500000.0,
+ "Phase": 67.39
+ },
+ "S30CB09.RACC300": {
+ "Gradient": 57500000.0,
+ "Phase": 67.39
+ },
+ "S30CB09.RACC400": {
+ "Gradient": 57500000.0,
+ "Phase": 67.39
+ },
+ "S30CB10.RACC100": {
+ "Gradient": 57500000.0,
+ "Phase": 112.59
+ },
+ "S30CB10.RACC200": {
+ "Gradient": 57500000.0,
+ "Phase": 112.59
+ },
+ "S30CB10.RACC300": {
+ "Gradient": 57500000.0,
+ "Phase": 112.59
+ },
+ "S30CB10.RACC400": {
+ "Gradient": 57500000.0,
+ "Phase": 112.59
+ },
+ "S30CB11.RACC100": {
+ "Gradient": 60000000.0,
+ "Phase": 59.21
+ },
+ "S30CB11.RACC200": {
+ "Gradient": 60000000.0,
+ "Phase": 59.21
+ },
+ "S30CB11.RACC300": {
+ "Gradient": 60000000.0,
+ "Phase": 59.21
+ },
+ "S30CB11.RACC400": {
+ "Gradient": 60000000.0,
+ "Phase": 59.21
+ },
+ "S30CB12.RACC100": {
+ "Gradient": 61250000.0,
+ "Phase": 130.81
+ },
+ "S30CB12.RACC200": {
+ "Gradient": 61250000.0,
+ "Phase": 130.81
+ },
+ "S30CB12.RACC300": {
+ "Gradient": 61250000.0,
+ "Phase": 130.81
+ },
+ "S30CB12.RACC400": {
+ "Gradient": 61250000.0,
+ "Phase": 130.81
+ },
+ "S30CB13.RACC100": {
+ "Gradient": 52500000.0,
+ "Phase": 90.0
+ },
+ "S30CB13.RACC200": {
+ "Gradient": 52500000.0,
+ "Phase": 90.0
+ },
+ "S30CB13.RACC300": {
+ "Gradient": 52500000.0,
+ "Phase": 90.0
+ },
+ "S30CB13.RACC400": {
+ "Gradient": 52500000.0,
+ "Phase": 90.0
+ },
+ "SATCB01.RACC100": {
+ "Gradient": 0.0,
+ "Phase": 90.0
+ },
+ "SATCB01.RACC200": {
+ "Gradient": 0.0,
+ "Phase": 90.0
+ },
+ "SATCB01.RACC300": {
+ "Gradient": 0.0,
+ "Phase": 90.0
+ },
+ "SATCB01.RACC400": {
+ "Gradient": 0.0,
+ "Phase": 90.0
+ }
+ },
+ "Undulator": {
+ "SINLH02.UIND230": {
+ "K": 2.27,
+ "kx": 0.0,
+ "ky": 1.0
+ },
+ "SARUN03.UIND030": {
+ "K": 1.7511,
+ "kx": 0.0,
+ "ky": 1.0
+ },
+ "SARUN04.UIND030": {
+ "K": 1.7722,
+ "kx": 0.0,
+ "ky": 1.0
+ },
+ "SARUN05.UIND030": {
+ "K": 1.7522,
+ "kx": 0.0,
+ "ky": 1.0
+ },
+ "SARUN06.UIND030": {
+ "K": 1.7517,
+ "kx": 0.0,
+ "ky": 1.0
+ },
+ "SARUN07.UIND030": {
+ "K": 1.7509,
+ "kx": 0.0,
+ "ky": 1.0
+ },
+ "SARUN08.UIND030": {
+ "K": 1.7521,
+ "kx": 0.0,
+ "ky": 1.0
+ },
+ "SARUN09.UIND030": {
+ "K": 1.753,
+ "kx": 0.0,
+ "ky": 1.0
+ },
+ "SARUN10.UIND030": {
+ "K": 1.7531,
+ "kx": 0.0,
+ "ky": 1.0
+ },
+ "SARUN11.UIND030": {
+ "K": 1.7515,
+ "kx": 0.0,
+ "ky": 1.0
+ },
+ "SARUN12.UIND030": {
+ "K": 1.7495,
+ "kx": 0.0,
+ "ky": 1.0
+ },
+ "SARUN13.UIND030": {
+ "K": 1.7474,
+ "kx": 0.0,
+ "ky": 1.0
+ },
+ "SARUN14.UIND030": {
+ "K": 1.7535,
+ "kx": 0.0,
+ "ky": 1.0
+ },
+ "SARUN15.UIND030": {
+ "K": 1.7538,
+ "kx": 0.0,
+ "ky": 1.0
+ },
+ "SATDI01.UMOD050": {
+ "K": 8.0,
+ "kx": 0,
+ "ky": 1
+ },
+ "SATDI01.UMOD051": {
+ "K": 8.0,
+ "kx": 0,
+ "ky": 1
+ },
+ "SATDI01.UMOD052": {
+ "K": 8.0,
+ "kx": 0,
+ "ky": 1
+ },
+ "SATDI01.UMOD053": {
+ "K": 8.0,
+ "kx": 0,
+ "ky": 1
+ },
+ "SATDI01.UMOD054": {
+ "K": 8.0,
+ "kx": 0,
+ "ky": 1
+ },
+ "SATDI01.UMOD055": {
+ "K": 8.0,
+ "kx": 0,
+ "ky": 1
+ },
+ "SATDI01.UMOD056": {
+ "K": 8.0,
+ "kx": 0,
+ "ky": 1
+ },
+ "SATDI01.UMOD057": {
+ "K": 8.0,
+ "kx": 0,
+ "ky": 1
+ },
+ "SATDI01.UMOD058": {
+ "K": 8.0,
+ "kx": 0,
+ "ky": 1
+ },
+ "SATUN04.UMOD030": {
+ "K": 8.0,
+ "kx": 0,
+ "ky": 1
+ },
+ "SATUN04.UMOD031": {
+ "K": 8.0,
+ "kx": 0,
+ "ky": 1
+ },
+ "SATUN04.UMOD032": {
+ "K": 8.0,
+ "kx": 0,
+ "ky": 1
+ },
+ "SATUN04.UMOD033": {
+ "K": 8.0,
+ "kx": 0,
+ "ky": 1
+ },
+ "SATUN04.UMOD034": {
+ "K": 8.0,
+ "kx": 0,
+ "ky": 1
+ },
+ "SATUN04.UMOD035": {
+ "K": 8.0,
+ "kx": 0,
+ "ky": 1
+ },
+ "SATUN04.UMOD036": {
+ "K": 8.0,
+ "kx": 0,
+ "ky": 1
+ },
+ "SATUN04.UMOD037": {
+ "K": 8.0,
+ "kx": 0,
+ "ky": 1
+ },
+ "SATUN04.UMOD038": {
+ "K": 8.0,
+ "kx": 0,
+ "ky": 1
+ },
+ "SATUN06.UIND030": {
+ "K": 2.5494,
+ "kx": 0.0,
+ "ky": 1.0
+ },
+ "SATUN07.UIND030": {
+ "K": 2.5494,
+ "kx": 0.0,
+ "ky": 1.0
+ },
+ "SATUN08.UIND030": {
+ "K": 2.5494,
+ "kx": 0.0,
+ "ky": 1.0
+ },
+ "SATUN09.UIND030": {
+ "K": 2.5494,
+ "kx": 0.0,
+ "ky": 1.0
+ },
+ "SATUN10.UIND030": {
+ "K": 2.5494,
+ "kx": 0.0,
+ "ky": 1.0
+ },
+ "SATUN11.UIND030": {
+ "K": 2.5494,
+ "kx": 0.0,
+ "ky": 1.0
+ },
+ "SATUN12.UIND030": {
+ "K": 2.5494,
+ "kx": 0.0,
+ "ky": 1.0
+ },
+ "SATUN13.UIND030": {
+ "K": 2.5494,
+ "kx": 0.0,
+ "ky": 1.0
+ },
+ "SATUN15.UIND030": {
+ "K": 2.5494,
+ "kx": 0.0,
+ "ky": 1.0
+ },
+ "SATUN16.UIND030": {
+ "K": 2.5494,
+ "kx": 0.0,
+ "ky": 1.0
+ },
+ "SATUN17.UIND030": {
+ "K": 2.5494,
+ "kx": 0.0,
+ "ky": 1.0
+ },
+ "SATUN18.UIND030": {
+ "K": 2.5494,
+ "kx": 0.0,
+ "ky": 1.0
+ },
+ "SATUN19.UIND030": {
+ "K": 2.5494,
+ "kx": 0.0,
+ "ky": 1.0
+ },
+ "SATUN20.UIND030": {
+ "K": 2.5494,
+ "kx": 0.0,
+ "ky": 1.0
+ },
+ "SATUN21.UIND030": {
+ "K": 2.5494,
+ "kx": 0.0,
+ "ky": 1.0
+ },
+ "SATUN22.UIND030": {
+ "K": 2.5494,
+ "kx": 0.0,
+ "ky": 1.0
+ }
+ },
+ "Kicker": {
+ "S20SY02.MKDC010": {
+ "cory": 0,
+ "design_kick": 0.0002079977059769098
+ },
+ "S20SY02.MKAC020": {
+ "cory": 0,
+ "design_kick": 0.0003119965589653647
+ },
+ "S20SY02.MKDC030": {
+ "cory": 0,
+ "design_kick": 0.0002079977059769098
+ },
+ "S20SY02.MKAC040": {
+ "cory": 0,
+ "design_kick": 0.0003119965589653647
+ },
+ "S20SY02.MKDC050": {
+ "cory": 0,
+ "design_kick": 0.0002079977059769098
+ }
+ },
+ "Energy": {
+ "location": "SINLH01.DBAM010",
+ "energy": 140.0
+ },
+ "InitialCondition": {
+ "betax0": 29.941526031066736,
+ "betay0": 26.026225014163643,
+ "alphax0": 0.00588355857402991,
+ "alphay0": -0.29072274788589586,
+ "etax0": 4.660568715767627e-12,
+ "etay0": 0.0,
+ "etapx0": 9.257503881451997e-13,
+ "etapy0": -0.0,
+ "x0": 0.0,
+ "y0": 0.0,
+ "px0": -0.0,
+ "py0": -0.0
+ }
+}
\ No newline at end of file
diff --git a/distribution.py b/distribution.py
index 8b3be75..868cf0c 100644
--- a/distribution.py
+++ b/distribution.py
@@ -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)
diff --git a/lattice.py b/lattice.py
new file mode 100644
index 0000000..2a93779
--- /dev/null
+++ b/lattice.py
@@ -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)
+
+
diff --git a/model.py b/model.py
new file mode 100644
index 0000000..b37f671
--- /dev/null
+++ b/model.py
@@ -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()
\ No newline at end of file
diff --git a/track.py b/track.py
new file mode 100644
index 0000000..e58ac6a
--- /dev/null
+++ b/track.py
@@ -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)
\ No newline at end of file
diff --git a/ui/ElegantToolsGui.py b/ui/ElegantToolsGui.py
index 2712220..c86b201 100644
--- a/ui/ElegantToolsGui.py
+++ b/ui/ElegantToolsGui.py
@@ -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"))
diff --git a/ui/ElegantToolsGui.ui b/ui/ElegantToolsGui.ui
index f78eab7..cee987c 100644
--- a/ui/ElegantToolsGui.ui
+++ b/ui/ElegantToolsGui.ui
@@ -7,7 +7,7 @@
0
0
813
- 775
+ 951
@@ -24,7 +24,7 @@
- 1
+ 0
@@ -114,327 +114,27 @@
-
-
-
-
- 0
- 0
-
-
+
- Reference Point
+ Include Longitudinal Space Charge
+
+
+ true
-
-
-
-
- 0
- 0
-
-
-
-
- -
-
-
-
- 0
- 0
-
-
+
- Location
+ Include Coherent Synchrotron Radiation
+
+
+ true
-
-
-
-
- 0
- 0
-
-
-
-
- -
-
-
-
-
-
-
- 0
- 0
-
-
-
- 30
-
-
-
- -
-
-
- beta
-
-
-
- -
-
-
-
- 0
- 0
-
-
-
- 0
-
-
-
- -
-
-
-
- 0
- 0
-
-
-
- 30
-
-
-
- -
-
-
- eta
-
-
-
- -
-
-
- offset
-
-
-
- -
-
-
- eta'
-
-
-
- -
-
-
- alpha
-
-
-
- -
-
-
-
- 0
- 0
-
-
-
- y
-
-
-
- -
-
-
-
- 0
- 0
-
-
-
- x
-
-
-
- -
-
-
-
- 0
- 0
-
-
-
- 0
-
-
-
- -
-
-
- angle
-
-
-
- -
-
-
-
- 0
- 0
-
-
-
- 0
-
-
-
- -
-
-
-
- 0
- 0
-
-
-
- 0
-
-
-
- -
-
-
-
- 0
- 0
-
-
-
- 30
-
-
-
- -
-
-
-
- 0
- 0
-
-
-
- 30
-
-
-
- -
-
-
-
- 0
- 0
-
-
-
- 30
-
-
-
- -
-
-
-
- 0
- 0
-
-
-
- 30
-
-
-
- -
-
-
-
- 0
- 0
-
-
-
- 30
-
-
-
- -
-
-
-
- 0
- 0
-
-
-
- 30
-
-
-
-
-
- -
-
-
- Qt::Vertical
-
-
-
- 20
- 40
-
-
-
-
- -
-
-
- Update Model from Machine
-
-
-
- -
-
-
-
- 0
- 0
-
-
-
- Status
-
-
-
- -
-
-
-
- 0
- 0
-
-
-
-
- 150
- 0
-
-
-
+
@@ -713,321 +413,242 @@
Lattice
-
- -
-
-
-
-
-
-
- 12
- 75
- true
-
-
-
- background-color: rgb(255, 255, 127);
-
-
- Match Selected
-
-
-
- -
-
-
-
-
-
- Label
-
-
-
- -
-
-
-
-
-
-
-
-
- -
-
-
- Matching Order (Closest Reference Point)
-
-
-
- -
-
-
-
- 0
- 0
-
-
-
-
- 350
- 0
-
-
-
-
- -
-
-
- Random Initialization
-
-
-
-
-
- -
-
-
-
-
-
-
- 12
- 75
- true
-
-
-
- Matching Point
-
-
-
- -
-
-
-
-
-
- Start
-
-
-
- -
-
-
- true
-
-
-
- -
-
-
- true
-
-
-
- -
-
-
- Sequence
-
-
-
- -
-
-
- Match
-
-
-
- -
-
-
- true
-
-
-
- -
-
-
- End
-
-
-
- -
-
-
- true
-
-
-
-
-
- -
-
-
- Knobs
-
-
-
- -
-
-
-
- 0
- 0
-
-
-
-
- Parameter
-
-
-
-
- Value
-
-
-
-
- Limit
-
-
-
-
- -
-
-
- Target
-
-
-
- -
-
-
-
- Location
-
-
-
-
- Condition
-
-
-
-
-
-
- -
-
-
- Qt::Horizontal
-
-
-
- 242
- 20
-
-
-
-
-
-
-
-
- Matching Config (Expert)
-
-
+
-
-
-
+
- Generate Matching File
+ Load Settings
-
-
-
-
-
-
- Label
-
-
-
- -
-
-
- Custom
-
-
-
-
+
+
+
+ 0
+ 0
+
+
+
+ RF Settings
+
+
-
-
+
+
+
+ 0
+ 0
+
+
+
+ false
+
+
+ false
+
+
+
+ New Row
+
+
+
+
+ New Row
+
+
+
+
+ New Row
+
+
+
+
+ New Row
+
+
+
+
+ New Row
+
+
+
+
+ New Row
+
+
+
+
+ Section
+
+
+
+
+ Voltage
+
+
+
+
+ Phase
+
+
+
+
+ Energy Gain
+
+
+ -
+
+ Injector S-Band
+
+
+ -
+
+ Injector X-Band
+
+
+ -
+
+ Linac 1 C-Band
+
+
+ -
+
+ Linac 2 C-Band
+
+
+ -
+
+ Linac 3 C-Band
+
+
+ -
+
+ Athos C-Band
+
+
+
+
+ -
+
+
+ Update RF Settings
+
+
+
+ -
+
+
+
+ 0
+ 0
+
+
+
+ Particle Dump Location
+
+
+
+ -
+
+
+
+ 0
+ 0
+
+
+
+
+ -
+
+
+ Delete Selected
+
+
+
+ -
+
- Qt::Horizontal
+ Qt::Vertical
+
+
+
+ 20
+ 40
+
+
+
+
+
+
+ -
+
+
-
+
+
+
+ 0
+ 0
+
+
+
+ Available Diagnostic Elements
-
-
-
- Compression in Switchyard (%)
+
+
+
+ 0
+ 0
+
+
+
+ QAbstractItemView::MultiSelection
-
-
+
- 0
+ Add Selected
-
-
+
+
+
+ 0
+ 0
+
+
- Focal Strength Aramis (%)
+ Available Sections
-
-
-
- 100
+
+
+
+ 0
+ 0
+
+
+
+ QAbstractItemView::MultiSelection
-
-
+
- Focal Strength Aramis (%)
-
-
-
- -
-
-
- 100
-
-
-
- -
-
-
- SARCL02 as BC
-
-
-
- -
-
-
- R56 in SARCL02 (mm)
-
-
-
- -
-
-
- 0
+ Add Selected
@@ -1047,13 +668,13 @@
-
-
+
Qt::Horizontal
- 380
+ 242
20