/*
* test.java
*
* Created on July 28, 2004, 2:14 PM
*/
package hep.aida.util.comparison;
import hep.aida.IAnalysisFactory;
import hep.aida.ICloud1D;
import hep.aida.IHistogram1D;
import hep.aida.IHistogramFactory;
import hep.aida.ITree;
import hep.aida.ITuple;
import hep.aida.ITupleFactory;
import hep.aida.ext.IComparisonAlgorithm;
import hep.aida.ext.IComparisonResult;
import java.io.IOException;
import java.util.Random;
/**
*
* @author turri
*/
public class ComparisonTest {
/** Creates a new instance of test */
public ComparisonTest() {
}
/**
* @param args the command line arguments
*/
public static void main(String[] args) throws IOException {
IAnalysisFactory af = IAnalysisFactory.create();
ITree tree = af.createTreeFactory().create("testComparison.aida","xml",false,true);
IHistogramFactory hf = af.createHistogramFactory(tree);
ITupleFactory tf = af.createTupleFactory(tree);
String tupleName = "";
int nCompAlg = StatisticalComparison.numberOfAvailableComparisonAlgorithm();
for ( int i = 0; i < nCompAlg; i++ ) {
IComparisonAlgorithm compAlg = StatisticalComparison.comparisonAlgorithm(i);
String compAlgName = compAlg.algorithmNames()[0];
tupleName += "ITuple "+compAlgName+" = { double binnedProbability = 1999., double binnedLessEventsProbability = 1999., double binnedWithWeightsProbability = 1999., double unbinnedProbability = 1999., double unbinnedLessEventsProbability = 1999., double unbinnedWithWeigthsProbability = 1999.}";
if ( i != nCompAlg-1 )
tupleName += "; ";
}
ITuple tuple = tf.create("tuple","Comparison Algorithm Test tuple",tupleName,"");
int nLoop = 1000;
int nEntries = 1000;
int nBins = 50;
IHistogram1D h1 = hf.createHistogram1D("h1","h1", nBins, -5, 5);
IHistogram1D h2 = hf.createHistogram1D("h2","h1", nBins, -5, 5);
IHistogram1D wh = hf.createHistogram1D("wh","wh", nBins, -5, 5);
IHistogram1D lh = hf.createHistogram1D("lh","lh", nBins, -5, 5);
ICloud1D c1 = hf.createCloud1D("c1");
ICloud1D c2 = hf.createCloud1D("c2");
ICloud1D wc = hf.createCloud1D("wc");
ICloud1D lc = hf.createCloud1D("lc");
Random r = new Random(23452);
Random r1 = new Random(252);
Random rw = new Random(39);
IComparisonResult result;
for ( int j = 0; j < nLoop; j++ ) {
h2.reset();
wh.reset();
lh.reset();
c2.reset();
wc.reset();
lc.reset();
h1.reset();
c1.reset();
for ( int i = 0; i < nEntries; i++ ) {
double x = r1.nextGaussian();
h1.fill(x);
c1.fill(x);
}
for ( int i = 0; i < nEntries; i++ ) {
double x2 = r.nextGaussian();
double w = rw.nextDouble();
double w2 = 0.8;
h2.fill(x2);
c2.fill(x2);
wh.fill(x2, w2);
wc.fill(x2, w2);
if ( w < 0.8 ) {
lh.fill(x2);
lc.fill(x2);
}
}
for ( int i = 0; i < nCompAlg; i++ ) {
ITuple tup = tuple.getTuple(i);
IComparisonAlgorithm compAlg = StatisticalComparison.comparisonAlgorithm(i);
String algName = compAlg.algorithmNames()[0];
if ( StatisticalComparison.canCompare(h1, h2,algName) ) {
result = StatisticalComparison.compare(h1,h2,algName);
tup.fill(0,result.quality());
result = StatisticalComparison.compare(h1,lh,algName);
tup.fill(1,result.quality());
result = StatisticalComparison.compare(h1,wh,algName);
tup.fill(2,result.quality());
}
if ( StatisticalComparison.canCompare(c1, c2,algName) ) {
result = StatisticalComparison.compare(c1,c2,algName);
tup.fill(3,result.quality());
result = StatisticalComparison.compare(c1,lc,algName);
tup.fill(4,result.quality());
result = StatisticalComparison.compare(c1,wc,algName);
tup.fill(5,result.quality());
}
tup.addRow();
}
tuple.addRow();
}
tree.commit();
}
}