Beispiel #1
0
def BarretKok_SPCorrs(name, debug=False, upload_only=False):
    """
    Performs a regular Spin-photon correlation measurement with the Barret & Kok timing parameters.

    """
    m = purify(name)
    sweep_purification.prepare(m)

    load_BK_params(m)

    m.joint_params['do_final_mw_LDE'] = 1
    #m.params['LDE_final_mw_amplitude'] = 0

    ### general params
    m.params['pts'] = 1
    m.params['reps_per_ROsequence'] = 5000

    sweep_purification.turn_all_sequence_elements_off(m)
    ### which parts of the sequence do you want to incorporate.
    m.params['do_general_sweep'] = False
    m.params['PLU_during_LDE'] = 1
    m.joint_params['opt_pi_pulses'] = 2

    ### this can also be altered to the actual theta pulse by negating the if statement
    if True:
        m.params['mw_first_pulse_amp'] = m.params['Hermite_pi2_amp']
        m.params['mw_first_pulse_length'] = m.params['Hermite_pi2_length']

    m.params[
        'is_two_setup_experiment'] = 1  # XXX this has to be changed once we use one EOM only

    ### upload

    sweep_purification.run_sweep(m, debug=debug, upload_only=upload_only)
Beispiel #2
0
def Determine_eta(name, debug=False, upload_only=False):
    """
    Performs a regular Spin-photon correlation measurement.
    """
    m = purify(name)
    sweep_purification.prepare(m)

    ### general params
    m.params['pts'] = 1
    m.params['reps_per_ROsequence'] = 10000

    sweep_purification.turn_all_sequence_elements_off(m)
    ### which parts of the sequence do you want to incorporate.
    m.params['do_general_sweep'] = False
    m.joint_params['do_final_mw_LDE'] = 1
    # m.params['LDE_final_mw_amplitude'] = 0 ### dirty hack

    #m.params['LDE_decouple_time'] = m.params['LDE_decouple_time'] + 500e-9
    m.joint_params[
        'LDE_element_length'] = 10e-6  #m.joint_params['LDE_element_length']  + 1e-6

    m.params['is_two_setup_experiment'] = 1
    m.params['PLU_during_LDE'] = 1
    m.params['no_repump_after_LDE1'] = 1
    m.joint_params['opt_pi_pulses'] = 1
    m.joint_params['opt_pulse_separation'] = m.params['LDE_decouple_time']
    m.joint_params['LDE1_attempts'] = 250

    ### upload

    sweep_purification.run_sweep(m, debug=debug, upload_only=upload_only)
Beispiel #3
0
def SPCorrsPuri_PSB_singleSetup(name, debug=False, upload_only=False):
    """
    Performs a regular Spin-photon correlation measurement.
    """
    m = purify(name)

    sweep_purification.prepare(m)
    load_TH_params(m)  # has to be after prepare(m)

    ### general params
    m.params['pts'] = 1
    m.params['reps_per_ROsequence'] = 50000

    sweep_purification.turn_all_sequence_elements_off(m)
    ### which parts of the sequence do you want to incorporate.
    m.params['do_general_sweep'] = False
    m.params['PLU_during_LDE'] = 0
    m.joint_params['LDE1_attempts'] = 1

    m.joint_params['opt_pi_pulses'] = 2
    m.joint_params['opt_pulse_separation'] = m.params['LDE_decouple_time']
    ### this can also be altered to the actual theta pulse by negating the if statement
    if True:
        m.params['mw_first_pulse_amp'] = m.params['Hermite_pi2_amp']
        m.params['mw_first_pulse_length'] = m.params['Hermite_pi2_length']

    m.params['is_two_setup_experiment'] = 0

    ### upload

    sweep_purification.run_sweep(m, debug=debug, upload_only=upload_only)
Beispiel #4
0
def PurifyYY(name, debug=False, upload_only=False):
    m = purify(name)
    sweep_purification.prepare(m)

    pts = 1
    m.params['reps_per_ROsequence'] = 500
    m.params['do_general_sweep'] = 0
    m.params['Tomography_bases'] = ['Y']
    sweep_purification.turn_all_sequence_elements_on(m)
    sweep_purification.run_sweep(m, debug=debug, upload_only=upload_only)
Beispiel #5
0
def tail_sweep(name,
               debug=True,
               upload_only=True,
               minval=0.1,
               maxval=0.8,
               local=False):
    """
    Performs a tail_sweep in the LDE_1 element
    """
    m = purify(name)
    sweep_purification.prepare(m)

    ### general params
    pts = 15
    m.params['pts'] = pts
    m.params['reps_per_ROsequence'] = 1000

    sweep_purification.turn_all_sequence_elements_off(m)
    ### which parts of the sequence do you want to incorporate.
    ### --> for this measurement: none.
    m.joint_params['LDE1_attempts'] = 250

    m.joint_params['opt_pi_pulses'] = 0
    m.params['MW_during_LDE'] = 0
    m.params['PLU_during_LDE'] = 0
    if local:
        m.params[
            'is_two_setup_experiment'] = 0  ## set to 1 in case you want to do optical pi pulses on lt4!
    else:
        m.params[
            'is_two_setup_experiment'] = 1  ## set to 1 in case you want to do optical pi pulses on lt4!
    # ### need to find this out!
    # m.params['MIN_SYNC_BIN'] =       000
    # m.params['MAX_SYNC_BIN'] =       7000e3

    # put sweep together:
    sweep_off_voltage = False

    m.params['do_general_sweep'] = True

    if sweep_off_voltage:
        m.params['general_sweep_name'] = 'eom_off_amplitude'
        print 'sweeping the', m.params['general_sweep_name']
        m.params['general_sweep_pts'] = np.linspace(-0.1, 0.06,
                                                    pts)  #(-0.04,-0.02,pts)
    else:
        m.params['general_sweep_name'] = 'aom_amplitude'
        print 'sweeping the', m.params['general_sweep_name']
        m.params['general_sweep_pts'] = np.linspace(minval, maxval, pts)

    m.params['sweep_name'] = m.params['general_sweep_name']
    m.params['sweep_pts'] = m.params['general_sweep_pts']
    ### upload

    sweep_purification.run_sweep(m, debug=debug, upload_only=upload_only)
Beispiel #6
0
def MW_Position(name, debug=False, upload_only=False):
    """
    Initializes the electron in ms = -1 
    Put a very long repumper. Leave one MW pi pulse to find the microwave position.
    THIS MEASUREMENT RUNS EXCLUSIVELY ON THE TIMEHARP!
    NK 2016
    """

    m = purify(name)
    sweep_purification.prepare(m)

    # load_TH_params(m)
    #load_BK_params(m)
    ### general params
    pts = 1
    m.params['pts'] = pts
    m.params['reps_per_ROsequence'] = 2000

    sweep_purification.turn_all_sequence_elements_off(m)

    ### sequence specific parameters

    m.params['MW_before_LDE1'] = 1  # allows for init in -1 before LDE
    m.params['input_el_state'] = 'mZ'
    m.params['MW_during_LDE'] = 1

    m.params['PLU_during_LDE'] = 0
    m.joint_params['opt_pi_pulses'] = 1
    m.params['is_two_setup_experiment'] = 0

    m.joint_params['LDE1_attempts'] = 250

    m.params['LDE_SP_delay'] = 0e-6

    ### prepare sweep / necessary for the measurement that we under go.
    m.params['do_general_sweep'] = True
    m.params['general_sweep_name'] = 'LDE_SP_duration'
    print 'sweeping the', m.params['general_sweep_name']
    m.params['general_sweep_pts'] = np.array([
        m.joint_params['LDE_element_length'] - 200e-9 -
        m.params['LDE_SP_delay']
    ])
    m.params['general_sweep_pts'] = np.array([2e-6])
    m.params['sweep_name'] = m.params['general_sweep_name']
    m.params['sweep_pts'] = m.params['general_sweep_pts'] * 1e9

    ### upload and run

    sweep_purification.run_sweep(m, debug=debug, upload_only=upload_only)
Beispiel #7
0
def optical_rabi(name, debug=True, upload_only=True, local=False):
    """
    Very similar to tail sweep.
    """
    m = purify(name)
    sweep_purification.prepare(m)

    ### general params
    pts = 1
    m.params['pts'] = pts
    m.params['reps_per_ROsequence'] = 10000

    sweep_purification.turn_all_sequence_elements_off(m)
    ### which parts of the sequence do you want to incorporate.
    ### --> for this measurement: none.

    m.joint_params['opt_pi_pulses'] = 1
    m.params['MW_during_LDE'] = 0
    m.params['PLU_during_LDE'] = 0
    if local:
        m.params[
            'is_two_setup_experiment'] = 0  ## set to 1 in case you want to do optical pi pulses on lt4!
    else:
        m.params[
            'is_two_setup_experiment'] = 1  ## set to 1 in case you want to do optical pi pulses on lt4!
    ### need to find this out!
    # m.params['MIN_SYNC_BIN'] =       5000
    # m.params['MAX_SYNC_BIN'] =       9000

    # put sweep together:

    m.params['do_general_sweep'] = True
    m.params['general_sweep_name'] = 'eom_pulse_duration'
    print 'sweeping the', m.params['general_sweep_name']
    m.params['general_sweep_pts'] = np.linspace(39e-9, 40e-9, pts)

    m.params['sweep_name'] = m.params['general_sweep_name']
    m.params['sweep_pts'] = m.params['general_sweep_pts']
    ### upload

    sweep_purification.run_sweep(m, debug=debug, upload_only=upload_only)
Beispiel #8
0
def TPQI(name, debug=False, upload_only=False):

    m = purify(name)
    sweep_purification.prepare(m)

    pts = 1
    m.params['reps_per_ROsequence'] = 50000
    sweep_purification.turn_all_sequence_elements_off(m)

    m.params['MIN_SYNC_BIN'] = 1.5e6
    m.params['MAX_SYNC_BIN'] = 9e6
    m.params['is_TPQI'] = 1
    m.params['is_two_setup_experiment'] = 1
    m.params['do_general_sweep'] = 0
    m.params['MW_during_LDE'] = 0

    m.joint_params['LDE_element_length'] = 10e-6
    m.joint_params['opt_pi_pulses'] = 5
    m.joint_params['opt_pulse_separation'] = 1400e-9
    m.joint_params['LDE1_attempts'] = 100

    m.params['pulse_start_bin'] = 2625e3 - m.params['MIN_SYNC_BIN']
    m.params['pulse_stop_bin'] = 2635e3 - m.params['MIN_SYNC_BIN']
    m.params['tail_start_bin'] = 2635e3 - m.params['MIN_SYNC_BIN']
    m.params['tail_stop_bin'] = 2700e3 - m.params['MIN_SYNC_BIN']

    if qt.current_setup == 'lt3':
        m.params['pulse_start_bin'] = 2625e3 - m.params['MIN_SYNC_BIN']
        m.params['pulse_stop_bin'] = 2635e3 - m.params['MIN_SYNC_BIN']
        m.params['tail_start_bin'] = 2100e3 - m.params['MIN_SYNC_BIN']
        m.params['tail_stop_bin'] = 2800e3 - m.params['MIN_SYNC_BIN']
        m.params['MIN_SYNC_BIN'] = 1.5e3
        m.params['MAX_SYNC_BIN'] = 9e3
        m.params['pulse_start_bin'] = m.params['pulse_start_bin'] / 1e3
        m.params['pulse_stop_bin'] = m.params['pulse_stop_bin'] / 1e3
        m.params['tail_start_bin'] = m.params['tail_start_bin'] / 1e3
        m.params['tail_stop_bin'] = m.params['tail_stop_bin'] / 1e3

    ### upload and run
    sweep_purification.run_sweep(m, debug=debug, upload_only=upload_only)
Beispiel #9
0
def EntangleZZ(name, debug=False, upload_only=False):

    m = purify(name)
    sweep_purification.prepare(m)

    pts = 1
    m.params['reps_per_ROsequence'] = 200
    sweep_purification.turn_all_sequence_elements_off(m)

    load_BK_params(m)

    m.params['do_general_sweep'] = 0
    m.params['MW_during_LDE'] = 1

    m.params['is_two_setup_experiment'] = 1
    m.params['PLU_during_LDE'] = 1
    m.joint_params['LDE1_attempts'] = 250

    m.params['LDE_final_mw_amplitude'] = 0

    ### upload and run

    sweep_purification.run_sweep(m, debug=debug, upload_only=upload_only)
def test_adwin_communication(name, debug=False, upload_only=False):
    """
    Initializes the electron in ms = -1 
    and sweeps the repump duration at the beginning of LDE_1
    """

    m = purify_slave.purify_single_setup(name)
    sweep_purification.prepare(m)

    ### general params
    pts = 5
    m.params['pts'] = pts
    m.params['reps_per_ROsequence'] = 500

    sweep_purification.turn_all_sequence_elements_off(m)

    ### sequence specific parameters
    m.params['is_two_setup_experiment'] = 1
    m.params['MW_before_LDE1'] = 0  # allows for init in -1 before LDE
    m.params['LDE_1_is_init'] = 1
    m.params['input_el_state'] = 'mZ'
    m.params['MW_during_LDE'] = 0
    m.joint_params['opt_pi_pulses'] = 0
    m.joint_params['LDE_attempts'] = 1

    # m.params['Hermite_pi_amp'] = 0
    ### prepare sweep
    m.params['do_general_sweep'] = True
    m.params['general_sweep_name'] = 'LDE_SP_duration'
    print 'sweeping the', m.params['general_sweep_name']
    m.params['general_sweep_pts'] = np.linspace(0.0, 2.e-6, pts)
    m.params['sweep_name'] = m.params['general_sweep_name']
    m.params['sweep_pts'] = m.params['general_sweep_pts'] * 1e9

    ### upload and run

    sweep_purification.run_sweep(m, debug=debug, upload_only=upload_only)
Beispiel #11
0
def EntangleXX(name, debug=False, upload_only=False):
    m = purify(name)
    sweep_purification.prepare(m)

    pts = 1
    m.params['reps_per_ROsequence'] = 200
    sweep_purification.turn_all_sequence_elements_off(m)

    load_BK_params(m)

    m.params['do_general_sweep'] = 0
    m.params['MW_during_LDE'] = 1

    m.params['is_two_setup_experiment'] = 1
    m.params['PLU_during_LDE'] = 1
    m.joint_params['LDE1_attempts'] = 250
    ### upload and run

    ### this can also be altered to the actual theta pulse by negating the if statement
    if True:
        m.params['mw_first_pulse_amp'] = m.params['Hermite_pi2_amp']
        m.params['mw_first_pulse_length'] = m.params['Hermite_pi2_length']

    sweep_purification.run_sweep(m, debug=debug, upload_only=upload_only)