package cern.hep.aida.ref;

import colt.hep.aida.IAxis;
import colt.hep.aida.IHistogram1D;
import colt.hep.aida.IHistogram2D;
import colt.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.
 */
public class Converter
{
	/**
	 * Creates a new histogram converter.
	 */
	public Converter() {}
	/** 
	 * Returns all edges of the given axis.
	 */ 
	public double[] edges(IAxis axis)
	{
		int b = axis.bins();
		double[] bounds = new double[b+1];
		for (int i=0; i= 0; ) {
				array[j] = h.binError(j);
		}
		return array;
	}
	/** 
	 * Returns an array[h.xAxis().bins()][h.yAxis().bins()]; ignoring extra bins.
	 */ 
	protected double[][] toArrayErrors(IHistogram2D h)
	{
		int xBins = h.xAxis().bins();
		int yBins = h.yAxis().bins();
		double[][] array = new double[xBins][yBins];
		for (int i=yBins; --i >= 0; ) {
			for (int j=xBins; --j >= 0; ) {
				array[j][i] = h.binError(j,i);
			}
		}
		return array;
	}
	/** 
	 * Returns an array[h.xAxis().bins()]; ignoring extra bins.
	 */ 
	protected double[] toArrayHeights(IHistogram1D h)
	{
		int xBins = h.xAxis().bins();
		double[] array = new double[xBins];
		for (int j=xBins; --j >= 0; ) {
				array[j] = h.binHeight(j);
		}
		return array;
	}
	/** 
	 * Returns an array[h.xAxis().bins()][h.yAxis().bins()]; ignoring extra bins.
	 */ 
	protected double[][] toArrayHeights(IHistogram2D h)
	{
		int xBins = h.xAxis().bins();
		int yBins = h.yAxis().bins();
		double[][] array = new double[xBins][yBins];
		for (int i=yBins; --i >= 0; ) {
			for (int j=xBins; --j >= 0; ) {
				array[j][i] = h.binHeight(j,i);
			}
		}
		return array;
	}
	/** 
	 * Returns an array[h.xAxis().bins()][h.yAxis().bins()][h.zAxis().bins()]; ignoring extra bins.
	 */ 
	protected double[][][] toArrayHeights(IHistogram3D h)
	{
		int xBins = h.xAxis().bins();
		int yBins = h.yAxis().bins();
		int zBins = h.zAxis().bins();
		double[][][] array = new double[xBins][yBins][zBins];
		for (int j=xBins; --j >= 0; ) {
			for (int i=yBins; --i >= 0; ) {
				for (int k=zBins; --k >= 0; ) {
					array[j][i][k] = h.binHeight(j,i,k);
				}
			}
		}
		return array;
	}
	/**
	 * Returns a string representation of the specified array.  The string
	 * representation consists of a list of the arrays's elements, enclosed in square brackets
	 * ("[]").  Adjacent elements are separated by the characters
	 * ", " (comma and space).
	 * @return a string representation of the specified array.
	 */
	protected static String toString(double[] array) {
		StringBuffer buf = new StringBuffer();
		buf.append("[");
		int maxIndex = array.length - 1;
		for (int i = 0; i <= maxIndex; i++) {
		    buf.append(array[i]);
		    if (i < maxIndex)
			buf.append(", ");
		}
		buf.append("]");
		return buf.toString();
	}
	/** 
	 * Returns a string representation of the given argument.
	 */ 
	public String toString(IAxis axis) 
	{
		StringBuffer buf = new StringBuffer();
		buf.append("Range: ["+axis.lowerEdge()+","+axis.upperEdge()+")");
		buf.append(", Bins: "+axis.bins());
		buf.append(", Bin edges: "+toString(edges(axis))+"\n");
		return buf.toString();
	}
	/** 
	 * Returns a string representation of the given argument.
	 */ 
	public String toString(IHistogram1D h)
	{		
		String columnAxisName = null; //"X";
		String rowAxisName = null;
		cern.hep.aida.bin.BinFunction1D[] aggr = null; //{hep.aida.bin.BinFunctions1D.sum};
		String format = "%G";
		//String format = "%1.2G";

		cern.colt.matrix.impl.Former f = new cern.colt.matrix.impl.FormerFactory().create(format);
		String sep = System.getProperty("line.separator");
		int[] minMaxBins = h.minMaxBins();
		String title = h.title() + ":" + sep +
			"   Entries="+form(f,h.entries()) + ", ExtraEntries="+form(f,h.extraEntries()) + sep +
			"   Mean=" +form(f,h.mean()) + ", Rms="+form(f,h.rms()) + sep +			
			"   MinBinHeight=" +form(f,h.binHeight(minMaxBins[0])) + ", MaxBinHeight="+form(f,h.binHeight(minMaxBins[1])) + sep +
			"   Axis: " +
			"Bins="+form(f,h.xAxis().bins()) +
			", Min="+form(f,h.xAxis().lowerEdge()) +
			", Max="+form(f,h.xAxis().upperEdge());
				
		String[] xEdges = new String[h.xAxis().bins()];
		for (int i=0; i"); buf.append(sep);
			buf.append(""); buf.append(sep);
			buf.append(""); buf.append(sep);
			buf.append(""); buf.append(sep);
			buf.append(""); buf.append(sep);
			buf.append(""); buf.append(sep);
			buf.append(""); buf.append(sep);
			for (int i=0; i"); buf.append(sep);
			buf.append(""); buf.append(sep);
			buf.append(""); buf.append(sep);
			buf.append(""); buf.append(sep);
			buf.append(""); buf.append(sep);
			buf.append(""); buf.append(sep);
			if (!Double.isNaN(h.mean())) {
				buf.append(""); buf.append(sep);
			}
			if (!Double.isNaN(h.rms())) {
				buf.append(""); buf.append(sep);
			}
			buf.append(""); buf.append(sep);
			buf.append(""); buf.append(sep);
			buf.append(""); buf.append(sep);
			buf.append(""); buf.append(sep);
			buf.append(""); buf.append(sep);
			return buf.toString();
	}
	/** 
	 * Returns a XML representation of the given argument.
	 */ 
	public String toXML(IHistogram2D h)
	{
			StringBuffer out = new StringBuffer();
			String sep = System.getProperty("line.separator");
			out.append(""); out.append(sep);
			out.append(""); out.append(sep);
			out.append(""); out.append(sep);
			out.append(""); out.append(sep);
			out.append(""); out.append(sep);
			out.append(""); out.append(sep);
			out.append(""); out.append(sep);
			for (int i=0; i"); out.append(sep);
			out.append(""); out.append(sep);
			out.append(""); out.append(sep);
			//out.append(""); out.append(sep);
			//out.append(""); out.append(sep);
			//out.append(""); out.append(sep);
			//out.append(""); out.append(sep);
			//out.append(""); out.append(sep);
			//out.append(""); out.append(sep);
			//out.append(""); out.append(sep);
			out.append(""); out.append(sep);
			out.append(""); out.append(sep);
			out.append(""); out.append(sep);
			out.append(""); out.append(sep);
			return out.toString();
	}
}

 

Ads help maintain this website.