Commit in lcsim/src/org/lcsim/contrib/uiowa on MAIN
NonTrivialPFA.java+28-51.18 -> 1.19
MJC: Added an option to the PFA to remove isolated hits. Also some minor code refactoring/cleanup.

lcsim/src/org/lcsim/contrib/uiowa
NonTrivialPFA.java 1.18 -> 1.19
diff -u -r1.18 -r1.19
--- NonTrivialPFA.java	12 Sep 2007 18:05:15 -0000	1.18
+++ NonTrivialPFA.java	20 Sep 2007 21:11:03 -0000	1.19
@@ -15,6 +15,7 @@
 import org.lcsim.recon.cluster.structural.FragmentIdentifierDecisionMaker;
 import org.lcsim.digisim.DigiSimDriver;
 import org.lcsim.recon.cluster.util.CalHitMapDriver;
+import org.lcsim.recon.cluster.util.IsolatedHitDecision;
 import org.lcsim.digisim.SimCalorimeterHitsDriver;
 import org.lcsim.recon.cluster.util.ClusterSizeDecision;
 import org.lcsim.recon.cluster.analysis.*;
@@ -125,6 +126,7 @@
 
 	String eventHitMapEcal = "inputHitMapEcal";
 	String eventHitMapHcal = "inputHitMapHcal";
+	String[] eventHitCollections = {"EcalBarrDigiHits","EcalEndcapDigiHits","HcalBarrDigiHits","HcalEndcapDigiHits"};
 	{
 	    HitListToHitMapDriver hitmapEcal = new HitListToHitMapDriver();
 	    hitmapEcal.addInputList("EcalBarrDigiHits");
@@ -136,9 +138,31 @@
 	    hitmapHcal.setOutput(eventHitMapHcal);
 	    add(hitmapEcal);
 	    add(hitmapHcal);
-	    accountant.addListOfNamedLists( new String[] { eventHitMapEcal, eventHitMapHcal } );
 	}
 
+	// Optionally, remove isolated hits
+	// --------------------------------
+	boolean removeIsolatedHits = false;
+	if (removeIsolatedHits) {
+	    String eventHitMapEcalFiltered = "inputHitMapEcalNoIsolatedHits";
+	    String eventHitMapHcalFiltered = "inputHitMapHcalNoIsolatedHits";
+	    IsolatedHitDecision decisionEcal = new IsolatedHitDecision(eventHitMapEcal);
+	    IsolatedHitDecision decisionHcal = new IsolatedHitDecision(eventHitMapHcal);
+	    HitMapFilter filterEcal = new HitMapFilter();
+	    HitMapFilter filterHcal = new HitMapFilter();
+	    filterEcal.setDecisionOnHit(new NotDecisionMakerSingle(decisionEcal));
+	    filterHcal.setDecisionOnHit(new NotDecisionMakerSingle(decisionHcal));
+	    HitMapFilterDriver filterDriverEcal = new HitMapFilterDriver(eventHitMapEcal, eventHitMapEcalFiltered, filterEcal);
+	    HitMapFilterDriver filterDriverHcal = new HitMapFilterDriver(eventHitMapHcal, eventHitMapHcalFiltered, filterHcal);
+	    add(decisionEcal);
+	    add(decisionHcal);
+	    add(filterDriverEcal);
+	    add(filterDriverHcal);
+	    eventHitMapEcal = eventHitMapEcalFiltered;
+	    eventHitMapHcal = eventHitMapHcalFiltered;
+	}
+	accountant.addListOfNamedLists( new String[] { eventHitMapEcal, eventHitMapHcal } );
+
 	// Find tracks
 	// -----------
 
@@ -157,8 +181,7 @@
                 String Tname = "RefinedCheatTracks";
                 add(new org.lcsim.recon.tracking.cheat.CheatTrackDriver());
                 String Cname = "PerfectCheatClusters";
-                String[] collections = {"EcalBarrDigiHits","EcalEndcapDigiHits","HcalBarrDigiHits","HcalEndcapDigiHits"};
-                add (new org.lcsim.recon.cluster.cheat.CheatClusterDriver(collections,Cname));
+                add (new org.lcsim.recon.cluster.cheat.CheatClusterDriver(eventHitCollections,Cname));
 		
                 // Make cheat reconstructed particles from cheat tracks and cheat clusters
                 String CRPname = "CheatReconstructedParticles";
@@ -270,7 +293,7 @@
 
 	if (m_writeLikelihood) {
 	    // Write out likelihoods for MIP-MIP, MIP-Clump, Clump-Clump combinations
-	    String[] inputHitListsForAssociator = {"EcalBarrDigiHits", "EcalEndcapDigiHits", "HcalBarrDigiHits", "HcalEndcapDigiHits"};
+	    String[] inputHitListsForAssociator = eventHitCollections;
 	    String[] inputClusterListsForAssociator = {eventMips, eventClumps};
 	    addLikelihoodWriter("likwrite__", eventLargeClusters, eventMips, eventClumps, inputHitListsForAssociator, inputClusterListsForAssociator, mcListName);
 	} else {
@@ -304,7 +327,7 @@
 	    String eventHaloClusters = "skeletonsPlusHalo";
 	    String eventUnusedHitsMinusHalo = "structuralUnusedHitsMinusHalo";
 	    String prefix = "linker__";
-	    String[] inputHitListsForAssociator = {"EcalBarrDigiHits", "EcalEndcapDigiHits", "HcalBarrDigiHits", "HcalEndcapDigiHits"};
+	    String[] inputHitListsForAssociator = eventHitCollections;
 	    String[] inputClusterListsForAssociator = {eventMips, eventClumps};
 	    boolean cheatOnLikelihood = false;
 	    if (cheatOnLikelihood) {
CVSspam 0.2.8