Well, it is not a potential, it generates scoring function terms.
Perhaps something like ScoreFunctionCreator would be better.
I said you'd hate it. ;) But no matter. On closer inspection I suspect
it wouldn't work anyway without rather close coupling to the restraints
(e.g. ProximityRestraint). The clone & translate approach we discussed
before is probably more applicable to Bret's restraints.
More substantially, it is not clear to me that we shouldn't have it
directly evaluate the score from the particles and skip the function
object creation. Creating the ScoreFunc doesn't cache anything useful
and just adds another layer of indirection. Internally they can use
ScoreFuncs if they want.
I'm not sure what you mean here - could you expand a little? It seems to
me that they wouldn't be able to "directly evaluate the score from the
particles" because that's the restraint's job. And a harmonic scoring
function shouldn't care about the particles anyway - it could be acting
on a distance (two particles), a dihedral (four particles) etc. But
perhaps I'm missing part of your idea here.