class ReferenceManager: def __init__(self, parent): self.parent = parent self.reference={} self.twisswidget={'betax':self.parent.UIBetax,'betay':self.parent.UIBetay, 'alphax':self.parent.UIAlphax,'alphay':self.parent.UIAlphay, 'etax':self.parent.UIEtax,'etay':self.parent.UIEtay, 'etapx':self.parent.UIEtapx,'etapy':self.parent.UIEtapy, 'x':self.parent.UIX,'y':self.parent.UIY, 'px':self.parent.UIPX,'py':self.parent.UIPY} self.defineReferencePoints() self.updateReferenceComboBox() self.updateReferenceWidgets() self.parent.UITrackReference.currentIndexChanged.connect(self.updateReferenceWidgets) #### all event selecting some tracking points def updateReferencePoint(self,twiss): for key in self.twisswidget.keys(): if key in twiss.keys(): value = twiss[key] else: value = 0 if 'beta' in key: value = 30 self.twisswidget[key].setText(str(value)) def getReferencePoint(self): self.updateReferenceWidgets() # enforce that the data is consistent twiss = {key:float(str(self.twisswidget[key].text())) for key in self.twisswidget.keys()} return twiss def getReferenceLocation(self): return str(self.parent.UITrackLocation.text()) def updateReferenceWidgets(self): key = str(self.parent.UITrackReference.currentText()) if key == 'User Defined': return twiss = self.reference['Reference'][key]['twiss'] name = self.reference['Reference'][key]['location'] self.parent.UITrackLocation.setText(name) self.updateReferencePoint(twiss) def updateReferenceComboBox(self): self.parent.UITrackReference.clear() for ref in self.reference['Reference'].keys(): self.parent.UITrackReference.addItem(ref) self.parent.UITrackReference.addItem('User Defined') def defineReferencePoints(self): self.reference={'Reference':{}} self.reference['Reference']['Laser Heater']=self.defineRef('sinlh02.mqua410$start', {'betax':11.2,'alphax':3.2, 'betay':0.8,'alphay':0.75}) self.reference['Reference']['Bunch Compressor1']=self.defineRef('sindi02.mqua020$start', {'betax': 11.1557,'alphax': -1.17, 'betay': 50, 'alphay': 0.}) self.reference['Reference']['Bunch Compressor 2']=self.defineRef('s10ma01.mqua020$start', {'betax': 6.14, 'alphax': -0.83, 'betay': 22.86,'alphay': -1.18}) self.reference['Reference']['Switchyard']=self.defineRef('s20sy02.mqua070$start', {'betax': 12.99, 'alphax': 3.7011, 'betay': 46.339,'alphay': -6.501}) self.reference['Reference']['Linac3']=self.defineRef('s30cb10.mqua430$start', {'betax': 8.83, 'alphax': 0.548, 'betay': 30.44, 'alphay': -1.866}) self.reference['Reference']['Aramis Stopper']=self.defineRef('sarma01.mqua010$start', {'betax': 2.304, 'alphax': -1.4045, 'betay': 25.929, 'alphay': -6.363}) self.reference['Reference']['Athos HERO']=self.defineRef('satdi01.mqua250$start', {'betax': 35.76, 'alphax': -1.166, 'betay': 24.087, 'alphay': 0.648}) self.reference['Reference']['Athos Deflector']=self.defineRef('satbd01.mqua010$start', {'betax': 50, 'alphax': 0, 'betay': 50, 'alphay': 0}) def defineRef(self,location,twiss): ref={'location':location,'twiss':twiss} return ref