Print

Print


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]);
+                    }
+                }
+            }
+        }
+    }
+}