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

60 lines
1.7 KiB
Python

"""
automated sample finder (EXPERIMENTAL)
"""
import math
# --- do not edit below ---
RELATIVE = True
LATENCY = 0.0
ZIGZAG = False
ENDSCAN = False
adjust_sensors()
set_adc_averaging()
# time per scienta acquisition in seconds
time1 = time.time()
trig_scienta()
time2 = time.time()
scienta_time = (time2 - time1)
print "scienta time: ", scienta_time
SENSORS = (Counts, SampleCurrent, RefCurrent, MachineCurrent)
MOTORS = ManipulatorY
RANGE = (-5., +5.)
STEP = 0.2
MOTORS.move(0.)
# time for one scan in seconds
SPEED = STEP / scienta_time
print "speed: ", SPEED
fly_time = (RANGE[1] - RANGE[0]) / SPEED
STEPS = int(fly_time / scienta_time) + 1
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 counts[idx] >= thresh]
lo_edge = min(sample_positions)
hi_edge = max(sample_positions)
print "low and high edge: ", lo_edge, ", ", hi_edge
MOTORS.move(lo_edge)
RANGE = (-0.4, +0.4)
STEP = 0.01
result = cscan(MOTORS, SENSORS, RANGE[0], RANGE[1], STEPS, time=fly_time, before_read=before_readout, after_read = after_readout, check_positions = False)
MOTORS.move(hi_edge)
RANGE = (-0.4, +0.4)
STEP = 0.01
result = cscan(MOTORS, SENSORS, RANGE[0], RANGE[1], STEPS, time=fly_time, before_read=before_readout, after_read = after_readout, check_positions = False)