reroll() was slightly monolithic and a pain to modify. Refactor a bunch of its state from local variables to member variables of a helper class, and do some trivial simplification while we're there.
This should set the scene for some changes to the Scale/Root model to make it catch more cases.
I'd prefer that we not do this just for access to the analysis variables. Just pass what is needed to the child class's constructor.