/*
* AbstractDevModelFunction.java
*
* Created on September 1, 2002, 4:07 AM
*/
package hep.aida.ref.function;
import hep.aida.IAnnotation;
import hep.aida.IFunction;
import hep.aida.IRangeSet;
import hep.aida.ref.Annotation;
import java.util.ArrayList;
/**
*
* @author serbo
*/
public abstract class AbstractDevModelFunction implements hep.aida.dev.IDevModelFunction {
protected int dimension;
//private int numberOfParameters;
protected double[] x;
protected double[] p;
protected String[] varNames;
protected String[] parNames;
protected IAnnotation annotation;
protected String codeletString;
protected String title;
protected IFunction function;
protected ArrayList[] min;
protected ArrayList[] max;
private boolean providesGradient;
private double[] gradient;
private boolean providesParameterGradient;
private double[] parameterGradient;
private boolean providesNormalization;
private boolean isNormalized;
private boolean normalizationValid;
private double normalizationAmplitude;
protected IRangeSet[] rangeSet;
public AbstractDevModelFunction() {
init();
}
public String normalizationParameter() {
throw new UnsupportedOperationException("The normalizationParameter() method has not been implemented yet");
}
public abstract int dimension();
public abstract int numberOfParameters();
public abstract double functionValue(double[] var);
private void init() {
dimension = -1;
x = null;
p = null;
varNames = new String[] {"x0"};
parNames = new String[] {"p0"};
annotation = null;
codeletString = null;
function = null;
min = null;
max = null;
gradient = null;
parameterGradient = null;
providesGradient = false;
providesParameterGradient = false;
providesNormalization = false;
isNormalized = false;
normalizationValid = false;
normalizationAmplitude = Double.NaN;
annotation = new Annotation();
rangeSet = new RangeSet[dimension];
rangeSet[0] = new RangeSet();
}
public final double value(double[] var) {
if (normalizationValid)
return normalizationAmplitude * functionValue(var);
else {
normalizationAmplitude = normalizationAmplitude();
normalizationValid = true;
return normalizationAmplitude * functionValue(var);
}
}
public IAnnotation annotation() { return annotation; }
public String variableName(int i) { return varNames[i]; }
public String[] variableNames() { return varNames; }
public String[] parameterNames() { return parNames; }
public int indexOfParameter(String name) {
for (int i=0; i
Ads help maintain this website.