lcsim/src/org/lcsim/recon/cluster/structural/likelihood
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);
}