lcsim/src/org/lcsim/contrib/uiowa
diff -N DualActionTrackClusterMatcher.java
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ DualActionTrackClusterMatcher.java 14 Oct 2007 22:57:26 -0000 1.1
@@ -0,0 +1,39 @@
+package org.lcsim.contrib.uiowa;
+
+import java.util.*;
+import org.lcsim.event.*;
+import org.lcsim.recon.pfa.identifier.*;
+import org.lcsim.recon.cluster.mipfinder.*;
+
+// interface:
+// public Cluster matchTrackToCluster(Track tr, List<Cluster> clusters);
+
+public class DualActionTrackClusterMatcher implements TrackClusterMatcher {
+
+ TrackClusterMatcher m_mipTrackClusterMatcher;
+ TrackClusterMatcher m_genericTrackClusterMatcher;
+
+ public DualActionTrackClusterMatcher(TrackClusterMatcher mipTrackClusterMatcher, TrackClusterMatcher genericTrackClusterMatcher) {
+ m_mipTrackClusterMatcher = mipTrackClusterMatcher;
+ m_genericTrackClusterMatcher = genericTrackClusterMatcher;
+ }
+
+ public Cluster matchTrackToCluster(Track tr, List<Cluster> clusters) {
+ // First try the MIPs...
+ List<Cluster> mipClusters = new Vector<Cluster>();
+ for (Cluster clus : clusters) {
+ if (clus instanceof MIPCluster) {
+ mipClusters.add(clus);
+ }
+ }
+
+ Cluster matchedMIP = m_mipTrackClusterMatcher.matchTrackToCluster(tr, mipClusters);
+ if (matchedMIP != null) {
+ return matchedMIP;
+ }
+
+ // That didn't work -- now try generic match
+ Cluster matchedClus = m_genericTrackClusterMatcher.matchTrackToCluster(tr, clusters);
+ return matchedClus;
+ }
+}