package hep.aida.ref.plotter.adapter;
import hep.aida.IProfile1D;
import jas.hist.DataSource;
import jas.hist.HasStatistics;
import jas.hist.Rebinnable1DHistogramData;
import jas.hist.Statistics;
/**
* @author manj
* @version $Id: AIDAProfileAdapter1D.java 13788 2010-11-24 19:43:56Z turri $
*/
public class AIDAProfileAdapter1D extends AIDAProfileAdapter implements Rebinnable1DHistogramData, HasStatistics, AIDA1DAdapterWithAxisLabels
{
String[] axisLabels = null;
AIDAProfileAdapter1D(IProfile1D profile)
{
super(profile);
this.profile=profile;
String tmp = null;
try {
tmp = profile.annotation().value("xAxisType");
if (tmp != null && tmp.equalsIgnoreCase("date")) xAxisType = DataSource.DATE;
} catch (IllegalArgumentException e) {}
}
public double[][] rebin(int bins, double min, double max, boolean wantErrors, boolean hurry)
{
setValid();
double[][] data=new double[2][profile.axis().bins()];
for(int i=0;i<profile.axis().bins();i++)
{
data[0][i]=profile.binHeight(i);
if (Double.isInfinite(data[0][i])) data[0][i] = Double.NaN;
if ( errorMode() == USE_ERROR_ON_MEAN ) data[1][i]=profile.binError(i);
else data[1][i]=profile.binRms(i);
}
return data;
}
/**
* Returns the (suggested) minimum value for the X axis
*/
public double getMin()
{
return profile.axis().lowerEdge();
}
public double getMax()
{
return profile.axis().upperEdge();
}
public int getBins()
{
return profile.axis().bins();
}
public boolean isRebinnable()
{
return false;
}
public int getAxisType()
{
return xAxisType;
}
public void setAxisType(int type) {
xAxisType = type;
}
public String[] getAxisLabels()
{
return axisLabels;
}
public void setAxisLabels(String[] axisLabels) {
this.axisLabels = axisLabels;
}
public String getTitle()
{
return profile.title();
}
public Statistics getStatistics()
{
return new AIDAProfileStatistics1D(profile);
}
protected IProfile1D profile;
}