[med-svn] [colt] 02/03: Add latest status of SVN: 1.2.0+dfsg-2biolinux4

Andreas Tille tille at debian.org
Sun Feb 22 19:49:59 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 3ccdfeec905fe2fa9fcefb784e441b366d136ba7
Author: Andreas Tille <tille at debian.org>
Date:   Sun Feb 22 20:44:11 2015 +0100

    Add latest status of SVN: 1.2.0+dfsg-2biolinux4
---
 debian/changelog                                   |  57 ++
 debian/compat                                      |   1 +
 debian/control                                     |  59 ++
 debian/copyright                                   |  39 +
 debian/get-orig-source                             |  33 +
 debian/libcolt-java-doc.javadoc                    |   1 +
 debian/libcolt-java.jlibs                          |   1 +
 debian/manifest                                    |   2 +
 .../build_without_aida_interface_defs.patch        | 948 +++++++++++++++++++++
 debian/patches/series                              |   2 +
 .../use_debian_packaged_concurrent_jar.patch       |  14 +
 debian/rules                                       |  23 +
 debian/source/format                               |   1 +
 debian/watch                                       |   4 +
 14 files changed, 1185 insertions(+)

diff --git a/debian/changelog b/debian/changelog
new file mode 100644
index 0000000..67cc383
--- /dev/null
+++ b/debian/changelog
@@ -0,0 +1,57 @@
+colt (1.2.0+dfsg-2biolinux4) precise; urgency=low
+
+  * Attempt to build without src/hep/aida/*.java
+    See notes in patches/build_without_aida_interface_defs.patch
+
+ -- Tim Booth <tbooth at ceh.ac.uk>  Tue, 22 Apr 2014 14:20:29 +0100
+
+colt (1.2.0+dfsg-2biolinux3) precise; urgency=low
+
+  * Rebuild for Ubuntu LTS/Bio-Linux
+
+ -- Tim Booth <tbooth at ceh.ac.uk>  Wed, 02 Apr 2014 17:26:08 +0100
+
+colt (1.2.0+dfsg-2) unstable; urgency=low
+
+  * Upload to unstable
+    Closes: #720553
+  * cme fix dpkg-control
+  * anonscm in Vcs fields
+
+ -- Andreas Tille <tille at debian.org>  Fri, 23 Aug 2013 13:58:03 +0200
+
+colt (1.2.0+dfsg-1) experimental; urgency=low
+
+  * debian/copyright:
+     - DEP5
+     - Add Files-Excluded to document what was removed from original source
+  * debian/{control,rules}: use default java implementation
+    thanks for the patch to James Page <james.page at ubuntu.com>
+    Closes: #683528
+  * debian/control: Standards-Version: 3.9.4
+
+ -- Andreas Tille <tille at debian.org>  Mon, 17 Dec 2012 15:52:07 +0100
+
+colt (1.2.0~nojar-2) unstable; urgency=low
+
+  * debian/control:
+     - Pure Java is arch: all
+     - Standards-Version: 3.9.3 (no changes needed)
+  * debhelper 9 (control+compat)
+
+ -- Andreas Tille <tille at debian.org>  Tue, 19 Jun 2012 09:46:59 +0200
+
+colt (1.2.0~nojar-1) unstable; urgency=low
+
+  * Initial release (Closes: #656741)
+  * Remark: The package version "~nojar" was chosen in contrast to the
+    previous "~dfsg" to reflect that binary JAR files which are unneeded
+    are stripped from the upstream tarball to avoid more trouble with
+    licensing issues.  So the only issue with the explicte exclusion of
+    military applications remains and is the reason for upload to non-free.
+    However at least the final target beast-mcmc could go to contrib.
+    Remark2: I'm not sure what "military applications" actually means
+    without a proper definition and whether this license is applicable at
+    all.
+
+ -- Andreas Tille <tille at debian.org>  Tue, 24 Jan 2012 12:16:20 +0100
diff --git a/debian/compat b/debian/compat
new file mode 100644
index 0000000..ec63514
--- /dev/null
+++ b/debian/compat
@@ -0,0 +1 @@
+9
diff --git a/debian/control b/debian/control
new file mode 100644
index 0000000..68188a7
--- /dev/null
+++ b/debian/control
@@ -0,0 +1,59 @@
+Source: colt
+Maintainer: Debian Med Packaging Team <debian-med-packaging at lists.alioth.debian.org>
+Uploaders: Andreas Tille <tille at debian.org>
+Section: non-free/java
+Priority: optional
+Build-Depends: debhelper (>= 9),
+               javahelper (>=0.25),
+               default-jdk,
+               ant,
+               libconcurrent-java
+Standards-Version: 3.9.4
+Vcs-Browser: http://anonscm.debian.org/viewvc/debian-med/trunk/packages/libcolt-java/trunk/
+Vcs-Svn: svn://anonscm.debian.org/debian-med/trunk/packages/libcolt-java/trunk/
+Homepage: http://acs.lbl.gov/software/colt/
+
+Package: libcolt-java
+Architecture: all
+Depends: ${shlibs:Depends},
+         ${misc:Depends},
+         ${java:Depends}
+Recommends: ${java:Recommends}
+Description: scalable scientific and technical computing in Java
+ This distribution provides an infrastructure for scalable scientific
+ and technical computing in Java. It is particularly useful in the domain
+ of High Energy Physics at CERN: It contains, among others, efficient and
+ usable data structures and algorithms for Off-line and On-line Data
+ Analysis, Linear Algebra, Multi-dimensional arrays, Statistics,
+ Histogramming, Monte Carlo Simulation, Parallel & Concurrent
+ Programming. It summons some of the best concepts, designs and
+ implementations thought up over time by the community, ports or improves
+ them and introduces new approaches where need arises. In overlapping
+ areas, it is competitive or superior to toolkits such as STL, Root,
+ HTL, CLHEP, TNT, GSL, C-RAND / WIN-RAND, (all C/C++) as well as  IBM
+ Array,  JDK 1.2 Collections framework (all Java), in terms of
+ performance, functionality and (re)usability. 
+
+Package: libcolt-java-doc
+Architecture: all
+Section: non-free/doc
+Depends: ${java:Depends},
+         ${misc:Depends}
+Recommends: ${java:Recommends}
+Description: scalable scientific and technical computing in Java (doc)
+ This distribution provides an infrastructure for scalable scientific
+ and technical computing in Java. It is particularly useful in the domain
+ of High Energy Physics at CERN: It contains, among others, efficient and
+ usable data structures and algorithms for Off-line and On-line Data
+ Analysis, Linear Algebra, Multi-dimensional arrays, Statistics,
+ Histogramming, Monte Carlo Simulation, Parallel & Concurrent
+ Programming. It summons some of the best concepts, designs and
+ implementations thought up over time by the community, ports or improves
+ them and introduces new approaches where need arises. In overlapping
+ areas, it is competitive or superior to toolkits such as STL, Root,
+ HTL, CLHEP, TNT, GSL, C-RAND / WIN-RAND, (all C/C++) as well as  IBM
+ Array,  JDK 1.2 Collections framework (all Java), in terms of
+ performance, functionality and (re)usability. 
+ .
+ This package provides the documentation for the library
+
diff --git a/debian/copyright b/debian/copyright
new file mode 100644
index 0000000..9a924ce
--- /dev/null
+++ b/debian/copyright
@@ -0,0 +1,39 @@
+Format: http://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
+Upstream-Name: colt
+Upstream-Contact: Wolfgang Hoschek <whoschek at lbl.gov>
+Source: http://acs.lbl.gov/software/colt/
+Files-Excluded:
+    *concurrent*
+    *.jar
+
+Files: src/cern/*
+Copyright: © 1999 CERN - European Organization for Nuclear Research
+             Wolfgang Hoschek <wolfgang.hoschek at cern.ch>
+License: Colt_License_Agreement
+    Permission to use, copy, modify, distribute and sell this software and its
+    documentation for any purpose is hereby granted without fee, provided that
+    the above copyright notice appear in all copies and that both that
+    copyright notice and this permission notice appear in supporting
+    documentation. CERN makes no representations about the suitability of this
+    software for any purpose. It is provided "as is" without expressed or
+    implied warranty.
+
+Files: src/hep.aida.*
+Copyright: © 2004 Pavel Binko, Dino Ferrero Merlino, Wolfgang Hoschek, Tony Johnson, Andreas Pfeiffer, and others.
+License: LGPL-no-military
+ hep.aida.* is non-free according to the information in xdocs/license.xml:
+ .
+  Permission to use and/or redistribute this work is granted under the terms of
+  the LGPL License, with the exception that any usage related to military
+  applications is expressly forbidden. The software and documentation made
+  available under the terms of this license are provided with no warranty.
+ .
+ On Debian systems, you can read the full text of the GNU Lesser General Public
+ License in ‘/usr/share/common-licenses/LGPL’.
+
+Files: debian/*
+Copyright: © 2012 Andreas Tille <tille at debian.org>
+License: LGPL
+ On Debian systems, you can read the full text of the GNU Lesser General Public
+ License in ‘/usr/share/common-licenses/LGPL’.
+
diff --git a/debian/get-orig-source b/debian/get-orig-source
new file mode 100755
index 0000000..5d91f9a
--- /dev/null
+++ b/debian/get-orig-source
@@ -0,0 +1,33 @@
+#!/bin/sh
+# get source for libcolt-java and remove unneeded jars
+
+set -e
+NAME=`dpkg-parsechangelog | awk '/^Source/ { print $2 }'`
+
+if ! echo $@ | grep -q upstream-version ; then
+    VERSION=`dpkg-parsechangelog | awk '/^Version:/ { print $2 }' | sed 's/\([0-9\.]\+\)-[0-9]\+$/\1/'`
+else
+    VERSION=`echo $@ | sed "s?^.*--upstream-version \([0-9.]\+\) .*${NAME}.*?\1?"`
+    if echo "$VERSION" | grep -q "upstream-version" ; then
+        echo "Unable to parse version number"
+        exit
+    fi
+fi
+
+UPSTREAMTAR=${NAME}-${VERSION}.tar.gz
+
+mkdir -p ../tarballs
+cd ../tarballs
+mv ../${UPSTREAMTAR} .
+tar -xzf ${UPSTREAMTAR}
+cd ${NAME}
+
+# Remove concurrent which is just packaged for Debian
+find . -name "*concurrent*" -delete
+
+# Remove unneeded JARs
+find . -name "*.jar" -delete
+
+cd ..
+GZIP="--best --no-name" tar --owner=root --group=root --mode=a+rX -czf "$NAME"_"$VERSION"~nojar.orig.tar.gz "${NAME}"
+rm -rf "${NAME}"
diff --git a/debian/libcolt-java-doc.javadoc b/debian/libcolt-java-doc.javadoc
new file mode 100644
index 0000000..2f83124
--- /dev/null
+++ b/debian/libcolt-java-doc.javadoc
@@ -0,0 +1 @@
+doc /usr/share/doc/libcolt-java
diff --git a/debian/libcolt-java.jlibs b/debian/libcolt-java.jlibs
new file mode 100644
index 0000000..8c5987b
--- /dev/null
+++ b/debian/libcolt-java.jlibs
@@ -0,0 +1 @@
+lib/*.jar
diff --git a/debian/manifest b/debian/manifest
new file mode 100644
index 0000000..288f01d
--- /dev/null
+++ b/debian/manifest
@@ -0,0 +1,2 @@
+/usr/share/java/colt.jar:
+ Class-Path: /usr/share/java/concurrent.jar
diff --git a/debian/patches/build_without_aida_interface_defs.patch b/debian/patches/build_without_aida_interface_defs.patch
new file mode 100644
index 0000000..06aac51
--- /dev/null
+++ b/debian/patches/build_without_aida_interface_defs.patch
@@ -0,0 +1,948 @@
+This patch forcefully rips out references to all the I*.java interface files
+that are not DFSG-free, having a "no military use" restriction.
+
+See: http://lists.alioth.debian.org/pipermail/debian-med-packaging/2014-April/025987.html
+
+However, it is ambiguous whether the files uder hep/aida/ref and hep/aida/bin are also
+under the non-free license.  Only Wolfgang Hoschek can answer this question and he has been
+sadly silent so far.  So I don't know if this patch actually solves anything or not.
+
+The code is (or should be) functionally equivalent since the interface defs contain no actual code,
+only function and class prototypes, and the process of removing them was mostly a matter of
+find-and-replace of the interface names with the implementing class names.  However the code
+is certainly less neat after this patch - especially as I forced VariableAxis to inherit from
+FixedAxis - and also any code which links against Colt and references the I* classes will fail
+to build and will require patching too.
+
+-- Tim Booth <tbooth at ceh.ac.uk>, April 2014
+
+--- a/src/hep/aida/ref/Util.java
++++ b/src/hep/aida/ref/Util.java
+@@ -1,8 +1,5 @@
+ package hep.aida.ref;
+ 
+-import hep.aida.IHistogram1D;
+-import hep.aida.IHistogram2D;
+-
+ /**
+  * Convenient histogram utilities. 
+  */
+@@ -15,7 +12,7 @@
+ 	/** 
+ 	 * Returns the index of the in-range bin containing the maxBinHeight().
+ 	 */ 
+-	public int maxBin(IHistogram1D h)
++	public int maxBin(Histogram1D h)
+ 	{
+ 		int maxBin = -1;
+ 		double maxValue = Double.MIN_VALUE;
+@@ -31,7 +28,7 @@
+ 	/** 
+ 	 * Returns the indexX of the in-range bin containing the maxBinHeight().
+ 	 */ 
+-	public int maxBinX(IHistogram2D h)
++	public int maxBinX(Histogram2D h)
+ 	{
+ 		double maxValue = Double.MIN_VALUE;
+ 		int maxBinX = -1;
+@@ -51,7 +48,7 @@
+ 	/** 
+ 	 * Returns the indexY of the in-range bin containing the maxBinHeight().
+ 	 */ 
+-	public int maxBinY(IHistogram2D h)
++	public int maxBinY(Histogram2D h)
+ 	{
+ 		double maxValue = Double.MIN_VALUE;
+ 		int maxBinX = -1;
+@@ -71,7 +68,7 @@
+ 	/** 
+ 	 * Returns the index of the in-range bin containing the minBinHeight().
+ 	 */ 
+-	public int minBin(IHistogram1D h)
++	public int minBin(Histogram1D h)
+ 	{
+ 		int minBin = -1;
+ 		double minValue = Double.MAX_VALUE;
+@@ -87,7 +84,7 @@
+ 	/** 
+ 	 * Returns the indexX of the in-range bin containing the minBinHeight().
+ 	 */ 
+-	public int minBinX(IHistogram2D h)
++	public int minBinX(Histogram2D h)
+ 	{
+ 		double minValue = Double.MAX_VALUE;
+ 		int minBinX = -1;
+@@ -107,7 +104,7 @@
+ 	/** 
+ 	 * Returns the indexY of the in-range bin containing the minBinHeight().
+ 	 */ 
+-	public int minBinY(IHistogram2D h)
++	public int minBinY(Histogram2D h)
+ 	{
+ 		double minValue = Double.MAX_VALUE;
+ 		int minBinX = -1;
+--- a/src/cern/colt/matrix/doublealgo/Statistic.java
++++ b/src/cern/colt/matrix/doublealgo/Statistic.java
+@@ -317,7 +317,7 @@
+ @return the histogram containing the cube.
+ @throws IllegalArgumentException if <tt>x.size() != y.size() || y.size() != weights.size()</tt>.
+ */
+-public static hep.aida.IHistogram2D cube(DoubleMatrix1D x, DoubleMatrix1D y, DoubleMatrix1D weights) {
++public static hep.aida.ref.Histogram2D cube(DoubleMatrix1D x, DoubleMatrix1D y, DoubleMatrix1D weights) {
+ 	if (x.size() != y.size() || y.size() != weights.size()) throw new IllegalArgumentException("vectors must have same size");
+ 	
+ 	double epsilon = 1.0E-9;
+@@ -332,7 +332,7 @@
+ 	// since bins are right-open [from,to) we need an additional dummy bin so that the last distinct value does not fall into the overflow bin
+ 	if (distinct.size()>0) distinct.add(distinct.get(distinct.size()-1) + epsilon);
+ 	distinct.trimToSize();
+-	hep.aida.IAxis xaxis = new hep.aida.ref.VariableAxis(distinct.elements());
++	hep.aida.ref.VariableAxis xaxis = new hep.aida.ref.VariableAxis(distinct.elements());
+ 
+ 	// compute distinct values of y
+ 	y.toArray(vals);
+@@ -341,9 +341,9 @@
+ 	// since bins are right-open [from,to) we need an additional dummy bin so that the last distinct value does not fall into the overflow bin
+ 	if (distinct.size()>0) distinct.add(distinct.get(distinct.size()-1) + epsilon);
+ 	distinct.trimToSize();
+-	hep.aida.IAxis yaxis = new hep.aida.ref.VariableAxis(distinct.elements());
++	hep.aida.ref.VariableAxis yaxis = new hep.aida.ref.VariableAxis(distinct.elements());
+ 
+-	hep.aida.IHistogram2D histo = new hep.aida.ref.Histogram2D("Cube",xaxis,yaxis);
++	hep.aida.ref.Histogram2D histo = new hep.aida.ref.Histogram2D("Cube",xaxis,yaxis);
+ 	return histogram(histo,x,y,weights);
+ }
+ /**
+@@ -356,7 +356,7 @@
+ @return the histogram containing the cube.
+ @throws IllegalArgumentException if <tt>x.size() != y.size() || x.size() != z.size() || x.size() != weights.size()</tt>.
+ */
+-public static hep.aida.IHistogram3D cube(DoubleMatrix1D x, DoubleMatrix1D y, DoubleMatrix1D z, DoubleMatrix1D weights) {
++public static hep.aida.ref.Histogram3D cube(DoubleMatrix1D x, DoubleMatrix1D y, DoubleMatrix1D z, DoubleMatrix1D weights) {
+ 	if (x.size() != y.size() || x.size() != z.size() || x.size() != weights.size()) throw new IllegalArgumentException("vectors must have same size");
+ 	
+ 	double epsilon = 1.0E-9;
+@@ -371,7 +371,7 @@
+ 	// since bins are right-open [from,to) we need an additional dummy bin so that the last distinct value does not fall into the overflow bin
+ 	if (distinct.size()>0) distinct.add(distinct.get(distinct.size()-1) + epsilon);
+ 	distinct.trimToSize();
+-	hep.aida.IAxis xaxis = new hep.aida.ref.VariableAxis(distinct.elements());
++	hep.aida.ref.VariableAxis xaxis = new hep.aida.ref.VariableAxis(distinct.elements());
+ 
+ 	// compute distinct values of y
+ 	y.toArray(vals);
+@@ -380,7 +380,7 @@
+ 	// since bins are right-open [from,to) we need an additional dummy bin so that the last distinct value does not fall into the overflow bin
+ 	if (distinct.size()>0) distinct.add(distinct.get(distinct.size()-1) + epsilon);
+ 	distinct.trimToSize();
+-	hep.aida.IAxis yaxis = new hep.aida.ref.VariableAxis(distinct.elements());
++	hep.aida.ref.VariableAxis yaxis = new hep.aida.ref.VariableAxis(distinct.elements());
+ 
+ 	// compute distinct values of z
+ 	z.toArray(vals);
+@@ -389,9 +389,9 @@
+ 	// since bins are right-open [from,to) we need an additional dummy bin so that the last distinct value does not fall into the overflow bin
+ 	if (distinct.size()>0) distinct.add(distinct.get(distinct.size()-1) + epsilon);
+ 	distinct.trimToSize();
+-	hep.aida.IAxis zaxis = new hep.aida.ref.VariableAxis(distinct.elements());
++	hep.aida.ref.VariableAxis zaxis = new hep.aida.ref.VariableAxis(distinct.elements());
+ 
+-	hep.aida.IHistogram3D histo = new hep.aida.ref.Histogram3D("Cube",xaxis,yaxis,zaxis);
++	hep.aida.ref.Histogram3D histo = new hep.aida.ref.Histogram3D("Cube",xaxis,yaxis,zaxis);
+ 	return histogram(histo,x,y,z,weights);
+ }
+ /**
+@@ -494,7 +494,7 @@
+  * Fills all cells of the given vector into the given histogram.
+  * @return <tt>histo</tt> (for convenience only).
+  */
+-public static hep.aida.IHistogram1D histogram(hep.aida.IHistogram1D histo, DoubleMatrix1D vector) {
++public static hep.aida.ref.Histogram1D histogram(hep.aida.ref.Histogram1D histo, DoubleMatrix1D vector) {
+ 	for (int i=vector.size(); --i >= 0; ) {
+ 		histo.fill(vector.getQuick(i));
+ 	}
+@@ -505,7 +505,7 @@
+  * @return <tt>histo</tt> (for convenience only).
+  * @throws IllegalArgumentException if <tt>x.size() != y.size()</tt>.
+  */
+-public static hep.aida.IHistogram2D histogram(hep.aida.IHistogram2D histo, DoubleMatrix1D x, DoubleMatrix1D y) {
++public static hep.aida.ref.Histogram2D histogram(hep.aida.ref.Histogram2D histo, DoubleMatrix1D x, DoubleMatrix1D y) {
+ 	if (x.size() != y.size()) throw new IllegalArgumentException("vectors must have same size");
+ 	for (int i=x.size(); --i >= 0; ) {
+ 		histo.fill(x.getQuick(i), y.getQuick(i));
+@@ -517,7 +517,7 @@
+  * @return <tt>histo</tt> (for convenience only).
+  * @throws IllegalArgumentException if <tt>x.size() != y.size() || y.size() != weights.size()</tt>.
+  */
+-public static hep.aida.IHistogram2D histogram(hep.aida.IHistogram2D histo, DoubleMatrix1D x, DoubleMatrix1D y, DoubleMatrix1D weights) {
++public static hep.aida.ref.Histogram2D histogram(hep.aida.ref.Histogram2D histo, DoubleMatrix1D x, DoubleMatrix1D y, DoubleMatrix1D weights) {
+ 	if (x.size() != y.size() || y.size() != weights.size()) throw new IllegalArgumentException("vectors must have same size");
+ 	for (int i=x.size(); --i >= 0; ) {
+ 		histo.fill(x.getQuick(i), y.getQuick(i), weights.getQuick(i));
+@@ -529,7 +529,7 @@
+  * @return <tt>histo</tt> (for convenience only).
+  * @throws IllegalArgumentException if <tt>x.size() != y.size() || x.size() != z.size() || x.size() != weights.size()</tt>.
+  */
+-public static hep.aida.IHistogram3D histogram(hep.aida.IHistogram3D histo, DoubleMatrix1D x, DoubleMatrix1D y, DoubleMatrix1D z, DoubleMatrix1D weights) {
++public static hep.aida.ref.Histogram3D histogram(hep.aida.ref.Histogram3D histo, DoubleMatrix1D x, DoubleMatrix1D y, DoubleMatrix1D z, DoubleMatrix1D weights) {
+ 	if (x.size() != y.size() || x.size() != z.size() || x.size() != weights.size()) throw new IllegalArgumentException("vectors must have same size");
+ 	for (int i=x.size(); --i >= 0; ) {
+ 		histo.fill(x.getQuick(i), y.getQuick(i), z.getQuick(i), weights.getQuick(i));
+--- a/src/hep/aida/ref/AbstractHistogram2D.java
++++ b/src/hep/aida/ref/AbstractHistogram2D.java
+@@ -1,18 +1,14 @@
+ package hep.aida.ref;
+ 
+-import hep.aida.IAxis;
+-import hep.aida.IHistogram;
+-import hep.aida.IHistogram1D;
+-import hep.aida.IHistogram2D;
+ /**
+ Abstract base class extracting and implementing most of the redundancy of the interface.
+ 
+ @author Wolfgang Hoschek, Tony Johnson, and others.
+ @version 1.0, 23/03/2000
+ */
+-abstract class AbstractHistogram2D extends Histogram implements IHistogram2D
++abstract class AbstractHistogram2D extends Histogram
+ {
+-	protected IAxis xAxis, yAxis;
++	protected FixedAxis xAxis, yAxis;
+ 	AbstractHistogram2D(String title)
+ 	{
+ 		super(title);
+@@ -75,7 +71,7 @@
+ 	 * <b>Note 2</b>indexY1 and indexY2 may include the use of under and over flow bins
+ 	 * <b>Note 3</b>There is no note 3 (yet)
+ 	 */
+-	protected abstract IHistogram1D internalSliceX(String title, int indexY1, int indexY2);
++	protected abstract Histogram1D internalSliceX(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
+@@ -86,7 +82,7 @@
+ 	 * <b>Note 2</b>indexX1 and indexX2 may include the use of under and over flow bins
+ 	 * <b>Note 3</b>There is no note 3 (yet)
+ 	 */
+-	protected abstract IHistogram1D internalSliceY(String title, int indexX1, int indexX2);
++	protected abstract Histogram1D internalSliceY(String title, int indexX1, int indexX2);
+ /**
+ 	 * Package private method to map from the external representation of bin
+ 	 * number to our internal representation of bin number
+@@ -96,8 +92,8 @@
+ 		int bins = xAxis.bins() + 2;
+ 		if (index >= bins) throw new IllegalArgumentException("bin="+index);
+ 		if (index >= 0) return index+1;
+-		if (index == IHistogram.UNDERFLOW) return 0;
+-		if (index == IHistogram.OVERFLOW) return bins-1;
++		if (index == Histogram.UNDERFLOW) return 0;
++		if (index == Histogram.OVERFLOW) return bins-1;
+ 		throw new IllegalArgumentException("bin="+index);
+ 	}
+ /**
+@@ -109,8 +105,8 @@
+ 		int bins = yAxis.bins() + 2;
+ 		if (index >= bins) throw new IllegalArgumentException("bin="+index);
+ 		if (index >= 0) return index+1;
+-		if (index == IHistogram.UNDERFLOW) return 0;
+-		if (index == IHistogram.OVERFLOW) return bins-1;
++		if (index == Histogram.UNDERFLOW) return 0;
++		if (index == Histogram.OVERFLOW) return bins-1;
+ 		throw new IllegalArgumentException("bin="+index);
+ 	}
+ 	public int[] minMaxBins()
+@@ -139,26 +135,26 @@
+ 		int[] result = {minBinX,minBinY, maxBinX,maxBinY};
+ 		return result;
+ 	}
+-	public IHistogram1D projectionX()
++	public Histogram1D projectionX()
+ 	{
+ 		String newTitle = title() + " (projectionX)";
+ 		//return internalSliceX(newTitle,yAxis.under,yAxis.over);
+-		return internalSliceX(newTitle,mapY(IHistogram.UNDERFLOW),mapY(IHistogram.OVERFLOW));
++		return internalSliceX(newTitle,mapY(Histogram.UNDERFLOW),mapY(Histogram.OVERFLOW));
+ 	}
+-	public IHistogram1D projectionY()
++	public Histogram1D projectionY()
+ 	{
+ 		String newTitle = title() + " (projectionY)";
+ 		//return internalSliceY(newTitle,xAxis.under,xAxis.over);
+-		return internalSliceY(newTitle,mapX(IHistogram.UNDERFLOW),mapX(IHistogram.OVERFLOW));
++		return internalSliceY(newTitle,mapX(Histogram.UNDERFLOW),mapX(Histogram.OVERFLOW));
+ 	}
+-	public IHistogram1D sliceX(int indexY)
++	public Histogram1D sliceX(int indexY)
+ 	{
+ 		//int start = yAxis.map(indexY);
+ 		int start = mapY(indexY);
+ 		String newTitle = title() + " (sliceX ["+indexY+"])";
+ 		return internalSliceX(newTitle,start,start);
+ 	}
+-	public IHistogram1D sliceX(int indexY1, int indexY2)
++	public Histogram1D sliceX(int indexY1, int indexY2)
+ 	{
+ 		//int start = yAxis.map(indexY1);
+ 		//int stop = yAxis.map(indexY2);
+@@ -167,14 +163,14 @@
+ 		String newTitle = title() + " (sliceX ["+indexY1+":"+indexY2+"])";
+ 		return internalSliceX(newTitle,start,stop);
+ 	}
+-	public IHistogram1D sliceY(int indexX)
++	public Histogram1D sliceY(int indexX)
+ 	{
+ 		//int start = xAxis.map(indexX);
+ 		int start = mapX(indexX);
+ 		String newTitle = title() + " (sliceY ["+indexX+"])";
+ 		return internalSliceY(newTitle,start,start);
+ 	}
+-	public IHistogram1D sliceY(int indexX1, int indexX2)
++	public Histogram1D sliceY(int indexX1, int indexX2)
+ 	{
+ 		//int start = xAxis.map(indexX1);
+ 		//int stop = xAxis.map(indexX2);
+@@ -207,12 +203,15 @@
+ 	{
+ 		return sumAllBinHeights() - sumBinHeights();
+ 	}
+-	public IAxis xAxis()
++	public FixedAxis xAxis()
+ 	{
+ 		return xAxis;
+ 	}
+-	public IAxis yAxis()
++	public FixedAxis yAxis()
+ 	{
+ 		return yAxis;
+ 	}
++	public abstract double binHeight(int indexX, int indexY);
++	public abstract int binEntries(int indexX, int indexY);
++	public abstract void fill(double x, double y, double weight);
+ }
+--- a/src/hep/aida/ref/Histogram.java
++++ b/src/hep/aida/ref/Histogram.java
+@@ -6,7 +6,7 @@
+ @author Wolfgang Hoschek, Tony Johnson, and others.
+ @version 1.0, 23/03/2000
+ */
+-abstract class Histogram implements hep.aida.IHistogram
++abstract class Histogram
+ {
+ 	private String title;
+ 	Histogram(String title)
+@@ -17,4 +17,13 @@
+ 	{
+ 		return title;
+ 	}
++
++	/**
++	 * 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;
+ }
+--- a/src/hep/aida/ref/Histogram2D.java
++++ b/src/hep/aida/ref/Histogram2D.java
+@@ -1,8 +1,5 @@
+ package hep.aida.ref;
+ 
+-import hep.aida.IAxis;
+-import hep.aida.IHistogram1D;
+-import hep.aida.IHistogram2D;
+ /**
+ A reference implementation of hep.aida.IHistogram2D.
+ The goal is to provide a clear implementation rather than the most efficient implementation.
+@@ -11,7 +8,7 @@
+ @author Wolfgang Hoschek, Tony Johnson, and others.
+ @version 1.0, 23/03/2000
+ */
+-public class Histogram2D extends AbstractHistogram2D implements IHistogram2D
++public class Histogram2D extends AbstractHistogram2D
+ {
+ 	private double[][] heights;
+ 	private double[][] errors;
+@@ -58,7 +55,7 @@
+ 	 * @param xAxis The x-axis description to be used for binning.
+ 	 * @param yAxis The y-axis description to be used for binning.
+ 	 */
+-	public Histogram2D(String title, IAxis xAxis, IAxis yAxis)
++	public Histogram2D(String title, FixedAxis xAxis, FixedAxis yAxis)
+ 	{
+ 		super(title);
+ 		this.xAxis = xAxis;
+@@ -138,7 +135,7 @@
+ 	 * <b>Note 2</b>indexY1 and indexY2 may include the use of under and over flow bins
+ 	 * <b>Note 3</b>There is no note 3 (yet)
+ 	 */
+-	protected IHistogram1D internalSliceX(String title, int indexY1, int indexY2)
++	protected Histogram1D internalSliceX(String title, int indexY1, int indexY2)
+ 	{
+ 		// Attention: our internal definition of bins has been choosen
+ 		// so that this works properly even if the indeces passed in include
+@@ -174,7 +171,7 @@
+ 	 * <b>Note 2</b>indexX1 and indexX2 may include the use of under and over flow bins
+ 	 * <b>Note 3</b>There is no note 3 (yet)
+ 	 */
+-	protected IHistogram1D internalSliceY(String title, int indexX1, int indexX2)
++	protected Histogram1D internalSliceY(String title, int indexX1, int indexX2)
+ 	{
+ 		// Attention: our internal definition of bins has been choosen
+ 		// so that this works properly even if the indeces passed in include
+--- a/src/hep/aida/ref/AbstractHistogram3D.java
++++ b/src/hep/aida/ref/AbstractHistogram3D.java
+@@ -1,18 +1,14 @@
+ package hep.aida.ref;
+ 
+-import hep.aida.IAxis;
+-import hep.aida.IHistogram;
+-import hep.aida.IHistogram2D;
+-import hep.aida.IHistogram3D;
+ /**
+ Abstract base class extracting and implementing most of the redundancy of the interface.
+ 
+ @author Wolfgang Hoschek, Tony Johnson, and others.
+ @version 1.0, 23/03/2000
+ */
+-abstract class AbstractHistogram3D extends Histogram implements IHistogram3D
++abstract class AbstractHistogram3D extends Histogram
+ {
+-	protected IAxis xAxis, yAxis, zAxis;
++	protected FixedAxis xAxis, yAxis, zAxis;
+ 	AbstractHistogram3D(String title)
+ 	{
+ 		super(title);
+@@ -61,7 +57,7 @@
+ 	 * <b>Note 2</b>indexX1 and indexX2 may include the use of under and over flow bins
+ 	 * <b>Note 3</b>There is no note 3 (yet)
+ 	 */
+-	protected abstract IHistogram2D internalSliceXY(String title, int indexZ1, int indexZ2);
++	protected abstract Histogram2D internalSliceXY(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
+@@ -72,7 +68,7 @@
+ 	 * <b>Note 2</b>indexY1 and indexY2 may include the use of under and over flow bins
+ 	 * <b>Note 3</b>There is no note 3 (yet)
+ 	 */
+-	protected abstract IHistogram2D internalSliceXZ(String title, int indexY1, int indexY2);
++	protected abstract Histogram2D internalSliceXZ(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
+@@ -83,7 +79,7 @@
+ 	 * <b>Note 2</b>indexX1 and indexX2 may include the use of under and over flow bins
+ 	 * <b>Note 3</b>There is no note 3 (yet)
+ 	 */
+-	protected abstract IHistogram2D internalSliceYZ(String title, int indexX1, int indexX2);
++	protected abstract Histogram2D internalSliceYZ(String title, int indexX1, int indexX2);
+ 	/**
+ 	 * Package private method to map from the external representation of bin
+ 	 * number to our internal representation of bin number
+@@ -93,8 +89,8 @@
+ 		int bins = xAxis.bins() + 2;
+ 		if (index >= bins) throw new IllegalArgumentException("bin="+index);
+ 		if (index >= 0) return index+1;
+-		if (index == IHistogram.UNDERFLOW) return 0;
+-		if (index == IHistogram.OVERFLOW) return bins-1;
++		if (index == Histogram.UNDERFLOW) return 0;
++		if (index == Histogram.OVERFLOW) return bins-1;
+ 		throw new IllegalArgumentException("bin="+index);
+ 	}
+ 	/**
+@@ -106,8 +102,8 @@
+ 		int bins = yAxis.bins() + 2;
+ 		if (index >= bins) throw new IllegalArgumentException("bin="+index);
+ 		if (index >= 0) return index+1;
+-		if (index == IHistogram.UNDERFLOW) return 0;
+-		if (index == IHistogram.OVERFLOW) return bins-1;
++		if (index == Histogram.UNDERFLOW) return 0;
++		if (index == Histogram.OVERFLOW) return bins-1;
+ 		throw new IllegalArgumentException("bin="+index);
+ 	}
+ 	/**
+@@ -119,8 +115,8 @@
+ 		int bins = zAxis.bins() + 2;
+ 		if (index >= bins) throw new IllegalArgumentException("bin="+index);
+ 		if (index >= 0) return index+1;
+-		if (index == IHistogram.UNDERFLOW) return 0;
+-		if (index == IHistogram.OVERFLOW) return bins-1;
++		if (index == Histogram.UNDERFLOW) return 0;
++		if (index == Histogram.OVERFLOW) return bins-1;
+ 		throw new IllegalArgumentException("bin="+index);
+ 	}
+ 	public int[] minMaxBins()
+@@ -155,48 +151,48 @@
+ 		int[] result = {minBinX,minBinY,minBinZ, maxBinX,maxBinY,maxBinZ};
+ 		return result;
+ 	}
+-	public IHistogram2D projectionXY()
++	public Histogram2D projectionXY()
+ 	{
+ 		String newTitle = title() + " (projectionXY)";
+-		return internalSliceXY(newTitle,mapZ(IHistogram.UNDERFLOW),mapZ(IHistogram.OVERFLOW));
++		return internalSliceXY(newTitle,mapZ(Histogram.UNDERFLOW),mapZ(Histogram.OVERFLOW));
+ 	}
+-	public IHistogram2D projectionXZ()
++	public Histogram2D projectionXZ()
+ 	{
+ 		String newTitle = title() + " (projectionXZ)";
+-		return internalSliceXZ(newTitle,mapY(IHistogram.UNDERFLOW),mapY(IHistogram.OVERFLOW));
++		return internalSliceXZ(newTitle,mapY(Histogram.UNDERFLOW),mapY(Histogram.OVERFLOW));
+ 	}
+-	public IHistogram2D projectionYZ()
++	public Histogram2D projectionYZ()
+ 	{
+ 		String newTitle = title() + " (projectionYZ)";
+-		return internalSliceYZ(newTitle,mapX(IHistogram.UNDERFLOW),mapX(IHistogram.OVERFLOW));
++		return internalSliceYZ(newTitle,mapX(Histogram.UNDERFLOW),mapX(Histogram.OVERFLOW));
+ 	}
+-	public IHistogram2D sliceXY(int indexZ )
++	public Histogram2D sliceXY(int indexZ )
+ 	{
+ 		return sliceXY(indexZ,indexZ);
+ 	}
+-	public IHistogram2D sliceXY(int indexZ1, int indexZ2)
++	public Histogram2D sliceXY(int indexZ1, int indexZ2)
+ 	{
+ 		int start = mapZ(indexZ1);
+ 		int stop = mapZ(indexZ2);
+ 		String newTitle = title() + " (sliceXY ["+indexZ1+":"+indexZ2+"])";
+ 		return internalSliceXY(newTitle,start,stop);
+ 	}
+-	public IHistogram2D sliceXZ(int indexY )
++	public Histogram2D sliceXZ(int indexY )
+ 	{
+ 		return sliceXZ(indexY,indexY);
+ 	}
+-	public IHistogram2D sliceXZ(int indexY1, int indexY2)
++	public Histogram2D sliceXZ(int indexY1, int indexY2)
+ 	{
+ 		int start = mapY(indexY1);
+ 		int stop = mapY(indexY2);
+ 		String newTitle = title() + " (sliceXZ ["+indexY1+":"+indexY2+"])";
+ 		return internalSliceXY(newTitle,start,stop);
+ 	}
+-	public IHistogram2D sliceYZ(int indexX )
++	public Histogram2D sliceYZ(int indexX )
+ 	{
+ 		return sliceYZ(indexX,indexX);
+ 	}
+-	public IHistogram2D sliceYZ(int indexX1, int indexX2)
++	public Histogram2D sliceYZ(int indexX1, int indexX2)
+ 	{
+ 		int start = mapX(indexX1);
+ 		int stop = mapX(indexX2);
+@@ -229,16 +225,19 @@
+ 	{
+ 		return sumAllBinHeights() - sumBinHeights();
+ 	}
+-	public IAxis xAxis()
++	public FixedAxis xAxis()
+ 	{
+ 		return xAxis;
+ 	}
+-	public IAxis yAxis()
++	public FixedAxis yAxis()
+ 	{
+ 		return yAxis;
+ 	}
+-	public IAxis zAxis()
++	public FixedAxis zAxis()
+ 	{
+ 		return zAxis;
+ 	}
++	public abstract double binHeight(int indexX, int indexY, int indexZ);
++	public abstract int binEntries(int indexX, int indexY, int indexZ);
++	public abstract void fill(double x, double y, double z, double weight);
+ }
+--- a/src/hep/aida/ref/Histogram3D.java
++++ b/src/hep/aida/ref/Histogram3D.java
+@@ -1,8 +1,5 @@
+ package hep.aida.ref;
+ 
+-import hep.aida.IAxis;
+-import hep.aida.IHistogram2D;
+-import hep.aida.IHistogram3D;
+ /**
+ A reference implementation of hep.aida.IHistogram3D.
+ The goal is to provide a clear implementation rather than the most efficient implementation.
+@@ -11,7 +8,7 @@
+ @author Wolfgang Hoschek, Tony Johnson, and others.
+ @version 1.0, 23/03/2000
+ */
+-public class Histogram3D extends AbstractHistogram3D implements IHistogram3D
++public class Histogram3D extends AbstractHistogram3D
+ {
+ 	private double[][][] heights;
+ 	private double[][][] errors;
+@@ -66,7 +63,7 @@
+ 	 * @param yAxis The y-axis description to be used for binning.
+ 	 * @param zAxis The z-axis description to be used for binning.
+ 	 */
+-	public Histogram3D(String title, IAxis xAxis, IAxis yAxis, IAxis zAxis)
++	public Histogram3D(String title, FixedAxis xAxis, FixedAxis yAxis, FixedAxis zAxis)
+ 	{
+ 		super(title);
+ 		this.xAxis = xAxis;
+@@ -147,7 +144,7 @@
+ 	 * <b>Note 2</b>indexX1 and indexX2 may include the use of under and over flow bins
+ 	 * <b>Note 3</b>There is no note 3 (yet)
+ 	 */
+-	protected IHistogram2D internalSliceXY(String title, int indexZ1, int indexZ2)
++	protected Histogram2D internalSliceXY(String title, int indexZ1, int indexZ2)
+ 	{
+ 		// Attention: our internal definition of bins has been choosen
+ 		// so that this works properly even if the indeces passed in include
+@@ -186,7 +183,7 @@
+ 	 * <b>Note 2</b>indexY1 and indexY2 may include the use of under and over flow bins
+ 	 * <b>Note 3</b>There is no note 3 (yet)
+ 	 */
+-	protected IHistogram2D internalSliceXZ(String title, int indexY1, int indexY2)
++	protected Histogram2D internalSliceXZ(String title, int indexY1, int indexY2)
+ 	{
+ 		// Attention: our internal definition of bins has been choosen
+ 		// so that this works properly even if the indeces passed in include
+@@ -225,7 +222,7 @@
+ 	 * <b>Note 2</b>indexX1 and indexX2 may include the use of under and over flow bins
+ 	 * <b>Note 3</b>There is no note 3 (yet)
+ 	 */
+-	protected IHistogram2D internalSliceYZ(String title, int indexX1, int indexX2)
++	protected Histogram2D internalSliceYZ(String title, int indexX1, int indexX2)
+ 	{
+ 		// Attention: our internal definition of bins has been choosen
+ 		// so that this works properly even if the indeces passed in include
+--- a/src/hep/aida/ref/FixedAxis.java
++++ b/src/hep/aida/ref/FixedAxis.java
+@@ -1,14 +1,12 @@
+ package hep.aida.ref;
+ 
+-import hep.aida.IAxis;
+-import hep.aida.IHistogram;
+ /**
+ Fixed-width axis; A reference implementation of hep.aida.IAxis.
+ 
+ @author Wolfgang Hoschek, Tony Johnson, and others.
+ @version 1.0, 23/03/2000
+ */
+-public class FixedAxis implements IAxis
++public class FixedAxis implements java.io.Serializable
+ {
+ 	private int bins;
+ 	private double min;
+@@ -41,14 +39,15 @@
+ 		//this.over = bins+1;
+ 
+ 	}
++	FixedAxis() {  } //Null constructor for VariableAxis
+ 	public double binCentre(int index)
+ 	{
+ 		return min + binWidth*index + binWidth/2;
+ 	}
+ 	public double binLowerEdge(int index)
+ 	{
+-		if (index == IHistogram.UNDERFLOW) return Double.NEGATIVE_INFINITY;
+-		if (index == IHistogram.OVERFLOW) return upperEdge();
++		if (index == Histogram.UNDERFLOW) return Double.NEGATIVE_INFINITY;
++		if (index == Histogram.OVERFLOW) return upperEdge();
+ 		return min + binWidth*index;
+ 	}
+ 	public int bins()
+@@ -57,8 +56,8 @@
+ 	}
+ 	public double binUpperEdge(int index)
+ 	{
+-		if (index == IHistogram.UNDERFLOW) return min;
+-		if (index == IHistogram.OVERFLOW) return Double.POSITIVE_INFINITY;
++		if (index == Histogram.UNDERFLOW) return min;
++		if (index == Histogram.OVERFLOW) return Double.POSITIVE_INFINITY;
+ 		return min + binWidth*(index+1);
+ 	}
+ 	public double binWidth(int index)
+@@ -67,9 +66,9 @@
+ 	}
+ 	public int coordToIndex(double coord)
+ 	{
+-		if (coord < min) return IHistogram.UNDERFLOW;
++		if (coord < min) return Histogram.UNDERFLOW;
+ 		int index = (int) Math.floor((coord - min)/binWidth);
+-		if (index >= bins) return IHistogram.OVERFLOW;
++		if (index >= bins) return Histogram.OVERFLOW;
+ 		
+ 		return index;
+ 	}
+@@ -100,8 +99,8 @@
+ 	{
+ 		if (index >= bins) throw new IllegalArgumentException("bin="+index);
+ 		if (index >= 0) return index+1;
+-		if (index == IHistogram.UNDERFLOW) return xunder;
+-		if (index == IHistogram.OVERFLOW) return xover;
++		if (index == Histogram.UNDERFLOW) return xunder;
++		if (index == Histogram.OVERFLOW) return xover;
+ 		throw new IllegalArgumentException("bin="+index);
+ 	}
+ }
+--- a/src/hep/aida/ref/VariableAxis.java
++++ b/src/hep/aida/ref/VariableAxis.java
+@@ -1,14 +1,12 @@
+ package hep.aida.ref;
+ 
+-import hep.aida.IAxis;
+-import hep.aida.IHistogram;
+ /**
+ Variable-width axis; A reference implementation of hep.aida.IAxis.
+ 
+ @author Wolfgang Hoschek, Tony Johnson, and others.
+ @version 1.0, 23/03/2000
+ */
+-public class VariableAxis implements IAxis 
++public class VariableAxis extends FixedAxis
+ {
+ 	protected double min; 
+ 	protected int bins;
+@@ -41,8 +39,8 @@
+ 	}
+ 	public double binLowerEdge(int index)
+ 	{
+-		if (index == IHistogram.UNDERFLOW) return Double.NEGATIVE_INFINITY;
+-		if (index == IHistogram.OVERFLOW) return upperEdge();
++		if (index == Histogram.UNDERFLOW) return Double.NEGATIVE_INFINITY;
++		if (index == Histogram.OVERFLOW) return upperEdge();
+ 		return edges[index];
+ 	}
+ 	public int bins()
+@@ -51,8 +49,8 @@
+ 	}
+ 	public double binUpperEdge(int index)
+ 	{
+-		if (index == IHistogram.UNDERFLOW) return lowerEdge();
+-		if (index == IHistogram.OVERFLOW) return Double.POSITIVE_INFINITY;
++		if (index == Histogram.UNDERFLOW) return lowerEdge();
++		if (index == Histogram.OVERFLOW) return Double.POSITIVE_INFINITY;
+ 		return edges[index+1];
+ 	}
+ 	public double binWidth(int index)
+@@ -61,14 +59,14 @@
+ 	}
+ 	public int coordToIndex(double coord)
+ 	{
+-		if (coord < min) return IHistogram.UNDERFLOW;
++		if (coord < min) return Histogram.UNDERFLOW;
+ 		
+ 		int	index = java.util.Arrays.binarySearch(this.edges,coord);
+ 		//int index = new DoubleArrayList(this.edges).binarySearch(coord); // just for debugging
+ 		if (index < 0) index = -index -1-1; // not found
+ 		//else index++; // found
+ 
+-		if (index >= bins) return IHistogram.OVERFLOW;
++		if (index >= bins) return Histogram.OVERFLOW;
+ 		
+ 		return index;
+ 	}
+--- a/src/hep/aida/ref/AbstractHistogram1D.java
++++ b/src/hep/aida/ref/AbstractHistogram1D.java
+@@ -1,17 +1,14 @@
+ package hep.aida.ref;
+ 
+-import hep.aida.IAxis;
+-import hep.aida.IHistogram;
+-import hep.aida.IHistogram1D;
+ /**
+ Abstract base class extracting and implementing most of the redundancy of the interface.
+ 
+ @author Wolfgang Hoschek, Tony Johnson, and others.
+ @version 1.0, 23/03/2000
+ */
+-abstract class AbstractHistogram1D extends Histogram implements IHistogram1D
++abstract class AbstractHistogram1D extends Histogram
+ {
+-	protected IAxis xAxis;
++	protected FixedAxis xAxis;
+ 	AbstractHistogram1D(String title)
+ 	{
+ 		super(title);
+@@ -44,8 +41,8 @@
+ 		int bins = xAxis.bins()+2;
+ 		if (index >= bins) throw new IllegalArgumentException("bin="+index);
+ 		if (index >= 0) return index+1;
+-		if (index == IHistogram.UNDERFLOW) return 0;
+-		if (index == IHistogram.OVERFLOW) return bins-1;
++		if (index == Histogram.UNDERFLOW) return 0;
++		if (index == Histogram.OVERFLOW) return bins-1;
+ 		throw new IllegalArgumentException("bin="+index);
+ 	}
+ 	public int[] minMaxBins()
+@@ -83,8 +80,10 @@
+ 		return binHeight(UNDERFLOW) + binHeight(OVERFLOW);
+ 		//return heights[xAxis.under] + heights[xAxis.over];
+ 	}
+-	public IAxis xAxis()
++	public FixedAxis xAxis()
+ 	{
+ 		return xAxis;
+ 	}
++	public abstract double binHeight(int index);
++	public abstract int binEntries(int index);
+ }
+--- a/src/hep/aida/ref/Converter.java
++++ b/src/hep/aida/ref/Converter.java
+@@ -1,10 +1,5 @@
+ package hep.aida.ref;
+ 
+-import hep.aida.IAxis;
+-import hep.aida.IHistogram1D;
+-import hep.aida.IHistogram2D;
+-import hep.aida.IHistogram3D;
+-
+ /**
+  * Histogram conversions, for example to String and XML format; 
+  * This class requires the Colt distribution, whereas the rest of the package is entirelly stand-alone.
+@@ -18,7 +13,7 @@
+ 	/** 
+ 	 * Returns all edges of the given axis.
+ 	 */ 
+-	public double[] edges(IAxis axis)
++	public double[] edges(FixedAxis axis)
+ 	{
+ 		int b = axis.bins();
+ 		double[] bounds = new double[b+1];
+@@ -33,7 +28,7 @@
+ 	/** 
+ 	 * Returns an array[h.xAxis().bins()]; ignoring extra bins.
+ 	 */ 
+-	protected double[] toArrayErrors(IHistogram1D h)
++	protected double[] toArrayErrors(Histogram1D h)
+ 	{
+ 		int xBins = h.xAxis().bins();
+ 		double[] array = new double[xBins];
+@@ -45,7 +40,7 @@
+ 	/** 
+ 	 * Returns an array[h.xAxis().bins()][h.yAxis().bins()]; ignoring extra bins.
+ 	 */ 
+-	protected double[][] toArrayErrors(IHistogram2D h)
++	protected double[][] toArrayErrors(Histogram2D h)
+ 	{
+ 		int xBins = h.xAxis().bins();
+ 		int yBins = h.yAxis().bins();
+@@ -60,7 +55,7 @@
+ 	/** 
+ 	 * Returns an array[h.xAxis().bins()]; ignoring extra bins.
+ 	 */ 
+-	protected double[] toArrayHeights(IHistogram1D h)
++	protected double[] toArrayHeights(Histogram1D h)
+ 	{
+ 		int xBins = h.xAxis().bins();
+ 		double[] array = new double[xBins];
+@@ -72,7 +67,7 @@
+ 	/** 
+ 	 * Returns an array[h.xAxis().bins()][h.yAxis().bins()]; ignoring extra bins.
+ 	 */ 
+-	protected double[][] toArrayHeights(IHistogram2D h)
++	protected double[][] toArrayHeights(Histogram2D h)
+ 	{
+ 		int xBins = h.xAxis().bins();
+ 		int yBins = h.yAxis().bins();
+@@ -87,7 +82,7 @@
+ 	/** 
+ 	 * Returns an array[h.xAxis().bins()][h.yAxis().bins()][h.zAxis().bins()]; ignoring extra bins.
+ 	 */ 
+-	protected double[][][] toArrayHeights(IHistogram3D h)
++	protected double[][][] toArrayHeights(Histogram3D h)
+ 	{
+ 		int xBins = h.xAxis().bins();
+ 		int yBins = h.yAxis().bins();
+@@ -124,7 +119,7 @@
+ 	/** 
+ 	 * Returns a string representation of the given argument.
+ 	 */ 
+-	public String toString(IAxis axis) 
++	public String toString(FixedAxis axis) 
+ 	{
+ 		StringBuffer buf = new StringBuffer();
+ 		buf.append("Range: ["+axis.lowerEdge()+","+axis.upperEdge()+")");
+@@ -135,7 +130,7 @@
+ 	/** 
+ 	 * Returns a string representation of the given argument.
+ 	 */ 
+-	public String toString(IHistogram1D h)
++	public String toString(Histogram1D h)
+ 	{		
+ 		String columnAxisName = null; //"X";
+ 		String rowAxisName = null;
+@@ -179,7 +174,7 @@
+ 	/** 
+ 	 * Returns a string representation of the given argument.
+ 	 */ 
+-	public String toString(IHistogram2D h)
++	public String toString(Histogram2D h)
+ 	{		
+ 		String columnAxisName = "X";
+ 		String rowAxisName = "Y";
+@@ -235,7 +230,7 @@
+ 	/** 
+ 	 * Returns a string representation of the given argument.
+ 	 */ 
+-	public String toString(IHistogram3D h)
++	public String toString(Histogram3D h)
+ 	{		
+ 		String columnAxisName = "X";
+ 		String rowAxisName = "Y";
+@@ -302,7 +297,7 @@
+ 	/** 
+ 	 * Returns a XML representation of the given argument.
+ 	 */ 
+-	public String toXML(IHistogram1D h)
++	public String toXML(Histogram1D h)
+ 	{
+ 			StringBuffer buf = new StringBuffer();
+ 			String sep = System.getProperty("line.separator");
+@@ -343,7 +338,7 @@
+ 	/** 
+ 	 * Returns a XML representation of the given argument.
+ 	 */ 
+-	public String toXML(IHistogram2D h)
++	public String toXML(Histogram2D h)
+ 	{
+ 			StringBuffer out = new StringBuffer();
+ 			String sep = System.getProperty("line.separator");
+--- a/src/hep/aida/ref/Histogram1D.java
++++ b/src/hep/aida/ref/Histogram1D.java
+@@ -1,7 +1,5 @@
+ package hep.aida.ref;
+ 
+-import hep.aida.IAxis;
+-import hep.aida.IHistogram1D;
+ /**
+ A reference implementation of hep.aida.IHistogram1D.
+ The goal is to provide a clear implementation rather than the most efficient implementation.
+@@ -10,7 +8,7 @@
+ @author Wolfgang Hoschek, Tony Johnson, and others.
+ @version 1.0, 23/03/2000
+ */
+-public class Histogram1D extends AbstractHistogram1D implements IHistogram1D
++public class Histogram1D extends AbstractHistogram1D
+ {
+ 	private double[] errors;
+ 	private double[] heights;
+@@ -49,7 +47,7 @@
+ 	 * @param title The histogram title.
+ 	 * @param axis The axis description to be used for binning.
+ 	 */
+-	public Histogram1D(String title, IAxis axis)
++	public Histogram1D(String title, FixedAxis axis)
+ 	{
+ 		super(title);
+ 		xAxis = axis;
+--- a/src/hep/aida/bin/QuantileBin1D.java
++++ b/src/hep/aida/bin/QuantileBin1D.java
+@@ -936,7 +936,7 @@
+ @param axis an axis defining interval boundaries.
+ @param resolution a measure of accuracy; the desired number of subintervals per interval. 
+ */
+-public synchronized MightyStaticBin1D[] splitApproximately(hep.aida.IAxis axis, int k) {
++public synchronized MightyStaticBin1D[] splitApproximately(hep.aida.ref.FixedAxis axis, int k) {
+ 	DoubleArrayList percentages = new DoubleArrayList(new hep.aida.ref.Converter().edges(axis));
+ 	percentages.beforeInsert(0,Double.NEGATIVE_INFINITY);
+ 	percentages.add(Double.POSITIVE_INFINITY);
diff --git a/debian/patches/series b/debian/patches/series
new file mode 100644
index 0000000..11e040c
--- /dev/null
+++ b/debian/patches/series
@@ -0,0 +1,2 @@
+use_debian_packaged_concurrent_jar.patch
+build_without_aida_interface_defs.patch
diff --git a/debian/patches/use_debian_packaged_concurrent_jar.patch b/debian/patches/use_debian_packaged_concurrent_jar.patch
new file mode 100644
index 0000000..381584b
--- /dev/null
+++ b/debian/patches/use_debian_packaged_concurrent_jar.patch
@@ -0,0 +1,14 @@
+Author: Andreas Tille <tille at debian.org>
+Description: Use Debian packaged version if concurrent
+--- colt.orig/build.xml
++++ colt/build.xml
+@@ -62,6 +62,9 @@
+ 		<include name="*.jar"/>
+ 		<exclude name="${jar.filename}"/>
+ 	</fileset>
++	<fileset dir="/usr/share/java">
++		<include name="concurrent.jar"/>
++        </fileset>
+ 	<!-- <pathelement location="${build.home}/classes"/> -->
+ </path>
+ 
diff --git a/debian/rules b/debian/rules
new file mode 100755
index 0000000..2a0aa1c
--- /dev/null
+++ b/debian/rules
@@ -0,0 +1,23 @@
+#!/usr/bin/make -f
+
+JAVA_HOME=/usr/lib/jvm/default-java
+
+%:
+	dh $@ --with javahelper
+
+override_dh_auto_build:
+	ant -Dant.build.javac.source=1.5 -Dant.build.javac.target=1.5 build
+
+override_dh_installdocs:
+	dh_installdocs
+	rm -rf debian/libcolt-java-doc/usr/share/doc/libcolt-java/licenses
+
+override_dh_clean:
+	dh_clean
+	rm -rf build
+	rm -rf lib/*.jar
+	rm -f src/hep/aida/*.java src/hep/aida/ref/Test*.java
+
+get-orig-source:
+	mkdir -p ../tarballs
+	uscan --verbose --force-download --repack --compression xz --destdir ../tarballs
diff --git a/debian/source/format b/debian/source/format
new file mode 100644
index 0000000..163aaf8
--- /dev/null
+++ b/debian/source/format
@@ -0,0 +1 @@
+3.0 (quilt)
diff --git a/debian/watch b/debian/watch
new file mode 100644
index 0000000..3a8640e
--- /dev/null
+++ b/debian/watch
@@ -0,0 +1,4 @@
+version=3
+opts="dversionmangle=s/\+dfsg//g" \
+http://acs.lbl.gov/software/colt/colt-download/releases/colt-([\d\.]+)\.tar\.gz \
+    debian debian/get-orig-source

-- 
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