Пример #1
0
def ionization_study(name, debug = False, upload_only = False, use_yellow = False):
    """
    Two setup experiment where LT3 does optical pi pulses only
    While LT4 repetitively runs the entire LDE element.
    """
    m = sce_expm.SingleClickEntExpm(name)
    prepare(m)

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

    turn_all_sequence_elements_off(m)


    ### sequence specific parameters
    m.params['MW_during_LDE'] = 1
    m.params['is_two_setup_experiment'] = 0
    m.joint_params['do_final_mw_LDE'] = 0
    m.params['mw_first_pulse_amp'] = 0
    m.params['mw_first_pulse_length'] = 1e-9
    m.params['force_repump_after_LDE'] = 1
    ### prepare sweep
    m.params['do_general_sweep']    = True
    m.params['general_sweep_name'] = 'LDE_attempts'
    print 'sweeping the', m.params['general_sweep_name']
    m.params['general_sweep_pts'] = np.linspace(5,2500,pts)
    m.params['sweep_name'] = m.params['general_sweep_name'] 
    m.params['sweep_pts'] = m.params['general_sweep_pts']
    m.params['do_yellow_with_AWG'] = use_yellow
    ### upload and run

    run_sweep(m,debug = debug,upload_only = upload_only)
Пример #2
0
def LDE_decouple_time_compressed_BK(name, debug = False, upload_only = False):
    """
    This measurement sweeps the phase of the last pi/2 pulse and includes MW pulses in the LDE element.
    Is used as a sanity check --> how coherent are we at the last pi/2 pulse and what is the phase relation for the MW source.
    """
    m = sce_expm.SingleClickEntExpm(name)
    prepare(m)

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

    turn_all_sequence_elements_off(m)

    ### sequence specific parameters
    m.params['MW_during_LDE'] = 1
    m.joint_params['opt_pi_pulses'] = 0
    m.joint_params['LDE_attempts'] = 1
    m.joint_params['do_final_mw_LDE'] = 1
    m.params['first_mw_pulse_is_pi2'] = 1
    m.params['LDE_decouple_time'] = 500e-9
    m.params['MW_RO_pulse_in_LDE'] = 1
    m.params['LDE_final_mw_phase'] = 90
    ### prepare sweep
    m.params['do_general_sweep']    = True
    m.params['general_sweep_name'] = 'LDE_decouple_time'
    print 'sweeping the', m.params['general_sweep_name']
    m.params['general_sweep_pts'] = np.linspace(450e-9,600e-9,pts)
    m.params['sweep_name'] = m.params['general_sweep_name'] 
    m.params['sweep_pts'] = m.params['general_sweep_pts']

    ### upload and run

    run_sweep(m,debug = debug,upload_only = upload_only)
Пример #3
0
def lastpi2_phase_vs_amplitude(name, debug = False, upload_only = False):
    """
    This measurement sweeps the phase of the last pi/2 pulse while keeping the amplitude constant.
    Is used as a sanity check --> are all our pi/2 pulses actually pi/2 pulses?
    """
    m = sce_expm.SingleClickEntExpm(name)
    prepare(m)

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

    turn_all_sequence_elements_off(m)

    ### sequence specific parameters
    m.params['MW_during_LDE'] = 0
    m.joint_params['opt_pi_pulses'] = 0
    m.joint_params['LDE_attempts'] = 1
    m.joint_params['do_final_mw_LDE'] = 1
    m.params['first_pulse_is_pi2'] = True
    ### prepare sweep
    m.params['do_general_sweep']    = True
    m.params['general_sweep_name'] = 'LDE_final_mw_phase'
    print 'sweeping the', m.params['general_sweep_name']
    m.params['general_sweep_pts'] = np.linspace(0,180,pts)
    m.params['sweep_name'] = m.params['general_sweep_name'] 
    m.params['sweep_pts'] = m.params['general_sweep_pts']

    ### upload and run

    run_sweep(m,debug = debug,upload_only = upload_only)
Пример #4
0
def lastpi2_measure_delay(name, debug = False, upload_only = False):
    """
    There is a finite timing offset between LDE element and the last pi/2 pulse that we do upon success.
    This measurement sweeps the timing of the last pi/2 to determine the best position.
    """
    m = sce_expm.SingleClickEntExpm(name)
    prepare(m)

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

    turn_all_sequence_elements_off(m)

    ### sequence specific parameters
    m.params['MW_during_LDE'] = 1
    m.joint_params['opt_pi_pulses'] = 0
    m.joint_params['LDE_attempts'] = 1
    m.joint_params['do_final_mw_LDE'] = 1
    m.params['first_mw_pulse_is_pi2'] = True
    m.params['LDE_final_mw_phase'] = 90
    ### prepare sweep
    m.params['do_general_sweep']    = True
    m.params['general_sweep_name'] = 'MW_final_delay_offset'
    print 'sweeping the', m.params['general_sweep_name']
    m.params['general_sweep_pts'] = np.array([10e-9])#np.linspace(-0.01e-6,0.01e-6,pts)
    m.params['sweep_name'] = m.params['general_sweep_name'] 
    m.params['sweep_pts'] = m.params['general_sweep_pts']*1e9

    ### upload and run

    run_sweep(m,debug = debug,upload_only = upload_only)
Пример #5
0
def dynamical_decoupling_sweep_tau(name, debug = False, upload_only = False):
    """
    Sweeps tau at a fixed number of decoupling repetitions
    """

    m = sce_expm.SingleClickEntExpm(name+'_sweep_decoupling')
    prepare(m)

    ### general params
    sweep_pts  = np.arange(8.0e-6,9.0e-6,20e-9)
    pts = len(sweep_pts)
    m.params['pts'] = pts
    m.params['reps_per_ROsequence'] = 250

    m.joint_params['opt_pi_pulses'] = 0



    ### sequence specific parameters
    turn_all_sequence_elements_off(m)


    m.joint_params['LDE_attempts'] = 1
    m.params['LDE_final_mw_phase'] = 90
    m.params['do_dynamical_decoupling'] = 1


    m.params['MW_during_LDE'] = 1
    m.joint_params['do_final_mw_LDE'] = 1
    m.params['max_decoupling_reps'] = 7
    m.params['dynamic_decoupling_N'] = 4
    m.params['tomography_basis'] = 'X'
    m.params['first_mw_pulse_is_pi2'] = True


    ### sweep
    m.params['do_general_sweep']    = True
    m.params['general_sweep_name'] = 'dynamic_decoupling_tau'
    print 'sweeping the', m.params['general_sweep_name']
    m.params['general_sweep_pts'] = sweep_pts
    m.params['sweep_name'] = 'tau (us)' #m.params['general_sweep_name'] 
    m.params['sweep_pts'] = m.params['general_sweep_pts']*1e6

    run_sweep(m,debug = debug,upload_only = upload_only)
Пример #6
0
def ionization_non_local(name, debug = False, upload_only = False, use_yellow = False):
    """
    Two setup experiment where LT3 does optical pi pulses only
    While LT4 repetitively runs the entire LDE element.
    """
    m = sce_expm.SingleClickEntExpm(name)
    prepare(m)

    ### general params
    pts = 3
    m.params['pts'] = pts
    m.params['reps_per_ROsequence'] = 250

    turn_all_sequence_elements_off(m)


    ### sequence specific parameters
    m.params['MW_during_LDE'] = 1
    m.params['is_two_setup_experiment'] = 1
    m.joint_params['do_final_mw_LDE'] = 0
    # m.params['first_pulse_is_pi2'] = True
    # m.params['mw_first_pulse_amp'] = 0
    ### prepare sweep
    if qt.current_setup == 'lt3':
        # m.params['do_only_opt_pi'] = 1
        m.joint_params['opt_pi_pulses'] = 1
        m.params['mw_first_pulse_amp'] = 0
        m.params['Hermite_pi_amp'] = 0
        m.params['Hermite_pi2_amp'] = 0

    m.params['do_general_sweep']    = True
    m.params['general_sweep_name'] = 'LDE_attempts'
    print 'sweeping the', m.params['general_sweep_name']
    m.params['general_sweep_pts'] = np.linspace(1,500,pts)
    m.params['sweep_name'] = m.params['general_sweep_name'] 
    m.params['sweep_pts'] = m.params['general_sweep_pts']
    m.params['do_yellow_with_AWG'] = use_yellow
    ### upload and run

    run_sweep(m,debug = debug,upload_only = upload_only)
Пример #7
0
def check_for_projective_noise(name, debug=False, upload_only=False):
    """
    This measurement adds a pi pulse to take the NV dark, then optical pi, then immediately pi/2.
    Used to check for projective noise.
    """
    m = sce_expm.SingleClickEntExpm(name)
    sweep_sce_expm.prepare(m)

    ### general params
    pts = 21
    m.params['pts'] = pts
    m.params['reps_per_ROsequence'] = 1500

    sweep_sce_expm.turn_all_sequence_elements_off(m)

    ### sequence specific parameters
    m.params['MW_during_LDE'] = 1
    m.joint_params['opt_pi_pulses'] = 1
    m.joint_params['LDE_attempts'] = 400
    m.joint_params['do_final_mw_LDE'] = 1
    m.params['first_mw_pulse_is_pi2'] = True
    m.params['check_EOM_projective_noise'] = 1
    m.params['MW_opt_puls1_separation'] = 120e-9 - 200e-9  #
    m.joint_params['LDE_element_length'] = 5e-6
    m.params['LDE_final_mw_phase'] = 90.0
    m.params['is_two_setup_experiment'] = 1
    ### prepare sweep
    m.params['do_general_sweep'] = True
    m.params['general_sweep_name'] = 'MW_opt_puls1_separation'
    print 'sweeping the', m.params['general_sweep_name']
    m.params['general_sweep_pts'] = m.params[
        'MW_opt_puls1_separation'] + np.linspace(-40e-9, 100e-9, pts)
    m.params['sweep_name'] = m.params['general_sweep_name']
    m.params['sweep_pts'] = m.params['general_sweep_pts']

    ### upload and run

    sweep_sce_expm.run_sweep(m, debug=debug, upload_only=upload_only)
Пример #8
0
def dynamical_decoupling_after_LDE(name, debug = False, upload_only = False):
    """
    Sweeps the number of pulses in the decoupling sequence.
    Calibration msmt. for entnaglement on demand
    """

    m = sce_expm.SingleClickEntExpm(name+'_sweep_decoupling')
    prepare(m)

    ### general params
    pts =11
    m.params['pts'] = pts
    m.params['reps_per_ROsequence'] = 200


    ### sequence specific parameters
    turn_all_sequence_elements_off(m)
    m.params['MW_during_LDE'] = 1
    m.joint_params['do_final_mw_LDE'] = 1
    m.params['first_mw_pulse_is_pi2'] = True
    m.params['do_dynamical_decoupling_AWG_only'] = 1
    m.params['do_dynamical_decoupling'] = 0 ### lets the adwin count along!

    m.joint_params['LDE_attempts'] = 1 ## don't put this to 1. will give problems
    m.params['LDE_final_mw_phase'] = -90
    m.joint_params['opt_pi_pulses'] = 0
    m.params['tomography_basis'] = 'X'
    m.params['dynamic_decoupling_tau'] = m.params['dynamic_decoupling_tau']
    ### sweep
    m.params['do_general_sweep']    = True
    m.params['general_sweep_name'] = 'max_decoupling_reps'
    print 'sweeping the', m.params['general_sweep_name']
    m.params['general_sweep_pts'] = np.round(np.linspace(2,400,pts))
    m.params['sweep_name'] = 'Decoupling time (ms)'#m.params['general_sweep_name'] 
    m.params['sweep_pts'] = m.params['decoupling_element_duration']*m.params['general_sweep_pts']*1e3

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