package hep.aida.ref.test.jaida; import hep.aida.IAnnotation; import hep.aida.IFunction; import hep.aida.ext.IManagedFunction; public class TestUserFunction implements IManagedFunction { private String name; private String codelet; private double[] par; private String[] parNames; private double[] var; private String[] varNames; private String title = ""; public TestUserFunction() { name = null; codelet = "hep.aida.ref.test.TestUserFunction"; par = new double[] { 1.1, 2.2, 3.3 }; parNames = new String[] {"pp0", "pp1", "pp2" }; var = new double[] { 11.1, 22.2}; varNames = new String[] {"xx0", "xx1" }; } public String type() { return "IFunction"; } public String name() { return name; } public void setName(String str) { name = str; } public double value(double[] x) { return par[0]*x[0]*x[0] + par[1]*x[1] + par[2]; } public int dimension() {return var.length; } public boolean isEqual(IFunction f) { return true; } public double[] gradient(double[] x) { return new double[] { 2*par[0]*x[0], par[1] }; } public boolean providesGradient() { return true; } public String variableName(int i) { return varNames[i]; } public String[] variableNames() { return varNames; } public void setParameters(double[] params) { par = params; } public double[] parameters() { return par; } public int numberOfParameters() {return par.length; } public String[] parameterNames() { return parNames; } public void setParameter(String name, double x) throws IllegalArgumentException { } public double parameter(String name) {return par[indexOfParameter(name)]; } public int indexOfParameter(String name) { int index; for (index=0; index<par.length; index++) if (name.equals(parNames[index])) break; return index; } public IAnnotation annotation() { return null; } public String codeletString() { return codelet; } public void setTitle(String str) throws java.lang.IllegalArgumentException { this.title = str; } public String title() { return title; } public String normalizationParameter() { throw new UnsupportedOperationException(); } }