package hep.aida.ref.dataset.binner;
/**
* This binner is for efficiency-type of data.
* The bins are re-normalized to be between 0 and 1 by
* taking the ratio between the bin height and the bin entries.
*
* @author The AIDA team at SLAC
*
*/
public class EfficiencyBinner extends DefaultBinner {
/**
* Creates a new instance of Binner.
* @param bins The array containing the number of bins per coordinate.
* @param options The options.
*
*/
public EfficiencyBinner(int[] bins, String options) {
super(bins, options);
setBinError( new EfficiencyBinError() );
}
/**
* 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) {
super.setBinContent(bin, entries, height*entries, mean, rms);
}
public void addContentToBin(int[] bin, int entries, double height, double[] mean, double[] rms) {
super.addContentToBin(bin, entries, height*entries, mean, rms);
}
public void removeContentFromBin(int[] bin, int entries, double height, double[] mean, double[] rms) {
super.removeContentFromBin(bin, entries, height*entries, mean, rms);
}
/**
* Get the height of a bin.
* @param bin The array specifying the bin.
*
*/
public double height(int[] bin) {
int iBin = internalBin( bin );
int e = binStatistics( iBin ).entries();
if ( e > 0 )
return binStatistics( iBin ).sumOfWeights()/e;
return 0;
}
}