diff --git a/script/PumpProbeXES_W1_v2.py b/script/PumpProbeXES_W1_v2.py index 4d6a9a0..5ba330c 100644 --- a/script/PumpProbeXES_W1_v2.py +++ b/script/PumpProbeXES_W1_v2.py @@ -46,34 +46,49 @@ ROI1_On = ChannelDoubleArray('X10DA-PILATUS-1:Stats1:ProfileCursorX_RBV', 'X10DA ROI2_On = ChannelDoubleArray('X10DA-PILATUS-1:Stats2:ProfileCursorX_RBV', '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 Roi1_Off(Readable, ReadableArray): +class Roi1Off(Readable, ReadableArray): def read(self): + before_sample() DELAY.write(100) time.sleep(0.1) - self.cache = caget('X10DA-PILATUS-1:Stats1:ProfileCursorX_RBV', '[d') - DELAY.write(0) + self.cache = caget(ROI1_On.channelName, '[d') return self.cache def getSize(self): return ROI1.getSize() -ROI1_Off=Roi1_Off() - -class Roi1Diff(Readable, ReadableArray): +class Roi2Off(Readable, ReadableArray): def read(self): - return arrsub(ROI1_On.take(), ROI1_Off.cache) + self.cache = caget(ROI2_On.channelName, '[d') + DELAY.write(0) + 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 ROI1.getSize() -ROI1_Diff=Roi1Diff() + return self.roi_on.getSize() +ROI1_Diff=RoiDiff(ROI1_On, ROI1_Off) +ROI2_Diff=RoiDiff(ROI2_On, ROI2_Off) -detectors = [SAI01, SAI02, RingCurrent, PilExpTime, PilFileNum, TotalCounts, TiffFileNumber, TiffFileNumber, ROI4, ROI1_On, ROI1_On] -for det in detectors: - det.initialize() - def before_sample(): DELAY.write(0) caputq('X10DA-PILATUS-1:cam1:Acquire', 1) @@ -84,7 +99,8 @@ def before_sample(): sleep(0.1) try: - tscan(detectors + [ROI1_Off, ROI1_Diff], 30, 0, before_read = before_sample) + #tscan(detectors + [ROI1_Off, ROI1_Diff, ROI2_Off, ROI2_Diff], 30, 0, before_read = before_sample) + vscan(DELAY, detectors + [ROI1_Off, ROI1_Diff, ROI2_Off, ROI2_Diff], [0,100], passes=30, before_read = before_sample) finally: for det in detectors: det.close()