Commit in lcsim/src/org/lcsim/contrib/uiowa/structural/likelihood on MAIN
TrackToTrackDOCA.java+19-71.1 -> 1.2
Now implemented

lcsim/src/org/lcsim/contrib/uiowa/structural/likelihood
TrackToTrackDOCA.java 1.1 -> 1.2
diff -u -r1.1 -r1.2
--- TrackToTrackDOCA.java	29 Sep 2005 21:04:50 -0000	1.1
+++ TrackToTrackDOCA.java	14 Oct 2005 17:43:56 -0000	1.2
@@ -5,20 +5,32 @@
 import org.lcsim.event.Cluster;
 import hep.physics.vec.BasicHep3Vector;
 import hep.physics.vec.Hep3Vector;
+import hep.physics.vec.VecOp;
 
 public class TrackToTrackDOCA implements StructuralLikelihoodQuantity
 {
     public TrackToTrackDOCA() {}
 
-    public double evaluate(Cluster track1, Cluster track2)
+    public double evaluate(Cluster track1, Cluster track2) throws QuantityNotDefinedException
     {
-	Hep3Vector positionTrack1 = new BasicHep3Vector(track1.getPosition());
-	Hep3Vector positionTrack2 = new BasicHep3Vector(track2.getPosition());
-	Trajectory line1 = new Line(positionTrack1, track1.getIPhi(), track1.getITheta());
-	Trajectory line2 = new Line(positionTrack2, track2.getIPhi(), track2.getITheta());
+	if (track1.getCalorimeterHits().size()<4 || track2.getCalorimeterHits().size()<4) {
+	    throw new QuantityNotDefinedException("Need 4+ hits in each cluster to get direction, but they have "
+						  +track1.getCalorimeterHits().size()
+						  +" and "
+						  +track2.getCalorimeterHits().size()
+						  +" respectively.");
+	}
 
-        // Routine to do this properly doesn't exist yet
-        return Double.NaN;
+	// Need to find directions of the two clusters.
+	Line line1 = MiscUtilities.makeLine(track1);
+	Line line2 = MiscUtilities.makeLine(track2);
+
+	double[] distancesAlongLinesToPOCAs = Line.getPOCAOfLines(line1, line2);
+	
+	Hep3Vector poca1 = line1.getPointAtDistance(distancesAlongLinesToPOCAs[0]);
+	Hep3Vector poca2 = line1.getPointAtDistance(distancesAlongLinesToPOCAs[1]);
+	double doca = VecOp.sub(poca1,poca2).magnitude();
+	return doca;
     }
 
     
CVSspam 0.2.8