Esempio n. 1
0
def a2scan(
        motor1, start1, stop1, motor2, start2, stop2, npoints, count_time, *
        counters, **kwargs):
    save_flag = kwargs.get("save", True)

    dm = DataManager()
    filename = kwargs.get("filename", SCANFILE)

    logging.getLogger().info(
        "Scanning %s from %f to %f and %s from %f to %f in %d points" %
        (motor1.name, start1, stop1, motor2.name, start2, stop2, npoints))

    motors = [motor1, motor2]
    scan = dm.new_scan(filename, motors, npoints, counters, save_flag)
    start_pos1 = motor1.position()
    start_pos2 = motor2.position()
    motor_group = Group(motor1, motor2)

    def scan_cleanup():
        logging.getLogger().info(
            "Returning motor %s to %f and motor %s to %f" %
            (motor1.name, start_pos1, motor2.name, start_pos2))
        motor_group.move(motor1, start_pos1, motor2, start_pos2)

    motor_group.move(motor1, start1, motor2, start2)
    ipoint = 0
    countlabellen = len("{0:d}".format(npoints))
    countformatstr = "{0:" + "{0:d}".format(countlabellen) + "d}"

    s1 = numpy.linspace(start1, stop1, npoints)
    s2 = numpy.linspace(start2, stop2, npoints)
    with cleanup(scan.end):
      with error_cleanup(scan_cleanup):
        for ii in range(npoints):
            ipoint = ipoint + 1
            motor_group.move(motor1, s1[ii], motor2, s2[ii])

            acquisitions = []
            values = [m.position() for m in (motor1, motor2)]
            for counter in counters:
                acquisitions.append(gevent.spawn(counter.read, count_time))

            gevent.joinall(acquisitions)
            values.extend([a.get() for a in acquisitions])
            # print values
            scan.add(values)
Esempio n. 2
0
def ascan(motor, start, stop, npoints, count_time, *counters, **kwargs):
    save_flag = kwargs.get("save", True)

    dm = DataManager()

    filename = kwargs.get("filename", SCANFILE)

    logging.getLogger().info("Scanning %s from %f to %f in %d points" %
                             (motor.name, start, stop, npoints))

    motors = [motor]
    scan = dm.new_scan(filename, motors, npoints, counters, save_flag)

    start_pos = motor.position()

    def scan_cleanup():
        print "Returning motor %s to %f" % (motor.name, start_pos)
        motor.move(start_pos)

    motor.move(start)
    ipoint = 0
    countlabellen = len("{0:d}".format(npoints))
    countformatstr = "{0:" + "{0:d}".format(countlabellen) + "d}"

    with cleanup(scan.end):
      with error_cleanup(scan_cleanup):
        for position in numpy.linspace(start, stop, npoints):
            ipoint = ipoint + 1
            countlabel = "(" + "{0:3d}".format(
                ipoint) + "/" + "{0:3d}".format(npoints) + ")"
            countlabel = "(" + countformatstr.format(
                ipoint) + "/" + countformatstr.format(npoints) + ")"
            motor.move(float(position))

            acquisitions = []
            values = [position]
            for counter in counters:
                acquisitions.append(gevent.spawn(counter.read, count_time))

            gevent.joinall(acquisitions)

            values.extend([a.get() for a in acquisitions])
            # print values
            scan.add(values)