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
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
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)
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)