示例#1
0
def pulse_defs(msmt, pulse_type):

    if pulse_type == 'Square':
        msmt.params['MW_pi_duration'] = 2e-6
        msmt.params['mw_frq'] = msmt.params['mw_frq'] - msmt.params[
            'MW_pulse_mod_frequency']
        msmt.params['pulse_pi_amp'] = msmt.params['MW_amp_dark_ESR']
        IQ_Square_pi = pulselib.MW_IQmod_pulse(
            'Square pi-pulse',
            I_channel='MW_Imod',
            Q_channel='MW_Qmod',
            PM_channel='MW_pulsemod',
            length=msmt.params['MW_pi_duration'],
            amplitude=msmt.params['pulse_pi_amp'],
            frequency=msmt.params['MW_pulse_mod_frequency'],
            PM_risetime=msmt.params['MW_pulse_mod_risetime'])
        Dummy_IQ_Square_pi2 = pulselib.MW_IQmod_pulse(
            'Square pi/2-pulse',
            I_channel='MW_Imod',
            Q_channel='MW_Qmod',
            PM_channel='MW_pulsemod',
            length=msmt.params['MW_pi_duration'],
            amplitude=0.0,
            frequency=msmt.params['MW_pulse_mod_frequency'],
            PM_risetime=msmt.params['MW_pulse_mod_risetime'])
        pulse_pi = IQ_Square_pi
        pulse_pi2 = Dummy_IQ_Square_pi2

    elif pulse_type == 'Hermite':

        Hermite_pi = pulselib.HermitePulse_Envelope(
            'Hermite pi-pulse',
            MW_channel='MW_Imod',
            PM_channel='MW_pulsemod',
            amplitude=msmt.params['MW_pi_amp'],
            length=msmt.params['MW_pi_duration'],
            PM_risetime=msmt.params['MW_pulse_mod_risetime'],
            pi2_pulse=False)

        Hermite_pi2 = pulselib.HermitePulse_Envelope(
            'Hermite pi/2-pulse',
            MW_channel='MW_Imod',
            PM_channel='MW_pulsemod',
            amplitude=msmt.params['MW_pi2_amp'],
            length=msmt.params['MW_pi2_duration'],
            PM_risetime=msmt.params['MW_pulse_mod_risetime'],
            pi2_pulse=True)

        pulse_pi = Hermite_pi
        pulse_pi2 = Hermite_pi2

    else:
        print 'The pulse type you asked for is not defined.'

    return pulse_pi, pulse_pi2
示例#2
0
def pulse_defs_lt4(msmt):

    # a waiting pulse on the MW pulsemod channel
    msmt.T = pulse.SquarePulse(channel='MW_pulsemod',
                               length=50e-9,
                               amplitude=0)

    msmt.TIQ = pulse.SquarePulse(channel='MW_Imod', length=10e-9, amplitude=0)

    msmt.T_sync = pulse.SquarePulse(channel='sync', length=50e-9, amplitude=0)

    # some not yet specified pulse on the electron
    msmt.e_pulse = pulselib.MW_IQmod_pulse(
        'MW pulse',
        I_channel='MW_Imod',
        Q_channel='MW_Qmod',
        PM_channel='MW_pulsemod',
        PM_risetime=msmt.params['MW_pulse_mod_risetime'])

    msmt.MW_pi = pulselib.HermitePulse_Envelope(
        'Hermite pi-pulse',
        MW_channel='MW_Imod',
        PM_channel='MW_pulsemod',
        second_MW_channel='MW_Qmod',
        amplitude=msmt.params['MW_pi_amp'],
        length=msmt.params['MW_pi_duration'],
        PM_risetime=msmt.params['MW_pulse_mod_risetime'],
        pi2_pulse=False)

    msmt.MW_pi2 = pulselib.HermitePulse_Envelope(
        'Hermite pi/2-pulse',
        MW_channel='MW_Imod',
        PM_channel='MW_pulsemod',
        second_MW_channel='MW_Qmod',
        amplitude=msmt.params['MW_pi2_amp'],
        length=msmt.params['MW_pi2_duration'],
        PM_risetime=msmt.params['MW_pulse_mod_risetime'],
        pi2_pulse=True)

    msmt.MW_BellAngle = pulselib.HermitePulse_Envelope(
        'Hermite pi/2-pulse',
        MW_channel='MW_Imod',
        PM_channel='MW_pulsemod',
        second_MW_channel='MW_Qmod',
        amplitude=msmt.params['MW_pi2_amp'] *
        msmt.params['MW_BellStateFactor'],
        length=msmt.params['MW_pi2_duration'],
        PM_risetime=msmt.params['MW_pulse_mod_risetime'],
        pi2_pulse=True)

    msmt.MW_RND_I = pulselib.HermitePulse_Envelope(
        'Hermite RND-pulse-I',
        MW_channel='MW_Imod',
        PM_channel='MW_pulsemod',
        amplitude=msmt.params['MW_RND_amp_I'],
        length=msmt.params['MW_RND_duration_I'],
        PM_risetime=msmt.params['MW_pulse_mod_risetime'],
        pi2_pulse=True)
    msmt.MW_RND_Q = pulselib.HermitePulse_Envelope(
        'Hermite RND-pulse-Q',
        MW_channel='MW_Qmod',
        PM_channel='MW_pulsemod',
        amplitude=msmt.params['MW_RND_amp_Q'],
        length=msmt.params['MW_RND_duration_Q'],
        PM_risetime=msmt.params['MW_pulse_mod_risetime'],
        pi2_pulse=True)

    msmt.eom_pulse = eom_pulses.OriginalEOMAOMPulse(
        'Eom Aom Pulse',
        eom_channel='EOM_Matisse',
        aom_channel='EOM_AOM_Matisse',
        eom_pulse_duration=msmt.params['eom_pulse_duration'],
        eom_off_duration=msmt.params['eom_off_duration'],
        eom_off_amplitude=msmt.params['eom_off_amplitude'],
        eom_pulse_amplitude=msmt.params['eom_pulse_amplitude'],
        eom_overshoot_duration1=msmt.params['eom_overshoot_duration1'],
        eom_overshoot1=msmt.params['eom_overshoot1'],
        eom_overshoot_duration2=msmt.params['eom_overshoot_duration2'],
        eom_overshoot2=msmt.params['eom_overshoot2'],
        aom_risetime=msmt.params['aom_risetime'],
        aom_amplitude=msmt.params['aom_amplitude'])

    msmt.RND_halt_off_pulse = pulse.SquarePulse(
        channel='RND_halt', amplitude=2.0, length=msmt.params['RND_duration'])

    ### synchronizing, etc
    msmt.adwin_trigger_pulse = pulse.SquarePulse(channel='adwin_sync',
                                                 length=5e-6,
                                                 amplitude=2)

    msmt.sync = pulse.SquarePulse(channel='sync', length=50e-9, amplitude=1.0)
    msmt.SP_pulse = pulse.SquarePulse(channel='AOM_Newfocus', amplitude=1.0)
    msmt.RO_pulse = pulse.SquarePulse(channel='EOM_AOM_Matisse', amplitude=0.0)
    msmt.yellow_pulse = pulse.SquarePulse(channel='AOM_Yellow', amplitude=1.0)

    msmt.plu_gate = pulse.SquarePulse(channel='plu_sync',
                                      amplitude=1.0,
                                      length=msmt.params['PLU_gate_duration'])

    return True
示例#3
0
    def generate_sequence(self):

        SP_A_pulse = pulse.SquarePulse(channel='AOM_Newfocus', amplitude=1.0)
        SP_E_pulse = pulse.SquarePulse(channel='EOM_AOM_Matisse',
                                       amplitude=1.0)
        RO_pulse = pulse.SquarePulse(channel='EOM_AOM_Matisse', amplitude=1.0)
        T = pulse.SquarePulse(channel='AOM_Newfocus',
                              length=self.params['wait_length'],
                              amplitude=0)
        adwin_trigger_pulse = pulse.SquarePulse(channel='adwin_sync',
                                                length=5e-6,
                                                amplitude=2)
        PQ_sync = pulse.SquarePulse(channel='sync',
                                    length=self.params['pq_sync_length'],
                                    amplitude=1.0)
        MW_pi = pulselib.HermitePulse_Envelope(
            'Hermite pi-pulse',
            MW_channel='MW_Imod',
            PM_channel='MW_pulsemod',
            second_MW_channel='MW_Qmod',
            amplitude=self.params['Hermite_pi_amp'],
            length=self.params['Hermite_pi_length'],
            PM_risetime=self.params['MW_pulse_mod_risetime'],
            pi2_pulse=False)
        elements = []

        finished_element = element.Element('finished', pulsar=qt.pulsar)
        finished_element.append(adwin_trigger_pulse)
        elements.append(finished_element)

        seq = pulsar.Sequence('FastSSRO')

        for i in range(self.params['pts'] / 2):
            e0 = element.Element('SSRO-ms0-{}'.format(i), pulsar=qt.pulsar)
            e0.append(pulse.cp(T, length=1e-6))
            e0.append(PQ_sync)
            e0.append(T)
            e0.append(
                pulse.cp(SP_A_pulse,
                         length=self.params['A_SP_durations_AWG'][i]))
            e0.append(T)
            e0.append(
                pulse.cp(RO_pulse,
                         length=self.params['pi_pulse_time'][i],
                         amplitude=self.params['E_RO_voltages_AWG'][i]))
            e0.append(pulse.cp(T, length=self.params['wait_length_MW']))
            e0.append(MW_pi)
            e0.append(pulse.cp(T, length=self.params['wait_length_MW']))
            e0.append(
                pulse.cp(RO_pulse,
                         length=self.params['E_RO_durations_AWG'][i] -
                         self.params['pi_pulse_time'][i],
                         amplitude=self.params['E_RO_voltages_AWG'][i]))
            e0.append(T)
            elements.append(e0)

            seq.append(name='SSRO-ms0-{}'.format(i),
                       wfname=e0.name,
                       trigger_wait=True)
            seq.append(name='finished-ms0-{}'.format(i),
                       wfname=finished_element.name,
                       trigger_wait=False)

            e1 = element.Element('SSRO-ms1-{}'.format(i), pulsar=qt.pulsar)
            e1.append(pulse.cp(T, length=1e-6))
            e1.append(PQ_sync)
            e1.append(T)
            e1.append(
                pulse.cp(SP_E_pulse,
                         length=self.params['E_SP_durations_AWG'][i],
                         amplitude=self.params['E_SP_voltages_AWG'][i]))
            e1.append(T)
            e1.append(
                pulse.cp(RO_pulse,
                         length=self.params['pi_pulse_time'][i],
                         amplitude=self.params['E_RO_voltages_AWG'][i]))
            e1.append(pulse.cp(T, length=self.params['wait_length_MW']))
            e1.append(MW_pi)
            e1.append(pulse.cp(T, length=self.params['wait_length_MW']))
            e1.append(
                pulse.cp(RO_pulse,
                         length=self.params['E_RO_durations_AWG'][i] -
                         self.params['pi_pulse_time'][i],
                         amplitude=self.params['E_RO_voltages_AWG'][i]))
            e1.append(T)
            elements.append(e1)

            seq.append(name='SSRO-ms1-{}'.format(i),
                       wfname=e1.name,
                       trigger_wait=True)
            seq.append(name='finished-ms1-{}'.format(i),
                       wfname=finished_element.name,
                       trigger_wait=False)

        qt.pulsar.program_awg(seq, *elements)
示例#4
0
    def generate_sequence(self, upload=True):

        SP_A_pulse          =        pulse.SquarePulse(channel = 'AOM_Newfocus', amplitude = 1.0)
        SP_E_pulse          =        pulse.SquarePulse(channel = 'EOM_AOM_Matisse',  amplitude = 1.0)
        RO_pulse            =        pulse.SquarePulse(channel = 'EOM_AOM_Matisse',  amplitude = 1.0)
        T                   =        pulse.SquarePulse(channel = 'AOM_Newfocus', length = self.params['wait_length'], amplitude = 0)
        adwin_trigger_pulse =        pulse.SquarePulse(channel = 'adwin_sync',   length = 5e-6,   amplitude = 2)
        PQ_sync             =        pulse.SquarePulse(channel = 'sync', length = self.params['pq_sync_length'], amplitude = 1.0)
        MW_pi_pulse  =       pulselib.HermitePulse_Envelope('Hermite pi-pulse',
                                        MW_channel='MW_Imod',
                                        PM_channel='MW_pulsemod',
                                        second_MW_channel='MW_Qmod', 
                                        amplitude = self.params['Hermite_pi_amp'],
                                        length = self.params['Hermite_pi_length'],
                                        PM_risetime = self.params['MW_pulse_mod_risetime'],
                                        pi2_pulse = False)


        elements = [] 

        finished_element = element.Element('finished', pulsar = qt.pulsar)
        finished_element.append(adwin_trigger_pulse)
        elements.append(finished_element)

        seq = pulsar.Sequence('FastSSRO')

        for i in range(self.params['pts']/2):
            e0 =  element.Element('SSRO-ms0-{}'.format(i), pulsar = qt.pulsar)
            e0.append(pulse.cp(T,length=3e-6))
            e0.append(PQ_sync)
            e0.append(T)  
            e0.append(pulse.cp(SP_A_pulse, length=self.params['A_SP_durations_AWG'][i]))
            e0.append(T)
            e0.append(pulse.cp(RO_pulse, length=self.params['E_RO_durations_AWG'][i],
                    amplitude=self.params['E_RO_voltages_AWG'][i]))
            e0.append(T)
            elements.append(e0)

            seq.append(name='SSRO-ms0-{}'.format(i), wfname=e0.name, trigger_wait=True)
            seq.append(name='finished-ms0-{}'.format(i), wfname=finished_element.name, trigger_wait=False)

            e1 =  element.Element('SSRO-ms1-{}'.format(i), pulsar = qt.pulsar)
            e1.append(pulse.cp(T,length=3e-6))
            e1.append(PQ_sync)
            e1.append(T)

            if self.params['init_with_MW'] : #SP on ms=0 transition, then apply a MW pi pulse to transfer population into ms=-1
                e1.append(pulse.cp(SP_A_pulse, length=self.params['A_SP_durations_AWG'][i]))
                e1.append(T)
                e1.append(MW_pi_pulse)
                self.params['E_SP_durations_AWG'][i] = self.params['A_SP_durations_AWG'][i] + self.params['wait_length'] + self.params['Hermite_pi_length']
            else:
                e1.append(pulse.cp(SP_E_pulse, length=self.params['E_SP_durations_AWG'][i], 
                    amplitude=self.params['E_SP_voltages_AWG'][i]))
            

            e1.append(T)
            e1.append(pulse.cp(RO_pulse, length=self.params['E_RO_durations_AWG'][i],
                    amplitude=self.params['E_RO_voltages_AWG'][i]))
            e1.append(T)
            elements.append(e1)

            seq.append(name='SSRO-ms1-{}'.format(i), wfname=e1.name, trigger_wait=True)
            seq.append(name='finished-ms1-{}'.format(i), wfname=finished_element.name, trigger_wait=False)
        


        if upload:
            if upload=='old_method':
                qt.pulsar.upload(*elements)
                qt.pulsar.program_sequence(seq)
            else:
                qt.pulsar.program_awg(seq,*elements)