It may be safer to make StFmsClusterFitter a singleton class, or something like that. The shower shape fit function is shared across all objects (by necessity, in order to interface with TMinuit), but each object updates the function itself with different parameters. Therefore bad things would happen if there were more than one object in existence at any time. There isn't ever more than one instance created in this code, but I think it would be good to enforce that.
Improve this implementation? This approach is necessary because the original code uses a pointer to a StFmsTowerCluster in the fitting routines as both a pointer to a single cluster, and an array of clusters .