Skip to content

T1 Measurement

Now that we have measured the basic qubit properties — readout resonator frequency, qubit resonance frequency and qubit drive pulse amplitudes — and calibrated our system accordingly, we can use these to obtain information about the properties of our qubit. First, we will do a simple measurement of the lifetime T1 of the qubit.

To measure the lifetime of the qubit state, the qubit is brought to its excited state. We will then wait a variable time before measuring the state of the qubit. Averaging over many measurements will yield the probability of still finding the qubit in its excited state after this time.

The experimental parameters for the T1 experiment are the range of delay times and the number of steps we will iterate the delay over. We also define the pulse used to drive the qubit from the ground to its excited state, using the Gaussian waveform already used in the Rabi experiment, together with the newly determined π-pulse amplitude.

## delay range for ramsey pulses
t1_min = 0.
t1_max = 5 * qubit_parameters['T1']
## how many delay points to sweep
t1_num = 60

## how many averages per point: 2^n_average
n_average = 10

## set up sweep parameter
t1_sweep = LinearSweepParameter(uid="t1_delay", start=t1_min, stop=t1_max, count=t1_num)

## T1 excitation pulse - qubit pi pulse
x180 = pulse_library.gaussian(
    uid="x180", length=qubit_parameters['qb_len'], amplitude=qubit_parameters['pi_amp']
)

The definition of the experiment follows the same lines as before, with the sweep parameter now being the delay time between the qubit excitation pulse and the readout of the qubit state.

## Create Experiment
exp_t1 = Experiment(
    uid="Qubit T1",
    signals=[
        ExperimentSignal("drive"),
        ExperimentSignal("measure"),
        ExperimentSignal("acquire"),
    ],
)

### define experiment sequence
## outer loop - real-time averaging
with exp_t1.acquire_loop_rt(uid="t1_shots", count=pow(2, n_average), averaging_mode=AveragingMode.SEQUENTIAL, acquisition_type=AcquisitionType.INTEGRATION):
    ## inner loop - real-time sweep delay between pi pulse and readout
    with exp_t1.sweep(uid="t1_sweep", parameter=t1_sweep):
        ## qubit pi pulse and following delay
        with exp_t1.section(uid="qubit_excitation", length=t1_max+2*x180.length, alignment=SectionAlignment.RIGHT):
            exp_t1.play(signal="drive", pulse=x180)
            exp_t1.delay(signal="drive", time=t1_sweep)
        ## readout pulse and data acquisition
        readoutQubit(exp_t1, section_id="qubit_readout", readout_id="measure",
            acquire_id="acquire", reserve_id="drive", acquire_handle="q0_t1",
            readout_delay=qubit_parameters['ro_delay'], acquire_offset =qubit_parameters['ro_int_delay'],
            readout_pulse=readout_pulse, readout_weights=readout_weighting_function, relax_time=qubit_parameters['relax']
        )

Figure 1 shows example data from a T1 experiment. We see how the probability of the qubit to be in its excited state decays exponentially with the delay between excitation and measurement. The decay time constant can be retrieved from fitting the data and is the inverse of the qubit lifetime T1.

Figure 1: Example data from a qubit decay measurement - courtesy Dr. Daniel J. Weigand, PGI13, FZ Jülich