hep.aida.ref

## Class Histogram3D

- java.lang.Object
- - hep.aida.ref.Histogram3D

All Implemented Interfaces:
  IHistogram, IHistogram3D, java.io.Serializable

    public class Histogram3D
    extends java.lang.Object
    implements IHistogram3D

A reference implementation of hep.aida.IHistogram3D. The goal is to provide a clear implementation rather than the most efficient implementation. However, performance seems fine - filling 3 * 10^5 points/sec, both using FixedAxis or VariableAxis.

Version:
  1.0, 23/03/2000
See Also:
  Serialized Form

### Field Summary

### Fields inherited from interface hep.aida.IHistogram

`OVERFLOW, serialVersionUID, UNDERFLOW`

### Constructor Summary

Constructors
Constructor and Description
`Histogram3D(java.lang.String title, double[] xEdges, double[] yEdges, double[] zEdges)` Creates a variable-width histogram.
`Histogram3D(java.lang.String title, IAxis xAxis, IAxis yAxis, IAxis zAxis)` Creates a histogram with the given axis binning.
`Histogram3D(java.lang.String title, int xBins, double xMin, double xMax, int yBins, double yMin, double yMax, int zBins, double zMin, double zMax)` Creates a fixed-width histogram.

### Method Summary

Methods
`int` `allEntries()` Number of all entries in all (both in-range and under/overflow) bins in the histogram.
`int` `binEntries(int indexX, int indexY, int indexZ)` The number of entries (ie the number of times fill was called for this bin).
`double` `binError(int indexX, int indexY, int indexZ)` The error on this bin.
`double` `binHeight(int indexX, int indexY, int indexZ)` Total height of the corresponding bin (ie the sum of the weights in this bin).
`int` `dimensions()` Returns 1 for one-dimensional histograms, 2 for two-dimensional histograms, and so on.
`int` `entries()` Number of in-range entries in the histogram.
`double` `equivalentBinEntries()` Number of equivalent entries.
`int` `extraEntries()` Number of under and overflow entries in the histogram.
`void` `fill(double x, double y, double z)` Fill the histogram with weight 1; equivalent to `fill(x,y,z,1)`..
`void` `fill(double x, double y, double z, double weight)` Fill the histogram with specified weight.
`double` `meanX()` Returns the mean of the histogram, as calculated on filling-time projected on the X axis.
`double` `meanY()` Returns the mean of the histogram, as calculated on filling-time projected on the Y axis.
`double` `meanZ()` Returns the mean of the histogram, as calculated on filling-time projected on the Z axis.
`int[]` `minMaxBins()` Indexes of the in-range bins containing the smallest and largest binHeight(), respectively.
`IHistogram2D` `projectionXY()` Create a projection parallel to the XY plane.
`IHistogram2D` `projectionXZ()` Create a projection parallel to the XZ plane.
`IHistogram2D` `projectionYZ()` Create a projection parallel to the YZ plane.
`void` `reset()` Reset contents; as if just constructed.
`double` `rmsX()` Returns the rms of the histogram as calculated on filling-time projected on the X axis.
`double` `rmsY()` Returns the rms of the histogram as calculated on filling-time projected on the Y axis.
`double` `rmsZ()` Returns the rms of the histogram as calculated on filling-time projected on the Z axis.
`IHistogram2D` `sliceXY(int indexZ)` Create a slice parallel to the XY plane at bin indexZ and one bin wide.
`IHistogram2D` `sliceXY(int indexZ1, int indexZ2)` Create a slice parallel to the XY plane, between "indexZ1" and "indexZ2" (inclusive).
`IHistogram2D` `sliceXZ(int indexY)` Create a slice parallel to the XZ plane at bin indexY and one bin wide.
`IHistogram2D` `sliceXZ(int indexY1, int indexY2)` Create a slice parallel to the XZ plane, between "indexY1" and "indexY2" (inclusive).
`IHistogram2D` `sliceYZ(int indexX)` Create a slice parallel to the YZ plane at bin indexX and one bin wide.
`IHistogram2D` `sliceYZ(int indexX1, int indexX2)` Create a slice parallel to the YZ plane, between "indexX1" and "indexX2" (inclusive).
`double` `sumAllBinHeights()` Sum of all (both in-range and under/overflow) bin heights in the histogram.
`double` `sumBinHeights()` Sum of in-range bin heights in the histogram.
`double` `sumExtraBinHeights()` Sum of under/overflow bin heights in the histogram.
`java.lang.String` `title()` Title of the histogram (will be set only in the constructor).
`IAxis` `xAxis()` Return the X axis.
`IAxis` `yAxis()` Return the Y axis.
`IAxis` `zAxis()` Return the Z axis.

### Methods inherited from class java.lang.Object

`equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

### Methods inherited from interface hep.aida.IHistogram3D

`minMaxBins, projectionXY, projectionXZ, projectionYZ, sliceXY, sliceXY, sliceXZ, sliceXZ, sliceYZ, sliceYZ, xAxis, yAxis, zAxis`

### Methods inherited from interface hep.aida.IHistogram

`dimensions, entries, extraEntries, sumBinHeights, sumExtraBinHeights, title`

### Constructor Detail

#### Histogram3D

    public Histogram3D(java.lang.String title,
               double[] xEdges,
               double[] yEdges,
               double[] zEdges)

Creates a variable-width histogram. Example: `xEdges = (0.2, 1.0, 5.0, 6.0), yEdges = (-5, 0, 7), zEdges = (-5, 0, 7)` yields 3*2*2 in-range bins.

Parameters:
  `title` - The histogram title.
  `xEdges` - the bin boundaries the x-axis shall have; must be sorted ascending and must not contain multiple identical elements.
  `yEdges` - the bin boundaries the y-axis shall have; must be sorted ascending and must not contain multiple identical elements.
  `zEdges` - the bin boundaries the z-axis shall have; must be sorted ascending and must not contain multiple identical elements.
Throws:
  `java.lang.IllegalArgumentException` - if `xEdges.length < 1 || yEdges.length < 1|| zEdges.length < 1`.

#### Histogram3D

    public Histogram3D(java.lang.String title,
               int xBins,
               double xMin,
               double xMax,
               int yBins,
               double yMin,
               double yMax,
               int zBins,
               double zMin,
               double zMax)

Creates a fixed-width histogram.

Parameters:
  `title` - The histogram title.
  `xBins` - The number of bins on the X axis.
  `xMin` - The minimum value on the X axis.
  `xMax` - The maximum value on the X axis.
  `yBins` - The number of bins on the Y axis.
  `yMin` - The minimum value on the Y axis.
  `yMax` - The maximum value on the Y axis.
  `zBins` - The number of bins on the Z axis.
  `zMin` - The minimum value on the Z axis.
  `zMax` - The maximum value on the Z axis.

#### Histogram3D

    public Histogram3D(java.lang.String title,
               IAxis xAxis,
               IAxis yAxis,
               IAxis zAxis)

Creates a histogram with the given axis binning.

Parameters:
  `title` - The histogram title.
  `xAxis` - The x-axis description to be used for binning.
  `yAxis` - The y-axis description to be used for binning.
  `zAxis` - The z-axis description to be used for binning.

### Method Detail

#### allEntries

    public int allEntries()

Description copied from interface: `IHistogram`
Number of all entries in all (both in-range and under/overflow) bins in the histogram.

Specified by:
  `allEntries` in interface `IHistogram`

#### binEntries

    public int binEntries(int indexX,
                 int indexY,
                 int indexZ)

Description copied from interface: `IHistogram3D`
The number of entries (ie the number of times fill was called for this bin).

Specified by:
  `binEntries` in interface `IHistogram3D`
Parameters:
  `indexX` - the x bin number (0...Nx-1) or OVERFLOW or UNDERFLOW.
  `indexY` - the y bin number (0...Ny-1) or OVERFLOW or UNDERFLOW.
  `indexZ` - the z bin number (0...Nz-1) or OVERFLOW or UNDERFLOW.

#### binError

    public double binError(int indexX,
                  int indexY,
                  int indexZ)

Description copied from interface: `IHistogram3D`
The error on this bin.

Specified by:
  `binError` in interface `IHistogram3D`
Parameters:
  `indexX` - the x bin number (0...Nx-1) or OVERFLOW or UNDERFLOW.
  `indexY` - the y bin number (0...Ny-1) or OVERFLOW or UNDERFLOW.
  `indexZ` - the z bin number (0...Nz-1) or OVERFLOW or UNDERFLOW.

#### binHeight

    public double binHeight(int indexX,
                   int indexY,
                   int indexZ)

Description copied from interface: `IHistogram3D`
Total height of the corresponding bin (ie the sum of the weights in this bin).

Specified by:
  `binHeight` in interface `IHistogram3D`
Parameters:
  `indexX` - the x bin number (0...Nx-1) or OVERFLOW or UNDERFLOW.
  `indexY` - the y bin number (0...Ny-1) or OVERFLOW or UNDERFLOW.
  `indexZ` - the z bin number (0...Nz-1) or OVERFLOW or UNDERFLOW.

#### equivalentBinEntries

    public double equivalentBinEntries()

Description copied from interface: `IHistogram`
Number of equivalent entries.

Specified by:
  `equivalentBinEntries` in interface `IHistogram`
Returns:
  `SUM[ weight ] ^ 2 / SUM[ weight^2 ]`.

#### fill

    public void fill(double x,
            double y,
            double z)

Description copied from interface: `IHistogram3D`
Fill the histogram with weight 1; equivalent to `fill(x,y,z,1)`..

Specified by:
  `fill` in interface `IHistogram3D`

#### fill

    public void fill(double x,
            double y,
            double z,
            double weight)

Description copied from interface: `IHistogram3D`
Fill the histogram with specified weight.

Specified by:
  `fill` in interface `IHistogram3D`

#### meanX

    public double meanX()

Description copied from interface: `IHistogram3D`
Returns the mean of the histogram, as calculated on filling-time projected on the X axis.

Specified by:
  `meanX` in interface `IHistogram3D`

#### meanY

    public double meanY()

Description copied from interface: `IHistogram3D`
Returns the mean of the histogram, as calculated on filling-time projected on the Y axis.

Specified by:
  `meanY` in interface `IHistogram3D`

#### meanZ

    public double meanZ()

Description copied from interface: `IHistogram3D`
Returns the mean of the histogram, as calculated on filling-time projected on the Z axis.

Specified by:
  `meanZ` in interface `IHistogram3D`

#### reset

    public void reset()

Description copied from interface: `IHistogram`
Reset contents; as if just constructed.

Specified by:
  `reset` in interface `IHistogram`

#### rmsX

    public double rmsX()

Description copied from interface: `IHistogram3D`
Returns the rms of the histogram as calculated on filling-time projected on the X axis.

Specified by:
  `rmsX` in interface `IHistogram3D`

#### rmsY

    public double rmsY()

Description copied from interface: `IHistogram3D`
Returns the rms of the histogram as calculated on filling-time projected on the Y axis.

Specified by:
  `rmsY` in interface `IHistogram3D`

#### rmsZ

    public double rmsZ()

Description copied from interface: `IHistogram3D`
Returns the rms of the histogram as calculated on filling-time projected on the Z axis.

Specified by:
  `rmsZ` in interface `IHistogram3D`

#### sumAllBinHeights

    public double sumAllBinHeights()

Description copied from interface: `IHistogram`
Sum of all (both in-range and under/overflow) bin heights in the histogram.

Specified by:
  `sumAllBinHeights` in interface `IHistogram`

#### dimensions

    public int dimensions()

Description copied from interface: `IHistogram`
Returns 1 for one-dimensional histograms, 2 for two-dimensional histograms, and so on.

Specified by:
  `dimensions` in interface `IHistogram`

#### entries

    public int entries()

Description copied from interface: `IHistogram`
Number of in-range entries in the histogram.

Specified by:
  `entries` in interface `IHistogram`

#### extraEntries

    public int extraEntries()

Description copied from interface: `IHistogram`
Number of under and overflow entries in the histogram.

Specified by:
  `extraEntries` in interface `IHistogram`

#### minMaxBins

    public int[] minMaxBins()

Description copied from interface: `IHistogram3D`
Indexes of the in-range bins containing the smallest and largest binHeight(), respectively.

Specified by:
  `minMaxBins` in interface `IHistogram3D`
Returns:
  `{minBinX,minBinY,minBinZ, maxBinX,maxBinY,maxBinZ}`.

#### projectionXY

    public IHistogram2D projectionXY()

Description copied from interface: `IHistogram3D`
Create a projection parallel to the XY plane. Equivalent to `sliceXY(UNDERFLOW,OVERFLOW)`.

Specified by:
  `projectionXY` in interface `IHistogram3D`

#### projectionXZ

    public IHistogram2D projectionXZ()

Description copied from interface: `IHistogram3D`
Create a projection parallel to the XZ plane. Equivalent to `sliceXZ(UNDERFLOW,OVERFLOW)`.

Specified by:
  `projectionXZ` in interface `IHistogram3D`

#### projectionYZ

    public IHistogram2D projectionYZ()

Description copied from interface: `IHistogram3D`
Create a projection parallel to the YZ plane. Equivalent to `sliceYZ(UNDERFLOW,OVERFLOW)`.

Specified by:
  `projectionYZ` in interface `IHistogram3D`

#### sliceXY

    public IHistogram2D sliceXY(int indexZ)

Description copied from interface: `IHistogram3D`
Create a slice parallel to the XY plane at bin indexZ and one bin wide. Equivalent to `sliceXY(indexZ,indexZ)`.

Specified by:
  `sliceXY` in interface `IHistogram3D`

#### sliceXY

    public IHistogram2D sliceXY(int indexZ1,
                       int indexZ2)

Description copied from interface: `IHistogram3D`
Create a slice parallel to the XY plane, between "indexZ1" and "indexZ2" (inclusive). The returned IHistogram2D represents an instantaneous snapshot of the histogram at the time the slice was created.

Specified by:
  `sliceXY` in interface `IHistogram3D`

#### sliceXZ

    public IHistogram2D sliceXZ(int indexY)

Description copied from interface: `IHistogram3D`
Create a slice parallel to the XZ plane at bin indexY and one bin wide. Equivalent to `sliceXZ(indexY,indexY)`.

Specified by:
  `sliceXZ` in interface `IHistogram3D`

#### sliceXZ

    public IHistogram2D sliceXZ(int indexY1,
                       int indexY2)

Description copied from interface: `IHistogram3D`
Create a slice parallel to the XZ plane, between "indexY1" and "indexY2" (inclusive). The returned IHistogram2D represents an instantaneous snapshot of the histogram at the time the slice was created.

Specified by:
  `sliceXZ` in interface `IHistogram3D`

#### sliceYZ

    public IHistogram2D sliceYZ(int indexX)

Description copied from interface: `IHistogram3D`
Create a slice parallel to the YZ plane at bin indexX and one bin wide. Equivalent to `sliceYZ(indexX,indexX)`.

Specified by:
  `sliceYZ` in interface `IHistogram3D`

#### sliceYZ

    public IHistogram2D sliceYZ(int indexX1,
                       int indexX2)

Description copied from interface: `IHistogram3D`
Create a slice parallel to the YZ plane, between "indexX1" and "indexX2" (inclusive). The returned IHistogram2D represents an instantaneous snapshot of the histogram at the time the slice was created.

Specified by:
  `sliceYZ` in interface `IHistogram3D`

#### sumBinHeights

    public double sumBinHeights()

Description copied from interface: `IHistogram`
Sum of in-range bin heights in the histogram.

Specified by:
  `sumBinHeights` in interface `IHistogram`

#### sumExtraBinHeights

    public double sumExtraBinHeights()

Description copied from interface: `IHistogram`
Sum of under/overflow bin heights in the histogram.

Specified by:
  `sumExtraBinHeights` in interface `IHistogram`

#### xAxis

    public IAxis xAxis()

Description copied from interface: `IHistogram3D`
Return the X axis.

Specified by:
  `xAxis` in interface `IHistogram3D`

#### yAxis

    public IAxis yAxis()

Description copied from interface: `IHistogram3D`
Return the Y axis.

Specified by:
  `yAxis` in interface `IHistogram3D`

#### zAxis

    public IAxis zAxis()

Description copied from interface: `IHistogram3D`
Return the Z axis.

Specified by:
  `zAxis` in interface `IHistogram3D`

#### title

    public java.lang.String title()

Description copied from interface: `IHistogram`
Title of the histogram (will be set only in the constructor).

Specified by:
  `title` in interface `IHistogram`