package hep.aida.ext;
/**
*
* User level interface to the variable
*
* @author Tony Johnson, Victor Serbo, Max Turri
*
*/
import hep.aida.IEvaluator;
import hep.aida.ITuple;
public interface IVariable
{
/**
* Get label for this IVariable.
* @return label.
*/
public String label();
/**
* Get name for this IVariable.
* @return name.
*/
public String name();
/**
* Set value for the IVariable.
* @param value Value of IVariable.
* @return <code> true</code> if the value was set succesfully, <code>false</code> otherwise, for example if
* the IVariable is bounded and value is out of range.
*
*/
public boolean setValue(double value);
/**
* Get current value of the IVariable.
* @return Current value of the IVariable.
*/
public double value();
/**
* Get current error of the IVariable.
* @return Current error of the IVariable.
*/
public double error();
/**
* Set new range for the IVariable. All previous ranges are
* discarded first.
* @param lower Lower edge of the valid range.
* @param upper Upper edge of the valid range.
*/
public void setRange(double lower, double upper);
/**
* Add a new range to the existing range set for the IVariable.
* @param lower Lower edge of the valid range.
* @param upper Upper edge of the valid range.
*/
public void addRange(double lower, double upper);
/**
* Check if current value of the IVariable is in the valid range set.
* @return <code>true</code> if current value of the IVariable is in the valid range set.
*/
public boolean isInRange();
/**
* Check if provided value is in the IVariable valid range set.
* @param value Value to be checked
* @return <code>true</code> if provided value is in the IVariable valid range set.
*/
public boolean isInRange(double value);
/**
* Set IVariable to represent variable or parameter.
* @param state <code>true</code> for variable, <code>false</code> for parameter
*/
public void setDependent(boolean state);
/**
* Check if the IVariable represents variable or parameter.
* @return <code>true</code> if this is variable, <code>false</code> if this is parameter
*/
public boolean isDependent();
/**
* Set initial step for fitting.
* @param step Initial step for fitting.
*/
public void setStep(double step);
/**
* Set how the IVariable can be used in fitting.
* @param state <code>true</code> for fixed parameter, <code>false</code> for variable parameter.
*/
public void setFixed(boolean state);
/**
* Get how the IVariable can be used in fitting.
* @return <code>true</code> for fixed parameter, <code>false</code> for variable parameter.
*/
public boolean isFixed();
/**
* Set how fitter should treat bounds for the IVariable.
* @param state <code>true</code> use bounds, <code>false</code> don't use bounds.
*/
public void setUseBounds(boolean state);
/**
* Get how fitter should treat bounds for the IVariable.
* @return <code>true</code> use bounds, <code>false</code> don't use bounds.
*/
public boolean useBounds();
/*
* IVariable can be connected to ITuple to derive its value
* from the current ITuple row. Connect the IVariable to ITuple.
* @param data ITuple to connect the IVariable to.
*/
public void connect(ITuple data);
/*
* Connect the IVariable to evaluator.
* @param data IEvaluator to connect the IVariable to.
*/
public void connect(IEvaluator ev);
/**
* Check if the IVariable is connected.
* @return <code>true</code> if IVariable is connected, <code>false</code> if IVariable is not connected.
*/
public boolean isConnected();
/*
* Get ITuple that IVariable is connected to.
* @return ITuple that IVariable is connected to.
*/
public ITuple connection();
/**
* Set units. Units can be used to annotate plot axis
* @param units String that describes units
*
*/
public void setUnits(String units);
/**
* Get units. Units can be used to annotate plot axis
* @return String that describes units
*/
public String units();
}