package hep.aida.ref.dataset.binner;
/**
* A binner is responsible to keep track of the bins statistics for
* a binned data container in n-dimensions.
* Internally, the statistics of each bin should be calculating by
* using an nDimensional DataStatistics.
*
* @author The FreeHEP team at SLAC
*
*/
public interface Binner {
/**
* Fill a bin with a new entry.
* @param bin The array specifying the bin.
* @param x The coordinate's array
* @param weight The weight for this entry.
*
*/
public void fill( int[] bin, double[] x, double weight);
/**
* Set at once the content of a bin.
* @param bin The array specifying the bin.
* @param entries The entries in the bin.
* @param height The height of the bin.
* @param mean The array with the coordinate means
* @param rms The array with the coordinate rmss
*
*/
public void setBinContent(int[] bin, int entries, double height, double[] mean, double[] rms);
/**
* Add a set of entries to the existing content of the bin.
* Notice that this is meant to be used instead of fill ONLY when the number
* of entries in the set is greater than one.
* @param bin The array specifying the bin.
* @param entries The entries in the bin.
* @param height The height of the bin.
* @param mean The array with the coordinate means
* @param rms The array with the coordinate rmss
*
*/
public void addContentToBin(int[] bin, int entries, double height, double[] mean, double[] rms);
/**
* Remove a set of entries from a bin.
* @param bin The array specifying the bin.
* @param entries The entries in the bin.
* @param height The height of the bin.
* @param mean The array with the coordinate means
* @param rms The array with the coordinate rmss
*
*/
public void removeContentFromBin(int[] bin, int entries, double height, double[] mean, double[] rms);
/**
* Reset the content of a bin.
* @param bin The array specifying the bin.
*
*/
public void resetBin(int[] bin);
/**
* Reset the content of the Binner.
*
*/
public void reset();
/**
* Get the number of entries in a bin.
* @param bin The array specifying the bin.
*
*/
public int entries(int[] bin);
/**
* Get the height of a bin.
* @param bin The array specifying the bin.
*
*/
public double height(int[] bin);
/**
* Get the plus error on a bin.
* @param bin The array specifying the bin.
*
*/
public double plusError(int[] bin);
/**
* Get the minus error on a bin.
* @param bin The array specifying the bin.
*
*/
public double minusError(int[] bin);
/**
* Get the mean of a bin along a given coordinate.
* @param bin The array specifying the bin.
* @param coord The coordinate's index.
*
*/
public double mean(int[] bin, int coord);
/**
* Get the rms of a bin along a given coordinate.
* @param bin The array specifying the bin.
* @param coord The coordinate's index.
*
*/
public double rms(int[] bin, int coord);
/**
* Scale all the bins by a given scale factor.
* @param scaleFactor The scale factor.
*
*/
public void scale(double scaleFactor);
}