/* * IFitMethod.java * * Created on August 15, 2002, 4:35 PM */ package hep.aida.ext; import hep.aida.IFunction; import hep.aida.dev.IDevFitDataIterator; /** * * @author The AIDA team @ SLAC. * * Interface to be implemented by all classes providing the value of the Objective Function * to be optimized in the process of fitting. * */ public interface IFitMethod { public final static int BINNED_FIT = 0, UNBINNED_FIT = 1; /** * Return the fit type: BINNED_FIT if it is a binned fit, * UNBINNED_FIT if unbinned. * */ public int fitType(); /** * Evaluate the Objective Function for a given data iterator and a given function. * */ public double evaluate(IDevFitDataIterator dataIter, IFunction function); /** * Evaluate the the sum contribution to the Objective Function value. * */ public double evaluateSumElement(IDevFitDataIterator dataIter, IFunction function); /** * Evaluate the gradient of the Objective Function. * */ public double[] evaluateGradient(int dimension, IDevFitDataIterator dataIter, IFunction function); /** * Evaluate the the sum contribution to the Objective Function gradient. * */ public double[] evaluateGradientSumElement(IDevFitDataIterator dataIter, IFunction function); /** * Get the names for this fit method. * The first one in the array is the default. * The array cannot be null. It must have at least one name. * */ public String[] fitMethodNames(); /** * Clear the fitMethod. * This method is invoked before the function is evaluated. * */ public void clear(); /** * Set the correlation object among the data. * */ public void setCorrelationObject(Object correlationObj); /** * Get the correlation object. * */ public Object correlationObject(); }