package hep.aida.ref.test.pdf; import hep.aida.ICloud1D; import hep.aida.IFitResult; import hep.aida.IFitter; import hep.aida.IModelFunction; import hep.aida.IRangeSet; import hep.aida.ref.pdf.FunctionConverter; import hep.aida.ref.pdf.Gaussian; import java.util.Random; public class UnbinnedGaussianFit extends AbstractPdfTestCase { private ICloud1D c1; public UnbinnedGaussianFit(String name) { super(name); c1 = histogramFactory().createCloud1D("Cloud 1D"); Random r = new Random(); for (int i=0; i<100000; i++) c1.fill(r.nextGaussian()); } public void testFit() { Gaussian g = new Gaussian("myGauss"); IModelFunction gauss = FunctionConverter.getIModelFunction(g); IRangeSet r1 = gauss.normalizationRange(0); r1.excludeAll(); r1.include(c1.lowerEdge(),c1.upperEdge()); gauss.setParameter("mean",c1.mean()); gauss.setParameter("sigma",c1.rms()); IFitter gaussFit = fitFactory().createFitter("uml","minuit","noClone=true"); // Fit the first gaussian long start = System.currentTimeMillis(); IFitResult gaussFitResult = gaussFit.fit(c1,gauss); long end = System.currentTimeMillis(); long time = end-start; assertEquals(c1.mean(), g.getParameter("mean").value(),0.001); assertEquals(c1.rms(), g.getParameter("sigma").value(),0.002); assertEquals(time, 6000, 3000); } }