Files
x11ma/script/templates/EigerAbsSpec.py
gac-x11ma 8cf5c6ac04
2020-01-15 15:21:28 +01:00

90 lines
2.4 KiB
Python

#If running from editor
if get_exec_pars().source == CommandSource.ui:
ID = "ID1"
SWITCHING = "Normal"
POL_ID_1 = "Circ_Plus"
ALPHA_ID_1 = 0.0
HARMONIC_ID_1 = 1
OFFSET_ID_1 = 0.0
POL_ID_2 = "Circ_Minus"
ALPHA_ID_2 = 0.0
HARMONIC_ID_2 = 1
OFFSET_ID_2 = 0.0
ROI = {"Region1": [10,5,20, 10], "Region2": [20,15,20, 10]}
SAVE_SPECTRUM = True
SAVE_IMAGES = False
WITH_I0 = True
SWITCH_POL = False
EXPOSURE = 1.0
AVERAGE = 2
NUMBER_SCANS =1
RANGES = [[500.0, 1000.0, 100.0]]
DRY_RUN=True
if len(RANGES) == 0:
raise Exception("No scan range defined")
eiger.setExposure(EXPOSURE)
set_exec_pars(path="{data}/{year}_{month}/{date}/AbsortionSpectrum_{seq}%03d", format="csv", layout="table")
tag= "AbsortionSpectrum_{seq}%03d"
rois = create_roi_devices(ROI)
if AVERAGE>1:
for i in range(len(rois)):
rois[i].monitored = True
rois[i] = create_averager(rois[i], AVERAGE, -1)
rois[i].monitored = True
frames=[]
class SyncEnergy(Writable):
def write(self,pos):
if not DRY_RUN:
put_energy(pos)
else:
print "Energy=" + str(pos)
sync_energy=SyncEnergy()
set_device_alias(sync_energy, "Energy") #Set display name
sensors = rois + [machine_cur]
if WITH_I0:
sensors = rois + [keithley_1a]
av=None
def grab_image(position, scan):
global av
frames = grab_frames(image, AVERAGE, roi=None, wait_next=True)
av = average_frames(frames)
if SAVE_IMAGES:
filename = get_exec_pars().path + "/" + ("%05d.tif" % scan.recordIndex)
print filename
save_as_tiff(av, filename)
class Average(ReadableMatrix):
def read(self):
return av.matrix
def getWidth(self):
return eiger.dataMatrix.getWidth()
def getHeight(self):
return eiger.dataMatrix.getHeight()
averager=Average()
set_device_alias(averager, "Image") #Set display name
sensors.append(averager) #sensors.append(eiger.getDataMatrix())
try:
#tscan(rois, 10, 0.1, format="csv", before_read=grab_image, passes = NUMBER_SCANS, tag=tag)
rscan(sync_energy, sensors, RANGES, latency = 0.0 , passes = NUMBER_SCANS, tag=tag, before_read=grab_image, save=SAVE_SPECTRUM)
finally:
if AVERAGE>1:
for i in range(len(rois)):
rois[i].parent.monitored = False # Remove listeners on the image