package hep.aida.ref.optimizer.jminuit; import hep.aida.IFunction; import org.freehep.math.minuit.FCNBase; import org.freehep.math.minuit.FCNGradientBase; /** * @author The AIDA team @SLAC. * @version $Id: FunctionWrapper.java 8584 2006-08-10 23:06:37Z duns $ */ abstract class FunctionWrapper { private FunctionWrapper() { } static FCNBase create(IFunction function) { if (function.providesGradient()) return new FunctionGradientWrapper(function); else return new FunctionBaseWrapper(function); } private static class FunctionBaseWrapper implements FCNBase { IFunction function; private FunctionBaseWrapper(IFunction function) { this.function = function; } public double valueOf(double[] values) { return function.value(values); } } private static class FunctionGradientWrapper extends FunctionBaseWrapper implements FCNGradientBase { private FunctionGradientWrapper(IFunction function) { super(function); } public double[] gradient(double[] par) { return function.gradient(par); } } }