Files
x03da/script/test/FindCenter.py
2019-08-12 15:54:50 +02:00

75 lines
1.9 KiB
Python

"""
automated sample finder (EXPERIMENTAL)
"""
import math
# --- do not edit below ---
RELATIVE = False
LATENCY = 0.0
ZIGZAG = False
ENDSCAN = False
START_POS = 0.0
adjust_sensors()
set_adc_averaging()
SENSORS = (Counts, SampleCurrent, RefCurrent, MachineCurrent)
MOTORS = ManipulatorY
RANGE = (START_POS + 5., START_POS - 5.)
Scienta.setExposure(0.5)
scienta_time = 3.75
print "scienta time: ", scienta_time
STEP = 0.2
SPEED = STEP / scienta_time
fly_time = abs(RANGE[1] - RANGE[0]) / SPEED
STEPS = int(fly_time / scienta_time) + 1
print "coarse scan"
print "speed: ", SPEED
print "scan time: ", fly_time
set_exec_pars(keep=True)
result = cscan(MOTORS, SENSORS, RANGE[0], RANGE[1], STEPS, time=fly_time, before_read=before_readout, after_read = after_readout, check_positions = False)
readable = result.getReadable(0)
positions = result.getPositions(0)
min_counts = min(readable)
max_counts = max(readable)
thresh = (max_counts - min_counts) / 2. + min_counts
print "threshhold: ", thresh
sample_positions = [pos for idx, pos in enumerate(positions) if readable[idx] >= thresh]
lo_edge = min(sample_positions)
hi_edge = max(sample_positions)
print "lower edge, upper edge: ", lo_edge, ", ", hi_edge
RANGE = (lo_edge - 0.4, lo_edge + 0.4)
STEP = 0.01
SPEED = STEP / scienta_time
fly_time = abs(RANGE[1] - RANGE[0]) / SPEED
STEPS = int(fly_time / scienta_time) + 1
print "lower edge scan"
print "speed: ", SPEED
print "scan time: ", fly_time
cscan(MOTORS, SENSORS, RANGE[0], RANGE[1], STEPS, time=fly_time, before_read=before_readout, after_read = after_readout, check_positions = False)
RANGE = (hi_edge - 0.4, hi_edge + 0.4)
STEP = 0.01
SPEED = STEP / scienta_time
fly_time = abs(RANGE[1] - RANGE[0]) / SPEED
STEPS = int(fly_time / scienta_time) + 1
print "upper edge scan"
print "speed: ", SPEED
print "scan time: ", fly_time
cscan(MOTORS, SENSORS, RANGE[0], RANGE[1], STEPS, time=fly_time, before_read=before_readout, after_read = after_readout, check_positions = False)