60 lines
1.7 KiB
Python
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)
|