Commit in lcsim/src/org/lcsim/contrib/uiowa/structural on MAIN
ExamplePFA.java+36-31.3 -> 1.4
Added support for quantities with per-event information that implement StructuralLikelihoodQuantityWithEventInfo.

lcsim/src/org/lcsim/contrib/uiowa/structural
ExamplePFA.java 1.3 -> 1.4
diff -u -r1.3 -r1.4
--- ExamplePFA.java	14 Oct 2005 17:53:34 -0000	1.3
+++ ExamplePFA.java	18 Oct 2005 17:50:53 -0000	1.4
@@ -1,5 +1,8 @@
 package structural; // package org.lcsim.recon.cluster.structural;
 
+import java.util.List;
+import java.util.Vector;
+
 import org.lcsim.event.EventHeader;
 import org.lcsim.util.Driver;
 
@@ -11,6 +14,10 @@
 
 public class ExamplePFA extends Driver
 {
+    // Special treatment for likelihood quantities that need per-event info
+    // (e.g. geometry)
+    List<StructuralLikelihoodQuantityWithEventInfo> m_perEventQuantities = null;
+
     public ExamplePFA(boolean writeLikelihood) 
     {
 	// Begin with a big-scale cluster set, made with the MST:
@@ -61,9 +68,8 @@
 		// Obtain and write likelihood histograms
 		System.out.println("ExamplePFA: I will obtain and write out likelihood histograms.");
 		LikelihoodEvaluator eval = new LikelihoodEvaluator();
-		eval.addLikelihoodQuantityTrackToTrack(new TrackToTrackDOCA(), 10, 0.0, 50.0, false, true);
-		////eval.addLikelihoodQuantityTrackToTrack(new ClusterToClusterMinDistance(), 5, 0.0, 250.0, false, true);
-		//eval.addLikelihoodQuantityTrackToTrack(new TrackToTrackPOCAInCalorimeter(), 2, -0.5, 1.5, false, false);
+		eval.addLikelihoodQuantityTrackToTrack(new TrackToTrackDOCA(), 10, 0.0, 100.0, false, true);
+		eval.addLikelihoodQuantityTrackToTrack(new TrackToTrackPOCAInCalorimeter(), 2, -0.5, 1.5, false, false);
 		eval.addLikelihoodQuantityTrackToTrack(new TrackToTrackSmallestDistanceToPOCA(), 5, 0.0, 50.0, false, true);
 		//eval.addLikelihoodQuantityTrackToTrack(new TrackToTrackIntermediateHitsCount(), 10, -0.5, 9.5, false, true);
 		//eval.addLikelihoodQuantityTrackToTrack(new TrackToTrackIntermediateHitsFraction(), 11, -0.05, 1.05, false, false);
@@ -71,6 +77,9 @@
 		eval.addLikelihoodQuantityTrackToClump(new ClusterToClusterMinDistance(), 5, 0.0, 250.0, false, true);
 		eval.addLikelihoodQuantityClumpToClump(new ClumpToClumpDOCA(), 5, 0.0, 500.0, false, true);
 		eval.addLikelihoodQuantityClumpToClump(new ClusterToClusterMinDistance(), 5, 0.0, 500.0, false, true);
+		// Handle things that have per-event info:
+		makeEventInfoList(eval);
+
 		LikelihoodFindingStructuralDriver likelihoodWriter = new LikelihoodFindingStructuralDriver(eval, assoc, "MSTCluster linked", "Track segments linked", "Clumps");
 		likelihoodWriter.setIgnoreClusterDecision(new ClusterSizeDecision(10));
 		add(likelihoodWriter);
@@ -84,6 +93,30 @@
 		likelihoodPlotter.setIgnoreClusterDecision(new ClusterSizeDecision(10));
 		likelihoodPlotter.initPlots("likelihoodPerformance.aida");
 		add(likelihoodPlotter);
+
+		// Handle things that have per-event info:
+		makeEventInfoList(eval);
+	    }
+	}
+    }
+
+    public void process(EventHeader event) {
+	// Special handling of things that need per-event info:
+	for (StructuralLikelihoodQuantityWithEventInfo quant : m_perEventQuantities) {
+	    quant.setEventInfo(event);
+	}
+	super.process(event);
+    }
+    
+    protected void makeEventInfoList(LikelihoodEvaluator eval) 
+    {
+	// Handle things that have per-event info:
+	m_perEventQuantities = new Vector<StructuralLikelihoodQuantityWithEventInfo>();
+	List<StructuralLikelihoodQuantity> quantities = eval.getLikelihoodQuantities();
+	for (StructuralLikelihoodQuantity quant : quantities) {
+	    if (quant instanceof StructuralLikelihoodQuantityWithEventInfo) {
+		StructuralLikelihoodQuantityWithEventInfo quantTmp = (StructuralLikelihoodQuantityWithEventInfo) (quant);
+		m_perEventQuantities.add(quantTmp);
 	    }
 	}
     }
CVSspam 0.2.8