Initial Round of Sandbox implementation

This commit is contained in:
2025-05-06 17:53:09 +02:00
committed by Sven
parent a241e2889f
commit d896a50e0b
2 changed files with 70 additions and 5 deletions

View File

@@ -16,6 +16,43 @@ class Model:
# hook up events
self.eventHandling()
def updateEnergy(self,E0):
self.om.forceEnergyAt('SINLH02.MBND100', E0*1e6)
def updateElement(self,name,val):
if 'MQUA' in name:
self.om.setRegExpElement(name[0:7], name[8:15], 'k1', float(val[0]))
if 'MSEX' in name:
self.om.setRegExpElement(name[0:7], name[8:15], 'k2', float(val[0]))
if 'MBND' in name:
self.om.setRegExpElement(name[0:7], 'MBND', 'angle', float(val[0]))
if 'UMOD' in name:
self.om.setRegExpElement(name[0:7], 'UMOD', 'K', float(val[0]))
if 'UIND' in name:
self.om.setRegExpElement(name[0:7], name[8:15], 'K', float(val[0]))
if 'SATUN' in name:
kx = 0
ky = 1
if 'LV' in val[1]:
kx = 1
ky = 0
if 'C' in val[1]:
kx = 0.5
ky=0.5
self.om.setRegExpElement(name[0:7], name[8:15], 'kx', kx)
self.om.setRegExpElement(name[0:7], name[8:15], 'ky', ky)
if 'RSYS' in name:
grad = float(val[0])
phase = float(val[1])
if 'CB' in name[0:7]:
grad = grad/ 4.
elif 'XB' in name[0:7] or 'SINSB03' in name or 'SINSB04' in name:
grad = grad/2
self.om.setRegExpElement(name[0:7], 'RACC', 'Gradient', grad)
self.om.setRegExpElement(name[0:7], 'RACC', 'Phase', phase)
def getElements(self):
return self.om.listElement('*', 1)
@@ -62,7 +99,7 @@ class Model:
##### very old code should be become obsolete after some nice matching files
def updateModel(self):
file ='SwissFELRef.json'
with open(file) as f:
@@ -97,6 +134,9 @@ class Model:
else:
print('Unknown tag:', key, data['settings'][key])
##############################33
# tracking
def eventHandling(self):
self.parent.UITrack.clicked.connect(self.track)

View File

@@ -13,11 +13,38 @@ class Sandbox:
def __init__(self, parent=None,machine=False):
self.parent=parent
self.machine=machine
self.parent.MagReStart.editingFinished.connect(self.updateSandbox)
self.parent.MagReFilter.editingFinished.connect(self.updateSandbox)
self.parent.Mach2ModMag.clicked.connect(self.updateModelEvent)
self.parent.SB2ModMag.clicked.connect(self.updateModelEvent)
self.parent.Mach2ModUnd.clicked.connect(self.updateModelEvent)
self.parent.SB2ModUnd.clicked.connect(self.updateModelEvent)
def updateModelEvent(self):
if self.parent.sender() is self.parent.Mach2ModMag:
self.updateModel(self.parent.MagSB,2,True)
elif self.parent.sender() is self.parent.SB2ModMag:
self.updateModel(self.parent.MagSB, 1, True)
elif self.parent.sender() is self.parent.Mach2ModUnd:
self.updateModel(self.parent.UndSB, 3, False)
self.updateModel(self.parent.RFSB, 3, False)
elif self.parent.sender() is self.parent.SB2ModUnd:
self.updateModel(self.parent.UndSB, 1, False)
self.updateModel(self.parent.RFSB, 1, False)
def updateModel(self,sb,col,single):
for i in range(sb.rowCount()):
field=str(sb.item(i,0).text())
val = str(sb.item(i, col).text())
if val == '---':
continue
if single:
val = [val]
else:
val = [val,str(sb.item(i+1,col).text())]
self.parent.model.updateElement(field.replace('-','.'),val)
self.updateSandbox()
def updateSandbox(self):
@@ -61,10 +88,9 @@ class Sandbox:
values = []
colors = []
for key in machine.keys():
sbvalue = [key[0:7]]
sbvalue = [key[0:7]+'-RSYS']
sbcolor = [CWhite]
mokey = key[0:7]+'.RACC100'
print(mokey)
scl=1.
if 'CB' in mokey:
scl = 4
@@ -191,6 +217,5 @@ class Sandbox:
sbcol.append(CRed)
values.append(sbval)
colors.append(sbcol)
self.updateSandboxCommon(sb, values, colors, labels)