hep.aida.bin
Class StaticBin1D

java.lang.Object
  extended by cern.colt.PersistentObject
      extended by hep.aida.bin.AbstractBin
          extended by hep.aida.bin.AbstractBin1D
              extended by hep.aida.bin.StaticBin1D
All Implemented Interfaces:
DoubleBufferConsumer, java.io.Serializable, java.lang.Cloneable
Direct Known Subclasses:
MightyStaticBin1D

public class StaticBin1D
extends AbstractBin1D

1-dimensional non-rebinnable bin consuming double elements; Efficiently computes basic statistics of data sequences. First see the package summary and javadoc tree view to get the broad picture.

The data streamed into a SimpleBin1D is not preserved! As a consequence infinitely many elements can be added to this bin. As a further consequence this bin cannot compute more than basic statistics. It is also not rebinnable. If these drawbacks matter, consider to use a DynamicBin1D, which overcomes them at the expense of increased memory requirements.

This class is fully thread safe (all public methods are synchronized). Thus, you can have one or more threads adding to the bin as well as one or more threads reading and viewing the statistics of the bin while it is filled. For high performance, add data in large chunks (buffers) via method addAllOf rather than piecewise via method add.

Implementation: Incremental maintainance. Performance linear in the number of elements added.

Author:
wolfgang.hoschek@cern.ch
See Also:
Serialized Form

Field Summary
protected static double[] arguments
          Function arguments used by method addAllOf(...) For memory tuning only.
protected  double max
           
protected  double min
           
protected  int size
          The number of elements consumed by incremental parameter maintainance.
protected  double sum
           
protected  double sum_xx
           
 
Fields inherited from class cern.colt.PersistentObject
serialVersionUID
 
Constructor Summary
StaticBin1D()
          Constructs and returns an empty bin.
 
Method Summary
 void add(double element)
          Adds the specified element to the receiver.
 void addAllOfFromTo(DoubleArrayList list, int from, int to)
          Adds the part of the specified list between indexes from (inclusive) and to (inclusive) to the receiver.
 void clear()
          Removes all elements from the receiver.
protected  void clearAllMeasures()
          Resets the values of all measures.
 boolean isRebinnable()
          Returns false.
 double max()
          Returns the maximum.
 double min()
          Returns the minimum.
 int size()
          Returns the number of elements contained in the receiver.
 double sum()
          Returns the sum of all elements, which is Sum( x[i] ).
 double sumOfSquares()
          Returns the sum of squares, which is Sum( x[i] * x[i] ).
 
Methods inherited from class hep.aida.bin.AbstractBin1D
addAllOf, buffered, compareWith, equals, mean, relError, rms, standardDeviation, standardError, toString, trimToSize, variance
 
Methods inherited from class hep.aida.bin.AbstractBin
center, center, error, error, offset, offset, value, value
 
Methods inherited from class cern.colt.PersistentObject
clone
 
Methods inherited from class java.lang.Object
finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

size

protected int size
The number of elements consumed by incremental parameter maintainance.


min

protected double min

max

protected double max

sum

protected double sum

sum_xx

protected double sum_xx

arguments

protected static transient double[] arguments
Function arguments used by method addAllOf(...) For memory tuning only. Avoids allocating a new array of arguments each time addAllOf(...) is called. Each bin does not need its own set of argument vars since they are declared as "static". addAllOf(...) of this class uses only 4 entries. Subclasses computing additional incremental statistics may need more arguments. So, to be on the safe side we allocate space for 20 args. Be sure you access this arguments only in synchronized blocks like synchronized (arguments) { do it } By the way, the whole fuss would be unnecessary if Java would know INOUT parameters (call by reference).

Constructor Detail

StaticBin1D

public StaticBin1D()
Constructs and returns an empty bin.

Method Detail

add

public void add(double element)
Adds the specified element to the receiver.

Specified by:
add in class AbstractBin1D
Parameters:
element - element to be appended.

addAllOfFromTo

public void addAllOfFromTo(DoubleArrayList list,
                           int from,
                           int to)
Adds the part of the specified list between indexes from (inclusive) and to (inclusive) to the receiver.

Overrides:
addAllOfFromTo in class AbstractBin1D
Parameters:
list - the list of which elements shall be added.
from - the index of the first element to be added (inclusive).
to - the index of the last element to be added (inclusive).
Throws:
java.lang.IndexOutOfBoundsException - if list.size()>0 && (from<0 || from>to || to>=list.size()).

clear

public void clear()
Removes all elements from the receiver. The receiver will be empty after this call returns.

Specified by:
clear in class AbstractBin

clearAllMeasures

protected void clearAllMeasures()
Resets the values of all measures.


isRebinnable

public boolean isRebinnable()
Returns false. Returns whether a client can obtain all elements added to the receiver. In other words, tells whether the receiver internally preserves all added elements. If the receiver is rebinnable, the elements can be obtained via elements() methods.

Specified by:
isRebinnable in class AbstractBin

max

public double max()
Returns the maximum.

Specified by:
max in class AbstractBin1D

min

public double min()
Returns the minimum.

Specified by:
min in class AbstractBin1D

size

public int size()
Returns the number of elements contained in the receiver.

Specified by:
size in class AbstractBin

sum

public double sum()
Returns the sum of all elements, which is Sum( x[i] ).

Specified by:
sum in class AbstractBin1D

sumOfSquares

public double sumOfSquares()
Returns the sum of squares, which is Sum( x[i] * x[i] ).

Specified by:
sumOfSquares in class AbstractBin1D