Author: [log in to unmask] Date: Wed Oct 19 13:11:44 2016 New Revision: 4517 Log: circle fitting utility tests Added: java/trunk/tracking/src/test/java/org/hps/recon/tracking/circlefit/ java/trunk/tracking/src/test/java/org/hps/recon/tracking/circlefit/CircleFitTest.java java/trunk/tracking/src/test/java/org/hps/recon/tracking/circlefit/TwoPointRadiusCircleFitterTest.java Added: java/trunk/tracking/src/test/java/org/hps/recon/tracking/circlefit/CircleFitTest.java ============================================================================= --- java/trunk/tracking/src/test/java/org/hps/recon/tracking/circlefit/CircleFitTest.java (added) +++ java/trunk/tracking/src/test/java/org/hps/recon/tracking/circlefit/CircleFitTest.java Wed Oct 19 13:11:44 2016 @@ -0,0 +1,32 @@ + +package org.hps.recon.tracking.circlefit; + +import static java.lang.Math.sqrt; +import junit.framework.TestCase; + +/** + * + * @author Norman A. Graf + */ +public class CircleFitTest extends TestCase +{ + + private boolean _debug = false; + + public void testIt() + { + CircleFit fit = new CircleFit(0., 0., 1.); + if (_debug) { + System.out.println(fit); + } + double[][] testPoint = {{0., 1.}, {1., 0.}, {sqrt(0.5), sqrt(0.5)}}; + double[] results = {-0., Double.NEGATIVE_INFINITY, -1.}; + for (int i = 0; i < testPoint.length; ++i) { + double tangent = fit.tangentAtPoint(testPoint[i]); + assertEquals(tangent, results[i]); + if (_debug) { + System.out.println("tangent at (" + testPoint[i][0] + ", " + testPoint[i][1] + ") is " + tangent); + } + } + } +} Added: java/trunk/tracking/src/test/java/org/hps/recon/tracking/circlefit/TwoPointRadiusCircleFitterTest.java ============================================================================= --- java/trunk/tracking/src/test/java/org/hps/recon/tracking/circlefit/TwoPointRadiusCircleFitterTest.java (added) +++ java/trunk/tracking/src/test/java/org/hps/recon/tracking/circlefit/TwoPointRadiusCircleFitterTest.java Wed Oct 19 13:11:44 2016 @@ -0,0 +1,46 @@ + +package org.hps.recon.tracking.circlefit; + +import junit.framework.TestCase; +import static org.hps.recon.tracking.circlefit.TwoPointRadiusCircleFitter.findCircles; + +/** + * + * @author Norman A. Graf + */ +public class TwoPointRadiusCircleFitterTest extends TestCase +{ + + private boolean _debug = false; + + public void testIt() + { + int i; + double[][] cases + = {{0.1234, 0.9876}, {0.8765, 0.2345}, + {0.0000, 2.0000}, {0.0000, 0.0000}, + {0.1234, 0.9876}, {0.1234, 0.9876}, + {0.1234, 0.9876}, {0.8765, 0.2345}, + {0.1234, 0.9876}, {0.1234, 0.9876} + }; + + double radii[] = {2.0, 1.0, 2.0, 0.5, 0.0}; + + for (i = 0; i < 5; i++) { + if (_debug) { + System.out.printf("\nCase %d)", i + 1); + } + CircleFit[] results = findCircles(cases[2 * i], cases[2 * i + 1], radii[i]); + if (_debug) { + if (results == null) { + System.out.println("found no solutions"); + } else { + System.out.println("\n found " + results.length + " solution" + (results.length == 1 ? "" : "s")); + for (int j = 0; j < results.length; ++j) { + System.out.println(results[j]); + } + } + } + } + } +}