Commit in lcsim/src/org/lcsim/contrib/uiowa/structural on MAIN
GenericStructuralDriver.java+30-191.2 -> 1.3
Added checks that the vectors aren't null before looping over them

lcsim/src/org/lcsim/contrib/uiowa/structural
GenericStructuralDriver.java 1.2 -> 1.3
diff -u -r1.2 -r1.3
--- GenericStructuralDriver.java	1 Oct 2005 01:34:42 -0000	1.2
+++ GenericStructuralDriver.java	14 Oct 2005 17:53:10 -0000	1.3
@@ -7,6 +7,8 @@
 import java.util.List;
 import java.util.Vector;
 
+import util.decision.DecisionMakerSingle;
+
 /**
  * 
  **/
@@ -17,7 +19,7 @@
 
     abstract public void            initializeEvent();
     abstract public List<Cluster>   getListOfBigClusters();
-    abstract public boolean         ignoreCluster(Cluster clus);
+    //abstract public boolean         ignoreCluster(Cluster clus);
     abstract public void            initializeBigCluster(Cluster clus);
     abstract public List<Cluster>   findTrackSegments(Cluster clus);
     abstract public List<Cluster>   findClumps(Cluster clus);
@@ -27,6 +29,9 @@
     abstract public void            finalizeBigCluster(Cluster clus, List<Cluster> vMIPs, List<Cluster> vClumps);
     abstract public void            finalizeEvent();
 
+    protected DecisionMakerSingle<Cluster> m_ignoreClusterDecision;
+    public void setIgnoreClusterDecision(DecisionMakerSingle<Cluster> dec) { m_ignoreClusterDecision = dec; }
+    public DecisionMakerSingle<Cluster> getIgnoreClusterDecision() { return m_ignoreClusterDecision; }
 
     public void process(EventHeader event)
     {
@@ -35,36 +40,42 @@
 	initializeEvent();
 	List<Cluster> listOfBigClusters = getListOfBigClusters();
 	for (Cluster currentCluster : listOfBigClusters) {
-	    boolean ignoreThisCluster = ignoreCluster(currentCluster);
+	    boolean ignoreThisCluster = !(m_ignoreClusterDecision.valid(currentCluster));
 	    if (!ignoreThisCluster) {
 		initializeBigCluster(currentCluster);
                 List<Cluster> vClumps = findClumps(currentCluster);
                 List<Cluster> vMIPs = findTrackSegments(currentCluster);
 		// Consider MIP-MIP links, making sure to compare each pair
 		// once and once only:
-		for (int iMIP=0; iMIP<vMIPs.size(); iMIP++) {
-                    Cluster track1 = (Cluster) (vMIPs.get(iMIP));
-                    // Compare to other MIPs:
-                    for (int jMIP=iMIP+1; jMIP<vMIPs.size(); jMIP++) {
-                        Cluster track2 = (Cluster) (vMIPs.get(jMIP));
-                        compareTrackSegmentToTrackSegment(track1, track2);
-                    }
-                }
+		if (vMIPs != null) {
+		    for (int iMIP=0; iMIP<vMIPs.size(); iMIP++) {
+			Cluster track1 = (Cluster) (vMIPs.get(iMIP));
+			// Compare to other MIPs:
+			for (int jMIP=iMIP+1; jMIP<vMIPs.size(); jMIP++) {
+			    Cluster track2 = (Cluster) (vMIPs.get(jMIP));
+			    compareTrackSegmentToTrackSegment(track1, track2);
+			}
+		    }
+		}
                 // Now consider MIP-Clump links:
-		for (Cluster track : vMIPs) {
-		    for (Cluster clump : vClumps) {
-                        compareTrackSegmentToClump(track, clump);
-                    }
-                }
+		if (vMIPs != null && vClumps != null) {
+		    for (Cluster track : vMIPs) {
+			for (Cluster clump : vClumps) {
+			    compareTrackSegmentToClump(track, clump);
+			}
+		    }
+		}
                 // Now consider Clump-Clump links:
-		for (Cluster clump1 : vClumps) {
-		    for (Cluster clump2 : vClumps) {
-			compareClumpToClump(clump1, clump2);
+		if (vClumps != null) {
+		    for (Cluster clump1 : vClumps) {
+			for (Cluster clump2 : vClumps) {
+			    compareClumpToClump(clump1, clump2);
+			}
 		    }
 		}
 		// Finalize big cluster:
 		finalizeBigCluster(currentCluster, vMIPs, vClumps);
-            }
+	    }
         }
         // OK, done looping. We may want to do a final step, such as writing out
         // the results:
CVSspam 0.2.8