""" Flying hologram scan (work in progress) Arguments: PHI_RANGE (tuple (min, max)) THETA_RANGE (tuple (min, max)) STEPS (tuple (phi, theta)) SENSORS (list) ZIGZAG (BOOLEAN) """ THETA_RANGE = (-9.0, 1.0) THETA_STEP = 1.0 PHI_RANGE = (-10.0, +10.0) PHI_STEP = 10.0 LATENCY = 0.0 ZIGZAG = True ENDSCAN = False MOTORS = (ManipulatorZ, ManipulatorY) SENSORS = (Counts, Scienta.spectrum, SampleCurrent, RefCurrent, MachineCurrent) #SENSORS = (Counts, Scienta.dataMatrix, SampleCurrent, RefCurrent, MachineCurrent) #set_preference(Preference.ENABLED_PLOTS, [ManipulatorPhi, ManipulatorTheta, Scienta.dataMatrix, ImageIntegrator]) #set_preference(Preference.PLOT_TYPES,{'ImageIntegrator':1}) adjust_sensors() set_adc_averaging() set_preference(Preference.PLOT_TYPES, {'Scienta spectrum':1}) # time per scienta acquisition in seconds time1 = time.time() trig_scienta() time2 = time.time() scienta_time = (time2 - time1) + 1.0 print "scienta_time: ", scienta_time # time for one theta scan in seconds THETA_NSTEPS = int((THETA_RANGE[1] - THETA_RANGE[0]) / THETA_STEP) + 1 theta_time = scienta_time * THETA_NSTEPS print "theta_time: ", theta_time PHI_NSTEPS = int((PHI_RANGE[1] - PHI_RANGE[0]) / PHI_STEP) + 1 phi_positions = [PHI_RANGE[0] + PHI_STEP * i for i in range(PHI_NSTEPS)] print "phi_positions: ", phi_positions try: for phi in phi_positions: ManipulatorPhi.write(phi) print "phi = ", phi ManipulatorPhi.waitValueInRange(phi, 1.0, 100) print time.time(), " cscan: start" try: cscan(ManipulatorTheta, SENSORS, THETA_RANGE[0], THETA_RANGE[1], THETA_NSTEPS - 1, time=theta_time, before_read=before_readout, after_read = after_readout) print time.time(), " cscan: end" except ContinuousScanFollowingErrorException: print time.time(), " cscan: exception" if ZIGZAG: THETA_RANGE = (THETA_RANGE[1], THETA_RANGE[0]) finally: if ENDSCAN: after_scan()