package hep.aida.ref;
import hep.aida.IHistogram1D;
import hep.aida.IHistogram2D;
/**
* Convenient histogram utilities.
*/
class Util
{
/**
* Creates a new utility object.
*/
public Util() {}
/**
* Returns the index of the in-range bin containing the maxBinHeight().
*/
public int maxBin(IHistogram1D h)
{
int maxBin = -1;
double maxValue = Double.MIN_VALUE;
for (int i=h.xAxis().bins(); --i >= 0; ) {
double value = h.binHeight(i);
if (value > maxValue) {
maxValue = value;
maxBin = i;
}
}
return maxBin;
}
/**
* Returns the indexX of the in-range bin containing the maxBinHeight().
*/
public int maxBinX(IHistogram2D h)
{
double maxValue = Double.MIN_VALUE;
int maxBinX = -1;
int maxBinY = -1;
for (int i=h.xAxis().bins(); --i >= 0; ) {
for (int j=h.yAxis().bins(); --j >= 0; ) {
double value = h.binHeight(i,j);
if (value > maxValue) {
maxValue = value;
maxBinX = i;
maxBinY = j;
}
}
}
return maxBinX;
}
/**
* Returns the indexY of the in-range bin containing the maxBinHeight().
*/
public int maxBinY(IHistogram2D h)
{
double maxValue = Double.MIN_VALUE;
int maxBinX = -1;
int maxBinY = -1;
for (int i=h.xAxis().bins(); --i >= 0; ) {
for (int j=h.yAxis().bins(); --j >= 0; ) {
double value = h.binHeight(i,j);
if (value > maxValue) {
maxValue = value;
maxBinX = i;
maxBinY = j;
}
}
}
return maxBinY;
}
/**
* Returns the index of the in-range bin containing the minBinHeight().
*/
public int minBin(IHistogram1D h)
{
int minBin = -1;
double minValue = Double.MAX_VALUE;
for (int i=h.xAxis().bins(); --i >= 0; ) {
double value = h.binHeight(i);
if (value < minValue) {
minValue = value;
minBin = i;
}
}
return minBin;
}
/**
* Returns the indexX of the in-range bin containing the minBinHeight().
*/
public int minBinX(IHistogram2D h)
{
double minValue = Double.MAX_VALUE;
int minBinX = -1;
int minBinY = -1;
for (int i=h.xAxis().bins(); --i >= 0; ) {
for (int j=h.yAxis().bins(); --j >= 0; ) {
double value = h.binHeight(i,j);
if (value < minValue) {
minValue = value;
minBinX = i;
minBinY = j;
}
}
}
return minBinX;
}
/**
* Returns the indexY of the in-range bin containing the minBinHeight().
*/
public int minBinY(IHistogram2D h)
{
double minValue = Double.MAX_VALUE;
int minBinX = -1;
int minBinY = -1;
for (int i=h.xAxis().bins(); --i >= 0; ) {
for (int j=h.yAxis().bins(); --j >= 0; ) {
double value = h.binHeight(i,j);
if (value < minValue) {
minValue = value;
minBinX = i;
minBinY = j;
}
}
}
return minBinY;
}
}