Per Claude:
Split the one world into the three you identified, and stop deriving the physical-units one from
Nf:
- Nf (ensemble sea content) — already there; now accepts None = pure gauge. Drives mass/LCP
handling and the default year for the a(β) parametrization.
- aWorld — world the a(β) fit was done in. Already implicitly chosen by the year arg to r0_div_a
/ a_div_r1 / a_times_fk (2017 ⇒ Nf0, 2012 ⇒ Nf21…). Make it explicit: have those functions
carry the Nf they were fit at, store it as self.aWorld, print it in paramSummary, and warn when
aWorld != Nf instead of silently mixing.
- physWorld — world the scale was fixed in fm. A property of r0_phys/r1_phys/fk_phys, not of your
ensemble. r0 and r1 each have exactly one determination (Nf21), so in setScales just call
r0_phys() / r1_phys() with no world= and delete the try/except world=self.world dance for them.
Keep a real world selector only for fk, where genuinely different Nf determinations exist
(nature / Nf21 / …).
Result: scaleType='r0' with no Nf works cleanly, the CHECKWORLD fallback machinery disappears for
r0/r1, and paramSummary shows e.g. Nf = None · a-world = Nf0 (r0/a 2017) · phys-world = Nf21 (r0 =
1.5092·r1, MILC 2010) — the hybrid is visible rather than hidden.
Per Claude:
Split the one world into the three you identified, and stop deriving the physical-units one from
Nf:
handling and the default year for the a(β) parametrization.
/ a_div_r1 / a_times_fk (2017 ⇒ Nf0, 2012 ⇒ Nf21…). Make it explicit: have those functions
carry the Nf they were fit at, store it as self.aWorld, print it in paramSummary, and warn when
aWorld != Nf instead of silently mixing.
ensemble. r0 and r1 each have exactly one determination (Nf21), so in setScales just call
r0_phys() / r1_phys() with no world= and delete the try/except world=self.world dance for them.
Keep a real world selector only for fk, where genuinely different Nf determinations exist
(nature / Nf21 / …).
Result: scaleType='r0' with no Nf works cleanly, the CHECKWORLD fallback machinery disappears for
r0/r1, and paramSummary shows e.g. Nf = None · a-world = Nf0 (r0/a 2017) · phys-world = Nf21 (r0 =
1.5092·r1, MILC 2010) — the hybrid is visible rather than hidden.