axiom

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.

step 4
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")
what it printed
   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.