Package hep.aida.ref

Class Histogram3D

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

    public class Histogram3D
    extends AbstractHistogram3D
    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
    • Constructor Summary

      Constructors 
      Constructor Description
      Histogram3D​(java.lang.String title, double[] xEdges, double[] yEdges, double[] zEdges)
      Creates a variable-width histogram.
      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.
      Histogram3D​(java.lang.String title, IAxis xAxis, IAxis yAxis, IAxis zAxis)
      Creates a histogram with the given axis binning.
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      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).
      double equivalentBinEntries()
      Number of equivalent entries.
      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.
      protected IHistogram2D internalSliceXY​(java.lang.String title, int indexZ1, int indexZ2)
      The precise meaning of the arguments to the public slice methods is somewhat ambiguous, so we define this internal slice method and clearly specify its arguments.
      protected IHistogram2D internalSliceXZ​(java.lang.String title, int indexY1, int indexY2)
      The precise meaning of the arguments to the public slice methods is somewhat ambiguous, so we define this internal slice method and clearly specify its arguments.
      protected IHistogram2D internalSliceYZ​(java.lang.String title, int indexX1, int indexX2)
      The precise meaning of the arguments to the public slice methods is somewhat ambiguous, so we define this internal slice method and clearly specify its arguments.
      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.
      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.
      double sumAllBinHeights()
      Sum of all (both in-range and under/overflow) bin heights in the histogram.
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Field Detail

      • heights

        private double[][][] heights
      • errors

        private double[][][] errors
      • entries

        private int[][][] entries
      • nEntry

        private int nEntry
      • sumWeight

        private double sumWeight
      • sumWeightSquared

        private double sumWeightSquared
      • meanX

        private double meanX
      • rmsX

        private double rmsX
      • meanY

        private double meanY
      • rmsY

        private double rmsY
      • meanZ

        private double meanZ
      • rmsZ

        private double rmsZ
    • 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

      • 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
        Overrides:
        fill in class AbstractHistogram3D
      • 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
      • internalSliceXY

        protected IHistogram2D internalSliceXY​(java.lang.String title,
                                               int indexZ1,
                                               int indexZ2)
        The precise meaning of the arguments to the public slice methods is somewhat ambiguous, so we define this internal slice method and clearly specify its arguments.

        Note 0indexX1 and indexX2 use our INTERNAL bin numbering scheme Note 1The slice is done between indexX1 and indexX2 INCLUSIVE Note 2indexX1 and indexX2 may include the use of under and over flow bins Note 3There is no note 3 (yet)

        Specified by:
        internalSliceXY in class AbstractHistogram3D
      • internalSliceXZ

        protected IHistogram2D internalSliceXZ​(java.lang.String title,
                                               int indexY1,
                                               int indexY2)
        The precise meaning of the arguments to the public slice methods is somewhat ambiguous, so we define this internal slice method and clearly specify its arguments.

        Note 0indexY1 and indexY2 use our INTERNAL bin numbering scheme Note 1The slice is done between indexY1 and indexY2 INCLUSIVE Note 2indexY1 and indexY2 may include the use of under and over flow bins Note 3There is no note 3 (yet)

        Specified by:
        internalSliceXZ in class AbstractHistogram3D
      • internalSliceYZ

        protected IHistogram2D internalSliceYZ​(java.lang.String title,
                                               int indexX1,
                                               int indexX2)
        The precise meaning of the arguments to the public slice methods is somewhat ambiguous, so we define this internal slice method and clearly specify its arguments.

        Note 0indexX1 and indexX2 use our INTERNAL bin numbering scheme Note 1The slice is done between indexX1 and indexX2 INCLUSIVE Note 2indexX1 and indexX2 may include the use of under and over flow bins Note 3There is no note 3 (yet)

        Specified by:
        internalSliceYZ in class AbstractHistogram3D
      • 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