lcsim/src/org/lcsim/contrib/uiowa/structural
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);
}
}
}