logbook
WP-E Progress / Logbook / 2026 04 13 S1 plots
Context. Plots for the S1 + R1 dataset of 2026-04-13-S1-and-R1.md,
generated by ../numerics/plot_S1.py. One new
observation surfaces from looking at the maps that was not visible from
the carrier-only analysis: the φ_α = 0 slice is Doppler-blind for the
contrast magnitude, with consequences for S2 priority.
All written to ../plots/, 140 dpi PNG.
Three-panel summary at δ₀ = 0:
This is the figure to put in front of a reader who has 30 seconds.
Six-panel contrast figure:
What is striking. The full and R1 heatmaps each show a vertical band structure — every horizontal slice (i.e. every |α|) is identical. The line cuts confirm: the four α curves are pixel-overlapping. The Δ_η heatmap is also α-independent, alternating sign as a function of δ₀ but flat in α.
This is the new observation. See §2.
Four-panel phase figure with phase masking at |C| < 0.1:
The phase masking is essential — without it, the Doppler tails dominate the visualisation with phase noise.
Four-panel residual figure:
1e-14 − 8.26…e-2 units) because the residual is constant to ten
decimals and matplotlib auto-zooms. Δ_η arg C(δ₀ = 0) climbs roughly
linearly with α from 0° to ~150° before wrapping.Two-panel convergence cross-check:
The S1 contrast maps show |C|(δ₀) is identical to four decimals across α ∈ {0, 1, 3, 5}. This is much stronger than "α-independent at δ₀ = 0"; the entire detuning lineshape is α-independent.
Mechanism. At φ_α = 0, the coherent state is prepared on the +X̂ axis: ⟨X̂⟩ = 2|α|, ⟨P̂⟩ = 0 (per the §2.2 convention of v0.3). The Doppler shift seen by the analysis pulse scales with ⟨P̂⟩ via δ_D = k_eff · v ∝ ⟨P̂⟩, which is identically zero at this preparation phase regardless of |α|. The classical motion has zero velocity at the turning point, and the stroboscopic pulses sample at exactly the turning point each cycle.
The position-phase channel (arg C) sees ⟨X̂⟩ ∝ |α|, which is why arg C does depend on α. So at φ_α = 0:
arg C): bright. Full engine non-monotonic from
η-dressing; R1 linear at +4.6° per unit α as predicted by k_eff x_0
per unit α at η_R1.|C|(δ₀) Doppler broadening): dark. The Doppler
shift is zero by construction.Consequence for the WP. The plan to "characterise the (δ₀, |α|) surface" implicitly assumed both channels would be active. They are not: at φ_α = 0 only the position channel is alive. To observe the Doppler-broadening signature predicted by dossier §1.4, S2 ((δ₀, φ_α) at fixed |α|) is required, not optional. Specifically:
This recovers a check on dossier §1.4 that S1 alone cannot provide. S2 is therefore the load-bearing slice for the velocity-channel motivation, not just an extra dimension. Promote S2 priority.
Self-criticism. This was foreseeable from §2.2 of v0.3 (the convention defining φ_α = 0 → +X̂ axis), but I did not anticipate it when planning the slice ordering. The S1-first sequence still has value — it cleanly isolates the position channel without Doppler contamination, which is itself a useful slice — but the implicit expectation that S1 alone would address the velocity-channel motivation was wrong. Recorded honestly so the v0.4 README amendment can fold this in.
The Δ_η arg C heatmap (figure 1.4, top right) is the most physically informative single panel in the set. Reading it:
Codifying for S2 / S3 plots:
PHASE_MASK_THRESHOLD in plot_S1.py).wrap_deg() helper.[-0.5, n_alpha - 0.5] with
custom yticklabels; the visualisation is correct but spacing is
symbolic, not metric — caveat for any quantitative read-off of slope
along the |α| axis).The α-axis caveat will matter when S2/S3 are plotted: their |α| grid is similarly sparse and non-uniform.
Reordered by priority after this entry:
No edits to README.md. No engine modifications. Dossier untouched.
Next entry: S2 driver + first sheet (|α| = 3), to test the Doppler-broadening hypothesis from §2 of this entry.