[med-svn] [colt] 03/04: Imported Upstream version 1.2.0+dfsg2
Andreas Tille
tille at debian.org
Sun Feb 22 20:28:16 UTC 2015
This is an automated email from the git hooks/post-receive script.
tille pushed a commit to branch master
in repository colt.
commit ee6d650cd13336a42676f394bf7cceb23e2c9cdd
Author: Andreas Tille <tille at debian.org>
Date: Sun Feb 22 21:25:51 2015 +0100
Imported Upstream version 1.2.0+dfsg2
---
src/hep/aida/IAxis.java | 53 -------
src/hep/aida/IHistogram.java | 62 --------
src/hep/aida/IHistogram1D.java | 56 -------
src/hep/aida/IHistogram2D.java | 119 ---------------
src/hep/aida/IHistogram3D.java | 134 -----------------
src/hep/aida/package.html | 324 -----------------------------------------
6 files changed, 748 deletions(-)
diff --git a/src/hep/aida/IAxis.java b/src/hep/aida/IAxis.java
deleted file mode 100644
index 0399d16..0000000
--- a/src/hep/aida/IAxis.java
+++ /dev/null
@@ -1,53 +0,0 @@
-package hep.aida;
-
-/**
-An IAxis represents a binned histogram axis. A 1D Histogram would have
-one Axis representing the X axis, while a 2D Histogram would have two
-axes representing the X and Y Axis.
-
- at author Pavel Binko, Dino Ferrero Merlino, Wolfgang Hoschek, Tony Johnson, Andreas Pfeiffer, and others.
- at version 1.0, 23/03/2000
-*/
-public interface IAxis extends java.io.Serializable {
- static final long serialVersionUID = 1020;
- /**
- * Centre of the bin specified.
- * @param index Bin number (0...bins()-1) or OVERFLOW or UNDERFLOW.
- */
- public double binCentre(int index );
- /**
- * Lower edge of the specified bin.
- * @param index Bin number (0...bins()-1) or OVERFLOW or UNDERFLOW.
- * @return the lower edge of the bin; for the underflow bin this is <tt>Double.NEGATIVE_INFINITY</tt>.
- */
- public double binLowerEdge(int index );
- /**
- * The number of bins (excluding underflow and overflow) on the axis.
- */
- public int bins();
- /**
- * Upper edge of the specified bin.
- * @param index Bin number (0...bins()-1) or OVERFLOW or UNDERFLOW.
- * @return the upper edge of the bin; for the overflow bin this is <tt>Double.POSITIVE_INFINITY</tt>.
- */
- public double binUpperEdge(int index );
- /**
- * Width of the bin specified.
- * @param index Bin number (0...bins()-1) or OVERFLOW or UNDERFLOW.
- */
- public double binWidth(int index);
- /**
- * Converts a coordinate on the axis to a bin number. If the coordinate
- * is < lowerEdge returns UNDERFLOW, and if the coordinate is >=
- * upperEdge returns OVERFLOW.
- */
- public int coordToIndex(double coord);
- /**
- * Lower axis edge.
- */
- public double lowerEdge();
- /**
- * Upper axis edge.
- */
- public double upperEdge();
-}
diff --git a/src/hep/aida/IHistogram.java b/src/hep/aida/IHistogram.java
deleted file mode 100644
index 7127c8b..0000000
--- a/src/hep/aida/IHistogram.java
+++ /dev/null
@@ -1,62 +0,0 @@
-package hep.aida;
-
-/**
-A common base interface for IHistogram1D, IHistogram2D and IHistogram3D.
-
- at author Pavel Binko, Dino Ferrero Merlino, Wolfgang Hoschek, Tony Johnson, Andreas Pfeiffer, and others.
- at version 1.0, 23/03/2000
-*/
-public interface IHistogram extends java.io.Serializable
-{
- /**
- * Constant specifying the overflow bin (can be passed to any method expecting a bin number).
- */
- public final static int OVERFLOW = -1;
- /**
- * Constant specifying the underflow bin (can be passed to any method expecting a bin number).
- */
- public final static int UNDERFLOW = -2;
-
- static final long serialVersionUID = 1020;
- /**
- * Number of all entries in all (both in-range and under/overflow) bins in the histogram.
- */
- public int allEntries();
- /**
- * Returns 1 for one-dimensional histograms, 2 for two-dimensional histograms, and so on.
- */
- public int dimensions();
- /**
- * Number of in-range entries in the histogram.
- */
- public int entries();
- /**
- * Number of equivalent entries.
- * @return <tt>SUM[ weight ] ^ 2 / SUM[ weight^2 ]</tt>.
- */
- public double equivalentBinEntries();
- /**
- * Number of under and overflow entries in the histogram.
- */
- public int extraEntries();
- /**
- * Reset contents; as if just constructed.
- */
- public void reset();
- /**
- * Sum of all (both in-range and under/overflow) bin heights in the histogram.
- */
- public double sumAllBinHeights();
- /**
- * Sum of in-range bin heights in the histogram.
- */
- public double sumBinHeights();
- /**
- * Sum of under/overflow bin heights in the histogram.
- */
- public double sumExtraBinHeights();
- /**
- * Title of the histogram (will be set only in the constructor).
- */
- public String title();
-}
diff --git a/src/hep/aida/IHistogram1D.java b/src/hep/aida/IHistogram1D.java
deleted file mode 100644
index 2373fa6..0000000
--- a/src/hep/aida/IHistogram1D.java
+++ /dev/null
@@ -1,56 +0,0 @@
-package hep.aida;
-
-/**
-A Java interface corresponding to the AIDA 1D Histogram.
-<p>
-<b>Note</b> All methods that accept a bin number as an argument will
-also accept the constants OVERFLOW or UNDERFLOW as the argument, and
-as a result give the contents of the resulting OVERFLOW or UNDERFLOW
-bin.
- at see <a href="http://wwwinfo.cern.ch/asd/lhc++/AIDA/">AIDA</a>
- at author Pavel Binko, Dino Ferrero Merlino, Wolfgang Hoschek, Tony Johnson, Andreas Pfeiffer, and others.
- at version 1.0, 23/03/2000
-*/
-public interface IHistogram1D extends IHistogram
-{
- /**
- * Number of entries in the corresponding bin (ie the number of times fill was called for this bin).
- * @param index the bin number (0...N-1) or OVERFLOW or UNDERFLOW.
- */
- public int binEntries(int index);
- /**
- * The error on this bin.
- * @param index the bin number (0...N-1) or OVERFLOW or UNDERFLOW.
- */
- public double binError(int index );
- /**
- * Total height of the corresponding bin (ie the sum of the weights in this bin).
- * @param index the bin number (0...N-1) or OVERFLOW or UNDERFLOW.
- */
- public double binHeight(int index);
- /**
- * Fill histogram with weight 1.
- */
- public void fill(double x);
- /**
- * Fill histogram with specified weight.
- */
- public void fill(double x, double weight);
- /**
- * Returns the mean of the whole histogram as calculated on filling-time.
- */
- public double mean();
- /**
- * Indexes of the in-range bins containing the smallest and largest binHeight(), respectively.
- * @return <tt>{minBin,maxBin}</tt>.
- */
- public int[] minMaxBins();
- /**
- * Returns the rms of the whole histogram as calculated on filling-time.
- */
- public double rms();
- /**
- * Returns the X Axis.
- */
- public IAxis xAxis();
-}
diff --git a/src/hep/aida/IHistogram2D.java b/src/hep/aida/IHistogram2D.java
deleted file mode 100644
index 9566b9e..0000000
--- a/src/hep/aida/IHistogram2D.java
+++ /dev/null
@@ -1,119 +0,0 @@
-package hep.aida;
-
-/**
-A Java interface corresponding to the AIDA 2D Histogram.
-<p>
-<b>Note</b> All methods that accept a bin number as an argument will
-also accept the constants OVERFLOW or UNDERFLOW as the argument, and
-as a result give the contents of the resulting OVERFLOW or UNDERFLOW
-bin.
- at see <a href="http://wwwinfo.cern.ch/asd/lhc++/AIDA/">AIDA</a>
- at author Pavel Binko, Dino Ferrero Merlino, Wolfgang Hoschek, Tony Johnson, Andreas Pfeiffer, and others.
- at version 1.0, 23/03/2000
-*/
-public interface IHistogram2D extends IHistogram
-{
- /**
- * The number of entries (ie the number of times fill was called for this bin).
- * @param indexX the x bin number (0...Nx-1) or OVERFLOW or UNDERFLOW.
- * @param indexY the y bin number (0...Ny-1) or OVERFLOW or UNDERFLOW.
- */
- public int binEntries(int indexX, int indexY );
- /**
- * Equivalent to <tt>projectionX().binEntries(indexX)</tt>.
- */
- public int binEntriesX(int indexX);
- /**
- * Equivalent to <tt>projectionY().binEntries(indexY)</tt>.
- */
- public int binEntriesY(int indexY);
- /**
- * The error on this bin.
- * @param indexX the x bin number (0...Nx-1) or OVERFLOW or UNDERFLOW.
- * @param indexY the y bin number (0...Ny-1) or OVERFLOW or UNDERFLOW.
- */
- public double binError(int indexX,int indexY );
- /**
- * Total height of the corresponding bin (ie the sum of the weights in this bin).
- * @param indexX the x bin number (0...Nx-1) or OVERFLOW or UNDERFLOW.
- * @param indexY the y bin number (0...Ny-1) or OVERFLOW or UNDERFLOW.
- */
- public double binHeight(int indexX,int indexY );
- /**
- * Equivalent to <tt>projectionX().binHeight(indexX)</tt>.
- */
- public double binHeightX(int indexX);
- /**
- * Equivalent to <tt>projectionY().binHeight(indexY)</tt>.
- */
- public double binHeightY(int indexY);
- /**
- * Fill the histogram with weight 1.
- */
- public void fill( double x, double y);
- /**
- * Fill the histogram with specified weight.
- */
- public void fill( double x, double y, double weight);
- /**
- * Returns the mean of the histogram, as calculated on filling-time projected on the X axis.
- */
- public double meanX();
- /**
- * Returns the mean of the histogram, as calculated on filling-time projected on the Y axis.
- */
- public double meanY();
- /**
- * Indexes of the in-range bins containing the smallest and largest binHeight(), respectively.
- * @return <tt>{minBinX,minBinY, maxBinX,maxBinY}</tt>.
- */
- public int[] minMaxBins();
- /**
- * Create a projection parallel to the X axis.
- * Equivalent to <tt>sliceX(UNDERFLOW,OVERFLOW)</tt>.
- */
- public IHistogram1D projectionX();
- /**
- * Create a projection parallel to the Y axis.
- * Equivalent to <tt>sliceY(UNDERFLOW,OVERFLOW)</tt>.
- */
- public IHistogram1D projectionY();
- /**
- * Returns the rms of the histogram as calculated on filling-time projected on the X axis.
- */
- public double rmsX();
- /**
- * Returns the rms of the histogram as calculated on filling-time projected on the Y axis.
- */
- public double rmsY();
- /**
- * Slice parallel to the Y axis at bin indexY and one bin wide.
- * Equivalent to <tt>sliceX(indexY,indexY)</tt>.
- */
- public IHistogram1D sliceX(int indexY );
- /**
- * Create a slice parallel to the axis X axis, between "indexY1" and "indexY2" (inclusive).
- * The returned IHistogram1D represents an instantaneous snapshot of the
- * histogram at the time the slice was created.
- */
- public IHistogram1D sliceX(int indexY1, int indexY2);
- /**
- * Slice parallel to the X axis at bin indexX and one bin wide.
- * Equivalent to <tt>sliceY(indexX,indexX)</tt>.
- */
- public IHistogram1D sliceY(int indexX );
- /**
- * Create a slice parallel to the axis Y axis, between "indexX1" and "indexX2" (inclusive)
- * The returned IHistogram1D represents an instantaneous snapshot of the
- * histogram at the time the slice was created.
- */
- public IHistogram1D sliceY(int indexX1, int indexX2);
- /**
- * Return the X axis.
- */
- public IAxis xAxis();
- /**
- * Return the Y axis.
- */
- public IAxis yAxis();
-}
diff --git a/src/hep/aida/IHistogram3D.java b/src/hep/aida/IHistogram3D.java
deleted file mode 100644
index ad50575..0000000
--- a/src/hep/aida/IHistogram3D.java
+++ /dev/null
@@ -1,134 +0,0 @@
-package hep.aida;
-
-/**
-A Java interface corresponding to the AIDA 3D Histogram.
-<p>
-<b>Note</b> All methods that accept a bin number as an argument will
-also accept the constants OVERFLOW or UNDERFLOW as the argument, and
-as a result give the contents of the resulting OVERFLOW or UNDERFLOW
-bin.
- at see <a href="http://wwwinfo.cern.ch/asd/lhc++/AIDA/">AIDA</a>
- at author Pavel Binko, Dino Ferrero Merlino, Wolfgang Hoschek, Tony Johnson, Andreas Pfeiffer, and others.
- at version 1.0, 23/03/2000
-*/
-public interface IHistogram3D extends IHistogram
-{
- /**
- * The number of entries (ie the number of times fill was called for this bin).
- * @param indexX the x bin number (0...Nx-1) or OVERFLOW or UNDERFLOW.
- * @param indexY the y bin number (0...Ny-1) or OVERFLOW or UNDERFLOW.
- * @param indexZ the z bin number (0...Nz-1) or OVERFLOW or UNDERFLOW.
- */
- public int binEntries(int indexX, int indexY, int indexZ);
- /**
- * The error on this bin.
- * @param indexX the x bin number (0...Nx-1) or OVERFLOW or UNDERFLOW.
- * @param indexY the y bin number (0...Ny-1) or OVERFLOW or UNDERFLOW.
- * @param indexZ the z bin number (0...Nz-1) or OVERFLOW or UNDERFLOW.
- */
- public double binError(int indexX,int indexY,int indexZ );
- /**
- * Total height of the corresponding bin (ie the sum of the weights in this bin).
- * @param indexX the x bin number (0...Nx-1) or OVERFLOW or UNDERFLOW.
- * @param indexY the y bin number (0...Ny-1) or OVERFLOW or UNDERFLOW.
- * @param indexZ the z bin number (0...Nz-1) or OVERFLOW or UNDERFLOW.
- */
- public double binHeight(int indexX,int indexY,int indexZ);
- /**
- * Fill the histogram with weight 1; equivalent to <tt>fill(x,y,z,1)</tt>..
- */
- public void fill( double x, double y, double z);
- /**
- * Fill the histogram with specified weight.
- */
- public void fill( double x, double y, double z, double weight);
- /**
- * Returns the mean of the histogram, as calculated on filling-time projected on the X axis.
- */
- public double meanX();
- /**
- * Returns the mean of the histogram, as calculated on filling-time projected on the Y axis.
- */
- public double meanY();
- /**
- * Returns the mean of the histogram, as calculated on filling-time projected on the Z axis.
- */
- public double meanZ();
- /**
- * Indexes of the in-range bins containing the smallest and largest binHeight(), respectively.
- * @return <tt>{minBinX,minBinY,minBinZ, maxBinX,maxBinY,maxBinZ}</tt>.
- */
- public int[] minMaxBins();
- /**
- * Create a projection parallel to the XY plane.
- * Equivalent to <tt>sliceXY(UNDERFLOW,OVERFLOW)</tt>.
- */
- public IHistogram2D projectionXY();
- /**
- * Create a projection parallel to the XZ plane.
- * Equivalent to <tt>sliceXZ(UNDERFLOW,OVERFLOW)</tt>.
- */
- public IHistogram2D projectionXZ();
- /**
- * Create a projection parallel to the YZ plane.
- * Equivalent to <tt>sliceYZ(UNDERFLOW,OVERFLOW)</tt>.
- */
- public IHistogram2D projectionYZ();
- /**
- * Returns the rms of the histogram as calculated on filling-time projected on the X axis.
- */
- public double rmsX();
- /**
- * Returns the rms of the histogram as calculated on filling-time projected on the Y axis.
- */
- public double rmsY();
- /**
- * Returns the rms of the histogram as calculated on filling-time projected on the Z axis.
- */
- public double rmsZ();
- /**
- * Create a slice parallel to the XY plane at bin indexZ and one bin wide.
- * Equivalent to <tt>sliceXY(indexZ,indexZ)</tt>.
- */
- public IHistogram2D sliceXY(int indexZ );
- /**
- * 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.
- */
- public IHistogram2D sliceXY(int indexZ1, int indexZ2);
- /**
- * Create a slice parallel to the XZ plane at bin indexY and one bin wide.
- * Equivalent to <tt>sliceXZ(indexY,indexY)</tt>.
- */
- public IHistogram2D sliceXZ(int indexY );
- /**
- * 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.
- */
- public IHistogram2D sliceXZ(int indexY1, int indexY2);
- /**
- * Create a slice parallel to the YZ plane at bin indexX and one bin wide.
- * Equivalent to <tt>sliceYZ(indexX,indexX)</tt>.
- */
- public IHistogram2D sliceYZ(int indexX );
- /**
- * 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.
- */
- public IHistogram2D sliceYZ(int indexX1, int indexX2);
- /**
- * Return the X axis.
- */
- public IAxis xAxis();
- /**
- * Return the Y axis.
- */
- public IAxis yAxis();
- /**
- * Return the Z axis.
- */
- public IAxis zAxis();
-}
diff --git a/src/hep/aida/package.html b/src/hep/aida/package.html
deleted file mode 100644
index 0997fb6..0000000
--- a/src/hep/aida/package.html
+++ /dev/null
@@ -1,324 +0,0 @@
-<HTML>
-<HEAD>
-<META NAME="GENERATOR" Content="Microsoft Visual Studio 6.0">
-<TITLE></TITLE>
-</HEAD>
-<BODY>
-<P>Interfaces for compact, extensible, modular and performant histogramming functionality.
-</P>
-<h1><a name="Overview"></a>Getting Started</h1>
-<h2>1. Overview</h2>
-Aida itself offers the histogramming features of HTL and HBOOK, the <em>de-facto</em>
-standard for histogramming for many years. It also offers a number of useful extensions,
-with an object-oriented approach. These features include the following:
-<p></p>
-<ul>
- <li>creating and filling of 1D, 2D (and profile histograms, in the future)</li>
- <li>computation of statistics such as the mean, rms, etc. of a histogram</li>
- <li>support for operations between histograms (in the future)</li>
- <li>browsing of and access to characteristics of individual histograms</li>
-</ul>
-<p> File-based I/O can be achieved through the standard Java built-in serialization
- mechanism. All classes implement the {@link java.io.Serializable} interface.
- However, the toolkit is entirely decoupled from advanced I/O and visualisation
- techniques. It provides data structures and algorithms only.
-<p> This toolkit borrows many concepts from HBOOK and the CERN <a href="http://wwwinfo.cern.ch/asd/lhc++/HTL">
- HTL</a> package (C++) largely written by Savrak Sar.
-<p> The definition of an abstract histogram interface allows functionality that
- is provided by external packages, such as plotting or fitting, to be decoupled
- from the actual implementation of the histogram. This feature paves the way
- for co-existence of different histogram packages that conform to the abstract
- interface. </p>
-<p>A reference implementation of the interfaces is provided by package {@link
- hep.aida.ref}. </p>
-<h2>2. AIDA at a glance</h2>
-<h3>Fixed-width histogram</h3>
-<p>The following code snippet demonstrates example usage: </p>
-<h4>
- <table>
- <td class="PRE">
- <pre>
- IHistogram1D h1 = new Histogram1D("my histo 1",10, -2, +2); // 10 bins, min=-2, max=2<br> IHistogram2D h2 = new Histogram2D("my histo 2",10, -2, +2, 5, -2, +2);
- IHistogram2D h3 = new Histogram3D("my histo 3",10, -2, +2, 5, -2, +2, 3, -2, +2);
-
- // equivalent
- // IHistogram1D h1 = new Histogram1D("my histo 1",new FixedAxis(10, -2, +2)); <br> // IHistogram2D h2 = new Histogram2D("my histo 2",new FixedAxis(10, -2, +2),new FixedAxis(5, -2, +2));<br><br> // your favourite distribution goes here
- cern.jet.random.AbstractDistribution gauss = new cern.jet.random.Normal(0,1,new cern.jet.random.engine.MersenneTwister());
-<br> for (int i=0; i < 10000; i++) { <br> h1.{@link hep.aida.IHistogram1D#fill fill}(gauss.nextDouble());
- h2.{@link hep.aida.IHistogram2D#fill fill}(gauss.nextDouble(),gauss.nextDouble());
- h3.{@link hep.aida.IHistogram3D#fill fill}(gauss.nextDouble(),gauss.nextDouble(),gauss.nextDouble());
- }
-
- System.out.println(h1);
- System.out.println(h2);
- System.out.println(h3);
- rms=h1.rms();
- sum=h1.sumBinHeights();
- ...</pre>
- </td>
- </table>
-</h4>
-<h3>Variable-width histogram</h3>
-<p>The following code snippet demonstrates example usage: </p>
-<h4>
- <table>
- <td class="PRE">
- <pre>
- double[] xedges = { -5, -1, 0, 1, 5 };
- double[] yedges = { -5, -1, 0.2, 0, 0.2, 1, 5 };
- double[] zedges = { -5, 0, 7 };
- IHistogram1D h1 = new Histogram1D("my histo 1",xedges); //<br> IHistogram2D h2 = new Histogram2D("my histo 2",xedges,yedges);
- IHistogram2D h3 = new Histogram3D("my histo 3",xedges,yedges,zedges);
-
- // equivalent
- // IHistogram1D h1 = new Histogram1D("my histo 1",new VariableAxis(xedges)); <br> // IHistogram2D h2 = new Histogram2D("my histo 2",new VariableAxis(xedges),new VariableAxis(yedges));<br><br> // your favourite distribution goes here
- cern.jet.random.AbstractDistribution gauss = new cern.jet.random.Normal(0,1,new cern.jet.random.engine.MersenneTwister());
-<br> for (int i=0; i < 10000; i++) { <br> h1.{@link hep.aida.IHistogram1D#fill fill}(gauss.nextDouble());
- h2.{@link hep.aida.IHistogram2D#fill fill}(gauss.nextDouble(),gauss.nextDouble());
- h3.{@link hep.aida.IHistogram3D#fill fill}(gauss.nextDouble(),gauss.nextDouble(),gauss.nextDouble());
- }
-
- System.out.println(h1);
- System.out.println(h2);
- System.out.println(h3);
- rms=h1.rms();
- sum=h1.sumBinHeights();
- ...</pre>
- </td>
- </table>
-</h4>
-<p>Here are some example histograms, as rendered by <a href="http://www-sldnt.slac.stanford.edu/jasweb/">Java
- Analysis Studio</a>. </p>
-<table width="75%" border="0">
- <tr>
- <td valign="bottom"><img
- src="ref/doc-files/aida1.gif" width="322" height="230"></td>
- <td valign="bottom"><img
- src="ref/doc-files/aida2.gif" width="316" height="270"></td>
- </tr>
-</table>
-<p>And here is an example output of {@link hep.aida.ref.Converter#toString(IHistogram2D)}.
-</p>
-<blockquote style="MARGIN-RIGHT: 0px">
- <table>
- <td class="PRE">
- <pre>
-my histo 2:
- Entries=5000, ExtraEntries=0
- MeanX=4.9838, RmsX=NaN
- MeanY=2.5304, RmsY=NaN
- xAxis: Bins=11, Min=0, Max=11<br> yAxis: Bins=6, Min=0, Max=6
-Heights:
- | X
- | 0 1 2 3 4 5 6 7 8 9 10 | Sum
-----------------------------------------------------------
-Y 5 | 30 53 51 52 57 39 65 61 55 49 22 | 534
- 4 | 43 106 112 96 92 94 107 98 98 110 47 | 1003
- 3 | 39 134 87 93 102 103 110 90 114 98 51 | 1021
- 2 | 44 81 113 96 101 86 109 83 111 93 42 | 959
- 1 | 54 94 103 99 115 92 98 97 103 90 44 | 989
- 0 | 24 54 52 44 42 56 46 47 56 53 20 | 494
-----------------------------------------------------------
- Sum | 234 522 518 480 509 470 535 476 537 493 226 |
-</pre>
- </td>
- </table>
-</blockquote>
-<p>And <a href="doc-files/hist3d.txt">here</a> is a sample 3d histogram output.</p>
-<h2>3. Histograms</h2>
-<h3>3.1 Axes</h3>
-<p>An <i>axis</i> ({@link hep.aida.IAxis}) describes how one dimension of the problem
- space is divided into intervals. Consider the case of a 10 bin histogram in
- the range <tt>[0,100]</tt>. An axis object containing the number of bins
- and the interval limits will describe completely how we divide such an interval:
- a set of 10 sub-intervals of equal width. This is termed a {@link hep.aida.ref.FixedAxis}
- and can be constructed as follows </p>
-<table>
- <td class="PRE">
- <pre>
-IAxis axis = new FixedAxis(10, 0.0, 100.0);
-</pre>
- </td>
-</table>
-It may be required to work with an histogram over the same range as the example
-above, but with bins of variable widths. In this case, an axis containing the
-bin edges will describe completely how the interval <tt>[0,100]</tt> is divided.
-Such an axis is termed a {@link hep.aida.ref.VariableAxis} and can be constructed
-as follows
-<table>
- <td class="PRE">
- <pre>
-double[] edges = { 0.0, 10.0, 40.0, 49.0, 50.0, 51.0, 60.0, 100.0 };
-IAxis axis = new VariableAxis(edges);
-</pre>
- </td>
-</table>
-An <tt>n</tt>-dimensional histogram thus contains <tt>n</tt> axes, one for each
-dimension. The only concern of an axis is to associate any ordered 1D space with
-a discrete numbered space. Thus it associates an interval to an integer. Hence,
-an axis knows about the width of the intervals and their lower point/bound or
-upper point/bound. An axis can be asked for such information as follows:
-<table>
- <td class="PRE">
- <pre>
-IAxis axis = new FixedAxis(2, 0.0, 20.0); // 2 bins, min=0, max=20<br>...
-axis.{@link hep.aida.IAxis#bins bins()}; // Number of in-range bins (excluding underflow and overflow bins)
-axis.{@link hep.aida.IAxis#binLowerEdge binLowerEdge(i)}; // and the lower edge of bin i
-axis.{@link hep.aida.IAxis#binWidth binWidth(i)}; // and its width
-axis.{@link hep.aida.IAxis#binUpperEdge binUpperEdge(i)}; // and its upper edge
-double point = 1.23;
-int binIndex = axis.{@link hep.aida.Iaxis#coordToIndex coordToIndex(point)}; // Obtain index of bin the point falls into (maps to)
-</pre>
- </td>
-</table>
-<p> In this package, a histogram delegates to its axes the task of locating a
- bin. In other words, information about the lower and upper edges of a bin or
- the width of a given bin are obtained from the corresponding axis. This is shown
- in the following code fragment, which demonstrates how the lower and upper edges
- and width of a given bin can be obtained.
-<table>
- <tr>
- <td class="PRE">
- <pre>
-IHistogram1D histo = new Histogram1D("Histo1D", 10, 0.0, 100.0 );
-...
-histo.{@link hep.aida.IHistogram1D#xAxis xAxis()}.bins() // Obtain the number of bins (excluding underflow and overflow bins)
-histo.xAxis().binLowerEdge(i) // and the lower edge of bin i
-histo.xAxis().binWidth(i) // and its width
-histo.xAxis().binUpperEdge(i) // and its upper edge
-</pre>
- </td>
- </tr>
-</table>
-<p>An axis always sucessfully maps any arbitrary point drawn from the universe
- <tt>[-infinity,+infinity]</tt> to a bin index, because it implicitly defines
- an additional <i>underflow</i> and <i>overflow</i> bin, both together called
- <i>extra bins</i>. </p>
-<table>
- <td class="LISTING">
- <pre>
- IHistogram2D h = new Histogram2D(new FixedAxis(2, 0.0, 100.0), new FixedAxis(2, 0.0, 100.0), ...);
-
- y ^ i ... in-range bin, e .. extra bins
- |
- +inf |
- | e | e | e | e
- 100 - ---------------
- | e | i | i | e --> in-range == [0,100]<sup>2</sup>
- | --------------- --> universe == [-infinity,+infinity]<sup>2</sup>
- | e | i | i | e --> extra bins == universe - inrange
- 0 - ---------------
- | e | e | e | e
- -inf|
- -----|-------|------> x
- -inf 0 100 +inf
-</pre>
- </td>
-</table>
-<p>For example if an axis is defined to be <tt>new FixedAxis(2, 0.0, 20.0)</tt>,
- it has 2 in-range bins plus one for underflow and one for overflow. <tt>axis.bins()==2</tt>.
- Its boundaries are <tt>[Double.NEGATIVE_INFINITY,0.0), [0.0, 10.0), [10.0, 20.0),
- [20.0, Double.POSITIVE_INFINITY]</tt>. As a consequence point -5.0 maps to bin
- index <tt>IHistogram.UNDERFLOW</tt>, point 5.0 maps to bin index 0, 15.0 maps
- to bin index 1 and 25.0 maps to bin index <tt>IHistogram.OVERFLOW</tt>. </p>
-<p> As a further example, consider the following case: <tt>new VariableAxis(new
- double[] { 10.0, 20.0 })</tt>. The axis has 1 in-range bin: <tt>axis.bins()==1</tt>.
- Its boundaries are <tt>[Double.NEGATIVE_INFINITY,10.0), [10.0, 20.0), [20.0,
- Double.POSITIVE_INFINITY]</tt>. Point 5.0 maps to bin index <tt>IHistogram.UNDERFLOW</tt>,
- point 15.0 maps to bin index 0 and 25.0 maps to bin index <tt>IHistogram.OVERFLOW</tt>.
-<p> As can be seen, underflow bins always have an index of <tt>IHistogram.UNDERFLOW</tt>,
- whereas overflow outlier bins always have an index of <tt>IHistogram.OVERFLOW</tt>.
-<h3>3.2 Bins</h3>
-<p> Bins themselves contain information about the data filled into them. They
- can be asked for various descriptive statistical measures, such as the minimum,
- maximum, size, mean, rms, variance, etc.
-<p> Note that bins (of any kind) only know about their contents. They do not know
- where they are are located in the histogram to which they belong, nor about
- their widths or bounds - this information is stored in the axis to which they
- belong, which also defines the bin layout within a histogram.
-<h2>4. Advanced Histogramming</h2>
-TODO.
-<h1><a name="Comparison"></a>Comparison with the old AIDA interfaces</h1>
-<h2></h2>
-<P>A proposed simpler alternative to the current hep.aida.flat classes.</P>
-<P>The classes in this directory have been proposed by Mark Donselmann, Wolfgang
-Hoschek and Tony Johnson as a simpler, easier to use alternative to the classes
-orignally proposed as the AIDA standard. </P>
-<P>Our goals were:</P>
-<OL>
- <LI>Eliminate methods that are primarily for developers
- writing display packages, they should not be complicating the public user
- interfaces.
- <LI>Reduce unnecessary duplication which makes the
- interfaces very long without adding any additional functionality or
- ease-of-use
- <LI> Eliminate methods that are hard to use (we
- could not think of any occasion where the 8 separate methods for getting the 2D
- overflows bins would be convenient for anyone).</LI></OL>
-Note that
-ease of implementation was <STRONG>NOT </STRONG>a primary goal.
-Following these goals we were able to reduce the number of methods as
-follows:
-
-<TABLE border=1 cellPadding=1 cellSpacing=1>
-
- <TR>
- <TD>OLD</TD>
- <TD># methods</TD>
- <TD>NEW</TD>
- <TD>#methods</TD></TR>
- <TR>
- <TD>IHistogram1D</TD>
- <TD>45</TD>
- <TD>IHistogram</TD>
- <TD>
- <DIV><FONT face=Arial size=2>9</FONT></DIV></TD></TR>
- <TR>
- <TD>IHistogram2D</TD>
- <TD>89</TD>
- <TD>IHistogram1D</TD>
- <TD>9 (+ inherited from IHistogram)</TD></TR>
- <TR>
- <TD></TD>
- <TD></TD>
- <TD>IHistogram2D</TD>
- <TD>23(+9 inherited from IHistogram)</TD></TR>
- <TR>
- <TD></TD>
- <TD></TD>
- <TD>Axis</TD>
- <TD>8</TD></TR></TABLE>
-<DIV></DIV>The primary differences between the old classes and the new classes
-are:
-<OL>
- <LI>Introduction of an IAxis class, to describe the X
- axis for 1D histograms, and the X and Y axes of 2D histograms. We understand
- that the desire is to keep the interfaces as flat as possible, but feel this
- introduces a significant improvement in terms of reducing complexity, and is
- an abstraction that is easy for even the most object-phobic physicist to
- grasp.
- <LI>We define constants OVERFLOW and UNDERFLOW to
- represent the underflow and overflow bins on an axis. This eliminates the need
- for special routines that deal with overflows/underflows. It also improves the
- interface since it exposes the full set of overflow/underflow bins for 2D
- histograms. Under the previous proposal it was necessary for the
- implementation to keep the full set of overflow/underflow bins, in order to be
- able to do the projections correctly, but there was no way for the end-user to
- access them (they were restricted to the 8 overflow bins N,E,S,W,NE,SE,SW,NW).
-
- <LI>We eliminated the methods which return information
- about bins based on coordinate (as opposed to index). We felt these functions
- were rarely used, were in some cases ambiguous (for example when
- projections/slices were specified in terms of coordinates what exactly was the
- meaning) and the same functionality with less ambiguity was available by
- calling coordToIndex() first.</LI></OL>
-<P>A UML diagram of the classes is given below:</P>
-<P><U><FONT color=#0000ff><IMG
-src="doc-files/simpleaida.png"></FONT></U></P>
-
-
-
-
-
-</BODY>
-</HTML>
--
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/debian-med/colt.git
More information about the debian-med-commit
mailing list