99 lines
5.0 KiB
Python
99 lines
5.0 KiB
Python
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 swithToUserDefinedLocation(self):
|
|
n = self.parent.UITrackReference.count()
|
|
self.parent.UITrackReference.setCurrentIndex(n-1)
|
|
|
|
def updateReferenceLocation(self,location):
|
|
self.parent.UITrackLocation.setText(location)
|
|
|
|
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('%7.3f' % 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
|
|
elif key == 'Start':
|
|
twiss = {key[0:-1]:self.parent.model.startTwiss[key] for key in self.parent.model.startTwiss.keys()} # strip of the zero
|
|
name = 'Start'
|
|
else:
|
|
twiss = self.reference['Reference'][key]['twiss']
|
|
name = self.reference['Reference'][key]['location']
|
|
self.updateReferenceLocation(name)
|
|
self.updateReferencePoint(twiss)
|
|
|
|
def updateReferenceComboBox(self):
|
|
self.parent.UITrackReference.clear()
|
|
self.parent.UITrackReference.addItem('Start')
|
|
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 |