From 4db50ced8f2bc8955cd19987d912f17ee33165d5 Mon Sep 17 00:00:00 2001 From: reiche Date: Wed, 16 Jul 2025 16:33:06 +0200 Subject: [PATCH] Initial Commit --- .gitignore | 5 +- ElegantTools.py | 14 +- OnlineModelLattices/ReferenceSetting.json | 1776 +++++++++++++++++++++ distribution.py | 25 +- lattice.py | 370 +++++ model.py | 146 ++ track.py | 118 ++ ui/ElegantToolsGui.py | 621 +++---- ui/ElegantToolsGui.ui | 813 +++------- 9 files changed, 2853 insertions(+), 1035 deletions(-) create mode 100644 OnlineModelLattices/ReferenceSetting.json create mode 100644 lattice.py create mode 100644 model.py create mode 100644 track.py 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