bugfixing
This commit is contained in:
@ -1,4 +1,5 @@
|
|||||||
from epics import PV
|
from epics import PV
|
||||||
|
from os.path import dirname
|
||||||
from slic.core.adjustable import Adjustable, PVAdjustable
|
from slic.core.adjustable import Adjustable, PVAdjustable
|
||||||
from slic.core.device import SimpleDevice
|
from slic.core.device import SimpleDevice
|
||||||
from slic.core.task import Task
|
from slic.core.task import Task
|
||||||
@ -10,12 +11,12 @@ from time import sleep
|
|||||||
|
|
||||||
|
|
||||||
UND_PERIOD = 38.0
|
UND_PERIOD = 38.0
|
||||||
|
REF_MAG_ARRAY = 'TL'
|
||||||
|
|
||||||
|
|
||||||
def check_phase(phase):
|
def check_phase(phase):
|
||||||
assert -180 <= phase <= 180
|
assert -180 <= phase <= 180
|
||||||
|
|
||||||
#TODO: use this to be in the correct range?
|
|
||||||
def fix_phase(p):
|
def fix_phase(p):
|
||||||
return ((p + 180) % 360) - 180
|
return ((p + 180) % 360) - 180
|
||||||
|
|
||||||
@ -31,7 +32,7 @@ class UndPhases(Adjustable):
|
|||||||
allows to set the same phase to all undulators
|
allows to set the same phase to all undulators
|
||||||
"""
|
"""
|
||||||
|
|
||||||
def __init__(self, ID, params, und_names=None, **kwargs):
|
def __init__(self, ID, params, isparallel=True, und_names=None, **kwargs):
|
||||||
super().__init__(ID, **kwargs)
|
super().__init__(ID, **kwargs)
|
||||||
self.params = params
|
self.params = params
|
||||||
|
|
||||||
@ -39,7 +40,7 @@ class UndPhases(Adjustable):
|
|||||||
und_names = params.keys()
|
und_names = params.keys()
|
||||||
|
|
||||||
SUFFIX = "-UIND030:"
|
SUFFIX = "-UIND030:"
|
||||||
self.phases = [UndPhase(i + SUFFIX, params[i]) for i in und_names]
|
self.phases = [UndPhase(i + SUFFIX, params[i], isparallel=isparallel) for i in und_names]
|
||||||
|
|
||||||
|
|
||||||
def get_current_value(self):
|
def get_current_value(self):
|
||||||
@ -64,10 +65,11 @@ class UndPhase(Adjustable):
|
|||||||
allows to set the phase of one undulator
|
allows to set the phase of one undulator
|
||||||
"""
|
"""
|
||||||
|
|
||||||
def __init__(self, ID, params, **kwargs):
|
def __init__(self, ID, params, isparallel, **kwargs):
|
||||||
super().__init__(ID, **kwargs)
|
super().__init__(ID, **kwargs)
|
||||||
self.params = params
|
self.params = params
|
||||||
self.shift = UndShift(ID)
|
self.isparallel = isparallel
|
||||||
|
self.shift = UndShift(ID) if isparallel else UndShiftQuadrants(ID, REF_MAG_ARRAY)
|
||||||
self.radial = UndRadial(ID)
|
self.radial = UndRadial(ID)
|
||||||
self.totalk = UndTotalK(ID)
|
self.totalk = UndTotalK(ID)
|
||||||
|
|
||||||
@ -79,10 +81,13 @@ class UndPhase(Adjustable):
|
|||||||
|
|
||||||
def set_target_value(self, value):
|
def set_target_value(self, value):
|
||||||
phase = value
|
phase = value
|
||||||
|
phase = fix_phase(phase)
|
||||||
shift = convert_phase_to_shift(phase)
|
shift = convert_phase_to_shift(phase)
|
||||||
|
|
||||||
k = self.totalk.get()
|
k = self.totalk.get()
|
||||||
#radial = parallel2gap(k, phase, self.params)
|
if self.isparallel:
|
||||||
|
radial = parallel2gap(k, phase, self.params)
|
||||||
|
else:
|
||||||
radial = antiparallel2gap(k, phase, self.params)
|
radial = antiparallel2gap(k, phase, self.params)
|
||||||
radial = round(radial, 4) #TODO: why?
|
radial = round(radial, 4) #TODO: why?
|
||||||
|
|
||||||
@ -168,7 +173,7 @@ class UndShiftQuadrants(Adjustable):
|
|||||||
def set_target_value(self, value):
|
def set_target_value(self, value):
|
||||||
names = (n.lower() for n in self.names)
|
names = (n.lower() for n in self.names)
|
||||||
vals = (value, -value, 0, 0)
|
vals = (value, -value, 0, 0)
|
||||||
tasks = [adjs[n].set_target_value(v) for n, v in zip(names, vals)]
|
tasks = [self.adjs.__dict__[n].set_target_value(v) for n, v in zip(names, vals)]
|
||||||
|
|
||||||
sleep(0.3)
|
sleep(0.3)
|
||||||
self.pv_on.put(1)
|
self.pv_on.put(1)
|
||||||
@ -212,10 +217,12 @@ class UndTotalK:
|
|||||||
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
|
print(__file__)
|
||||||
|
print(dirname(__file__))
|
||||||
|
basedir = dirname(__file__)
|
||||||
#phase = 123
|
#phase = 123
|
||||||
phase = 95
|
phase = 90
|
||||||
check_phase(phase)
|
check_phase(phase)
|
||||||
|
|
||||||
und_first = 10
|
und_first = 10
|
||||||
und_last = 22
|
und_last = 22
|
||||||
und_range = [*range(und_first, und_last+1, 1)]
|
und_range = [*range(und_first, und_last+1, 1)]
|
||||||
@ -226,30 +233,35 @@ if __name__ == "__main__":
|
|||||||
print(undus)
|
print(undus)
|
||||||
|
|
||||||
# old Excel parameter file with only legacy fixed polarization parameters
|
# old Excel parameter file with only legacy fixed polarization parameters
|
||||||
params1 = json_load("UE38_all_parallel_parameters.json")
|
params1 = json_load(basedir + "/UE38_all_parallel_parameters.json")
|
||||||
print('\n')
|
print('\n')
|
||||||
print(type(params1))
|
print(type(params1))
|
||||||
print(params1.keys())
|
print(params1.keys())
|
||||||
|
|
||||||
# Excel parameter file with only fixed polarization parameters
|
# Excel parameter file with only fixed polarization parameters
|
||||||
params2 = json_load("UE38_all_parameters.json")
|
params2 = json_load(basedir + "/UE38_all_parameters.json")
|
||||||
print('\n')
|
print('\n')
|
||||||
print(type(params2))
|
print(type(params2))
|
||||||
print(params2.keys())
|
print(params2.keys())
|
||||||
|
|
||||||
# Pickle parameter file with fixed and full polarization parameters
|
# Pickle parameter file with fixed and full polarization parameters
|
||||||
alldata = unpickle('./UE38_meas_and_fit_data.pickle')
|
alldata = unpickle(basedir + '/UE38_meas_and_fit_data.pickle')
|
||||||
params = alldata['fitdata']
|
params = alldata['fitdata']
|
||||||
measdata = alldata['measdata']
|
measdata = alldata['measdata']
|
||||||
print('\n')
|
print('\n')
|
||||||
print(type(params))
|
print(type(params))
|
||||||
print(params.keys())
|
print(params.keys())
|
||||||
|
|
||||||
ups = UndPhases("SATUN-PHASES", params)
|
params = {a:v for a,v in params.items() if a in undus}
|
||||||
|
#for u in params.keys():
|
||||||
|
# if u not in undus:
|
||||||
|
# del(params[u])
|
||||||
|
|
||||||
|
ups = UndPhases("SATUN-PHASES", params, isparallel=False)
|
||||||
sleep(0.3)
|
sleep(0.3)
|
||||||
print(ups.phases[0], ups.phases[0].shift)
|
print(ups.phases[0], ups.phases[0].shift)
|
||||||
#ups.phases[0].set_target_value(phase).wait()
|
ups.phases[0].set_target_value(phase).wait()
|
||||||
#print(ups.phases[0], ups.phases[0].shift)
|
print(ups.phases[0], ups.phases[0].shift)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user