121 lines
3.8 KiB
Python
121 lines
3.8 KiB
Python
#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','X10DA-ES2-TIM:SET3-DELAY')
|
|
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):
|
|
DELAY.write(DelayOn+DelayShift)
|
|
time.sleep(0.1)
|
|
run_aquisition()
|
|
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 run_aquisition():
|
|
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)
|
|
|
|
def before_sample():
|
|
DELAY.write(DelayOn)
|
|
run_aquisition()
|
|
|
|
class PseudoPositioner(Writable):
|
|
def write(self,pos):
|
|
global DelayOn
|
|
DelayOn=pos
|
|
|
|
dl=PseudoPositioner()
|
|
|
|
try:
|
|
# tscan(detectors + [ROI1_Off, ROI2_Off, ROI1_Diff, ROI2_Diff], 30, 0, before_read = before_sample, \
|
|
# line_plots = [ROI1_Diff, ROI2_Diff])
|
|
lscan(dl, detectors + [ROI1_Off, ROI2_Off, ROI1_Diff, ROI2_Diff], 0, 200,20, before_read = before_sample, line_plots = [ROI1_Diff, ROI2_Diff,SAI02], enabled_plots = [ROI1_Diff, ROI2_Diff,SAI02])
|
|
finally:
|
|
for det in detectors:
|
|
det.close()
|
|
|