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 <[email protected]> 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. - -@author Pavel Binko, Dino Ferrero Merlino, Wolfgang Hoschek, Tony Johnson, Andreas Pfeiffer, and others. -@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. - -@author Pavel Binko, Dino Ferrero Merlino, Wolfgang Hoschek, Tony Johnson, Andreas Pfeiffer, and others. -@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. -@see <a href="http://wwwinfo.cern.ch/asd/lhc++/AIDA/">AIDA</a> -@author Pavel Binko, Dino Ferrero Merlino, Wolfgang Hoschek, Tony Johnson, Andreas Pfeiffer, and others. -@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. -@see <a href="http://wwwinfo.cern.ch/asd/lhc++/AIDA/">AIDA</a> -@author Pavel Binko, Dino Ferrero Merlino, Wolfgang Hoschek, Tony Johnson, Andreas Pfeiffer, and others. -@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. -@see <a href="http://wwwinfo.cern.ch/asd/lhc++/AIDA/">AIDA</a> -@author Pavel Binko, Dino Ferrero Merlino, Wolfgang Hoschek, Tony Johnson, Andreas Pfeiffer, and others. -@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 _______________________________________________ debian-med-commit mailing list [email protected] http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/debian-med-commit
