ClickPair
Phase 5b: Bob's two detectors, split in efficiency and dark rate
9/9 passed in 945ms
| Test | What it does | Result |
|---|---|---|
test_basis_mismatch | With no dark floor or misalignment the basis-keyed detectors partition the clicks with no bit read wrong, the mismatch showing only as imbalance on basis_model, and with both restored the pooled QBER sits on the matched model. | ✅ pass |
test_basis_symmetric | run_basis with detector 1 given detector 0's numbers reproduces every count and float row, and at sifting 1 the two detectors sum to the clicks plus the doubles. | ✅ pass |
test_dark_mismatch | Dark counts on one detector lift its click rate past its partner's, give it over twice the errors, and move the QBER from 0.0301 to 0.0526, eleven binomial widths off the symmetric form. | ✅ pass |
test_efficiency_mismatch | With contrast and a dark floor each detector's click rate and lone errors land on slot_model in a four-sigma binomial band, and the pooled QBER on pair_model, not the symmetric form. | ✅ pass |
test_error_split | errors_d0 and errors_d1 are each detector's lone errors, so what they omit is the squashing coin's share, within [0, doubles] and half of them. | ✅ pass |
test_model_reduces | At equal detectors the bit-averaged pair_model returns qber_model to 1e-15 over flux, contrast, dark probability and phase spread. | ✅ pass |
test_rejects_nonsense | A zero or above-unit efficiency and an always-firing gate are refused as eta_d1 and dark_d1, not under their partner's names, by the DPS and basis-keyed runs alike. | ✅ pass |
test_split_is_invisible | At perfect contrast with no dark counts an efficiency mismatch makes no errors, so the QBER reads 0 and only detector 1 answering a third of the gates shows it. | ✅ pass |
test_symmetric_unchanged | Naming detector 1 its partner's efficiency and dark probability reproduces records, counts and floats over the flat path, phase walk, dead-time scan and timing convolution. | ✅ pass |