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.