T2 experiments#

In this section we show how to run T2 experiments using Qibocal

T2#

The acquisition for the \(T_2\) experiment is the same one as for the Ramsey experiment, the only difference is that in this experiment the drive pulse is not detuned. This protocol is assuming that any error on the drive frequency has been already corrected through a Ramsey experiment. For this reason we expect to see just an exponential behavior:

\[p_e(t) = A + B e^{ - t / T_2}\]

The reason why there are two distinct experiment is that in order to correct the drive frequency if the pulse is detuned enough we can proceed with short scans, while to extract reliably \(T_2\) it will be necessary to perform longer scans.

Parameters#

class qibocal.protocols.coherence.t2.T2Parameters(delay_between_pulses_start: int, delay_between_pulses_end: int, delay_between_pulses_step: int, single_shot: bool = False)[source]

T2 runcard inputs.

delay_between_pulses_start: int

Initial delay between RX(pi/2) pulses in ns.

delay_between_pulses_end: int

Final delay between RX(pi/2) pulses in ns.

delay_between_pulses_step: int

Step delay between RX(pi/2) pulses in ns.

hardware_average: bool = False

By default hardware average will be performed.

single_shot: bool = False

If True save single shot signal data.

nshots: int

Number of executions on hardware.

relaxation_time: float

Wait time for the qubit to decohere back to the gnd state.

Example#

A possible runcard to launch a \(T_2\) experiment could be the following:

- id: T2
  operation: t2
  parameters:
    delay_between_pulses_end: 100000
    delay_between_pulses_start: 4
    delay_between_pulses_step: 1000
    nshots: 1000

The expected output is the following:

../../_images/t2.png

\(T_2\) is determined by fitting the output signal using the formula presented above.

Requirements#

T2 with raw signal#

A standard \(T_2\) will try to compute the probability of the qubit being measured in state \(\ket{1}\). It is possible to perform a \(T_2\) experiment without performing single shot calibration by running an experiment called t2_signal.

The acquisition and the fitting procedure are exactly the same, the only difference being that on the y axis it will be displayed the raw measurements from the instruments.

Parameters#

class qibocal.protocols.coherence.t2_signal.T2SignalParameters(delay_between_pulses_start: int, delay_between_pulses_end: int, delay_between_pulses_step: int, single_shot: bool = False)[source]

T2Signal runcard inputs.

delay_between_pulses_start: int

Initial delay between RX(pi/2) pulses in ns.

delay_between_pulses_end: int

Final delay between RX(pi/2) pulses in ns.

delay_between_pulses_step: int

Step delay between RX(pi/2) pulses in ns.

single_shot: bool = False

If True save single shot signal data.

hardware_average: bool = False

By default hardware average will be performed.

nshots: int

Number of executions on hardware.

relaxation_time: float

Wait time for the qubit to decohere back to the gnd state.

Example#

- id: T2 with signal
  operation: t2_signal
  parameters:
    delay_between_pulses_end: 200000
    delay_between_pulses_start: 4
    delay_between_pulses_step: 4000
    nshots: 5000
    relaxation_time: 300000
../../_images/t2_signal.png

Note that in this case error bars will not be provided.

Requirements#

T2 with for loops#

If the instrument driver is not able to perform duration sweepers in real time, we provide a protocol where the different waiting time are swept through a python for loop. Such execution will be usually slower compared to the one where sweepers are supported but it could be useful for debugging purposes.

Here is a possible runcard:

- id: T2 with for loops
  operation: t2_sequences
  parameters:
    delay_between_pulses_end: 200000
    delay_between_pulses_start: 4
    delay_between_pulses_step: 4000
    nshots: 5000
    relaxation_time: 300000

Note

For t2_sequences on the y-axis it will be shown the raw output from instruments, not the population of \(\ket{1}\).