package cern.hep.aida.ref;
import colt.hep.aida.IAxis;
import colt.hep.aida.IHistogram;
/**
Variable-width axis; A reference implementation of hep.aida.IAxis.
@author Wolfgang Hoschek, Tony Johnson, and others.
@version 1.0, 23/03/2000
*/
public class VariableAxis implements IAxis
{
protected double min;
protected int bins;
protected double[] edges;
/**
* Constructs and returns an axis with the given bin edges.
* Example: edges = (0.2, 1.0, 5.0) yields an axis with 2 in-range bins [0.2,1.0), [1.0,5.0) and 2 extra bins [-inf,0.2), [5.0,inf].
* @param edges the bin boundaries the partition shall have;
* must be sorted ascending and must not contain multiple identical elements.
* @throws IllegalArgumentException if edges.length < 1.
*/
public VariableAxis(double[] edges)
{
if (edges.length < 1) throw new IllegalArgumentException();
// check if really sorted and has no multiple identical elements
for (int i=0; i= bins) return IHistogram.OVERFLOW;
return index;
}
public double lowerEdge()
{
return min;
}
/**
* Returns a string representation of the specified array. The string
* representation consists of a list of the arrays's elements, enclosed in square brackets
* ("[]"). Adjacent elements are separated by the characters
* ", " (comma and space).
* @return a string representation of the specified array.
*/
protected static String toString(double[] array) {
StringBuffer buf = new StringBuffer();
buf.append("[");
int maxIndex = array.length - 1;
for (int i = 0; i <= maxIndex; i++) {
buf.append(array[i]);
if (i < maxIndex)
buf.append(", ");
}
buf.append("]");
return buf.toString();
}
public double upperEdge()
{
return edges[edges.length-1];
}
}
Ads help maintain this website.