// AID-GENERATED
// =========================================================================
// This class was generated by AID - Abstract Interface Definition          
// DO NOT MODIFY, but use the org.freehep.aid.Aid utility to regenerate it. 
// =========================================================================

//  This file is part of the AIDA library
//  Copyright (C) 2002 by the AIDA team.  All rights reserved.
//  This library is free software and under the terms of the
//  GNU Library General Public License described in the LGPL.txt 
package hep.aida;


/**
 *
 * Interface of model function for fitting (for advanced users).
 *
 * OPEN QUESTIONS:
 *
 * How to treat normalization at user level? Two possibilities:
 * - we have "Gauss" and "NormalizedGauss", the first one user cannot
 *   use for ML fit
 * - we have only one "Gauss" function, but it's smart and when normalized,
 *   gets rid of one of its parameters
 *
 * Normalization range might be set directly on the function by the user?
 * Now we set it in the data pipe, Victor thinks that it is not very clear
 * and should be on the function ;)
 *
 * @author  The AIDA team (http://aida.freehep.org/)
 *
 */

public interface IModelFunction extends IFunction {

  /// Return false if function does not provide the normalization capability.
    public boolean providesNormalization();

  /**
   * Normalize by internally adjusting some of the parameters.
   * When normalization is on then integral of the function in
   * the normalization range equals to 1.
   */
    public void normalize(boolean on);

  /**
   * Return true if normalization is currently switched on.
   */
    public boolean isNormalized();

  /**
   * Compute gradient with respect to parameters.
   */
    public double[] parameterGradient(double[] x);

  /**
   * Return true if provides parameter gradient.
   */
    public boolean providesParameterGradient();

  /**
   * Set the normalization range from -inf to +inf in the i-th
   * axis (dimension).
   *
   * Full range is the default if not set otherwise.
   * It is still possible to evaluate function outside of the
   * normalization range.
   *
   * PENDING: no methods to retrieve current range!
   */
    public IRangeSet normalizationRange(int iAxis);

  /**
   * Set full range in all axes.
   */
    public void includeNormalizationAll();

  /**
   * Set empty range in all axes.
   */
    public void excludeNormalizationAll();
} // class or interface


 

Ads help maintain this website.