python/README.md for the evidence). What changed in this note:
|FFT|2 (they do not depend on the sample period), the selection (21 traces, 14 on Channel 0), and every count and event number.Superseded by: Note 6, which compares the noise PSD from larger, better-motivated selections. This note stays up for reference.
good_pulses_overlay.ipynb — time-domain overlay, FFT, and average power spectrum (this note); the later sections belong to Note 6 and Note 7. Pinned to eda12dc.good_noise_traces.csv — the 21-trace selection this note starts from (from the original dump1_noise_pulses.ipynb: bstd cap 5, ratio threshold 2.45). Pinned to f03ce14.The traces come from good_noise_traces.csv, produced by the original notebook dump1_noise_pulses.ipynb. That is a different selection from the 41-trace “first cut” of Note 2, and the two share no events:
| Original selection (this note) | First cut of Note 2 | |
|---|---|---|
| Notebook | dump1_noise_pulses.ipynb | 07221203_2025_dump1_noise.ipynb |
| Scope | all detectors, all four channels of dump F0001 | Detector 0 / Channel 0 only (1517 traces) |
| Quiet baseline | bstd < 5 (absolute) | bstd < 32.48 (its own 75th percentile) |
| Excursion | ratio < 2.45 (the notebook’s 25th percentile over all channels) | ratio < 1.93 (its own 25th percentile) |
Leading glitch samples in bstd | included | first 10 skipped |
| Traces kept | 21 (Detector 0: 12 on channel 0, 2 on channel 1, 4 on channel 3; Detector 1: 2 on channel 0, 1 on channel 3) | 41 |
Restricting the 21 traces to Channel 0, the best-represented channel, leaves 14: 12 from Detector 0 and 2 from Detector 1 (events 10708 and 10959). The channel filter did not separate the detectors, so this PSD mixes two detectors. Note 7 shows why that matters.
Applying the original cut to Detector 0 / Channel 0 alone gives 12 traces, none among the 41. All 12 are quiet baselines: with the first 10 samples skipped, as in Note 2, their bstd is a median of 1.56 (3.84 as originally computed) and their ratio is 3.3–6.1 (1.6–2.4 as originally computed). That places them in the broad hump of log10(ratio) 0.5–1.0 of Note 2 (here 0.52–0.79). Note 2’s first cut instead requires ratio < 1.93, which selects the contaminated near-zero spike, so the two cuts pick out different populations.
The original cut also has a selection bias. Its low ratio comes from a bstd inflated by the leading samples. Among the 868 quiet Detector 0 / Channel 0 traces (bstd < 2.5 with the glitch skipped), 160 have an original bstd more than 1.3× the glitch-skipped value and 708 do not. The original cut kept 12 of the 160 and none of the 708: it selects quiet traces whose leading samples inflate bstd, and systematically excludes equally quiet traces without that. (All of this is computed in the last section of good_pulses_overlay.ipynb.)
Each trace is baseline-subtracted with the mean of its own pretrigger window. A couple of the traces have a single-sample startup transient in the first few dozen samples, a known quirk of this digitizer data rather than a real pulse. The plot’s y-axis is clipped to the 0.5–99.5 percentile of all plotted samples so the transient does not wash out the noise texture.
The real FFT (np.fft.rfft) is taken of every trace. The sample period is 0.8 µs (1.25 MHz sample rate; the first version of this note used 1.6 µs, which was wrong), so with 4096 samples per trace the bins are 305.2 Hz wide and run up to the 625 kHz Nyquist frequency. The power spectrum is spectrum × conj(spectrum) (its imaginary part is zero by construction), plotted log–log with the DC bin dropped. Averaging the 14 spectra bin by bin gives a first noise PSD estimate:
|FFT|2 over the 14 traces, log–log, real Hz.The average falls steeply from about 8×106 at 305 Hz (the first bin) to ~2×105 near 4–6 kHz, declines slowly out to ~40 kHz, then rolls off to a floor near 104 above ~200 kHz. Several sharp peaks (near 53, 85, 155, 211 and 408 kHz, among others) sit on top of it. Where those peaks come from is the subject of Note 7.
|FFT|2, not a normalized one-sided PSD in units per Hz. Golwala’s SLAC thesis (Appendix B, “Noise and Optimal Filtering”) puts a 1/N on the forward transform, opposite to NumPy, so the absolute scale here is not directly comparable to it.bstd (see above). The sharp peaks in the average come from its two Detector 1 traces (Note 7).