Hahn echo experiments#

In this section we show how to run Hahn echo experiments using Qibocal

Spin-echo#

The acquisition for the \(T_2^{\text{Echo}}\) experiment is similar to a Ramsey experiment, with the difference that between the two \(\pi / 2\) pulses we apply a \(\pi\) pulse. Such \(\pi\) pulse is applied exactly at \(\tau / 2\) where \(\tau\) is the waiting time between the two \(\pi / 2\) pulses.

By applying this extra pulse we can mitigate the qubit dephasing [4, 13] since any phase accumulated in first half of the sequence will be reversed in the second half. This is also why usually \(T_2^{\text{Echo}} \ge T_2\).

The fit is again a dumped exponential of the following form:

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

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.spin_echo.SpinEchoParameters(delay_between_pulses_start: int, delay_between_pulses_end: int, delay_between_pulses_step: int, unrolling: bool = False, single_shot: bool = False)[source]

SpinEcho runcard inputs.

hardware_average: bool = False

By default hardware average will be performed.

single_shot: bool = False

If True save single shot signal data.

unrolling: bool = False

If True it uses sequence unrolling to deploy multiple sequences in a single instrument call. Defaults to False.

delay_between_pulses_start: int

Initial delay between pulses [ns].

delay_between_pulses_end: int

Final delay between pulses [ns].

delay_between_pulses_step: int

Step delay between pulses [ns].

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^{\text{Echo}}\) experiment could be the following:

- id: T2 echo
  operation: spin_echo
  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_echo.png

\(T_2^{\text{Echo}}\) is determined by fitting the output signal using the formula presented above.

Requirements#

Spin-echo with raw signal#

A standard \(T_2^{\text{Echo}}\) will try to compute the probability of the qubit being measured in state \(\ket{1}\). It is possible to perform a \(T_2^{\text{Echo}}\) experiment without performing single shot calibration by running an experiment called spin_echo_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.spin_echo_signal.SpinEchoSignalParameters(delay_between_pulses_start: int, delay_between_pulses_end: int, delay_between_pulses_step: int, unrolling: bool = False, single_shot: bool = False)[source]

SpinEcho Signal runcard inputs.

delay_between_pulses_start: int

Initial delay between pulses [ns].

delay_between_pulses_end: int

Final delay between pulses [ns].

delay_between_pulses_step: int

Step delay between pulses [ns].

unrolling: bool = False

If True it uses sequence unrolling to deploy multiple sequences in a single instrument call. Defaults to False.

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: Spin Echo with signal
  operation: spin_echo_signal
  parameters:
    delay_between_pulses_end: 200000
    delay_between_pulses_start: 4
    delay_between_pulses_step: 4000
    nshots: 5000
    relaxation_time: 300000
../../_images/t2_echo_signal.png

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

Requirements#