diff --git a/script/test/FindCenter.py b/script/test/FindCenter.py new file mode 100644 index 00000000..34be1dc5 --- /dev/null +++ b/script/test/FindCenter.py @@ -0,0 +1,58 @@ +""" +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[0].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 + +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[0].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[0].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)