From b22e1f7987ad4cae4e098738fe1f5f48069009aa Mon Sep 17 00:00:00 2001 From: Roman Mankowsky Date: Tue, 12 Jun 2018 10:27:09 +0200 Subject: [PATCH] Revert "Revert "diverse"" This reverts commit 41bf08598be3bacb6c10f3e47452552c0a18ed5c. --- acquisition/scan.py | 4 ++-- eco_epics/utilities_epics.py | 25 +++++++++++++++++++++++++ xoptics/KBhor.py | 15 ++++++++++++++- xoptics/KBver.py | 13 ++++++++++++- 4 files changed, 53 insertions(+), 4 deletions(-) diff --git a/acquisition/scan.py b/acquisition/scan.py index e50fc91..5827a76 100755 --- a/acquisition/scan.py +++ b/acquisition/scan.py @@ -150,11 +150,11 @@ class Scans: print('Warning: dscan will be deprecated for rscan unless someone explains what it stands for in spec!') return self.rscan(*args,**kwargs) - def ascanList(self,adjustable,posList,N_pulses,file_name=None,start_immediately=True): + def ascanList(self,adjustable,posList,N_pulses,file_name=None,start_immediately=True, step_info = None): positions = posList values = [[tp] for tp in positions] s = ScanSimple([adjustable],values,self._default_counters,file_name,Npulses=N_pulses,basepath=self.data_base_dir,scan_info_dir=self.scan_info_dir,checker=self.checker,scan_directories=self._scan_directories) if start_immediately: - s.scanAll() + s.scanAll(step_info=step_info) return s diff --git a/eco_epics/utilities_epics.py b/eco_epics/utilities_epics.py index 452dfdc..209d95d 100755 --- a/eco_epics/utilities_epics.py +++ b/eco_epics/utilities_epics.py @@ -32,6 +32,31 @@ class EnumWrapper: +class MonitorAccumulator: + def __init__(self,pv,attr=None,keywords=['value','timestamp']): + self.pv = pv + self.attr = attr + self.values = [] + self.keywords = keywords + + def _accumulate(self,**kwargs): + self.values.append([kwargs[kw] for kw in self.keywords]) + + def accumulate(self): + self.pv.add_callback(self._accumulate,self.attr) + + def stop(self): + self.pv.remove_callbacks(self.attr) + + def cycle(self): + self.stop() + d = self.values.copy() + self.values = [] + self.accumulate() + return d + + + class Positioner: def __init__(self,list_of_name_func_tuples): diff --git a/xoptics/KBhor.py b/xoptics/KBhor.py index 1f98494..6236fa0 100755 --- a/xoptics/KBhor.py +++ b/xoptics/KBhor.py @@ -15,11 +15,24 @@ class KBhor: self.mode = PV(Id[:11]+':MODE').enum_strs[PV(Id[:11]+':MODE').value] + + #### actual motors ### + self._Y1 = MotorRecord(Id+':TY1') + self._Y2 = MotorRecord(Id+':TY2') + self._Y3 = MotorRecord(Id+':TY3') + self._X1 = MotorRecord(Id+':TX1') + self._X2 = MotorRecord(Id+':TX2') + + def __str__(self): - s = "**Horizontal KB mirror**\n\n" + s = "**Horizontal KB mirror**\n" motors = "bend1 bend2 pitch roll yaw x y".split() for motor in motors: s+= " - %s = %.4f\n" %(motor, getattr(self,motor).wm()) + s += "\n**Stages**\n" + stages = "_Y1 _Y2 _Y3 _X1 _X2".split() + for stage in stages: + s+= " - %s = %.4f\n" %(stage, getattr(self,stage).wm()) return s def __repr__(self): diff --git a/xoptics/KBver.py b/xoptics/KBver.py index 48ccdcb..9c7b810 100755 --- a/xoptics/KBver.py +++ b/xoptics/KBver.py @@ -15,11 +15,22 @@ class KBver: self.mode = PV(Id[:11]+':MODE').enum_strs[PV(Id[:11]+':MODE').value] + #### actual motors ### + self._Y1 = MotorRecord(Id+':TY1') + self._Y2 = MotorRecord(Id+':TY2') + self._Y3 = MotorRecord(Id+':TY3') + self._X1 = MotorRecord(Id+':TX1') + self._X2 = MotorRecord(Id+':TX2') + def __str__(self): - s = "**Vertical KB mirror**\n\n" + s = "**Vertical KB mirror**\n" motors = "bend1 bend2 pitch roll yaw x y".split() for motor in motors: s+= " - %s = %.4f\n" %(motor, getattr(self,motor).wm()) + s += "\n**Stages**\n" + stages = "_Y1 _Y2 _Y3 _X1 _X2".split() + for stage in stages: + s+= " - %s = %.4f\n" %(stage, getattr(self,stage).wm()) return s def __repr__(self):