Tilt homing
This commit is contained in:
@@ -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, \
|
||||
|
||||
Reference in New Issue
Block a user