lcsim/src/org/lcsim/contrib/uiowa
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) {