bugfixing
This commit is contained in:
@ -1,4 +1,5 @@
|
||||
from epics import PV
|
||||
from os.path import dirname
|
||||
from slic.core.adjustable import Adjustable, PVAdjustable
|
||||
from slic.core.device import SimpleDevice
|
||||
from slic.core.task import Task
|
||||
@ -10,12 +11,12 @@ from time import sleep
|
||||
|
||||
|
||||
UND_PERIOD = 38.0
|
||||
REF_MAG_ARRAY = 'TL'
|
||||
|
||||
|
||||
def check_phase(phase):
|
||||
assert -180 <= phase <= 180
|
||||
|
||||
#TODO: use this to be in the correct range?
|
||||
def fix_phase(p):
|
||||
return ((p + 180) % 360) - 180
|
||||
|
||||
@ -31,7 +32,7 @@ class UndPhases(Adjustable):
|
||||
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)
|
||||
self.params = params
|
||||
|
||||
@ -39,7 +40,7 @@ class UndPhases(Adjustable):
|
||||
und_names = params.keys()
|
||||
|
||||
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):
|
||||
@ -64,10 +65,11 @@ class UndPhase(Adjustable):
|
||||
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)
|
||||
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.totalk = UndTotalK(ID)
|
||||
|
||||
@ -79,10 +81,13 @@ class UndPhase(Adjustable):
|
||||
|
||||
def set_target_value(self, value):
|
||||
phase = value
|
||||
phase = fix_phase(phase)
|
||||
shift = convert_phase_to_shift(phase)
|
||||
|
||||
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 = round(radial, 4) #TODO: why?
|
||||
|
||||
@ -168,7 +173,7 @@ class UndShiftQuadrants(Adjustable):
|
||||
def set_target_value(self, value):
|
||||
names = (n.lower() for n in self.names)
|
||||
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)
|
||||
self.pv_on.put(1)
|
||||
@ -212,10 +217,12 @@ class UndTotalK:
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
print(__file__)
|
||||
print(dirname(__file__))
|
||||
basedir = dirname(__file__)
|
||||
#phase = 123
|
||||
phase = 95
|
||||
phase = 90
|
||||
check_phase(phase)
|
||||
|
||||
und_first = 10
|
||||
und_last = 22
|
||||
und_range = [*range(und_first, und_last+1, 1)]
|
||||
@ -226,30 +233,35 @@ if __name__ == "__main__":
|
||||
print(undus)
|
||||
|
||||
# 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(type(params1))
|
||||
print(params1.keys())
|
||||
|
||||
# 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(type(params2))
|
||||
print(params2.keys())
|
||||
|
||||
# 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']
|
||||
measdata = alldata['measdata']
|
||||
print('\n')
|
||||
print(type(params))
|
||||
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)
|
||||
print(ups.phases[0], ups.phases[0].shift)
|
||||
#ups.phases[0].set_target_value(phase).wait()
|
||||
#print(ups.phases[0], ups.phases[0].shift)
|
||||
ups.phases[0].set_target_value(phase).wait()
|
||||
print(ups.phases[0], ups.phases[0].shift)
|
||||
|
||||
|
||||
|
||||
|
Reference in New Issue
Block a user