Designing an experiment before there is any data · step 4 of 6
How long at each, and what the plan buys
Two hundred hours. Where do they go, and what comes back?
The plan is nine stations in four roles: anchors that pin the multiple-scattering core, a bank where the information is, witnesses whose evidence survives the core being argued with, and a foil-out run for the background. The hours are the argument.
A hundred and ten of the two hundred go to 150 degrees — the opposite of what evidence-per-hour says, and right for the reason step two gave. The bound that comes back is R < 33 fm, against a floor of 29.6 fm that no amount of counting can beat, because the beam energy alone sets it.
print(f"{'angle':>8} {'role':>11} {'hours':>7}")
for st in s.PLAN:
where = f"{st.theta_deg:.1f}d" + ("" if st.foil else " out")
print(f"{where:>8} {st.role:>11} {st.hours:7.0f}")
print(f"{'':>8} {'total':>11} {sum(x.hours for x in s.PLAN):7.0f}")
print()
surface = s.surface()
plan = s.plan_data()
mu_hard = surface.counts(plan, s.HARD_CENTRE)
radii = np.geomspace(3.0e-14, 1.0e-12, 300)
against = np.array([
float(s.weight_of_evidence(
mu_hard, surface.counts(plan, s.truth(s.lam_of(float(r))))
).sum())
for r in radii
])
bound = float(radii[np.where(against > 3.0)[0][0]])
print(f"the plan can separate a charge larger than {bound * 1e15:.1f} fm")
print(f"the beam's own floor is {s.D_CLOSEST / 2 * 1e15:.1f} fm")
angle role hours
1.0d anchor 5
2.5d anchor 5
5.0d bank 10
10.0d bank 10
20.0d bank 10
45.0d bank 15
90.0d witness 25
150.0d witness 110
90.0d out background 10
total 200
the plan can separate a charge larger than 32.6 fm
the beam's own floor is 29.6 fm
Every line above was captured by running this code at build time. The steps share one namespace, so the code on this page is the code you would type after the steps before it.