Initial test of matching

This commit is contained in:
2025-05-14 17:54:00 +02:00
parent a1d8ed58c5
commit 2f8a07ac37
3 changed files with 87 additions and 31 deletions

View File

@@ -16,6 +16,7 @@ class ReferenceManager:
self.parent = parent
self.settings={}
self.reference={}
self.save={}
self.label=None
self.twisswidget={'betax':self.parent.UIBetax,'betay':self.parent.UIBetay,
@@ -28,9 +29,17 @@ class ReferenceManager:
self.loadReference('Settings/Reference.json')
self.parent.UITrackReference.currentIndexChanged.connect(self.updateReferenceWidgets)
#self.parent.UIMatchOrder.itemClicked.connect(self.updateMatchingPoint)
self.parent.UIMatchOrder.itemClicked.connect(self.displayMatchingPoint)
def clearMatching(self):
self.save.clear()
def updateMatchOrder(self):
self.parent.UIMatchOrder.clear()
for i,ele in enumerate(self.settings['Order']):
self.parent.UIMatchOrder.addItem(ele['MatchID'])
self.parent.UIMatchOrder.item(i).setBackground(CBeige)
def loadReference(self, filename):
with open(filename) as f:
@@ -39,18 +48,22 @@ class ReferenceManager:
self.reference=self.settings['Reference']
self.label=self.settings['Label']
self.parameter=self.settings['Parameter']
self.dependence=self.settings['Dependence']
self.save.clear()
self.parent.UIMatchSequenceLabel.setText(self.label)
self.updateReferenceComboBox()
self.updateReferenceWidgets()
self.updateMatchOrder()
def saveTwiss(self, ID, twiss):
self.save[ID]={'betax':twiss.betx[0],'betay':twiss.bety[0],'alphax':twiss.alfx[0],'alphay':twiss.alfy[0]}
print('saving twissvalue for',ID,':',self.save[ID])
def getMatchingPoint(self):
idx = self.parent.UIMatchOrder.currentRow()
if idx < 0:
return None
return None,None
ID = str(self.parent.UIMatchOrder.item(idx).text())
print('Matching Step Label:', ID)
@@ -76,6 +89,16 @@ class ReferenceManager:
con = {key: {'Val': tar['Fixed']['Twiss'][key], 'Condition': 0} for key in tar['Fixed']['Twiss'].keys()}
target[loc]=con
ncon += len(con.keys())
elif 'Save' in tar.keys():
loc=tar['Save']['Location']
IDsave = tar['Save']['SaveID']
if not IDsave in self.save.keys():
print('Needs first the matching point of',IDsave)
return
con = {key:{'Val': self.save[IDsave][key],'Condition':0} for key in self.save[IDsave].keys()}
target[loc]=con
ncon += len(con.keys())
print('Saved Target',loc,target[loc])
if nvar>ncon:
dummycon={}
for key in order['Reference']['Twiss'].keys():
@@ -84,19 +107,35 @@ class ReferenceManager:
ncon+=1
target['#s']=dummycon
order['Target'] = target
return order
return order, ID
def updateMatchPoint(self,ID,val):
idx = self.order[ID]
if val < 1e-6:
color = CGreen
elif val < 1:
color = CYellow
else:
color = CRed
self.parent.UIMatchOrder.item(idx).setBackground(color)
def getDependence(self,ele):
eletag=ele.upper().replace('.','-')
if eletag in self.dependence.keys():
return [mag.lower().replace('-','.') for mag in self.dependence[eletag]]
else:
return None
#--------------------------------
# match info
def updateMatchOrder(self):
self.parent.UIMatchOrder.clear()
for i,ele in enumerate(self.settings['Order']):
self.parent.UIMatchOrder.addItem(ele['MatchID'])
self.parent.UIMatchOrder.item(i).setBackground(CBeige)
def updateMatchingPoint(self):
def displayMatchingPoint(self):
order,ID = self.getMatchingPoint()
self.parent.UIMatchLabel.setText(ID)
return
def getoldMatchingPoint(self):
idx = self.parent.UIMatchOrder.currentRow()
if idx < 0:
return
@@ -181,7 +220,8 @@ class ReferenceManager:
def getReferenceLocation(self):
return str(self.parent.UITrackLocation.text())
####################################################
###### only relevant for tracking
##### interaction of the tracking reference point
def swithToUserDefinedLocation(self):