Quantum Dots Charge Sensing Radio Frequency Set RF Reflectometry Dispersive Readout
# High-Speed Quantum Dot Metrology, RF-SET Reflectometry, and Dispersive Readout
## 1. Introduction to Quantum Dots and Single-Electron Devices
A quantum dot is a nanoscale semiconductor structure that confines charge carriers (electrons or holes) in all three spatial dimensions, creating a zero-dimensional system with discrete energy levels. When the thermal energy k_B T is much smaller than the energy spacing between levels, quantum dots exhibit Coulomb blockade—a suppression of electrical current due to the electrostatic energy cost of adding individual electrons. This single-electron physics has profound consequences: the current through a quantum dot exhibits periodic oscillations with gate voltage, and the differential conductance traces out characteristic "stability diamond" patterns reflecting the discrete addition spectra of the dot.
Single-electron transistors (SETs)—the simplest three-terminal device consisting of a quantum dot coupled to two leads via tunnel barriers—represent the ultimate limit of charge sensitivity and transistor miniaturization. A single electron tunneling event changes the dot's charge state, producing measurable current changes. This sensitive dependence on discrete charge has enabled applications ranging from charge sensors for quantum computing to memories operating at the single-electron limit.
This article develops the theory of quantum dots, from electrostatic charging energy through Coulomb blockade physics, master equation transport kinetics, and experimental signatures. A companion Python solver computes stability diamond maps and transport characteristics.
## 2. Electrostatic Model and Charging Energy
At the simplest level, a quantum dot is modeled as a capacitor with capacitance C_Σ to ground (or to external leads). The electrostatic energy to place N electrons on a dot of diameter d is:
where Q_ext = -C_g V_g is the external charge induced by a gate voltage V_g (with gate capacitance C_g). The charging energy—the energy cost to add one electron—is:
The first term, E_c = e²/C_Σ, is the pure charging or Coulomb energy, depending only on material parameters. Typical values for nanostructures: For a 100 nm diameter GaAs quantum dot, C_Σ ≈ 10 aF (attofarads), giving E_c ≈ 10 meV. The second term is gate-voltage dependent and causes the charging energy to vary linearly with V_g.
## 3. Conditions for Coulomb Blockade
Coulomb blockade—complete suppression of current at certain gate voltages—requires two key conditions:
### 3.1 Thermal Condition
The thermal energy must be much less than the charging energy:
For E_c ~ 1 meV (typical for 100 nm dots), this requires T < 10 K. Experimental observation of Coulomb blockade typically uses dilution refrigerators (T ~ 0.01 K), providing many orders of magnitude separation.
### 3.2 Tunneling Condition
The resistance of the tunnel barriers between the dot and leads must exceed the quantum resistance:
For an electron tunneling rate Γ = (e² R_T)⁻¹, this requires Γ ≪ e²/ℏ, ensuring that tunneling events are infrequent compared to the quantum mechanical precession time. When both conditions are met, individual electron transfers can be resolved as discrete current steps.
## 4. Single-Electron Transistor (SET) Operation
A SET consists of three capacitively coupled elements:
- Quantum dot (island) of capacitance C_dot
- Left lead coupled via tunnel barrier R_L, C_L
- Right lead coupled via tunnel barrier R_R, C_R
- Gate coupled via capacitance C_g
The total capacitance seen by the dot is:
At finite source-drain bias voltage V_ds, the electrochemical potential of the left lead is shifted by e V_ds, creating an asymmetry that enables directional current flow.
## 5. Stability Diagrams: Coulomb Blockade Diamonds
The differential conductance dI/dV_ds as a function of gate voltage V_g and source-drain voltage V_ds traces out a spectacular pattern of diamond-shaped blockade regions separated by resonant tunneling lines. These "Coulomb blockade diamonds" reveal the ground state energy spacing and excitation spectrum of the quantum dot.
### 5.1 Diamond Boundaries
For zero bias (V_ds = 0), the condition for tunneling is that the electrochemical potentials of the dot and one of the leads must align. This occurs at gate voltages where:
yielding:
These are the resonance voltages for N-to-(N+1) transitions. Between resonances, the dot is blocked: no current flows.
At finite bias, current can flow via elastic tunneling (when electrochemical potentials align) or inelastic tunneling (when thermal energy or bias voltage enables tunneling into excited states). The bias voltage scales measured in the diagram are:
### 5.2 Peak Positions and Peak Spacing
The spacing between adjacent Coulomb blockade diamonds along the V_g axis is:
a direct measure of the gate capacitance. Typically, Δ V_g ≈ 10–100 mV for SET devices.
Along the V_ds axis, the diamond height is E_c/e. Measuring this height directly yields the charging energy and thus the dot capacitance:
## 6. Excitation Spectrum and Excited States
Beyond the ground state, quantum dots support excited states. When the bias voltage is large enough (|V_ds| > E_1, where E_1 is the first excited state energy above the ground state), inelastic resonant tunneling becomes possible: an electron can tunnel into (or out of) an excited state, producing additional current peaks within the blockade diamonds.
For a simple single-particle model (independent electrons), excited states occur at energies corresponding to orbital excitations. Richer structure appears in the presence of interactions: for quantum dots with strong Coulomb interactions, the excited spectrum includes charged excitations (adding another electron changes the Coulomb energy significantly) and spin excitations (if the ground state is spin-polarized).
## 7. Master Equation and Rate Equation Approach
To compute current beyond simple resonance conditions, one solves the rate equations for the state probabilities P(N, S), where N is the number of electrons and S is the spin state. The master equation reads:
where Γ_j,N^+ is the tunneling rate from lead j into the dot (increasing electron number), and Γ_j,N^- is the rate for tunneling out. At steady state (dP/dt = 0), the current is:
The tunneling rates follow the Fermi-Dirac distribution: tunneling from the lead into the dot occurs with rate proportional to the electron occupation probability in the lead, while the density of available states in the dot determines the acceptance rate. Explicitly:
where f_j(E) is the Fermi function in lead j, f_dot(E) is the occupation in the dot, and ρ_j(E) is the density of states in lead j.
## 8. Coulomb Diamonds in Finite Magnetic Field
Applying a perpendicular magnetic field (typically 1-10 T) lifts the spin degeneracy of electronic states in the dot. For a dot with a few electrons, the ground state exhibits Kondo behavior at low temperatures—the interaction between unpaired dot electrons and conduction electrons in the leads creates a resonant scattering state (Kondo resonance) that enhances low-bias conductance.
The magnetic field also produces Zeeman splitting of spin-up and spin-down levels:
where g^* is the effective g-factor (~2 for electrons in GaAs), and μ_B is the Bohr magneton. At field B ~ 1 T, typical Zeeman splittings are ~0.1 meV, comparable to charging energy in large dots.
## 9. Kondo Effect and Many-Body Physics
When the quantum dot occupancy is odd (unpaired electron), the dot can exchange electrons with the leads while maintaining charge parity conservation. At low temperatures T < T_K (Kondo temperature), the screening of the dot's local moment by lead electrons produces an anomalous many-body resonance at the Fermi level, manifesting as a zero-bias conductance peak. The Kondo temperature is:
where Γ is the tunnel coupling rate. For typical dots, T_K ranges from millikelvin to several kelvin, accessible in dilution refrigerators.
The Kondo peak provides high conductance (unitary limit: G ~ e²/h) despite Coulomb blockade, representing a fundamental quantum phenomenon where many-body correlations overcome classical charging suppression.
## 10. Double Quantum Dots and Quantum Interference
Two quantum dots coupled in series or parallel exhibit interference phenomena. In a serial configuration, two coupled dots can form a coherent two-level system at small level detuning, producing Rabi oscillations of charge and spin. In a parallel configuration, two dots offer multiple conduction paths, producing quantum interference similar to a Mach-Zehnder interferometer for electrons.
These quantum dot systems enable:
- Charge qubits: Using the states |0⟩ (no excess electron) and |1⟩ (one excess electron) as logical qubits.
- Spin qubits: Encoding information in electron spin (parallel or antiparallel), with coherence times of microseconds.
## 11. Numerical Solver: Stability Diagram Computation and Transport
The following Python code computes Coulomb blockade stability diagrams and calculates current via master equation:
import numpy as np
import matplotlib.pyplot as plt
from scipy.optimize import fsolve
def fermi_dirac(E, mu, T):
"""
Fermi-Dirac distribution.
E: energy
mu: chemical potential
T: temperature (in energy units, k_B T)
"""
x = (E - mu) / T
return 1.0 / (1.0 + np.exp(np.clip(x, -50, 50)))
def charging_energy_cost(N, C_g, C_total, V_g):
"""
Electrostatic energy cost to add N electrons to the dot.
"""
return (N * (-1.0) - C_g * V_g)**2 / (2 * C_total)
def transition_voltage(N, C_g, C_total):
"""
Gate voltage at which N-electron state is in resonance.
"""
return -(N * (-1.0)) / C_g
def coulomb_diamond_boundary(N, E_c, C_g, V_ds_span=None):
"""
Compute the boundaries of the N-th Coulomb diamond.
"""
V_g_center = -(N * (-1.0)) / C_g
# Diamond half-width in gate voltage (due to asymmetry)
V_g_half_width = E_c / (2 * C_g)
# Diamond height in source-drain voltage
V_ds_height = E_c / (-1.0) # e = -1 in natural units
return V_g_center, V_g_half_width, V_ds_height
def compute_stability_diagram(V_g_range, V_ds_range, n_electrons_max=4,
C_g=1.0, C_total=10.0, Gamma_L=0.01, Gamma_R=0.01,
T=0.001, bias_asymmetry=0.5):
"""
Compute the stability diagram (differential conductance) via master equation.
"""
V_g_vals = np.linspace(V_g_range[0], V_g_range[1], 100)
V_ds_vals = np.linspace(V_ds_range[0], V_ds_range[1], 100)
dIdV = np.zeros((len(V_ds_vals), len(V_g_vals)))
for ig, V_g in enumerate(V_g_vals):
for iv, V_ds in enumerate(V_ds_vals):
# Compute tunneling rates for each charge state
# Simplified model: assume energy levels at E_N = U(N) - mu_lead
# Electrochemical potentials
mu_left = -V_ds / 2 * bias_asymmetry
mu_right = V_ds / 2 * (1 - bias_asymmetry)
# Solve rate equations for steady-state probabilities
# For simplicity, consider only two adjacent charge states
P = np.zeros(n_electrons_max + 1)
total_rate = 0
for N in range(n_electrons_max):
E_N = charging_energy_cost(N, C_g, C_total, V_g)
E_Np1 = charging_energy_cost(N + 1, C_g, C_total, V_g)
# Tunneling rate from left lead into state N+1
if mu_left > E_N:
Gamma_L_out = Gamma_L * fermi_dirac(E_N, mu_left, T)
else:
Gamma_L_out = 0
if mu_left > E_Np1:
Gamma_L_in = Gamma_L * (1 - fermi_dirac(E_Np1, mu_left, T))
else:
Gamma_L_in = 0
# Tunneling rate from right lead
if mu_right > E_N:
Gamma_R_out = Gamma_R * fermi_dirac(E_N, mu_right, T)
else:
Gamma_R_out = 0
if mu_right > E_Np1:
Gamma_R_in = Gamma_R * (1 - fermi_dirac(E_Np1, mu_right, T))
else:
Gamma_R_in = 0
# Two-state approximation
N_base = int((C_g * V_g) % (n_electrons_max - 1))
E_base = charging_energy_cost(N_base, C_g, C_total, V_g)
E_excited = charging_energy_cost(N_base + 1, C_g, C_total, V_g)
# Current through left barrier
rate_into_excited = Gamma_L * max(0, fermi_dirac(E_base, mu_left, T))
rate_out_of_excited = Gamma_L * max(0, 1 - fermi_dirac(E_excited, mu_left, T))
conductance = np.abs(rate_into_excited - rate_out_of_excited)
dIdV[iv, ig] = conductance
return V_g_vals, V_ds_vals, dIdV
def plot_excitation_spectrum(V_g_range, n_electrons_max=4, C_g=1.0, C_total=10.0):
"""
Plot energy levels as a function of gate voltage.
"""
V_g_vals = np.linspace(V_g_range[0], V_g_range[1], 200)
fig, ax = plt.subplots(figsize=(12, 6))
for N in range(n_electrons_max + 1):
E_N = charging_energy_cost(N, C_g, C_total, V_g_vals)
ax.plot(V_g_vals, E_N, linewidth=2, label=f'N = {N}')
ax.set_xlabel('Gate voltage $V_g$ (units of $e/C_g$)', fontsize=12)
ax.set_ylabel('Charging energy $U(N)$ (units of $e^2/C$)', fontsize=12)
ax.set_title('Quantum Dot Energy Levels vs. Gate Voltage', fontsize=13)
ax.legend(fontsize=11)
ax.grid(True, alpha=0.3)
return fig
# Parameters
C_g = 1.0 # Gate capacitance (normalized)
C_total = 10.0 # Total capacitance (normalized)
E_c = 1.0 # Charging energy (e^2/C_total)
Gamma_L = 0.02 # Tunneling rate from left lead
Gamma_R = 0.02 # Tunneling rate from right lead
T_temp = 0.005 # Temperature (in units of charging energy)
# Gate and bias voltage ranges
V_g_range = [-3, 3]
V_ds_range = [-2.5, 2.5]
# Compute stability diagram
V_g, V_ds, dIdV = compute_stability_diagram(V_g_range, V_ds_range,
C_g=C_g, C_total=C_total,
Gamma_L=Gamma_L, Gamma_R=Gamma_R,
T=T_temp)
# Create comprehensive plots
fig, axes = plt.subplots(2, 2, figsize=(14, 10))
# Panel 1: Stability diagram (differential conductance)
ax = axes[0, 0]
contour = ax.contourf(V_g, V_ds, dIdV, levels=30, cmap='hot')
ax.contour(V_g, V_ds, dIdV, levels=[0.01, 0.05, 0.1], colors='white', linewidths=0.5, alpha=0.5)
cbar = plt.colorbar(contour, ax=ax, label='$dI/dV_{ds}$ (a.u.)')
ax.set_xlabel('Gate voltage $V_g$ (units of $e/C_g$)', fontsize=11)
ax.set_ylabel('Source-drain bias $V_{ds}$ (units of $E_c/e$)', fontsize=11)
ax.set_title('Coulomb Blockade Diamonds: Stability Diagram', fontsize=12)
# Panel 2: Energy level diagram
ax = axes[0, 1]
V_g_fine = np.linspace(-3, 3, 200)
for N in range(5):
E_N = charging_energy_cost(N, C_g, C_total, V_g_fine)
ax.plot(V_g_fine, E_N, linewidth=2.5, label=f'N = {N}')
# Mark resonance points
V_res = transition_voltage(N, C_g, C_total)
if -3 < V_res < 3:
E_res = charging_energy_cost(N, C_g, C_total, V_res)
ax.plot(V_res, E_res, 'o', markersize=8, color='red')
ax.set_xlabel('Gate voltage $V_g$', fontsize=11)
ax.set_ylabel('Electrochemical potential (a.u.)', fontsize=11)
ax.set_title('Quantum Dot Energy Levels', fontsize=12)
ax.legend(fontsize=9)
ax.grid(True, alpha=0.3)
# Panel 3: Single diamond cross-section
ax = axes[1, 0]
V_g_center = -1.5 # Center around 2-electron state
V_g_section = np.linspace(V_g_center - 1, V_g_center + 1, 100)
dIdV_section = dIdV[:, np.argmin(np.abs(V_g - V_g_center))]
# Normalize for visualization
dIdV_section_norm = dIdV_section / np.max(dIdV_section)
ax.fill_between(V_g_section, V_ds, V_ds + dIdV_section_norm*0.1, alpha=0.3, color='blue')
ax.plot(V_g_section, V_ds + dIdV_section_norm*0.1, 'b-', linewidth=2, label='Conductance')
ax.set_xlabel('Gate voltage $V_g$', fontsize=11)
ax.set_ylabel('Source-drain bias $V_{ds}$', fontsize=11)
ax.set_title('Single Coulomb Diamond Profile', fontsize=12)
ax.grid(True, alpha=0.3)
# Panel 4: Summary of SET parameters
ax = axes[1, 1]
ax.axis('off')
summary_text = f"""
Single-Electron Transistor (SET) Parameters
Gate capacitance: C_g = {C_g:.1f} (normalized)
Total capacitance: C_Σ = {C_total:.1f}
Charging energy: E_c = {E_c:.2f} (units e²/C)
Gate voltage spacing: ΔV_g = e/C_g
Diamond height: E_c/e
Tunneling rates:
Γ_L = {Gamma_L:.3f}
Γ_R = {Gamma_R:.3f}
Temperature: T = {T_temp:.4f} E_c
Quantum Resistance:
R_q = h/e² ≈ 25.8 kΩ
Typical values (GaAs QD):
• Dot diameter: 100 nm
• Charging energy: 1-10 meV
• Operating temperature: <1 K
• Detectivity: e/20-e/100
Applications:
✓ Charge sensors
✓ Qubits (charge/spin)
✓ Quantum metrology
✓ Single-electron memories
"""
ax.text(0.05, 0.95, summary_text, transform=ax.transAxes, fontsize=10,
verticalalignment='top', family='monospace',
bbox=dict(boxstyle='round', facecolor='lightyellow', alpha=0.8))
plt.tight_layout()
plt.show()
print("Quantum Dot Stability Diagram Analysis Complete")
print(f"Charging energy (in normalized units): E_c = {E_c:.2f}")
print(f"Diamond spacing (gate): ΔV_g = {1.0/C_g:.3f}")
print(f"Diamond height (bias): {E_c:.3f}")## 12. Spin Physics in Quantum Dots
When quantum dots contain an odd number of electrons, the ground state possesses a net spin. The two-electron exchange interaction (Hubbard interaction) penalizes double occupation:
comparable to or exceeding the single-particle level spacing. This strong interaction enables using quantum dots as artificial atoms with tunable electronic structure—a quantum dot with ~100 electrons can be tuned to exhibit behavior of a real atom with similar electron count.
Spin qubits based on quantum dots exploit the long coherence times (~microseconds) of electron spin in GaAs or Si, enabled by weak hyperfine coupling to nuclear spins. Rabi oscillations, spin echoes, and two-qubit gates have been demonstrated, making quantum dots competitive platforms for scalable quantum computing.
## 13. Quantum Computing Applications
### 13.1 Charge Qubits
Two-level systems formed by the charge configuration (e.g., electron on left or right dot in a double-dot system) can be coherently manipulated with picosecond gate pulses.
### 13.2 Spin Qubits
The two-spin-1/2 states (spin up or down) form robust qubits with high-fidelity 2-qubit gates via exchange interaction.
### 13.3 Hybrid Superconductor-Dot Systems
Superconducting proximity effect in dots coupled to superconducting leads creates Andreev reflection and enables parity qubits and topological protection.
## 14. Advanced Experiments and Recent Progress
### 14.1 Charge Sensing at the Single-Electron Level
Capacitive coupling of a sensor dot to a target dot enables non-destructive charge readout with signal-to-noise ratio approaching the quantum limit.
### 14.2 Photon-Assisted Tunneling
Applying microwave radiation resonant with intra-dot transitions induces photon-assisted tunneling, enabling high-precision spectroscopy of dot energy levels.
### 14.3 Dynamical Decoupling and Protected Gates
Pulse sequences implementing dynamical decoupling extend spin coherence times from microseconds to tens of microseconds by suppressing dephasing from nuclear spin noise.
## 15. Future Directions
### 15.1 Scaling to Large Arrays
Current experiments demonstrate individual qubits or small 2-3 qubit gates. Scaling to 50-100 qubits requires solving interconnect challenges, reducing cross-talk, and automating calibration.
### 15.2 Integration with Cavities
Coupling quantum dots to microwave cavities enables photonic quantum networks and hybrid quantum processing.
### 15.3 Topological Qubits
Combining quantum dots with topological superconductivity promises non-abelian anyons and topologically protected quantum computing.
## Conclusion
Quantum dots represent a unique platform for studying and exploiting single-electron physics. The interplay of discrete energy levels, Coulomb charging energy, and quantum mechanical tunneling creates rich phenomena from Coulomb blockade diamonds to Kondo correlations. Single-electron transistors demonstrate exquisite charge sensitivity, enabling applications as sensors and qubits. The presented numerical solver computes stability diagrams, extracting charging energy and gate capacitance directly from transport data. Quantum dots continue to drive innovation in quantum information, condensed matter physics, and device engineering, with potential for scalable quantum computing and ultra-precise measurements.
## RF reflectometry measurement chain
Direct-current charge sensing is limited by cable capacitance and room-temperature amplifier noise. RF reflectometry embeds a single-electron transistor or gate sensor in a resonant matching network. A carrier near the resonance interrogates the device, and the reflected amplitude and phase change when a nearby quantum dot changes charge state. Cryogenic circulators route the reflected wave to a low-noise amplifier, followed by homodyne or heterodyne IQ demodulation.
For a simple series inductor feeding a shunt combination of differential resistance R_d and total capacitance C_total,
The measured complex reflection coefficient at a line impedance Z_0 is
Critical coupling occurs when the transformed dissipative impedance matches Z_0 at resonance. Then the reflection magnitude has a deep dip and small device changes produce large IQ motion. Overcoupling broadens bandwidth but reduces phase slope; undercoupling gives a narrow feature with poor power transfer.
The SET differential resistance is
It changes strongly across a Coulomb peak. Since the carrier amplitude may itself modulate the SET operating point, R_d must be measured at the RF excitation level used for readout. Excess power causes photon-assisted tunneling, electron heating, and power broadening.
## Resonance and quantum capacitance
The resonance frequency of an ideal lumped tank is
C_p includes wiring and device parasitics. The quantum capacitance is the curvature of band or state energy with gate voltage. For a two-level avoided crossing it peaks near zero detuning and changes the reactive load without requiring transport through the sensed dot. This enables dispersive readout with the dot isolated from a drain reservoir.
For a small capacitance change ΔC around C_total,
Near resonance the phase shift is approximately
The small-signal limit is Δφ ≈ 2QΔω/ω_0. Increasing Q raises phase response but narrows measurement bandwidth to roughly f_0/Q. For fast single-shot readout, maximum Q is rarely optimal. The resonator ring-up time and qubit relaxation must both fit within the integration window.
## Charge sensitivity and minimum integration time
Charge sensitivity is conventionally reported as
where δq is the equivalent rms charge signal in measurement bandwidth Δf. If two charge states produce IQ centroids separated by distance ΔV and each quadrature has white-noise spectral density S_V, then an approximate sensitivity is S_q = e sqrt(S_V)/ΔV after normalizing the state separation to one electron.
For white Gaussian noise, signal-to-noise ratio grows as the square root of integration time:
A practical minimum time for target SNR is τ_min ≈ 2S_V(SNR_target/ΔV)², subject to filter convention. Resonator ring-up adds a floor near Q/(πf_0). State relaxation produces non-Gaussian tails, so fidelity should be computed from time-domain records rather than inferred only from SNR.
## IQ discrimination and optimal filtering
Demodulation produces I(t) and Q(t). Rotate the plane so the axis joining calibrated state centroids becomes the signal quadrature and the orthogonal axis becomes a noise monitor. A matched filter weights frequencies by signal difference divided by noise power. This beats a rectangular average when the resonator rings up or the amplifier noise is colored.
Build histograms from labeled preparation shots. The assignment threshold is the intersection of conditional distributions when prior probabilities and error costs are equal. Report false-positive and false-negative probabilities separately. A single average fidelity hides asymmetric relaxation, latching, and preparation errors.
Common-mode carrier leakage can consume amplifier dynamic range without adding information. Directional coupler isolation, carrier cancellation, and careful impedance matching preserve headroom. Parametric amplifiers reduce noise temperature but introduce gain compression, pump leakage, and calibration drift.
## Multiplexing and crosstalk
Frequency multiplexing assigns several sensors distinct resonances on one feedline. Resonance separation must exceed loaded linewidths plus fabrication uncertainty. Intermodulation in amplifiers and DACs creates spurs that can land on neighboring channels. The full scattering matrix, not independent Lorentzian fits, is needed when resonators are close or coupled through a common parasitic mode.
Gate-based dispersive sensors reduce device count but couple readout power directly to qubit gates. Filters and pulse shaping limit unwanted excitation. RF-SET sensors provide high transconductance but add shot noise and require a biased island. The choice is a system tradeoff among fidelity, footprint, dissipation, and tuning complexity.
## Python resonance and IQ simulator
import numpy as np
import matplotlib.pyplot as plt
Z0 = 50.0
L = 820e-9
Cp = 0.42e-12
Rd0, Rd1 = 38e3, 62e3
Cq0, Cq1 = 0.0, 42e-18
def zin(freq, rd, cq):
w = 2*np.pi*freq
ctot = Cp+cq
zshunt = 1/(1/rd+1j*w*ctot)
return 1j*w*L+zshunt
def s11(freq, rd, cq):
z = zin(freq,rd,cq)
return (z-Z0)/(z+Z0)
freq = np.linspace(180e6, 360e6, 6000)
s0, s1 = s11(freq,Rd0,Cq0), s11(freq,Rd1,Cq1)
idx = np.argmax(np.abs(s1-s0))
fread = freq[idx]
# State-conditioned noisy IQ clouds at the best discrimination frequency.
rng = np.random.default_rng(12)
mu0, mu1 = s0[idx], s1[idx]
sigma = 0.012
shots = 5000
iq0 = mu0 + sigma*(rng.normal(size=shots)+1j*rng.normal(size=shots))
iq1 = mu1 + sigma*(rng.normal(size=shots)+1j*rng.normal(size=shots))
axis = (mu1-mu0)/abs(mu1-mu0)
x0 = np.real(iq0*np.conj(axis)); x1 = np.real(iq1*np.conj(axis))
threshold = 0.5*(np.mean(x0)+np.mean(x1))
fidelity = 1-0.5*(np.mean(x0>threshold)+np.mean(x1<threshold))
fig, ax = plt.subplots(1,3,figsize=(14,4))
ax[0].plot(freq/1e6,20*np.log10(np.abs(s0)),label='state 0')
ax[0].plot(freq/1e6,20*np.log10(np.abs(s1)),label='state 1')
ax[0].axvline(fread/1e6,color='k',ls=':'); ax[0].legend()
ax[0].set(xlabel='frequency (MHz)',ylabel='|S11| (dB)')
ax[1].plot(freq/1e6,np.unwrap(np.angle(s0)),label='state 0')
ax[1].plot(freq/1e6,np.unwrap(np.angle(s1)),label='state 1')
ax[1].set(xlabel='frequency (MHz)',ylabel='phase (rad)')
ax[2].scatter(iq0.real,iq0.imag,s=2,alpha=.15,label='state 0')
ax[2].scatter(iq1.real,iq1.imag,s=2,alpha=.15,label='state 1')
ax[2].set(xlabel='I',ylabel='Q'); ax[2].axis('equal'); ax[2].legend()
fig.tight_layout(); plt.show()
print('readout frequency:',fread/1e6,'MHz')
print('single-shot assignment fidelity:',fidelity)Extend the model with measured cable delay, complex gain, amplifier noise temperature, and resonator ring-up. Fit complex S11 rather than magnitude alone; phase distinguishes resonance motion from dissipation changes. Bootstrap entire acquisition records to retain correlations when estimating uncertainty.
## Calibration protocol
1. Measure an open, short, through, or calibrated reference plane as close to the cryogenic device as practical.
2. Fit the bare resonance to extract f_0, loaded Q, internal loss, and external coupling.
3. Sweep SET gate and source-drain bias at low RF power to locate a high-transconductance operating point.
4. Measure response versus RF power and choose the highest power before broadening or heating.
5. Prepare both charge states repeatedly and record raw IQ traces.
6. Train the integration kernel on one dataset and report fidelity on held-out shots.
7. Repeat versus integration time to expose the resonator and relaxation limits.
8. Track gain and phase drift with interleaved references.
## Failure modes
- Quoting charge sensitivity without the bandwidth and filter convention.
- Treating a resonance-frequency shift as quantum capacitance without excluding parasitic gate motion.
- Inferring single-shot fidelity from averaged traces.
- Ignoring state relaxation during the integration window.
- Using generator power instead of calibrated device power.
- Fitting only |S11| and losing the phase information that separates reactive and dissipative changes.
- Increasing Q without checking ring-up time and measurement bandwidth.
- Multiplexing resonances without testing amplifier intermodulation.
RF reflectometry is a measurement chain, not only an LC circuit. The useful figure is reliable information per unit time at the device operating point, including ring-up, amplifier noise, relaxation, and classification error.