Print

Print


Commit in lcsim/src/org/lcsim/contrib/uiowa on MAIN
MinimalRunPFA.java+103-3271.3 -> 1.4
MJC (contrib): Remove NonTrivialPFA; remove code that's no longer needed; reorganize code that slims down output

lcsim/src/org/lcsim/contrib/uiowa
MinimalRunPFA.java 1.3 -> 1.4
diff -u -r1.3 -r1.4
--- MinimalRunPFA.java	31 May 2008 02:04:13 -0000	1.3
+++ MinimalRunPFA.java	15 Aug 2008 22:18:21 -0000	1.4
@@ -2,7 +2,6 @@
 
 import java.util.*;
 import org.lcsim.util.Driver;
-import org.lcsim.contrib.uiowa.NonTrivialPFA;
 import org.lcsim.event.EventHeader;
 import org.lcsim.util.loop.LCIODriver;
 import org.lcsim.util.*;
@@ -15,314 +14,154 @@
 import org.lcsim.event.util.*;
 import org.lcsim.digisim.*;
 import org.lcsim.mc.fast.tracking.*;
+import org.lcsim.util.decision.*;
 
 public class MinimalRunPFA extends Driver
 {
-    boolean requireAcceptance = true;
+    boolean requireAcceptance = false;
+    boolean flipAcceptanceCheck = false;
     boolean useOldRonPhotonFinder = false;
+    boolean writeExtraOutput = false;
 
     public MinimalRunPFA() {
-	//substituteSetup(); requireAcceptance = false;
-	add(new org.lcsim.contrib.uiowa.NonTrivialPFA()); // Run the PFA, output is a List<ReconstructedParticle> named "PFAReconstructedParticles"
+	// Prepare to run PFA: Tracks (includes DigiSim)
+	add(new org.lcsim.contrib.Cassell.recon.Cheat.CheatReconDriver());
+	// Prepare to run PFA: Photon-finding and DirectedTree
 	add(new org.lcsim.contrib.uiowa.SetUpDTreeForReclustering());
+
+	// Set up and run PFA
 	ReclusterDTreeDriver reclusTree = new ReclusterDTreeDriver("DTreeClusters", "FSReconTracks", "ReconFSParticles");
+	reclusTree.writeExtraEventOutput(writeExtraOutput);
 	add(reclusTree);
-	//reclusTree.setDebug(true);
-	ReclusterDTreeDriverTimeCut testTimeCutDriver = new ReclusterDTreeDriverTimeCut("DTreeClusters", "FSReconTracks", "ReconFSParticles");
-	add(testTimeCutDriver);
+
+	// Write out, make plots
+	flushParticles();
 	writeOutMini();
 	checkPerf();
     }
 
-    void writeOutMini() {
+    void flushParticles() {
 	// Flush things for output
-	add(new FlushReconstructedParticlesDriver("UnflushedPFAReconstructedParticles", "PFAReconstructedParticles", "flushedClusters"));
 	add(new FlushReconstructedParticlesDriver("DTreeReclusteredParticles", "Flushed_DTreeReclusteredParticles", "FlushedClusters_DTreeReclusteredParticles"));
 	add(new FlushReconstructedParticlesDriver("DTreeReclusteredParticles_forConfusionMatrix", "Flushed_DTreeReclusteredParticles_forConfusionMatrix", "FlushedClusters_DTreeReclusteredParticles_forConfusionMatrix"));
-	add(new FlushReconstructedParticlesDriver("DTreeReclusteredParticles_jetsOnly", "Flushed_DTreeReclusteredParticles_jetsOnly", "FlushedClusters_DTreeReclusteredParticles_jetsOnly"));
-	add(new FlushReconstructedParticlesDriver("DTreeReclusteredParticles_unusedHits", "Flushed_DTreeReclusteredParticles_unusedHits", "FlushedClusters_DTreeReclusteredParticles_unusedHits"));
-	add(new FlushReconstructedParticlesDriver("DTreeReclusteredParticles_chargedPassingEoverPveto", "Flushed_DTreeReclusteredParticles_chargedPassingEoverPveto", "FlushedClusters_DTreeReclusteredParticles_chargedPassingEoverPveto"));
-	add(new FlushReconstructedParticlesDriver("DTreeReclusteredParticles_chargedFailingEoverPveto", "Flushed_DTreeReclusteredParticles_chargedFailingEoverPveto", "FlushedClusters_DTreeReclusteredParticles_chargedFailingEoverPveto"));
-	add(new FlushReconstructedParticlesDriver("DTreeReclusteredParticles_debugEoverP", "Flushed_DTreeReclusteredParticles_debugEoverP", "FlushedClusters_DTreeReclusteredParticles_debugEoverP"));
-	add(new FlushReconstructedParticlesDriver("DTreeReclusteredParticles_debugEoverP_punchThrough", "Flushed_DTreeReclusteredParticles_debugEoverP_punchThrough", "FlushedClusters_DTreeReclusteredParticles_debugEoverP_punchThrough"));
-	add(new FlushReconstructedParticlesDriver("DTreeReclusteredParticles_debugEoverP_noPunchThrough", "Flushed_DTreeReclusteredParticles_debugEoverP_noPunchThrough", "FlushedClusters_DTreeReclusteredParticles_debugEoverP_noPunchThrough"));
-	add(new FlushReconstructedParticlesDriver("DTreeReclusteredParticles_debugEoverP_oldCalib", "Flushed_DTreeReclusteredParticles_debugEoverP_oldCalib", "FlushedClusters_DTreeReclusteredParticles_debugEoverP_oldCalib"));
-	add(new FlushReconstructedParticlesDriver("DTreeReclusteredParticles_debugEoverP_punchThrough_oldCalib", "Flushed_DTreeReclusteredParticles_debugEoverP_punchThrough_oldCalib", "FlushedClusters_DTreeReclusteredParticles_debugEoverP_punchThrough_oldCalib"));
-	add(new FlushReconstructedParticlesDriver("DTreeReclusteredParticles_debugEoverP_noPunchThrough_oldCalib", "Flushed_DTreeReclusteredParticles_debugEoverP_noPunchThrough_oldCalib", "FlushedClusters_DTreeReclusteredParticles_debugEoverP_noPunchThrough_oldCalib"));
-	
-	add(new FlushReconstructedParticlesDriver("DTreeReclusteredParticles_photonLikePhotons", "Flushed_DTreeReclusteredParticles_photonLikePhotons", "FlushedClusters_DTreeReclusteredParticles_photonLikePhotons"));
-	add(new FlushReconstructedParticlesDriver("DTreeReclusteredParticles_chargedHadronLikePhotons", "Flushed_DTreeReclusteredParticles_chargedHadronLikePhotons", "FlushedClusters_DTreeReclusteredParticles_chargedHadronLikePhotons"));
-	add(new FlushReconstructedParticlesDriver("DTreeReclusteredParticles_electronClusters", "Flushed_DTreeReclusteredParticles_electronClusters", "FlushedClusters_DTreeReclusteredParticles_electronClusters"));
-	add(new FlushReconstructedParticlesDriver("DTreeReclusteredParticles_seedHadronLikePhotonClusters", "Flushed_DTreeReclusteredParticles_seedHadronLikePhotonClusters", "FlushedClusters_DTreeReclusteredParticles_seedHadronLikePhotonClusters"));
-	add(new FlushReconstructedParticlesDriver("DTreeReclusteredParticles_nonSeedHadronLikePhotonClusters", "Flushed_DTreeReclusteredParticles_nonSeedHadronLikePhotonClusters", "FlushedClusters_DTreeReclusteredParticles_nonSeedHadronLikePhotonClusters"));
-	add(new FlushReconstructedParticlesDriver("DTreeReclusteredParticles_nonSeedPhotonLikePhotonClusters", "Flushed_DTreeReclusteredParticles_nonSeedPhotonLikePhotonClusters", "FlushedClusters_DTreeReclusteredParticles_nonSeedPhotonLikePhotonClusters"));
-
-	// New -- test
-	add(new FlushReconstructedParticlesDriver("DTreeReclusteredTimeCutParticles", "Flushed_DTreeReclusteredTimeCutParticles", "FlushedClusters_DTreeReclusteredTimeCutParticles"));
-	add(new FlushReconstructedParticlesDriver("DTreeReclusteredTimeCutParticles_forConfusionMatrix", "Flushed_DTreeReclusteredTimeCutParticles_forConfusionMatrix", "FlushedClusters_DTreeReclusteredTimeCutParticles_forConfusionMatrix"));
+	if (writeExtraOutput) {
+	    add(new FlushReconstructedParticlesDriver("DTreeReclusteredParticles_jetsOnly", "Flushed_DTreeReclusteredParticles_jetsOnly", "FlushedClusters_DTreeReclusteredParticles_jetsOnly"));
+	    add(new FlushReconstructedParticlesDriver("DTreeReclusteredParticles_unusedHits", "Flushed_DTreeReclusteredParticles_unusedHits", "FlushedClusters_DTreeReclusteredParticles_unusedHits"));
+	    add(new FlushReconstructedParticlesDriver("DTreeReclusteredParticles_chargedPassingEoverPveto", "Flushed_DTreeReclusteredParticles_chargedPassingEoverPveto", "FlushedClusters_DTreeReclusteredParticles_chargedPassingEoverPveto"));
+	    add(new FlushReconstructedParticlesDriver("DTreeReclusteredParticles_chargedFailingEoverPveto", "Flushed_DTreeReclusteredParticles_chargedFailingEoverPveto", "FlushedClusters_DTreeReclusteredParticles_chargedFailingEoverPveto"));
+	    add(new FlushReconstructedParticlesDriver("DTreeReclusteredParticles_debugEoverP", "Flushed_DTreeReclusteredParticles_debugEoverP", "FlushedClusters_DTreeReclusteredParticles_debugEoverP"));
+	    add(new FlushReconstructedParticlesDriver("DTreeReclusteredParticles_debugEoverP_punchThrough", "Flushed_DTreeReclusteredParticles_debugEoverP_punchThrough", "FlushedClusters_DTreeReclusteredParticles_debugEoverP_punchThrough"));
+	    add(new FlushReconstructedParticlesDriver("DTreeReclusteredParticles_debugEoverP_noPunchThrough", "Flushed_DTreeReclusteredParticles_debugEoverP_noPunchThrough", "FlushedClusters_DTreeReclusteredParticles_debugEoverP_noPunchThrough"));
+	    add(new FlushReconstructedParticlesDriver("DTreeReclusteredParticles_debugEoverP_oldCalib", "Flushed_DTreeReclusteredParticles_debugEoverP_oldCalib", "FlushedClusters_DTreeReclusteredParticles_debugEoverP_oldCalib"));
+	    add(new FlushReconstructedParticlesDriver("DTreeReclusteredParticles_debugEoverP_punchThrough_oldCalib", "Flushed_DTreeReclusteredParticles_debugEoverP_punchThrough_oldCalib", "FlushedClusters_DTreeReclusteredParticles_debugEoverP_punchThrough_oldCalib"));
+	    add(new FlushReconstructedParticlesDriver("DTreeReclusteredParticles_debugEoverP_noPunchThrough_oldCalib", "Flushed_DTreeReclusteredParticles_debugEoverP_noPunchThrough_oldCalib", "FlushedClusters_DTreeReclusteredParticles_debugEoverP_noPunchThrough_oldCalib"));
+	    add(new FlushReconstructedParticlesDriver("DTreeReclusteredParticles_photonLikePhotons", "Flushed_DTreeReclusteredParticles_photonLikePhotons", "FlushedClusters_DTreeReclusteredParticles_photonLikePhotons"));
+	    add(new FlushReconstructedParticlesDriver("DTreeReclusteredParticles_chargedHadronLikePhotons", "Flushed_DTreeReclusteredParticles_chargedHadronLikePhotons", "FlushedClusters_DTreeReclusteredParticles_chargedHadronLikePhotons"));
+	    add(new FlushReconstructedParticlesDriver("DTreeReclusteredParticles_electronClusters", "Flushed_DTreeReclusteredParticles_electronClusters", "FlushedClusters_DTreeReclusteredParticles_electronClusters"));
+	    add(new FlushReconstructedParticlesDriver("DTreeReclusteredParticles_seedHadronLikePhotonClusters", "Flushed_DTreeReclusteredParticles_seedHadronLikePhotonClusters", "FlushedClusters_DTreeReclusteredParticles_seedHadronLikePhotonClusters"));
+	    add(new FlushReconstructedParticlesDriver("DTreeReclusteredParticles_nonSeedHadronLikePhotonClusters", "Flushed_DTreeReclusteredParticles_nonSeedHadronLikePhotonClusters", "FlushedClusters_DTreeReclusteredParticles_nonSeedHadronLikePhotonClusters"));
+	    add(new FlushReconstructedParticlesDriver("DTreeReclusteredParticles_nonSeedPhotonLikePhotonClusters", "Flushed_DTreeReclusteredParticles_nonSeedPhotonLikePhotonClusters", "FlushedClusters_DTreeReclusteredParticles_nonSeedPhotonLikePhotonClusters"));
+	}
+    }
 
+    void writeOutMini() {
+
+	// Avoid writing out a lot of things that were not in the original event and
+	//   a) were generated and used by us internally, and will not be needed; or
+	//   b) were generated by someone else.
 	
-	//
 	Vector<String> v = new Vector<String>();
-        v.add("TkrEndcapHits");
-        v.add("EcalEndcapDigiHitsCheatClusters");
-        v.add("smallphotonfinder__smallPhotonClusters2");
-        //v.add("MSTClustersLinkedWithTenOrMoreHits");
-        v.add("VtxBarrHits");
-        v.add("HcalBarrRaw2sim");
-        v.add("merge_ron_ron__clustersAfterFragmentHandling");
-        //v.add("HcalEndcapHits");
-        v.add("hadronclusterfinder__mstClustersHcal");
-        v.add("VtxEndcapHits");
-        v.add("haloMinusSmallPhotons");
-        v.add("MCParticleEndPointEnergy");
-        v.add("firstpasstrackmatcher__smallLinkedClustersMinusChargedParticlesFromMips");
-        v.add("hadronclusterfinder__mstClustersLinked");
-        v.add("transientChargedHadronParticles");
-        //v.add("smallPhotonClusters");
-        v.add("TracksToMCP");
-        v.add("TkrForwardHits");
-        v.add("LuminosityMonitorHits");
-        v.add("jetOutput__PFAReconstructedParticles");
-        //v.add("EcalEndcapHits");
-        v.add("TkrForwardHitsCheatTrackerHits");
-        //v.add("skeletonsPlusHalo");
-        //v.add("splitSkeletons");
-        v.add("TkrBarrHitsCheatTrackerHits");
-        v.add("HcalEndcapRaw2sim");
-        v.add("firstpasstrackmatcher__skeletonsPlusHaloMinusChargedParticlesFromMips");
-        v.add("EcalEndcapRaw2sim");
-        v.add("firstpasstrackmatcher__leftoverTracks");
-        v.add("firstpasstrackmatcher__unmatchedMips");
-        //v.add("MuonBarrHits");
-        v.add("clumpsHcal");
-        v.add("mipsEcal");
-        //v.add("smallPhotonParticles");
-        //v.add("Tracks_by_ron");
-        //v.add("PerfectRecoParticles");
-        v.add("merge_ron_ron__FindCharged__inputClusterList");
-        v.add("smallphotonfinder__smallPhotonClusters1");
-        v.add("TkrBarrHitsCheatTracks");
-        v.add("clumpsEcal");
-        //v.add("HcalBarrHits");
-        //TEST//v.add("HcalEndcapDigiHits");
-        //v.add("smallClustersMinusSmallPhotons");
-        v.add("VtxEndcapHitsCheatTracks");
-        //v.add("clumps");
-        //v.add("MSTClustersLinkedWithFewerThanTenHits");
-        v.add("TkrForwardHitsCheatTracks");
-        v.add("merge_ron_ron__neutralHadronParticles");
-        v.add("TkrEndcapHitsCheatTracks");
-        v.add("EcalBarrDigiHitsCheatClusters");
-        v.add("EcalBarrRawHits");
-        //v.add("mips");
+	// Particles
         v.add("CheatReconstructedParticles");
+	v.add("TempCheatParticles");
+	v.add("GenPerfectReconParticles");
+	v.add("GenPerfectReconParticles");
+	v.add("ReconPerfectReconParticles");
+	v.add("GenPerfectVisReconParticles");
+	v.add("ReconPerfectVisReconParticles");
+	// Tracks & track hits
         v.add("TkrEndcapHitsCheatTrackerHits");
         v.add("VtxEndcapHitsCheatTrackerHits");
-        v.add("TkrBarrHits");
-        v.add("UnflushedPFAReconstructedParticles");
-        //v.add("PerfectCheatClusters");
-        v.add("HcalBarrDigiHitsCheatClusters");
-        //v.add("EcalBarrHits");
-        //TEST//v.add("EcalBarrDigiHits");
-        v.add("HcalEndcapDigiHitsCheatClusters");
-        v.add("EcalEndcapRawHits");
         v.add("VtxBarrHitsCheatTrackerHits");
-        //v.add("flushedClusters");
-        v.add("merge_ron_ron__chargedHadronParticlesAfterFragmentHandling");
-        //TEST//v.add("HcalBarrDigiHits");
-        v.add("firstpasstrackmatcher__chargedHadronParticlesWithMipAssociation");
-        //v.add("RefinedCheatTracks");
-        //v.add("Tracks");
-        v.add("firstpasstrackmatcher__tracksMinusMipAssociations");
-        v.add("EcalBarrRaw2sim");
-        //v.add("PFAReconstructedParticles");
-        v.add("merge_ron_ron__FindCharged__leftoverTracks");
-        //v.add("skeletons");
-        v.add("cheatid__HitList1ForCheatFragmentIdentifier");
-        v.add("hadronclusterfinder__mstClustersEcal");
-        v.add("mipsHcal");
-        v.add("merge_ron_ron__FindNeutral__neutralClustersWithFragmentsMerged");
-        //v.add("MCParticle");
-        //v.add("ForwardEcalEndcapHits");
-        v.add("HcalBarrRawHits");
+	v.add("TkrForwardHitsCheatTrackerHits");
+	v.add("TkrBarrHitsCheatTrackerHits");
+        v.add("VtxEndcapHitsCheatTracks");
         v.add("VtxBarrHitsCheatTracks");
-        //v.add("photonClusters");
-        v.add("firstpasstrackmatcher__chargedHadronParticlesWithNonMipAssociation");
-        //TEST//v.add("EcalEndcapDigiHits");
-        v.add("largePhotonParticles");
-        //v.add("HcalEndcapRawHits");
-        //v.add("MuonEndcapHits");
-
-
-	//TEST//v.add("EcalBarrDTrees");
-	//TEST//v.add("EcalEndcapDTrees");
-	//TEST//v.add("HcalBarrDTrees");
-	//TEST//v.add("HcalEndcapDTrees");
-	//TEST//v.add("EcalBarrPhotonClusters");
-	//TEST//v.add("EcalEndcapPhotonClusters");
+        v.add("TkrBarrHitsCheatTracks");
+        v.add("TkrForwardHitsCheatTracks");
+        v.add("TkrEndcapHitsCheatTracks");
 	v.add("TempCheatTracks");
-	v.add("TempCheatParticles");
-	v.add("HadronParticles");
-	v.add("photonClustersWithoutFragments");
-	v.add("merge_ron_ron__FindCharged__unmatchedMips");
-
-	v.add("merge_ron_ron__FindCharged__chargedHadronParticlesWithMipAssociation");
-	v.add("merge_ron_ron__FindCharged__chargedHadronParticlesWithNonMipAssociation");
-	v.add("merge_ron_ron__FindCharged__skeletonsPlusHaloMinusChargedParticlesFromMips");
-	v.add("merge_ron_ron__FindCharged__tracksMinusMipAssociations");
-	v.add("merge_ron_ron__FindCharged__unmatchedMips");
-	v.add("smallClustersMinusSmallPhotons");
-	v.add("NonFSReconClusters");
-	//v.add("ReconPerfectVisReconParticles");
-	//v.add("ReconPerfectReconParticles");
+	v.add("PerfectTracks");
+	v.add("RefinedCheatTracks");
+	// CalorimeterHits
+	v.add("EcalBarrRawHits");
+	v.add("ForwardEcalEndcapRawHits");
+	v.add("EcalEndcapRawHits");
+	v.add("HcalBarrRawHits");
 	v.add("HcalEndcapRawHits");
-	//v.add("GenPerfectVisReconParticles");
-	//v.add("GenPerfectReconParticles");
-
-	//add(new org.lcsim.util.loop.LCIODriver("test-mini.slcio", v));
-	add(new org.lcsim.util.loop.LCIODriver("test-mini.slcio", v));
-    }
+	// Clusters
+        v.add("EcalEndcapDigiHitsCheatClusters");
+        v.add("EcalBarrDigiHitsCheatClusters");
+        v.add("HcalBarrDigiHitsCheatClusters");
+        v.add("HcalEndcapDigiHitsCheatClusters");
+	v.add("ReDTEcalClusters");
+	v.add("HcalEndcapDigiHitsDTreeClusters");
+	v.add("HcalBarrDigiHitsDTreeClusters");
+	v.add("NonFSReconClusters");
+	v.add("ReconClusters");
+	v.add("EcalBarrDigiHitsDTreeClusters");
+	v.add("EcalEndcapDigiHitsDTreeClusters");
+	v.add("RefinedCheatClusters");
+	v.add("DTEcalClusters");
+	v.add("TMClusters");
+	// Maps
+        v.add("EcalEndcapRaw2sim");
+	v.add("HcalBarrRaw2sim");
+        v.add("HcalEndcapRaw2sim");
+        v.add("EcalBarrRaw2sim");
+	v.add("ForwardEcalEndcapRaw2sim");
+	v.add("TracksToMCP");
+	v.add("CheatTracksToMCP");
+	// Misc
+        v.add("MCParticleEndPointEnergy");
 
-    void setupDTree() {
-	// Convert DigiSim's lists to hitmaps:
-	HitListToHitMapDriver converter1 = new HitListToHitMapDriver();
-	HitListToHitMapDriver converter2 = new HitListToHitMapDriver();
-	HitListToHitMapDriver converter3 = new HitListToHitMapDriver();
-	HitListToHitMapDriver converter4 = new HitListToHitMapDriver();
-	converter1.addInputList("EcalBarrDigiHits");
-	converter2.addInputList("EcalEndcapDigiHits");
-	converter3.addInputList("HcalBarrDigiHits");
-	converter4.addInputList("HcalEndcapDigiHits");
-	converter1.setOutput("EcalBarrDigiHitMap");
-	converter2.setOutput("EcalEndcapDigiHitMap");
-	converter3.setOutput("HcalBarrDigiHitMap");
-	converter4.setOutput("HcalEndcapDigiHitMap");
-	add(converter1);
-	add(converter2);
-	add(converter3);
-	add(converter4);
-
-	// DTree (TESTING!)
-	DirectedTreeDriver TESTING_treeDriverEcalBarr = new DirectedTreeDriver();
-	TESTING_treeDriverEcalBarr.setInputHitMap("EcalBarrDigiHitMap");
-	TESTING_treeDriverEcalBarr.setOutputClusterList("EcalBarrDTrees_WITHPHOTONS");
-	TESTING_treeDriverEcalBarr.setOutputHitMap("EcalBarrDigiHitMapAfterDTree_WITHPHOTONS");
-	DirectedTreeDriver TESTING_treeDriverEcalEndcap = new DirectedTreeDriver();
-	TESTING_treeDriverEcalEndcap.setInputHitMap("EcalEndcapDigiHitMap");
-	TESTING_treeDriverEcalEndcap.setOutputClusterList("EcalEndcapDTrees_WITHPHOTONS");
-	TESTING_treeDriverEcalEndcap.setOutputHitMap("EcalEndcapDigiHitMapAfterDTree_WITHPHOTONS");
-	add(TESTING_treeDriverEcalBarr);
-	add(TESTING_treeDriverEcalEndcap);
-
-	// Find photons in ECAL
-	if (useOldRonPhotonFinder) {
-	    // Make photons in barrel & endcap separately
-	    org.lcsim.contrib.uiowa.RonPhotonFinder.RonPhotonFinderSid01 photonFinderEcalBarrel = new org.lcsim.contrib.uiowa.RonPhotonFinder.RonPhotonFinderSid01("EcalBarrDigiHitMap", "EcalBarrDigiHitMapWithoutPhotons", "EcalBarrPhotonClusters");
-	    org.lcsim.contrib.uiowa.RonPhotonFinder.RonPhotonFinderSid01 photonFinderEcalEndcap = new org.lcsim.contrib.uiowa.RonPhotonFinder.RonPhotonFinderSid01("EcalEndcapDigiHitMap", "EcalEndcapDigiHitMapWithoutPhotons", "EcalEndcapPhotonClusters");
-	    add(photonFinderEcalBarrel);
-	    add(photonFinderEcalEndcap);
-	    // Merge to a single list of photons
-	    ListAddDriver<Cluster> mergePhotonClusters = new ListAddDriver<Cluster>(Cluster.class);
-	    mergePhotonClusters.addInputList("EcalBarrPhotonClusters");
-	    mergePhotonClusters.addInputList("EcalEndcapPhotonClusters");
-	    mergePhotonClusters.setOutputList("PhotonClustersForDTree");
-	    add(mergePhotonClusters);
+	if (writeExtraOutput) {
+	    add(new org.lcsim.util.loop.LCIODriver("test-mini.slcio"));
 	} else {
-	    // Merge barrel & endcap hits
-	    HitMapAddDriver combineEcal = new HitMapAddDriver();
-	    combineEcal.addInputHitMap("EcalBarrDigiHitMap");
-	    combineEcal.addInputHitMap("EcalEndcapDigiHitMap");
-	    combineEcal.setOutputHitMap("EcalDigiHitMap");
-	    add(combineEcal);
-	    // Make photons in barrel & endcap together
-	    org.lcsim.contrib.Cassell.recon.DTPhotons.RonDTPhotonFinderSid01 photonFinder = new org.lcsim.contrib.Cassell.recon.DTPhotons.RonDTPhotonFinderSid01("EcalDigiHitMap", "EcalDigiHitMapWithoutPhotons", "PhotonClustersForDTree");
-	    add(photonFinder);
-	    // Split back into barrel & endcap
-	    // This is a little fiddly -- need to do one subtraction to 
-	    // identify the photon hits, then a second to remove the photon
-	    // hits from the previous hitmaps.
-	    HitMapSubtractDriver separateEcal1 = new HitMapSubtractDriver("EcalBarrDigiHitMap", "EcalDigiHitMapWithoutPhotons", "EcalBarrel_photonHits");
-	    HitMapSubtractDriver separateEcal2 = new HitMapSubtractDriver("EcalEndcapDigiHitMap", "EcalDigiHitMapWithoutPhotons", "EcalEndcap_photonHits");
-	    HitMapSubtractDriver separateEcal3 = new HitMapSubtractDriver("EcalBarrDigiHitMap", "EcalBarrel_photonHits", "EcalBarrDigiHitMapWithoutPhotons");
-	    HitMapSubtractDriver separateEcal4 = new HitMapSubtractDriver("EcalEndcapDigiHitMap", "EcalEndcap_photonHits", "EcalEndcapDigiHitMapWithoutPhotons");
-	    add(separateEcal1);
-	    add(separateEcal2);
-	    add(separateEcal3);
-	    add(separateEcal4);
+	    add(new org.lcsim.util.loop.LCIODriver("test-mini.slcio", v));
 	}
-
-	// DTree
-	DirectedTreeDriver treeDriverEcalBarr = new DirectedTreeDriver();
-	treeDriverEcalBarr.setInputHitMap("EcalBarrDigiHitMapWithoutPhotons");
-	treeDriverEcalBarr.setOutputClusterList("EcalBarrDTrees");
-	treeDriverEcalBarr.setOutputHitMap("EcalBarrDigiHitMapAfterDTree");
-	DirectedTreeDriver treeDriverEcalEndcap = new DirectedTreeDriver();
-	treeDriverEcalEndcap.setInputHitMap("EcalEndcapDigiHitMapWithoutPhotons");
-	treeDriverEcalEndcap.setOutputClusterList("EcalEndcapDTrees");
-	treeDriverEcalEndcap.setOutputHitMap("EcalEndcapDigiHitMapAfterDTree");
-	DirectedTreeDriver treeDriverHcalBarr = new DirectedTreeDriver();
-	treeDriverHcalBarr.setInputHitMap("HcalBarrDigiHitMap");
-	treeDriverHcalBarr.setOutputClusterList("HcalBarrDTrees");
-	treeDriverHcalBarr.setOutputHitMap("HcalBarrDigiHitMapAfterDTree");
-	DirectedTreeDriver treeDriverHcalEndcap = new DirectedTreeDriver();
-	treeDriverHcalEndcap.setInputHitMap("HcalEndcapDigiHitMap");
-	treeDriverHcalEndcap.setOutputClusterList("HcalEndcapDTrees");
-	treeDriverHcalEndcap.setOutputHitMap("HcalEndcapDigiHitMapAfterDTree");
-	add(treeDriverEcalBarr);
-	add(treeDriverEcalEndcap);
-	add(treeDriverHcalBarr);
-	add(treeDriverHcalEndcap);
-
-	ListAddDriver<Cluster> mergeDTreeClusters = new ListAddDriver<Cluster>(Cluster.class);
-	mergeDTreeClusters.addInputList("EcalBarrDTrees");
-	mergeDTreeClusters.addInputList("EcalEndcapDTrees");
-	mergeDTreeClusters.addInputList("HcalBarrDTrees");
-	mergeDTreeClusters.addInputList("HcalEndcapDTrees");
-	mergeDTreeClusters.setOutputList("DTreeClusters");
-	add(mergeDTreeClusters);
     }
 
     void checkPerf() {
 	if (requireAcceptance) {
-	add(new org.lcsim.contrib.uiowa.MassPlots("PFAReconstructedParticles", "output-write.aida")); // Make some histograms and write them to a file
-	add(new org.lcsim.contrib.uiowa.MassPlots("DTreeReclusteredParticles", "output-write-dtree-reclustered.aida")); // Make some histograms and write them to a file
-	add(new org.lcsim.contrib.uiowa.MassPlots("DTreeReclusteredParticles_withEoverPveto", "output-write-dtree-reclustered-veto.aida")); // Make some histograms and write them to a file
-	// New -- test
-	add(new org.lcsim.contrib.uiowa.MassPlots("DTreeReclusteredTimeCutParticles", "output-write-dtree-reclustered-timecut.aida")); // Make some histograms and write them to a file
-	add(new org.lcsim.contrib.uiowa.MassPlots("DTreeReclusteredTimeCutParticles_withEoverPveto", "output-write-dtree-reclustered-timecut-veto.aida")); // Make some histograms and write them to a file
-	} else {
-	add(new EnergySumPlotter("DTreeReclusteredParticles", "dtree-energysum.aida"));
-	add(new EnergySumPlotter("DTreeReclusteredParticles_withEoverPveto", "dtree-veto-energysum.aida"));
+	    add(new org.lcsim.contrib.uiowa.MassPlots("DTreeReclusteredParticles", "output-write-dtree-reclustered.aida")); // Make some histograms and write them to a file
 	}
+	add(new EnergySumPlotter("DTreeReclusteredParticles", "dtree-energysum.aida"));
 
 	String CheatReconRname = "ReconPerfectReconParticles";
         String CheatReconFSname = "ReconFSParticles";
         String CheatReconFSTrackedname = "TrackedReconFSParticles";
-        org.lcsim.contrib.Cassell.recon.analysis.ReconstructedParticleCollectionEnergies testRonDriverForNonTrivialPFA = new org.lcsim.contrib.Cassell.recon.analysis.ReconstructedParticleCollectionEnergies(CheatReconFSname,CheatReconFSTrackedname,"PFAReconstructedParticles",true);
         org.lcsim.contrib.Cassell.recon.analysis.ReconstructedParticleCollectionEnergies testRonDriverForDTreeReclusterer = new org.lcsim.contrib.Cassell.recon.analysis.ReconstructedParticleCollectionEnergies(CheatReconFSname,CheatReconFSTrackedname,"DTreeReclusteredParticles", true);
         org.lcsim.contrib.Cassell.recon.analysis.ReconstructedParticleCollectionEnergies testRonDriverForDTreeReclusterer2 = new org.lcsim.contrib.Cassell.recon.analysis.ReconstructedParticleCollectionEnergies(CheatReconFSname,CheatReconFSTrackedname,"DTreeReclusteredParticles_forConfusionMatrix", true);
-        org.lcsim.contrib.Cassell.recon.analysis.ReconstructedParticleCollectionEnergies testRonDriverForDTreeReclusterer3 = new org.lcsim.contrib.Cassell.recon.analysis.ReconstructedParticleCollectionEnergies(CheatReconFSname,CheatReconFSTrackedname,"DTreeReclusteredParticles_jetsOnly", true);
-        org.lcsim.contrib.Cassell.recon.analysis.ReconstructedParticleCollectionEnergies testRonDriverForDTreeReclusterer4 = new org.lcsim.contrib.Cassell.recon.analysis.ReconstructedParticleCollectionEnergies(CheatReconFSname,CheatReconFSTrackedname,"DTreeReclusteredParticles_unusedHits", true);
-        org.lcsim.contrib.Cassell.recon.analysis.ReconstructedParticleCollectionEnergies testRonDriverForDTreeReclusterer5 = new org.lcsim.contrib.Cassell.recon.analysis.ReconstructedParticleCollectionEnergies(CheatReconFSname,CheatReconFSTrackedname,"DTreeReclusteredParticles_chargedPassingEoverPveto", true);
-        org.lcsim.contrib.Cassell.recon.analysis.ReconstructedParticleCollectionEnergies testRonDriverForDTreeReclusterer6 = new org.lcsim.contrib.Cassell.recon.analysis.ReconstructedParticleCollectionEnergies(CheatReconFSname,CheatReconFSTrackedname,"DTreeReclusteredParticles_chargedFailingEoverPveto", true);
-        add(testRonDriverForNonTrivialPFA);
         add(testRonDriverForDTreeReclusterer);
-        add(testRonDriverForDTreeReclusterer2);
-        add(testRonDriverForDTreeReclusterer3);
-        add(testRonDriverForDTreeReclusterer4);
-        add(testRonDriverForDTreeReclusterer5);
-        add(testRonDriverForDTreeReclusterer6);
-
-	// Photon tests
-        //add(new org.lcsim.contrib.Cassell.recon.analysis.ReconstructedParticleCollectionEnergies(CheatReconFSname,CheatReconFSTrackedname,"TestOrigPhotonList",true));
-	//add(new org.lcsim.contrib.Cassell.recon.analysis.ReconstructedParticleCollectionEnergies(CheatReconFSname,CheatReconFSTrackedname,"TestModifiedPhotonList",true));
-        //add(new org.lcsim.contrib.Cassell.recon.analysis.ReconstructedParticleCollectionEnergies(CheatReconFSname,CheatReconFSTrackedname,"TestSeedPhotonList",true));
+	add(testRonDriverForDTreeReclusterer2);
+
+	if (writeExtraOutput) {
+	    org.lcsim.contrib.Cassell.recon.analysis.ReconstructedParticleCollectionEnergies testRonDriverForDTreeReclusterer3 = new org.lcsim.contrib.Cassell.recon.analysis.ReconstructedParticleCollectionEnergies(CheatReconFSname,CheatReconFSTrackedname,"DTreeReclusteredParticles_jetsOnly", true);
+	    org.lcsim.contrib.Cassell.recon.analysis.ReconstructedParticleCollectionEnergies testRonDriverForDTreeReclusterer4 = new org.lcsim.contrib.Cassell.recon.analysis.ReconstructedParticleCollectionEnergies(CheatReconFSname,CheatReconFSTrackedname,"DTreeReclusteredParticles_unusedHits", true);
+	    org.lcsim.contrib.Cassell.recon.analysis.ReconstructedParticleCollectionEnergies testRonDriverForDTreeReclusterer5 = new org.lcsim.contrib.Cassell.recon.analysis.ReconstructedParticleCollectionEnergies(CheatReconFSname,CheatReconFSTrackedname,"DTreeReclusteredParticles_chargedPassingEoverPveto", true);
+	    org.lcsim.contrib.Cassell.recon.analysis.ReconstructedParticleCollectionEnergies testRonDriverForDTreeReclusterer6 = new org.lcsim.contrib.Cassell.recon.analysis.ReconstructedParticleCollectionEnergies(CheatReconFSname,CheatReconFSTrackedname,"DTreeReclusteredParticles_chargedFailingEoverPveto", true);
+	    add(testRonDriverForDTreeReclusterer3);
+	    add(testRonDriverForDTreeReclusterer4);
+	    add(testRonDriverForDTreeReclusterer5);
+	    add(testRonDriverForDTreeReclusterer6);
+	}
     }
 
     int count = 0;
     public void process(EventHeader event) {
 	System.out.println("DEBUG: Looking at event "+count); count++;
+	//if (count != 326) { return; }
         boolean passesTruthAcceptanceCut = false;
         MCParticle partZTovv = null;
         MCParticle partZToqq = null;
@@ -351,84 +190,21 @@
                     }
                 }
             }
-            if (partZTovv == null) {
-                //System.out.println("ERROR: no Z -> vv cand");
-            }
             if (partZToqq == null) {
 		if (requireAcceptance) {
 		    System.out.println("ERROR: no Z -> qq cand");
 		}
             } else {
-                //System.out.println("DEBUG: Mass of Z -> qq = "+partZToqq.getMass());
                 passesTruthAcceptanceCut = true;
                 for (MCParticle dau : partZToqq_daughters) {
                     double cosTheta = Math.abs(dau.getMomentum().z() / dau.getMomentum().magnitude());
                     if (cosTheta>0.8) { passesTruthAcceptanceCut = false; }
                 }
+		if (flipAcceptanceCheck) { passesTruthAcceptanceCut = !passesTruthAcceptanceCut; }
             }
         }
 	if (passesTruthAcceptanceCut || !requireAcceptance) {
 	    super.process(event);
 	}
     }
-
-    void substituteSetup() {
-		CreateFinalStateMCParticleList mcListMakerGen = new CreateFinalStateMCParticleList("Gen");
-	CreateFinalStateMCParticleList mcListMakerSim = new CreateFinalStateMCParticleList("Sim");
-	double rcut = 300.;  //  Bruce said 400 mm at meeting March 13
-	double zcut = 300.;
-	mcListMakerSim.setRadiusCut(rcut);
-	mcListMakerSim.setZCut(zcut);
-	add(mcListMakerGen);
-	add(mcListMakerSim);
-	String mcListNameGen = "GenFinalStateParticles";
-	String mcListNameSim = "SimFinalStateParticles";
-	String mcListName = mcListNameGen;
-
-	    // CalHitMapDriver is needed by DigiSim
-	    add(new CalHitMapDriver());
-	    // DigiSim: SimCalHits -> RawCalHits
-	    DigiSimDriver digi = new org.lcsim.digisim.DigiSimDriver();
-	    add(digi);
-	    // RawCalHits -> SimCalorimeterHits
-	    add( new SimCalorimeterHitsDriver() );
-
-	String eventHitMapEcal = "inputHitMapEcal";
-	String eventHitMapHcal = "inputHitMapHcal";
-	String[] eventHitCollections = {"EcalBarrDigiHits","EcalEndcapDigiHits","HcalBarrDigiHits","HcalEndcapDigiHits"};
-	{
-	    HitListToHitMapDriver hitmapEcal = new HitListToHitMapDriver();
-	    hitmapEcal.addInputList("EcalBarrDigiHits");
-	    hitmapEcal.addInputList("EcalEndcapDigiHits");
-	    hitmapEcal.setOutput(eventHitMapEcal);
-	    HitListToHitMapDriver hitmapHcal = new HitListToHitMapDriver();
-	    hitmapHcal.addInputList("HcalBarrDigiHits");
-	    hitmapHcal.addInputList("HcalEndcapDigiHits");
-	    hitmapHcal.setOutput(eventHitMapHcal);
-	    add(hitmapEcal);
-	    add(hitmapHcal);
-	}
-
-	String trackList;
-	{
-	    // Find tracks (non-cheating)
-	    // Output: List<Track> saved as EventHeader.TRACKS
-	    add (new MCFastTracking());
-	    String fastMCTrackList = EventHeader.TRACKS;
-	    
-	    // Find tracks (cheating)
-	    String ronTrackList = "FSReconTracks";
-	    String ronMCList = "ReconFSParticles";
-	    add(new org.lcsim.contrib.Cassell.recon.Cheat.CheatReconDriver());
-	    
-	    // Choose which track list to use
-	    boolean useRonTrackList = true;
-	    if (useRonTrackList) {
-		trackList = ronTrackList;
-		mcListName = ronMCList;
-	    } else {
-		trackList = fastMCTrackList;
-	    }
-	}
-    }
 }
CVSspam 0.2.8