package org.freehep.math.minuit;
/** MinimumState keeps the information (position, gradient, 2nd deriv, etc)
* after one minimization step (usually in MinimumBuilder).
* @version $Id: MinimumState.java 8584 2006-08-10 23:06:37Z duns $
*/
class MinimumState
{
MinimumState(int n)
{
theParameters = new MinimumParameters(n);
theError = new MinimumError(n);
theGradient = new FunctionGradient(n);
}
MinimumState(MinimumParameters states, MinimumError err, FunctionGradient grad, double edm, int nfcn)
{
theParameters = states;
theError = err;
theGradient = grad;
theEDM = edm;
theNFcn = nfcn;
}
MinimumState(MinimumParameters states, double edm, int nfcn)
{
theParameters = states;
theError = new MinimumError(states.vec().size());
theGradient = new FunctionGradient(states.vec().size());
theEDM = edm;
theNFcn = nfcn;
}
MinimumParameters parameters()
{
return theParameters;
}
MnAlgebraicVector vec()
{
return theParameters.vec();
}
int size()
{
return theParameters.vec().size();
}
MinimumError error()
{
return theError;
}
FunctionGradient gradient()
{
return theGradient;
}
double fval()
{
return theParameters.fval();
}
double edm()
{
return theEDM;
}
int nfcn()
{
return theNFcn;
}
boolean isValid()
{
if(hasParameters() && hasCovariance())
return parameters().isValid() && error().isValid();
else if(hasParameters()) return parameters().isValid();
else return false;
}
boolean hasParameters()
{
return theParameters.isValid();
}
boolean hasCovariance()
{
return theError.isAvailable();
}
private MinimumParameters theParameters;
private MinimumError theError;
private FunctionGradient theGradient;
private double theEDM;
private int theNFcn;
}