package org.freehep.math.minuit.example.sim;
import org.freehep.math.minuit.FCNBase;
/**
*
* @version $Id: GaussFcn.java 8584 2006-08-10 23:06:37Z duns $
*/
class GaussFcn implements FCNBase
{
GaussFcn(double[] meas, double[] pos, double[] mvar)
{
theMeasurements = meas;
thePositions = pos;
theMVariances = mvar;
}
public double valueOf(double[] par)
{
assert(par.length == 3);
GaussFunction gauss = new GaussFunction(par[0], par[1], par[2]);
double chi2 = 0.;
for(int n = 0; n < theMeasurements.length; n++)
{
chi2 += ((gauss.valueAt(thePositions[n]) - theMeasurements[n])*(gauss.valueAt(thePositions[n]) - theMeasurements[n])/theMVariances[n]);
}
return chi2;
}
double[] measurements()
{
return theMeasurements;
}
double[] positions()
{
return thePositions;
}
double[] variances()
{
return theMVariances;
}
private double[] theMeasurements;
private double[] thePositions;
private double[] theMVariances;
}