From 2a18ef2bac74e6da10fa960ac3aebcaeb828a14e Mon Sep 17 00:00:00 2001 From: gac-x10da Date: Tue, 19 Mar 2019 15:59:40 +0100 Subject: [PATCH] Script execution --- script/daq/PumpProbeXES_W1_v3.py | 109 +++++++++++++++++++++++++++++++ 1 file changed, 109 insertions(+) create mode 100644 script/daq/PumpProbeXES_W1_v3.py diff --git a/script/daq/PumpProbeXES_W1_v3.py b/script/daq/PumpProbeXES_W1_v3.py new file mode 100644 index 0000000..272cdf0 --- /dev/null +++ b/script/daq/PumpProbeXES_W1_v3.py @@ -0,0 +1,109 @@ +#Script imported from: XES_W1.xml + +#Pre-actions +caput('X10DA-ES1:START-CSMPL', '0') +sleep(0.1) +caput('X10DA-ES1:TOTAL-CYCLES', '1') +sleep(0.1) +caput('X10DA-PILATUS-1:cam1:AcquireTime', '1') +caput('X10DA-PILATUS-1:cam1:AcquirePeriod', '1.1') +caput('X10DA-ES1-MA1:TRX.VAL', '-18') +caput('X10DA-ES1-MA1:TRX1.VAL', '-15') + +ROI1size=487 +ROI2size=487 + +DelayOn=0 + +DelayShift=480 +DelayOff=DelayOn+DelayShift + +DELAY = ChannelInteger('X10DA-ES2-TIM:SET3-DELAY','DELAY3') +DELAY.initialize() + +#Creating channels: dimension 1 +#PseudoPositioner Pseudo +#ScalarDetector SAI01-MEAN +SAI01 = ChannelDouble('X10DA-ES1-SAI_01:MEAN', 'X10DA-ES1-SAI_01:MEAN') +#ScalarDetector SAI02 +SAI02 = ChannelDouble('X10DA-ES1-SAI_02:MEAN', 'X10DA-ES1-SAI_02:MEAN') +#ScalarDetector Ring-current +RingCurrent = ChannelDouble('ARIDI-PCT:CURRENT', 'ARIDI-PCT:CURRENT') +#ScalarDetector PilExpTime +PilExpTime = ChannelDouble('X10DA-PILATUS-1:cam1:AcquireTime_RBV', 'X10DA-PILATUS-1:cam1:AcquireTime_RBV') +#Timestamp Timestamp +#ScalarDetector PilFileNum +PilFileNum = ChannelDouble('X10DA-PILATUS-1:cam1:FileNumber_RBV', 'X10DA-PILATUS-1:cam1:FileNumber_RBV') +#ScalarDetector TotalCounts +TotalCounts = ChannelDouble('X10DA-PILATUS-1:Stats1:Total_RBV', 'X10DA-PILATUS-1:Stats1:Total_RBV') +#ScalarDetector TiffFileNumber +TiffFileNumber = ChannelDouble('X10DA-PILATUS-1:Magick1:FileNumber_RBV', 'X10DA-PILATUS-1:Magick1:FileNumber_RBV') +#ScalarDetector ROI4 +ROI4 = ChannelDouble('X10DA-PILATUS-1:Stats4:Total_RBV', 'X10DA-PILATUS-1:Stats4:Total_RBV') +#ArrayDetector ROI1 +ROI1_On = ChannelDoubleArray('Roi1', 'X10DA-PILATUS-1:Stats1:ProfileCursorX_RBV', ROI1size) +#ArrayDetector ROI2 +ROI2_On = ChannelDoubleArray('Roi2', 'X10DA-PILATUS-1:Stats2:ProfileCursorX_RBV' , ROI2size) + + +detectors = [SAI01, SAI02, RingCurrent, PilExpTime, PilFileNum, TotalCounts, TiffFileNumber, TiffFileNumber, ROI4, ROI1_On, ROI2_On] +for det in detectors: + det.initialize() + +#Pseudo-devices +class Roi1Off(Readable, ReadableArray): + def read(self): + before_sample() + DELAY.write(DelayOff) + time.sleep(0.1) + self.cache = caget(ROI1_On.channelName, '[d') + return self.cache + + def getSize(self): + return ROI1.getSize() + +class Roi2Off(Readable, ReadableArray): + def read(self): + self.cache = caget(ROI2_On.channelName, '[d') + DELAY.write(DelayOn) + return self.cache + + def getSize(self): + return ROI2.getSize() + +ROI1_Off=Roi1Off() +ROI2_Off=Roi2Off() + +class RoiDiff(Readable, ReadableArray): + def __init__(self, roi_on, roi_off): + self.roi_on = roi_on + self.roi_off = roi_off + + def read(self): + return arrsub(self.roi_on.take(), self.roi_off.cache) + + def getSize(self): + return self.roi_on.getSize() + +ROI1_Diff=RoiDiff(ROI1_On, ROI1_Off) +set_device_alias(ROI1_Diff, "Roi1Diff") +ROI2_Diff=RoiDiff(ROI2_On, ROI2_Off) +set_device_alias(ROI2_Diff, "Roi2Diff") + + +def before_sample(): + DELAY.write(0) + caputq('X10DA-PILATUS-1:cam1:Acquire', 1) + caputq('X10DA-ES1:SMPL', '1') + sleep(0.1) + cawait('X10DA-PILATUS-1:cam1:Acquire', 0, type = 'l') + cawait('X10DA-ES1:SMPL-DONE', 1, type = 'l') + sleep(0.1) + +try: + tscan(detectors + [ROI1_Off, ROI2_Off, ROI1_Diff, ROI2_Diff], 30, 0, before_read = before_sample, \ + line_plots = [ROI1_Diff, ROI2_Diff], enabled_plots = [ROI1_Diff, ROI2_Diff]) +finally: + for det in detectors: + det.close() +