Commit in lcsim/src/org/lcsim/recon/cluster/structural/likelihood on MAIN
LikelihoodEvaluator.java+691.1 -> 1.2
MJC: Add a bunch of optional debug printout

lcsim/src/org/lcsim/recon/cluster/structural/likelihood
LikelihoodEvaluator.java 1.1 -> 1.2
diff -u -r1.1 -r1.2
--- LikelihoodEvaluator.java	1 Mar 2006 02:45:58 -0000	1.1
+++ LikelihoodEvaluator.java	26 Apr 2007 17:18:44 -0000	1.2
@@ -105,16 +105,85 @@
     public double getLinkLikelihoodTrackToTrack(Cluster clus1, Cluster clus2) {
 	Vector<LikelihoodDistribution> vLinked = getLikelihoodDistributionTrackToTrack(true);
 	Vector<LikelihoodDistribution> vUnlinked = getLikelihoodDistributionTrackToTrack(false);
+	if (m_debug) { 
+	    double totalGoodLikelihood = 1.0;
+	    double totalBadLikelihood = 1.0;
+	    for (int i=0; i<vLinked.size(); i++) {
+		LikelihoodDistribution distLinked = vLinked.get(i);
+		LikelihoodDistribution distUnlinked = vUnlinked.get(i);
+		StructuralLikelihoodQuantity quant = distLinked.getQuantity();
+		try {
+		    double goodPDF = distLinked.getPDF(clus1, clus2);
+		    double badPDF = distUnlinked.getPDF(clus1, clus2);
+		    double goodProb = goodPDF/(goodPDF+badPDF);
+		    double badProb = badPDF/(goodPDF+badPDF);
+		    totalGoodLikelihood *= goodProb;
+		    totalBadLikelihood *= badProb;
+		    System.out.println("DEBUG:    Quantity"+i+" = "+quant.evaluate(clus1,clus2)+" so prob(good)="+goodProb);
+		} catch (QuantityNotDefinedException x) {
+		    // Have to ignore this one.
+		    System.out.println("Warning: "+x);
+		}
+	    }
+	    double normalizedGoodLikelihood = totalGoodLikelihood / (totalGoodLikelihood+totalBadLikelihood);
+	    System.out.println("DEBUG:   => net probs: "+totalGoodLikelihood+" vs "+totalBadLikelihood+" => prob(good) = "+normalizedGoodLikelihood); 
+	}
 	return getLinkLikelihood(clus1, clus2, vLinked, vUnlinked);
     }   
     public double getLinkLikelihoodTrackToClump(Cluster clus1, Cluster clus2) {
         Vector<LikelihoodDistribution> vLinked = getLikelihoodDistributionTrackToClump(true);
         Vector<LikelihoodDistribution> vUnlinked = getLikelihoodDistributionTrackToClump(false);
+	if (m_debug) { 
+	    double totalGoodLikelihood = 1.0;
+	    double totalBadLikelihood = 1.0;
+	    for (int i=0; i<vLinked.size(); i++) {
+		LikelihoodDistribution distLinked = vLinked.get(i);
+		LikelihoodDistribution distUnlinked = vUnlinked.get(i);
+		StructuralLikelihoodQuantity quant = distLinked.getQuantity();
+		try {
+		    double goodPDF = distLinked.getPDF(clus1, clus2);
+		    double badPDF = distUnlinked.getPDF(clus1, clus2);
+		    double goodProb = goodPDF/(goodPDF+badPDF);
+		    double badProb = badPDF/(goodPDF+badPDF);
+		    totalGoodLikelihood *= goodProb;
+		    totalBadLikelihood *= badProb;
+		    System.out.println("DEBUG:    Quantity"+i+" = "+quant.evaluate(clus1,clus2)+" so prob(good)="+goodProb);
+		} catch (QuantityNotDefinedException x) {
+		    // Have to ignore this one.
+		    System.out.println("Warning: "+x);
+		}
+	    }
+	    double normalizedGoodLikelihood = totalGoodLikelihood / (totalGoodLikelihood+totalBadLikelihood);
+	    System.out.println("DEBUG:   => net probs: "+totalGoodLikelihood+" vs "+totalBadLikelihood+" => prob(good) = "+normalizedGoodLikelihood); 
+	}
         return getLinkLikelihood(clus1, clus2, vLinked, vUnlinked);
     }   
     public double getLinkLikelihoodClumpToClump(Cluster clus1, Cluster clus2) {
         Vector<LikelihoodDistribution> vLinked = getLikelihoodDistributionClumpToClump(true);
         Vector<LikelihoodDistribution> vUnlinked = getLikelihoodDistributionClumpToClump(false);
+	if (m_debug) { 
+	    double totalGoodLikelihood = 1.0;
+	    double totalBadLikelihood = 1.0;
+	    for (int i=0; i<vLinked.size(); i++) {
+		LikelihoodDistribution distLinked = vLinked.get(i);
+		LikelihoodDistribution distUnlinked = vUnlinked.get(i);
+		StructuralLikelihoodQuantity quant = distLinked.getQuantity();
+		try {
+		    double goodPDF = distLinked.getPDF(clus1, clus2);
+		    double badPDF = distUnlinked.getPDF(clus1, clus2);
+		    double goodProb = goodPDF/(goodPDF+badPDF);
+		    double badProb = badPDF/(goodPDF+badPDF);
+		    totalGoodLikelihood *= goodProb;
+		    totalBadLikelihood *= badProb;
+		    System.out.println("DEBUG:    Quantity"+i+" = "+quant.evaluate(clus1,clus2)+" so prob(good)="+goodProb);
+		} catch (QuantityNotDefinedException x) {
+		    // Have to ignore this one.
+		    System.out.println("Warning: "+x);
+		}
+	    }
+	    double normalizedGoodLikelihood = totalGoodLikelihood / (totalGoodLikelihood+totalBadLikelihood);
+	    System.out.println("DEBUG:   => net probs: "+totalGoodLikelihood+" vs "+totalBadLikelihood+" => prob(good) = "+normalizedGoodLikelihood); 
+	}
         return getLinkLikelihood(clus1, clus2, vLinked, vUnlinked);
     }   
 
CVSspam 0.2.8