Parallel-tempering integrator. Oversees other integrators that are defined to perform
MC trials (or perhaps molecular dynamics) in different boxes. These integrators
are identified (added) to this integrator, and the simulation runs on this
integrator's thread. When this integrator does a step, it passes on the
instruction to each added integrator, causing all to do a step on each's box.
Occasionally, this integrator will instead attempt to swap the configurations
of two of the boxes. Acceptance of this move depends on parameters (usually
temperature) of the integrators for the boxes, as well as the configurations
in each box. The swap trial is performed by a MCMove class designed for
this purpose. Such a class is made by a MCMoveSwapConfigurationFactory class
that is identified to this integrator (a default is selected if not specified).
Every time an integrator is added to this one, a MCMoveSwap class is made (by this
integrator using the factory) to manage swap trials between the new integrator's
box and that of the one most recently added.
Adds the given integrator to those managed by this integrator, and
includes integrator's box to the set among which configurations are
swapped. Box of new integrator will be subject to swapping with
the most recently added integrator/box (and the next one, if another
is added subsequently).