Commit in lcsim/src/org/lcsim/contrib/uiowa on MAIN
MinimalRunPFA.java+308-221.1 -> 1.2
MJC: (contrib) sync changes

lcsim/src/org/lcsim/contrib/uiowa
MinimalRunPFA.java 1.1 -> 1.2
diff -u -r1.1 -r1.2
--- MinimalRunPFA.java	17 Dec 2007 22:32:45 -0000	1.1
+++ MinimalRunPFA.java	31 May 2008 01:16:06 -0000	1.2
@@ -10,20 +10,180 @@
 import org.lcsim.recon.cluster.structural.likelihood.LikelihoodEvaluatorWrapper;
 import org.lcsim.recon.cluster.directedtree.*;
 import org.lcsim.util.hitmap.*;
+import org.lcsim.recon.pfa.output.EnergySumPlotter;
+import org.lcsim.recon.cluster.util.*;
+import org.lcsim.event.util.*;
+import org.lcsim.digisim.*;
+import org.lcsim.mc.fast.tracking.*;
 
 public class MinimalRunPFA extends Driver
 {
-    public MinimalRunPFA() {
-	add(new org.lcsim.contrib.uiowa.NonTrivialPFA(false)); // Run the PFA, output is a List<ReconstructedParticle> named "PFAReconstructedParticles"
-	org.lcsim.contrib.uiowa.ReclusterDriver reclus = new org.lcsim.contrib.uiowa.ReclusterDriver("ReconFSParticles", "FSReconTracks", "muonParticles", "photonClustersWithoutFragments", "skeletons", "MSTClustersLinkedWithFewerThanTenHits", "structuralUnusedHits", "MSTClustersLinkedWithTenOrMoreHits", "mips", "clumps", "splitSkeletons", new LikelihoodEvaluatorWrapper());
-	//reclus.setDebug(true);
-	add(reclus);
-	setupDTree();
-	add(new ReclusterDTreeDriver("DTreeClusters", "FSReconTracks", "ReconFSParticles"));
+    boolean requireAcceptance = true;
+    boolean useOldRonPhotonFinder = false;
 
+    public MinimalRunPFA() {
+	//substituteSetup(); requireAcceptance = false;
+	add(new org.lcsim.contrib.uiowa.NonTrivialPFA()); // Run the PFA, output is a List<ReconstructedParticle> named "PFAReconstructedParticles"
+	add(new org.lcsim.contrib.uiowa.SetUpDTreeForReclustering());
+	ReclusterDTreeDriver reclusTree = new ReclusterDTreeDriver("DTreeClusters", "FSReconTracks", "ReconFSParticles");
+	add(reclusTree);
+	//reclusTree.setDebug(true);
+	ReclusterDTreeDriverTimeCut testTimeCutDriver = new ReclusterDTreeDriverTimeCut("DTreeClustersTimeCut", "FSReconTracks", "ReconFSParticles");
+	add(testTimeCutDriver);
+	writeOutMini();
 	checkPerf();
     }
 
+    void writeOutMini() {
+	// 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"));
+
+	
+	//
+	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");
+        v.add("CheatReconstructedParticles");
+        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("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("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("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));
+    }
+
     void setupDTree() {
 	// Convert DigiSim's lists to hitmaps:
 	HitListToHitMapDriver converter1 = new HitListToHitMapDriver();
@@ -42,16 +202,56 @@
 	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
-	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);
-	ListAddDriver<Cluster> mergePhotonClusters = new ListAddDriver<Cluster>(Cluster.class);
-	mergePhotonClusters.addInputList("EcalBarrPhotonClusters");
-	mergePhotonClusters.addInputList("EcalEndcapPhotonClusters");
-	mergePhotonClusters.setOutputList("PhotonClustersForDTree");
-	add(mergePhotonClusters);
+	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);
+	} 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);
+	}
+
 	// DTree
 	DirectedTreeDriver treeDriverEcalBarr = new DirectedTreeDriver();
 	treeDriverEcalBarr.setInputHitMap("EcalBarrDigiHitMapWithoutPhotons");
@@ -84,21 +284,45 @@
     }
 
     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("ReclusteredParticles", "output-write-reclustered.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"));
+	}
+
 	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 testRonDriverForReclusterer = new org.lcsim.contrib.Cassell.recon.analysis.ReconstructedParticleCollectionEnergies(CheatReconFSname,CheatReconFSTrackedname,"ReclusteredParticles", 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(testRonDriverForReclusterer);
         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));
     }
 
+    int count = 0;
     public void process(EventHeader event) {
+	System.out.println("DEBUG: Looking at event "+count); count++;
         boolean passesTruthAcceptanceCut = false;
         MCParticle partZTovv = null;
         MCParticle partZToqq = null;
@@ -128,10 +352,12 @@
                 }
             }
             if (partZTovv == null) {
-                System.out.println("ERROR: no Z -> vv cand");
+                //System.out.println("ERROR: no Z -> vv cand");
             }
             if (partZToqq == null) {
-                System.out.println("ERROR: no Z -> qq cand");
+		if (requireAcceptance) {
+		    System.out.println("ERROR: no Z -> qq cand");
+		}
             } else {
                 //System.out.println("DEBUG: Mass of Z -> qq = "+partZToqq.getMass());
                 passesTruthAcceptanceCut = true;
@@ -141,8 +367,68 @@
                 }
             }
         }
-	if (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