Tilt homing

This commit is contained in:
e19752
2022-05-24 10:16:16 +02:00
parent 065e33ad05
commit 6de2af0dca
181 changed files with 5817 additions and 1017 deletions
+33 -22
View File
@@ -60,8 +60,17 @@ def get_focus_scan_roi():
def scan_contrast(positioner, pos_range, pos_step, roi = None, average = 1, update_position = True):
if roi is None:
sensor = image_contrast
else:
sensor = roi_contrast
roi_contrast.set_roi(roi)
if average > 1:
sensor = create_averager(sensor, average, interval = eiger.exposure, name = image_contrast.name, monitored = False)
def after_read(rec):
if rec[positioner] > MAX_CONTRAST:
if rec[sensor] > MAX_CONTRAST:
print "Invalid contrast value"
time.sleep(eiger.exposure)
rec.invalidate()
@@ -74,14 +83,7 @@ def scan_contrast(positioner, pos_range, pos_step, roi = None, average = 1, upda
if (cur < positioner.minValue+pos_range) or (cur > positioner.maxValue-pos_range):
raise Exception("Cannot perform contrast scan: " + positioner.name + " too close to limit")
if roi is None:
sensor = image_contrast
else:
sensor = roi_contrast
roi_contrast.set_roi(roi)
if average > 1:
sensor = create_averager(sensor, average, interval = eiger.exposure, name = image_contrast.name, monitored = False)
r = lscan( positioner, [sensor,], -pos_range, pos_range, pos_step, \
latency=eiger.exposure+SETTLING_TIME, relative=True, after_read=after_read, before_pass=before_pass)
@@ -124,18 +126,31 @@ def update_roi_pos(cur_data, former_data):
former_data=None
def scan_focus(positioner, pos_range, pos_step, average = 1, update_position = True):
def scan_focus(positioner, pos_range, pos_step, average = 1, update_position = True, save_images=True):
global former_data
roi=get_focus_scan_roi()
former_data = image.data
initial_state = get_focus_scan_pos()
initial_roi_location = roi.location if roi is not None else None
if roi is None:
sensor = image_contrast
else:
sensor = roi_contrast
roi_contrast.set_roi(roi)
if average > 1:
sensor = create_averager(sensor, average, interval = eiger.exposure, name = image_contrast.name, monitored = False)
def before_read(pos,scan):
global former_data
if str(eiger.grabMode)=="Single":
eiger.start()
image.waitNext(20000)
cur_data = image.data
try:
print "----- Pos: ", pos
print "----- Pos: ", pos
update_roi_pos(cur_data, former_data)
finally:
former_data = cur_data
@@ -143,28 +158,24 @@ def scan_focus(positioner, pos_range, pos_step, average = 1, update_position = T
print "New ROI pos: " , roi_contrast.roi.location
def after_read(rec, scam):
def after_read(rec, scan):
global former_data
if rec[positioner] > MAX_CONTRAST:
if rec[sensor] > MAX_CONTRAST:
print "Invalid contrast value"
time.sleep(eiger.exposure)
rec.invalidate()
else:
if (save_images):
filename = get_exec_pars().path + "/images/" + str(rec.index) + ".tif"
meta={positioner.name:rec[positioner], "contrast": rec[sensor]}
save_as_tiff(former_data, filename, check=True, parallel=True, metadata=meta)
def before_pass(scan, num_pass):
pass
#print "Waiting to reach scan init pos"
#time.sleep(1.0)
if roi is None:
sensor = image_contrast
else:
sensor = roi_contrast
roi_contrast.set_roi(roi)
if average > 1:
sensor = create_averager(sensor, average, interval = eiger.exposure, name = image_contrast.name, monitored = False)
r = lscan( positioner, [sensor,], -pos_range, pos_range, pos_step, \
latency=eiger.exposure+SETTLING_TIME, relative=True, initial_move=False, restore_position=False, \