Commit in lcsim/src/org/lcsim/contrib/uiowa on MAIN
NonTrivialPFA.java+168-1821.12 -> 1.13
MJC: Remove spaces etc from LCIO names. Not backwards compatible!

lcsim/src/org/lcsim/contrib/uiowa
NonTrivialPFA.java 1.12 -> 1.13
diff -u -r1.12 -r1.13
--- NonTrivialPFA.java	20 Aug 2007 17:41:20 -0000	1.12
+++ NonTrivialPFA.java	21 Aug 2007 02:08:58 -0000	1.13
@@ -123,18 +123,20 @@
 	// Set up input hit lists
 	// ----------------------
 
+	String eventHitMapEcal = "inputHitMapEcal";
+	String eventHitMapHcal = "inputHitMapHcal";
 	{
 	    HitListToHitMapDriver hitmapEcal = new HitListToHitMapDriver();
 	    hitmapEcal.addInputList("EcalBarrDigiHits");
 	    hitmapEcal.addInputList("EcalEndcapDigiHits");
-	    hitmapEcal.setOutput("input hit map ecal");
+	    hitmapEcal.setOutput(eventHitMapEcal);
 	    HitListToHitMapDriver hitmapHcal = new HitListToHitMapDriver();
 	    hitmapHcal.addInputList("HcalBarrDigiHits");
 	    hitmapHcal.addInputList("HcalEndcapDigiHits");
-	    hitmapHcal.setOutput("input hit map hcal");
+	    hitmapHcal.setOutput(eventHitMapHcal);
 	    add(hitmapEcal);
 	    add(hitmapHcal);
-	    accountant.addListOfNamedLists( new String[] { "input hit map ecal", "input hit map hcal" } );
+	    accountant.addListOfNamedLists( new String[] { eventHitMapEcal, eventHitMapHcal } );
 	}
 
 	// Find tracks
@@ -149,7 +151,7 @@
 	    
 	    // Find tracks (cheating)
             // Code taken from Steve Magill
-            String cheatingTrackList = "Tracks (ron)";
+            String cheatingTrackList = "Tracks_by_ron";
             {
                 // Make cheat tracks and cheat clusters
                 String Tname = "RefinedCheatTracks";
@@ -190,88 +192,77 @@
 	// Find simple clusters
 	// --------------------
 
-	String largePhotonParticleList = "large photon particles (ron calib)";
+	String eventPhotonClusters = "photonClusters";
+	String largePhotonParticleList = "largePhotonParticles";
+	String eventHitMapEcalWithoutPhotons = "hitMapEcalWithoutPhotons";
 	{
 	    // Photons
-	    String prefix = "photonfinder: ";
-	    String inputHitMap = "input hit map ecal";
+	    String prefix = "photonfinder__";
 	    String inputTrackList = trackList;
-	    String photonClusterList = "photon clusters";
-	    String outputHitMap = "hit map ecal without photons";
 	    boolean cheatOnPhotons = false;
 	   if (cheatOnPhotons) {
-		addCheatingPhotonFinder(prefix, inputHitMap, inputTrackList, photonClusterList, outputHitMap, mcListName);
+		addCheatingPhotonFinder(prefix, eventHitMapEcal, inputTrackList, eventPhotonClusters, eventHitMapEcalWithoutPhotons, mcListName);
 	    } else {
-		addPhotonFinder(prefix, inputHitMap, inputTrackList, photonClusterList, outputHitMap);
+		addPhotonFinder(prefix, eventHitMapEcal, inputTrackList, eventPhotonClusters, eventHitMapEcalWithoutPhotons);
 	    }
-	    prefix = "photonmaker: ";
-	    addPhotonParticleMaker(prefix, photonClusterList, largePhotonParticleList, ronPhotonCalib);
+	    prefix = "photonmaker__";
+	    addPhotonParticleMaker(prefix, eventPhotonClusters, largePhotonParticleList, ronPhotonCalib);
 	    // Book-keeping
-	    accountant.addListOfNamedLists( new String[] { "hit map ecal without photons", "photon clusters", "input hit map hcal" } );
-	    accountant.addListOfNamedLists( new String[] { "hit map ecal without photons", largePhotonParticleList, "input hit map hcal" } );
+	    accountant.addListOfNamedLists( new String[] { eventHitMapEcalWithoutPhotons, eventPhotonClusters, eventHitMapHcal } );
+	    accountant.addListOfNamedLists( new String[] { eventHitMapEcalWithoutPhotons, largePhotonParticleList, eventHitMapHcal } );
 	}
 
 
+	String eventHitMapEcalWithoutMipsOrPhotons = "hitMapEcalWithoutMipsOrPhotons";
+	String eventHitMapHcalWithoutMips = "hitMapHcalWithoutMips";
+	String eventMipsEcal = "mipsEcal";
+	String eventMipsHcal = "mipsHcal";
+	String eventMips = "mips";
 	{
 	    // MIPs
-	    String prefix = "mipfinder: ";
-	    String inputHitMapECAL = "hit map ecal without photons";
-	    String inputHitMapHCAL = "input hit map hcal";
-	    String outputHitMapECAL = "hit map ecal without mips or photons";
-	    String outputHitMapHCAL = "hit map hcal without mips";
-	    String outputMIPListECAL = "mips ecal";
-	    String outputMIPListHCAL = "mips hcal";
-	    String outputMIPList = "mips";
-	    addMIPFinder(prefix, inputHitMapECAL, outputMIPListECAL, outputHitMapECAL); 
-	    addMIPFinder(prefix, inputHitMapHCAL, outputMIPListHCAL, outputHitMapHCAL);
+	    String prefix = "mipfinder__";
+	    addMIPFinder(prefix, eventHitMapEcalWithoutPhotons, eventMipsEcal, eventHitMapEcalWithoutMipsOrPhotons); 
+	    addMIPFinder(prefix, eventHitMapHcal, eventMipsHcal, eventHitMapHcalWithoutMips);
 	    // Merge ECAL & HCAL lists
 	    ListAddDriver<Cluster> mergeMIPs = new ListAddDriver<Cluster>(Cluster.class);
-	    mergeMIPs.addInputList(outputMIPListECAL);
-	    mergeMIPs.addInputList(outputMIPListHCAL);
-	    mergeMIPs.setOutputList(outputMIPList);
+	    mergeMIPs.addInputList(eventMipsEcal);
+	    mergeMIPs.addInputList(eventMipsHcal);
+	    mergeMIPs.setOutputList(eventMips);
 	    add(mergeMIPs);
 	    // Book-keeping
-	    accountant.addListOfNamedLists( new String[] { "hit map ecal without mips or photons", "hit map hcal without mips", "photon clusters", "mips ecal", "mips hcal" } );
-	    accountant.addListOfNamedLists( new String[] { "hit map ecal without mips or photons", "hit map hcal without mips", "photon clusters", "mips" } );
+	    accountant.addListOfNamedLists( new String[] { eventHitMapEcalWithoutMipsOrPhotons, eventHitMapHcalWithoutMips, eventPhotonClusters, eventMipsEcal, eventMipsHcal } );
+	    accountant.addListOfNamedLists( new String[] { eventHitMapEcalWithoutMipsOrPhotons, eventHitMapHcalWithoutMips, eventPhotonClusters, eventMips } );
 	}
 
+	String eventHitMapEcalWithoutMipsOrPhotonsOrClumps = "hitMapEcalWithoutMipsOrPhotonsOrClumps";
+	String eventHitMapHcalWithoutMipsOrClumps = "hitMapHcalWithoutMipsOrClumps";
+	String eventClumpsEcal = "clumpsEcal";
+	String eventClumpsHcal = "clumpsHcal";
+	String eventClumps = "clumps";
 	{
 	    // Find clumps
-	    String prefix = "clumpfinder: ";
-	    String inputHitMapECAL = "hit map ecal without mips or photons";
-	    String inputHitMapHCAL = "hit map hcal without mips";
-	    String outputHitMapECAL = "hit map ecal without mips or photons or clumps";
-	    String outputHitMapHCAL = "hit map hcal without mips or clumps";
-	    String outputClumpListECAL = "clumps ecal";
-	    String outputClumpListHCAL = "clumps hcal";
-	    String outputClumpList = "clumps";
-	    addClumpFinder(prefix, inputHitMapECAL, outputClumpListECAL, outputHitMapECAL);
-	    addClumpFinder(prefix, inputHitMapHCAL, outputClumpListHCAL, outputHitMapHCAL);
+	    String prefix = "clumpfinder__";
+	    addClumpFinder(prefix, eventHitMapEcalWithoutMipsOrPhotons, eventClumpsEcal, eventHitMapEcalWithoutMipsOrPhotonsOrClumps);
+	    addClumpFinder(prefix, eventHitMapHcalWithoutMips, eventClumpsHcal, eventHitMapHcalWithoutMipsOrClumps);
 	    // Merge ECAL & HCAL lists
 	    ListAddDriver<Cluster> mergeClumps = new ListAddDriver<Cluster>(Cluster.class);
-	    mergeClumps.addInputList(outputClumpListECAL);
-	    mergeClumps.addInputList(outputClumpListHCAL);
-	    mergeClumps.setOutputList(outputClumpList);
+	    mergeClumps.addInputList(eventClumpsEcal);
+	    mergeClumps.addInputList(eventClumpsHcal);
+	    mergeClumps.setOutputList(eventClumps);
 	    add(mergeClumps);
 	    // Book-keeping
-	    accountant.addListOfNamedLists( new String[] { "hit map ecal without mips or photons or clumps", "hit map hcal without mips or clumps", "photon clusters", "mips", "clumps ecal", "clumps hcal" } );
-	    accountant.addListOfNamedLists( new String[] { "hit map ecal without mips or photons or clumps", "hit map hcal without mips or clumps", "photon clusters", "mips", "clumps" } );
+	    accountant.addListOfNamedLists( new String[] { eventHitMapEcalWithoutMipsOrPhotonsOrClumps, eventHitMapHcalWithoutMipsOrClumps, eventPhotonClusters, eventMips, eventClumpsEcal, eventClumpsHcal } );
+	    accountant.addListOfNamedLists( new String[] { eventHitMapEcalWithoutMipsOrPhotonsOrClumps, eventHitMapHcalWithoutMipsOrClumps, eventPhotonClusters, eventMips, eventClumps } );
 	}
 
+	String eventLargeClusters = "MSTClustersLinkedWithTenOrMoreHits";
+	String eventSmallClusters = "MSTClustersLinkedWithFewerThanTenHits";
 	{
 	    // Find large clusters (hadrons, muons, anything else that's around)
-	    String prefix = "hadronclusterfinder: ";
-	    String inputHitMapECAL = "hit map ecal without mips or photons or clumps";
-	    String inputHitMapHCAL = "hit map hcal without mips or clumps";
-	    String inputMIPListECAL = "mips ecal";
-	    String inputMIPListHCAL = "mips hcal";
-	    String inputClumpListECAL = "clumps ecal";
-	    String inputClumpListHCAL = "clumps hcal";
-	    String outputLargeClusters = "mst clusters linked (>=10 hits)";
-	    String outputSmallClusters = "mst clusters linked (<10 hits)";
-	    addHadronicClusterFinder(prefix, inputHitMapECAL, inputHitMapHCAL, inputMIPListECAL, inputMIPListHCAL, inputClumpListECAL, inputClumpListHCAL, outputLargeClusters, outputSmallClusters);
+	    String prefix = "hadronclusterfinder__";
+	    addHadronicClusterFinder(prefix, eventHitMapEcalWithoutMipsOrPhotonsOrClumps, eventHitMapHcalWithoutMipsOrClumps, eventMipsEcal, eventMipsHcal, eventClumpsEcal, eventClumpsHcal, eventLargeClusters, eventSmallClusters);
 	    // Book-keeping
-	    accountant.addListOfNamedLists( new String[] { "mst clusters linked (>=10 hits)", "mst clusters linked (<10 hits)", "photon clusters" } );
+	    accountant.addListOfNamedLists( new String[] { eventLargeClusters, eventSmallClusters, eventPhotonClusters } );
 	}
 
 	// Likelihood-based hadronic shower reconstruction
@@ -279,12 +270,9 @@
 
 	if (m_writeLikelihood) {
 	    // Write out likelihoods for MIP-MIP, MIP-Clump, Clump-Clump combinations
-	    String inputClusterList = "mst clusters linked (>=10 hits)";
-	    String inputMIPList = "mips";
-	    String inputClumpList = "clumps";
 	    String[] inputHitListsForAssociator = {"EcalBarrDigiHits", "EcalEndcapDigiHits", "HcalBarrDigiHits", "HcalEndcapDigiHits"};
-	    String[] inputClusterListsForAssociator = {inputMIPList,inputClumpList};
-	    addLikelihoodWriter("likwrite: ", inputClusterList, inputMIPList, inputClumpList, inputHitListsForAssociator, inputClusterListsForAssociator, mcListName);
+	    String[] inputClusterListsForAssociator = {eventMips, eventClumps};
+	    addLikelihoodWriter("likwrite__", eventLargeClusters, eventMips, eventClumps, inputHitListsForAssociator, inputClusterListsForAssociator, mcListName);
 	} else {
 	    // Read in likelihood:
 	    LikelihoodEvaluator eval = null;
@@ -308,93 +296,88 @@
 	    eval.setDebug(false); // lots of debug printout if enabled!
 
 	    // Link MIPs, clumps
-	    String inputLargeClusterList = "mst clusters linked (>=10 hits)";
-	    String smallClusterList = "mst clusters linked (<10 hits)";
-	    String inputMIPList = "mips";
-	    String inputClumpList = "clumps";
-	    String skeletonClusterList = "skeletons";
-	    String unusedHitMap1 = "structural unused hits";
-	    String haloClusterList = "skeletons plus halo";
-	    String unusedHitMap2 = "structural unused hits minus halo";
-	    String prefix = "linker: ";
+	    String eventSkeletonClusters = "skeletons";
+	    String eventUnusedHits = "structuralUnusedHits";
+	    String eventHaloClusters = "skeletonsPlusHalo";
+	    String eventUnusedHitsMinusHalo = "structuralUnusedHitsMinusHalo";
+	    String prefix = "linker__";
 	    String[] inputHitListsForAssociator = {"EcalBarrDigiHits", "EcalEndcapDigiHits", "HcalBarrDigiHits", "HcalEndcapDigiHits"};
-	    String[] inputClusterListsForAssociator = {"mips", "clumps"};
+	    String[] inputClusterListsForAssociator = {eventMips, eventClumps};
 	    boolean cheatOnLikelihood = false;
 	    if (cheatOnLikelihood) {
-		addCheatingStructuralLinker(prefix, inputLargeClusterList, inputMIPList, inputClumpList, skeletonClusterList, unusedHitMap1, inputHitListsForAssociator, inputClusterListsForAssociator, mcListName);
+		addCheatingStructuralLinker(prefix, eventLargeClusters, eventMips, eventClumps, eventSkeletonClusters, eventUnusedHits, inputHitListsForAssociator, inputClusterListsForAssociator, mcListName);
 	    } else {
 		boolean makeExtraLikelihoodPlots = false;
 		if (makeExtraLikelihoodPlots) {
-		    addStructuralLinkerWithPlots(prefix, eval, inputLargeClusterList, inputMIPList, inputClumpList, skeletonClusterList, unusedHitMap1, inputHitListsForAssociator, inputClusterListsForAssociator, mcListName);
+		    addStructuralLinkerWithPlots(prefix, eval, eventLargeClusters, eventMips, eventClumps, eventSkeletonClusters, eventUnusedHits, inputHitListsForAssociator, inputClusterListsForAssociator, mcListName);
 		} else {
-		    addStructuralLinker(prefix, eval, inputLargeClusterList, inputMIPList, inputClumpList, skeletonClusterList, unusedHitMap1);
+		    addStructuralLinker(prefix, eval, eventLargeClusters, eventMips, eventClumps, eventSkeletonClusters, eventUnusedHits);
 		}
 	    }
 	    // Book-keeping
-	    accountant.addListOfNamedLists( new String[] { smallClusterList, unusedHitMap1, skeletonClusterList, "photon clusters" } );
+	    accountant.addListOfNamedLists( new String[] { eventSmallClusters, eventUnusedHits, eventSkeletonClusters, eventPhotonClusters } );
 
 	    // Check track matches are sensible; don't match multiple
 	    // tracks to the same skeleton.
-	    String splitSkeletonClusterList = "skeletons (split)";
-	    add(new CheckSkeletonsForMultipleTracks(eval, trackList, skeletonClusterList, splitSkeletonClusterList, inputMIPList, inputClumpList));
+	    String eventSplitSkeletonClusters = "splitSkeletons";
+	    add(new CheckSkeletonsForMultipleTracks(eval, trackList, eventSkeletonClusters, eventSplitSkeletonClusters, eventMips, eventClumps));
 
 	    // Add halo of nearby hits
-	    prefix = "halo: ";
- 	    addHaloAssigner(prefix, splitSkeletonClusterList, unusedHitMap1, haloClusterList, unusedHitMap2);
+	    prefix = "halo__";
+ 	    addHaloAssigner(prefix, eventSplitSkeletonClusters, eventUnusedHits, eventHaloClusters, eventUnusedHitsMinusHalo);
 	    // Book-keeping
-	    accountant.addListOfNamedLists( new String[] { smallClusterList, unusedHitMap2, haloClusterList, "photon clusters" } );
+	    accountant.addListOfNamedLists( new String[] { eventSmallClusters, eventUnusedHitsMinusHalo, eventHaloClusters, eventPhotonClusters } );
 
 	    // Match to tracks
-	    String tempParticleList = "charged hadron particles";
-	    prefix = "firstpasstrackmatcher: ";
-	    addTrackMatcher(prefix, trackList, inputMIPList, haloClusterList, smallClusterList, tempParticleList, false, null, false); // Check: "trackList" ?
+	    String tempParticleList = "transientChargedHadronParticles";
+	    prefix = "firstpasstrackmatcher__";
+	    addTrackMatcher(prefix, trackList, eventMips, eventHaloClusters, eventSmallClusters, tempParticleList, false, null, false);
 
 	    // Look for teeny clusters near front of ECAL (soft photons)
-	    prefix = "smallphotonfinder: ";
-	    String smallPhotonParticleList = "small photons (ron calib)";
-	    String haloMinusPhotonClusterList = "halo minus small photons";
-	    String smallClusterMinusPhotonClusterList = "mst clusters linked (<10 hits) minus small photons";
-	    String smallPhotonClusterList = "small photon clusters";
+	    prefix = "smallphotonfinder__";
+	    String eventSmallPhotonParticles = "smallPhotonParticles";
+	    String eventHaloMinusPhotonClusters = "haloMinusSmallPhotons";
+	    String eventSmallClustersNotPhotons = "smallClustersMinusSmallPhotons";
+	    String eventSmallPhotonClusters = "smallPhotonClusters";
 	    SimpleFragmentIdentifier fragID = new SimpleFragmentIdentifier(10, 100.0);
 	    fragID.addParticleList(tempParticleList);
-	    addSmallPhotonClusterFinder(prefix, fragID, haloClusterList, smallClusterList, haloMinusPhotonClusterList, smallClusterMinusPhotonClusterList, smallPhotonClusterList);
-            addSmallPhotonParticleFinder(prefix+"ron: ",smallPhotonClusterList,smallPhotonParticleList,ronPhotonCalib);
+	    addSmallPhotonClusterFinder(prefix, fragID, eventHaloClusters, eventSmallClusters, eventHaloMinusPhotonClusters, eventSmallClustersNotPhotons, eventSmallPhotonClusters);
+            addSmallPhotonParticleFinder(prefix+"ron__",eventSmallPhotonClusters,eventSmallPhotonParticles,ronPhotonCalib);
 	    // Book-keeping
-	    accountant.addListOfNamedLists( new String[] { smallClusterMinusPhotonClusterList, unusedHitMap2, haloMinusPhotonClusterList, smallPhotonClusterList, "photon clusters" } );
-	    accountant.addListOfNamedLists( new String[] { smallClusterMinusPhotonClusterList, unusedHitMap2, haloMinusPhotonClusterList, smallPhotonParticleList, "photon clusters" } );
+	    accountant.addListOfNamedLists( new String[] { eventSmallClustersNotPhotons, eventUnusedHitsMinusHalo, eventHaloMinusPhotonClusters, eventSmallPhotonClusters, eventPhotonClusters } );
+	    accountant.addListOfNamedLists( new String[] { eventSmallClustersNotPhotons, eventUnusedHitsMinusHalo, eventHaloMinusPhotonClusters, eventSmallPhotonParticles, eventPhotonClusters } );
 
 	    // Support classes to merge/handle fragments
 	    SimpleFragmentMerger fragMerge = new SimpleFragmentMerger();
 	    DropFragments fragNoMerge = new DropFragments();
-	    CheatFragmentIdentifier fragIDCheat = setUpCheatFragmentIdentifier("cheatid: ", haloMinusPhotonClusterList, smallClusterMinusPhotonClusterList, unusedHitMap2, mcListName);
+	    CheatFragmentIdentifier fragIDCheat = setUpCheatFragmentIdentifier("cheatid__", eventHaloMinusPhotonClusters, eventSmallClustersNotPhotons, eventUnusedHitsMinusHalo, mcListName);
 
 	    boolean cheatOnFragments = false;
+	    String eventOutputParticles = "PFAReconstructedParticles";
+	    String prefixHadronsMain = "merge_ron_ron__";
 	    if (cheatOnFragments) {
-		addHadronFinders("merge/ron/ron: ", "all particles (ron calib)", fragIDCheat, fragMerge, inputMIPList, haloMinusPhotonClusterList, smallClusterMinusPhotonClusterList, trackList, smallPhotonParticleList, largePhotonParticleList, ronNeutralHadronCalib, ronNeutralHadronCalib, false);
+		addHadronFinders(prefixHadronsMain, eventOutputParticles, fragIDCheat, fragMerge, eventMips, eventHaloMinusPhotonClusters, eventSmallClustersNotPhotons, trackList, eventSmallPhotonParticles, largePhotonParticleList, ronNeutralHadronCalib, ronNeutralHadronCalib, false);
 	    } else {
-		addHadronFinders("merge/ron/ron: ", "all particles (ron calib)", fragID, fragMerge, inputMIPList, haloMinusPhotonClusterList, smallClusterMinusPhotonClusterList, trackList, smallPhotonParticleList, largePhotonParticleList, ronNeutralHadronCalib, ronChargedHadronCalib, true);
+		addHadronFinders(prefixHadronsMain, eventOutputParticles, fragID, fragMerge, eventMips, eventHaloMinusPhotonClusters, eventSmallClustersNotPhotons, trackList, eventSmallPhotonParticles, largePhotonParticleList, ronNeutralHadronCalib, ronChargedHadronCalib, true);
 	    }
 
 	    // Optionally, other hadron finders with various calibrations etc:
-	    //addHadronFinders("nomerge/ron/ron: ", "all particles [no frag merge] (ron calib)", fragID, fragNoMerge, inputMIPList, haloMinusPhotonClusterList, smallClusterMinusPhotonClusterList, trackList, smallPhotonParticleList, largePhotonParticleList, ronNeutralHadronCalib, ronChargedHadronCalib, false);
-	    //addHadronFinders("merge/ron/adhoc: ", "all particles (ron calib, adhoc calib for E/p)", fragID, fragMerge, inputMIPList, haloMinusPhotonClusterList, smallClusterMinusPhotonClusterList, trackList, smallPhotonParticleList, largePhotonParticleList, ronNeutralHadronCalib, adHocCalib, false);
-	    //addHadronFinders("nomerge/ron/adhoc: ", "all particles [no frag merge] (ron calib, adhoc calib for E/p)", fragID, fragNoMerge, inputMIPList, haloMinusPhotonClusterList, smallClusterMinusPhotonClusterList, trackList, smallPhotonParticleList, largePhotonParticleList, ronNeutralHadronCalib, adHocCalib, false);
-	    //addHadronFinders("merge/adhoc/adhoc: ", "all particles (adhoc calib)", fragID, fragMerge, inputMIPList, haloMinusPhotonClusterList, smallClusterMinusPhotonClusterList, trackList, smallPhotonParticleList, largePhotonParticleList, adHocCalib, adHocCalib, false);
-	    //addHadronFinders("nomerge/adhoc/adhoc: ", "all particles [no frag merge] (adhoc calib)", fragID, fragNoMerge, inputMIPList, haloMinusPhotonClusterList, smallClusterMinusPhotonClusterList, trackList, smallPhotonParticleList, largePhotonParticleList, adHocCalib, adHocCalib, false);
-
-	    // Make sure lists are accessible to Ron using old names.
-	    add(new ListFilterDriver(new DummyDecisionMakerSingle<ReconstructedParticle>(), "merge/ron/ron: neutral hadron particles", "neutral hadron particles (ron calib)", ReconstructedParticle.class));
-	    add(new ListFilterDriver(new DummyDecisionMakerSingle<ReconstructedParticle>(), "merge/ron/ron: charged hadron particles after fragment handling", "charged hadron particles 2", ReconstructedParticle.class));
+	    //addHadronFinders("nomerge_ron_ron__", eventOutputParticles+"_noFragMerge", fragID, fragNoMerge, eventMips, eventHaloMinusPhotonClusters, eventSmallClustersNotPhotons, trackList, eventSmallPhotonParticles, largePhotonParticleList, ronNeutralHadronCalib, ronChargedHadronCalib, false);
+	    //addHadronFinders("merge_ron_adhoc__", eventOutputParticles+"_adhocEoverP", fragID, fragMerge, eventMips, eventHaloMinusPhotonClusters, eventSmallClustersNotPhotons, trackList, eventSmallPhotonParticles, largePhotonParticleList, ronNeutralHadronCalib, adHocCalib, false);
+	    //addHadronFinders("nomerge_ron_adhoc__", eventOutputParticles+"_noFragMerge_adhocEoverP", fragID, fragNoMerge, eventMips, eventHaloMinusPhotonClusters, eventSmallClustersNotPhotons, trackList, eventSmallPhotonParticles, largePhotonParticleList, ronNeutralHadronCalib, adHocCalib, false);
+	    //addHadronFinders("merge_adhoc_adhoc__", eventOutputParticles+"_adhoc", fragID, fragMerge, eventMips, eventHaloMinusPhotonClusters, eventSmallClustersNotPhotons, trackList, eventSmallPhotonParticles, largePhotonParticleList, adHocCalib, adHocCalib, false);
+	    //addHadronFinders("nomerge_adhoc_adhoc__", eventOutputParticles+"_noFragMerge_adhoc", fragID, fragNoMerge, eventMips, eventHaloMinusPhotonClusters, eventSmallClustersNotPhotons, trackList, eventSmallPhotonParticles, largePhotonParticleList, adHocCalib, adHocCalib, false);
 
 	    // Now try to be a bit smarter. We can try to handle the cases where >1 track is connected to a cluster.
 	    // Currently buggy -- not stable enough to use in production yet.
-	    //add(new HandleMultiTrackClusters("all particles (ron calib)", "all particles (ron calib) -- one track per cluster" ));
+	    //add(new HandleMultiTrackClusters(eventOutputParticles, "all particles (ron calib) -- one track per cluster" ));
 
 	    // For writing out, make sure that the final list has an LCIO-compatible name
-	    add(new ListFilterDriver(new DummyDecisionMakerSingle<ReconstructedParticle>(), "all particles (ron calib)", EventHeader.RECONSTRUCTEDPARTICLES, ReconstructedParticle.class));
+	    add(new ListFilterDriver(new DummyDecisionMakerSingle<ReconstructedParticle>(), eventOutputParticles, EventHeader.RECONSTRUCTEDPARTICLES, ReconstructedParticle.class));
 
 	    // Book-keeping
-	    accountant.addListOfNamedLists( new String[] { smallPhotonParticleList, largePhotonParticleList, "merge/ron/ron: neutral hadron particles", "merge/ron/ron: charged hadron particles after fragment handling" } );
+	    // Need to be smarter about this bit:
+	    accountant.addListOfNamedLists( new String[] { eventSmallPhotonParticles, largePhotonParticleList, "merge_ron_ron__neutralHadronParticles", "merge_ron_ron__chargedHadronParticlesAfterFragmentHandling" } );
 	}
 
 	// Make sure the book-keeping is OK:
@@ -439,12 +422,12 @@
     {
 	System.out.println("WARNING: Cheating on photon finder");
 	// This cheats!
-        add(new ListFilterDriver(new ParticlePDGDecision(22), mcListName, prefix+"MCParticles photons only"));
+        add(new ListFilterDriver(new ParticlePDGDecision(22), mcListName, prefix+"MCParticlesPhotonsOnly"));
         org.lcsim.recon.cluster.cheat.PerfectClusterer myCheatPhotonFinder = new org.lcsim.recon.cluster.cheat.PerfectClusterer();
         myCheatPhotonFinder.setInputHitMap(inputHitMap);
         myCheatPhotonFinder.setOutputHitMap(outputHitMap);
         myCheatPhotonFinder.setOutputClusterList(outputPhotonClusterList);
-        myCheatPhotonFinder.setMCParticleList(prefix+"MCParticles photons only");
+        myCheatPhotonFinder.setMCParticleList(prefix+"MCParticlesPhotonsOnly");
         myCheatPhotonFinder.allowHitSharing(false);
         add(myCheatPhotonFinder);
     }
@@ -458,7 +441,7 @@
     {
 	// Find MIP candidates in ECAL, starting near the front:
 	{
-	    TrackClusterDriver ecalFrontSideMIPs = new TrackClusterDriver(inputHitMap, prefix+"front-side mips ecal", prefix+"hit map ecal without front-side mips");
+	    TrackClusterDriver ecalFrontSideMIPs = new TrackClusterDriver(inputHitMap, prefix+"frontSideMipsEcal", prefix+"hitMapEcalWithoutFrontSideMips");
 	    ecalFrontSideMIPs.filterOutputClusters(new ClusterFirstLayerDecision(4));
 	    add(ecalFrontSideMIPs);
 	}
@@ -470,10 +453,10 @@
 	    add(mipMatch);
 	    mipHadID.setTrackMatcher(mipMatch);
 	    mipHadID.setInputTrackList(inputTrackList);
-	    mipHadID.setOutputTrackList(prefix+"tracks left over from front-side mips");
-	    mipHadID.setInputMIPList(prefix+"front-side mips ecal");
-	    mipHadID.setOutputMIPList(prefix+"mips minus front-side mips ecal");
-	    mipHadID.setOutputParticleList(prefix+"front-side mip particles");
+	    mipHadID.setOutputTrackList(prefix+"tracksLeftOverFromFrontSideMips");
+	    mipHadID.setInputMIPList(prefix+"frontSideMipsEcal");
+	    mipHadID.setOutputMIPList(prefix+"mipsMinusFrontSideMipsEcal");
+	    mipHadID.setOutputParticleList(prefix+"frontSideMipParticles");
 	    add(mipHadID);
 	    //mipMatch.setDebug(true);
 	    //mipHadID.setDebug(true);
@@ -483,14 +466,14 @@
 	{
 	    ClusterListFilterDriver filterRemoveChargedMIPs = new ClusterListFilterDriver();
 	    ClusterListFilterDriver filterSelectChargedMIPs = new ClusterListFilterDriver();
-	    VetoClustersFromParticles vetoChargedMIPs = new VetoClustersFromParticles(prefix+"front-side mip particles"); // veto MIPs
+	    VetoClustersFromParticles vetoChargedMIPs = new VetoClustersFromParticles(prefix+"frontSideMipParticles"); // veto MIPs
 	    DecisionMakerSingle<Cluster> selectChargedMIPs = new NotDecisionMakerSingle<Cluster> (vetoChargedMIPs); // invert veto to select MIPs
 	    filterRemoveChargedMIPs.setInputDecision(vetoChargedMIPs);
 	    filterSelectChargedMIPs.setInputDecision(selectChargedMIPs);
-	    filterRemoveChargedMIPs.setInputList(prefix+"front-side mips ecal");
-	    filterSelectChargedMIPs.setInputList(prefix+"front-side mips ecal");
-	    filterRemoveChargedMIPs.setOutputList(prefix+"neutral front-side mips ecal");
-	    filterSelectChargedMIPs.setOutputList(prefix+"charged front-side mips ecal");
+	    filterRemoveChargedMIPs.setInputList(prefix+"frontSideMipsEcal");
+	    filterSelectChargedMIPs.setInputList(prefix+"frontSideMipsEcal");
+	    filterRemoveChargedMIPs.setOutputList(prefix+"neutralFrontSideMipsEcal");
+	    filterSelectChargedMIPs.setOutputList(prefix+"chargedFrontSideMipsEcal");
 	    add(vetoChargedMIPs);
 	    add(filterRemoveChargedMIPs);
 	    add(filterSelectChargedMIPs);
@@ -498,12 +481,12 @@
 
 	// Merge the non-charged "MIP" hits back in
 	{
-	    ClusterListToHitMapDriver convertFakeMIPsToHitMap = new ClusterListToHitMapDriver(prefix+"neutral front-side mips ecal", prefix+"hit map ecal of neutral front-side mips");
+	    ClusterListToHitMapDriver convertFakeMIPsToHitMap = new ClusterListToHitMapDriver(prefix+"neutralFrontSideMipsEcal", prefix+"hitMapEcalOfNeutralFrontSideMips");
 	    add(convertFakeMIPsToHitMap);
 	    HitMapAddDriver addFakeMIPHitsBack = new HitMapAddDriver();
-	    addFakeMIPHitsBack.addInputHitMap(prefix+"hit map ecal of neutral front-side mips");
-	    addFakeMIPHitsBack.addInputHitMap(prefix+"hit map ecal without front-side mips");
-	    addFakeMIPHitsBack.setOutputHitMap(prefix+"hit map ecal without charged front-side mips");
+	    addFakeMIPHitsBack.addInputHitMap(prefix+"hitMapEcalOfNeutralFrontSideMips");
+	    addFakeMIPHitsBack.addInputHitMap(prefix+"hitMapEcalWithoutFrontSideMips");
+	    addFakeMIPHitsBack.setOutputHitMap(prefix+"hitMapEcalWithoutChargedFrontSideMips");
 	    add(addFakeMIPHitsBack);
 	}
 
@@ -516,12 +499,12 @@
 	    photonFinder.setCoreSizeMinimum(10);
 	    photonFinder.setFragmentSizeMaximum(6);
 	    photonFinder.setCoreFirstLayerRange(5);
-	    photonFinder.setInputHitMap(prefix+"hit map ecal without charged front-side mips");
-	    photonFinder.setOutputHitMap(prefix+"hit map ecal without photons or charged front-side mips");
-	    photonFinder.setOutputClusterList(prefix+"photon clusters (unfiltered)");
+	    photonFinder.setInputHitMap(prefix+"hitMapEcalWithoutChargedFrontSideMips");
+	    photonFinder.setOutputHitMap(prefix+"hitMapEcalWithoutPhotonsOrChargedFrontSideMips");
+	    photonFinder.setOutputClusterList(prefix+"photonClustersUnfiltered");
 	    add(photonFinder);
 	    //photonFinder.setDebug(true);
-	    //add(new DebugPrintClusterInfo(prefix+"photon clusters (unfiltered)"));
+	    //add(new DebugPrintClusterInfo(prefix+"photonClustersUnfiltered"));
 	}
 
 	// ... except some of those "photons" are the start of charged showers,
@@ -533,39 +516,37 @@
 	    add(clusMatch);
 	    hadID.setTrackMatcher(clusMatch);
 	    hadID.setInputTrackList(inputTrackList);
-	    hadID.setOutputTrackList(prefix+"tracks left over from front-side photon-like showers");
-	    hadID.setInputClusterList(prefix+"photon clusters (unfiltered)");
-	    hadID.setOutputParticleList(prefix+"front-side photon-like charged particles");
+	    hadID.setOutputTrackList(prefix+"tracksLeftOverFromFrontSidePhotonLikeShowers");
+	    hadID.setInputClusterList(prefix+"photonClustersUnfiltered");
+	    hadID.setOutputParticleList(prefix+"frontSidePhotonLikeChargedParticles");
 	    hadID.setDebug(false);
 	    clusMatch.setDebug(false);
 	    add(hadID);
 	    // If so, remove them from the photon list:
 	    ClusterListFilterDriver filterRemoveChargedClusters = new ClusterListFilterDriver();
 	    ClusterListFilterDriver filterSelectChargedClusters = new ClusterListFilterDriver();
-	    VetoClustersFromParticles vetoChargedClusters = new VetoClustersFromParticles(prefix+"front-side photon-like charged particles"); // veto charged clusters
+	    VetoClustersFromParticles vetoChargedClusters = new VetoClustersFromParticles(prefix+"frontSidePhotonLikeChargedParticles"); // veto charged clusters
 	    DecisionMakerSingle<Cluster> selectChargedClusters = new NotDecisionMakerSingle<Cluster> (vetoChargedClusters); // invert veto to select charged clusters
 	    filterRemoveChargedClusters.setInputDecision(vetoChargedClusters);
 	    filterSelectChargedClusters.setInputDecision(selectChargedClusters);
-	    filterRemoveChargedClusters.setInputList(prefix+"photon clusters (unfiltered)");
-	    filterSelectChargedClusters.setInputList(prefix+"photon clusters (unfiltered)");
+	    filterRemoveChargedClusters.setInputList(prefix+"photonClustersUnfiltered");
+	    filterSelectChargedClusters.setInputList(prefix+"photonClustersUnfiltered");
 	    filterRemoveChargedClusters.setOutputList(outputPhotonClusterList);
-	    filterSelectChargedClusters.setOutputList(prefix+"charged front-side photon-like clusters");
+	    filterSelectChargedClusters.setOutputList(prefix+"chargedFrontSidePhotonLikeClusters");
 	    add(vetoChargedClusters);
 	    add(filterRemoveChargedClusters);
 	    add(filterSelectChargedClusters);
 	    // Add the charged "photons" back to the event, along with the charged MIPs:
-	    ClusterListToHitMapDriver convertChargedClustersToHitMap = new ClusterListToHitMapDriver(prefix+"charged front-side photon-like clusters", prefix+"hit map ecal of charged photon-like clusters");
-	    ClusterListToHitMapDriver convertRealMIPsToHitMap = new ClusterListToHitMapDriver(prefix+"charged front-side mips ecal", prefix+"hit map ecal of charged front-side mips");
+	    ClusterListToHitMapDriver convertChargedClustersToHitMap = new ClusterListToHitMapDriver(prefix+"chargedFrontSidePhotonLikeClusters", prefix+"hitMapEcalOfChargedPhotonLikeClusters");
+	    ClusterListToHitMapDriver convertRealMIPsToHitMap = new ClusterListToHitMapDriver(prefix+"chargedFrontSideMipsEcal", prefix+"hitMapEcalOfChargedFrontSideMips");
 	    add(convertChargedClustersToHitMap);
 	    add(convertRealMIPsToHitMap);
 	    HitMapAddDriver addChargedClusterHitsBack = new HitMapAddDriver();
-	    addChargedClusterHitsBack.addInputHitMap(prefix+"hit map ecal of charged photon-like clusters");
-	    addChargedClusterHitsBack.addInputHitMap(prefix+"hit map ecal of charged front-side mips");
-	    addChargedClusterHitsBack.addInputHitMap(prefix+"hit map ecal without photons or charged front-side mips");
+	    addChargedClusterHitsBack.addInputHitMap(prefix+"hitMapEcalOfChargedPhotonLikeClusters");
+	    addChargedClusterHitsBack.addInputHitMap(prefix+"hitMapEcalOfChargedFrontSideMips");
+	    addChargedClusterHitsBack.addInputHitMap(prefix+"hitMapEcalWithoutPhotonsOrChargedFrontSideMips");
 	    addChargedClusterHitsBack.setOutputHitMap(outputHitMap);
 	    add(addChargedClusterHitsBack);
-	    //add(new DebugPrintClusterInfo("photon clusters"));
-	    //add(new DebugPrintClusterInfo("charged front-side photon-like clusters"));
 	}
     }
 
@@ -579,12 +560,12 @@
     /** Find photons in the ECAL with cheating. */
     protected void addCheatPhotonFinder(String prefix, String inputHitMap, String outputPhotonClusterList, String outputHitMap, String mcListName)
     {
-	add(new ListFilterDriver(new ParticlePDGDecision(22), mcListName, prefix+"MCParticles photons only"));
+	add(new ListFilterDriver(new ParticlePDGDecision(22), mcListName, prefix+"MCParticlesPhotonsOnly"));
 	PerfectClusterer myCheatPhotonFinder = new PerfectClusterer();
 	myCheatPhotonFinder.setInputHitMap(inputHitMap);
 	myCheatPhotonFinder.setOutputHitMap(outputHitMap);
 	myCheatPhotonFinder.setOutputClusterList(outputPhotonClusterList);
-	myCheatPhotonFinder.setMCParticleList(prefix+"MCParticles photons only");
+	myCheatPhotonFinder.setMCParticleList(prefix+"MCParticlesPhotonsOnly");
 	myCheatPhotonFinder.allowHitSharing(false);
 	add(myCheatPhotonFinder);
     }
@@ -615,8 +596,8 @@
     protected void addHadronicClusterFinder(String prefix, String inputHitMapECAL, String inputHitMapHCAL, String inputMIPListECAL, String inputMIPListHCAL, String inputClumpListECAL, String inputClumpListHCAL, String outputLargeClusters, String outputSmallClusters)
     {
 	// Find large-scale hadronic clusters with the MST
-	MSTClusterDriver mstEcal = new MSTClusterDriver(prefix+"ecal hit map after mst", prefix+"mst clusters ecal");
-	MSTClusterDriver mstHcal = new MSTClusterDriver(prefix+"hcal hit map after mst", prefix+"mst clusters hcal");
+	MSTClusterDriver mstEcal = new MSTClusterDriver(prefix+"ecalHitMapAfterMST", prefix+"mstClustersEcal");
+	MSTClusterDriver mstHcal = new MSTClusterDriver(prefix+"hcalHitMapAfterMST", prefix+"mstClustersHcal");
 	mstEcal.addInputHitMap(inputHitMapECAL);
 	mstHcal.addInputHitMap(inputHitMapHCAL);
 	mstEcal.addUserInputList(inputMIPListECAL);
@@ -634,16 +615,16 @@
 	MSTClusterDriver mstDriverLink = new MSTClusterDriver("User");
 	mstDriverLink.registerMetrics(new MinimumHitToHitDistance());
 	mstDriverLink.setThreshold(50.0); // 5cm
-	mstDriverLink.addUserInputList(prefix+"mst clusters ecal");
-	mstDriverLink.addUserInputList(prefix+"mst clusters hcal");
-	mstDriverLink.setClusterName(prefix+"mst clusters linked");
+	mstDriverLink.addUserInputList(prefix+"mstClustersEcal");
+	mstDriverLink.addUserInputList(prefix+"mstClustersHcal");
+	mstDriverLink.setClusterName(prefix+"mstClustersLinked");
 	mstDriverLink.setPairDecision(new BothCalorimetersDecision());
 	add(mstDriverLink);
 
 	// OK. Now we are going to weed out the small (<10 hit) clusters.
 	ClusterListFilterDriver sizeFilterDriver = new ClusterListFilterDriver();
 	sizeFilterDriver.setInputDecision(new ClusterSizeDecision(10));
-	sizeFilterDriver.setInputList(prefix+"mst clusters linked");
+	sizeFilterDriver.setInputList(prefix+"mstClustersLinked");
 	sizeFilterDriver.setOutputList(outputLargeClusters);
 	sizeFilterDriver.setOutputClusterListFail(outputSmallClusters);
 	add(sizeFilterDriver);
@@ -664,7 +645,7 @@
 	// Handle things that have per-event info:
 	makeEventInfoList(eval); 
 	LikelihoodFindingStructuralDriver likelihoodWriter = new LikelihoodFindingStructuralDriver(eval, inputClusterList, inputMIPList, inputClumpList);
-	likelihoodWriter.initializeClusterAssociator( inputHitListsForAssociator, inputClusterListsForAssociator, mcListName, prefix+"AssocInfo particles -> components", prefix+"AssocInfo components -> particles" );
+	likelihoodWriter.initializeClusterAssociator( inputHitListsForAssociator, inputClusterListsForAssociator, mcListName, prefix+"AssocInfoParticlesToComponents", prefix+"AssocInfoComponentsToParticles" );
 	add(likelihoodWriter);
 	LikelihoodEvaluatorCheckpointDriver checkpoint = new LikelihoodEvaluatorCheckpointDriver(eval, 10);
 	checkpoint.setDebug(true);
@@ -685,7 +666,7 @@
     {
         LikelihoodLinkPlotDriver plotter = new LikelihoodLinkPlotDriver(eval, 0.7, 0.7, 1.0, inputClusterList, inputMIPList, inputClumpList, outputClusterList, outputHitMap);
 	plotter.initPlots("likelihood.aida");
-	plotter.initializeClusterAssociator( inputHitListsForAssociator, inputClusterListsForAssociator, mcListName, prefix+"AssocInfo particles -> components", prefix+"AssocInfo components -> particles" );
+	plotter.initializeClusterAssociator( inputHitListsForAssociator, inputClusterListsForAssociator, mcListName, prefix+"AssocInfoParticlesToComponents", prefix+"AssocInfoComponentsToParticles" );
 	plotter.setIgnoreClusterDecision(new ClusterSizeDecision(10));
 	plotter.setDebug(false);
 	add(plotter);
@@ -695,7 +676,7 @@
     {
 	System.out.println("WARNING: Cheating on likelihood");
 	CheatLikelihoodLinkDriver likelihoodLinker = new CheatLikelihoodLinkDriver(inputClusterList, inputMIPList, inputClumpList, outputClusterList, outputHitMap);
-	likelihoodLinker.initializeClusterAssociator( inputHitListsForAssociator, inputClusterListsForAssociator, mcListName, prefix+"AssocInfo particles -> components", prefix+"AssocInfo components -> particles" );
+	likelihoodLinker.initializeClusterAssociator( inputHitListsForAssociator, inputClusterListsForAssociator, mcListName, prefix+"AssocInfoParticlesToComponents", prefix+"AssocInfoComponentsToParticles" );
 	likelihoodLinker.setIgnoreClusterDecision(new ClusterSizeDecision(10));
 	add(likelihoodLinker);
     }
@@ -713,13 +694,13 @@
 	add(mipMatch);
 	hadIDmip.setTrackMatcher(mipMatch);
 	hadIDmip.setInputTrackList(trackList);
-	hadIDmip.setOutputTrackList(prefix+"tracks minus mip associations");
+	hadIDmip.setOutputTrackList(prefix+"tracksMinusMipAssociations");
 	hadIDmip.setInputMIPList(inputMIPList);
-	hadIDmip.setOutputParticleList(prefix+"charged hadron particles with mip association");
-	hadIDmip.setOutputMIPList(prefix+"unmatched mips");
-	hadIDmip.addClusterList(inputHaloClusterList, prefix+"skeletons plus halo minus charged particles from mips");
+	hadIDmip.setOutputParticleList(prefix+"chargedHadronParticlesWithMipAssociation");
+	hadIDmip.setOutputMIPList(prefix+"unmatchedMips");
+	hadIDmip.addClusterList(inputHaloClusterList, prefix+"skeletonsPlusHaloMinusChargedParticlesFromMips");
 	if (inputSmallClusterList != null) {
-	    hadIDmip.addClusterList(inputSmallClusterList, prefix+"mst clusters linked (<10 hits) minus charged particles from mips");
+	    hadIDmip.addClusterList(inputSmallClusterList, prefix+"smallLinkedClustersMinusChargedParticlesFromMips");
 	}
 	hadIDmip.setCheckEoverP(checkEoverP);
 	hadIDmip.setCalibration(calibration);
@@ -731,10 +712,10 @@
 	LocalHelixExtrapolationTrackClusterMatcher clusMatch = new LocalHelixExtrapolationTrackClusterMatcher();
 	add(clusMatch);
 	hadID.setTrackMatcher(clusMatch);
-	hadID.setInputTrackList(prefix+"tracks minus mip associations");
-	hadID.setOutputTrackList(prefix+"leftover tracks");
-	hadID.setInputClusterList(prefix+"skeletons plus halo minus charged particles from mips");
-	hadID.setOutputParticleList(prefix+"charged hadron particles with non-mip association");
+	hadID.setInputTrackList(prefix+"tracksMinusMipAssociations");
+	hadID.setOutputTrackList(prefix+"leftoverTracks");
+	hadID.setInputClusterList(prefix+"skeletonsPlusHaloMinusChargedParticlesFromMips");
+	hadID.setOutputParticleList(prefix+"chargedHadronParticlesWithNonMipAssociation");
 	if (checkEoverP) {
 	    CheckEoverP check = new CheckEoverP(calibration,3.0);
 	    check.setDebug(debug);
@@ -745,15 +726,15 @@
 
 	// Merge the two particle lists:
 	ListAddDriver<ReconstructedParticle> mergeParticles = new ListAddDriver<ReconstructedParticle>(ReconstructedParticle.class);
-	mergeParticles.addInputList(prefix+"charged hadron particles with mip association");
-	mergeParticles.addInputList(prefix+"charged hadron particles with non-mip association");
+	mergeParticles.addInputList(prefix+"chargedHadronParticlesWithMipAssociation");
+	mergeParticles.addInputList(prefix+"chargedHadronParticlesWithNonMipAssociation");
 	mergeParticles.setOutputList(outputParticleList);
 	add(mergeParticles);
     }
 
     protected void addSmallPhotonFinder(String prefix, FragmentIdentifier fragID, String haloClusterList, String smallClusterList, String smallPhotonParticleList, String haloMinusPhotonClusterList, String smallClusterMinusPhotonClusterList, ClusterEnergyCalculator calibration)
     {
-	String smallPhotonClusterList=prefix+"small photon cluster list";
+	String smallPhotonClusterList=prefix+"smallPhotonClusterList";
         addSmallPhotonClusterFinder(prefix,fragID,haloClusterList,smallClusterList,haloMinusPhotonClusterList,smallClusterMinusPhotonClusterList,smallPhotonClusterList);
         addSmallPhotonParticleFinder(prefix,smallPhotonClusterList,smallPhotonParticleList,calibration);
     }
@@ -772,14 +753,14 @@
 	isSmallPhotonFilter2.setInputDecision(isSmallPhoton);
 	isSmallPhotonFilter1.setInputList(haloClusterList);
 	isSmallPhotonFilter2.setInputList(smallClusterList);
-	isSmallPhotonFilter1.setOutputList(prefix+"small photon clusters 1");
-	isSmallPhotonFilter2.setOutputList(prefix+"small photon clusters 2");
+	isSmallPhotonFilter1.setOutputList(prefix+"smallPhotonClusters1");
+	isSmallPhotonFilter2.setOutputList(prefix+"smallPhotonClusters2");
 	isSmallPhotonFilter1.setOutputClusterListFail(haloMinusPhotonClusterList);
 	isSmallPhotonFilter2.setOutputClusterListFail(smallClusterMinusPhotonClusterList);
 
 	ListAddDriver<Cluster> mergeSmallPhotonClusters = new ListAddDriver<Cluster>(Cluster.class);
-	mergeSmallPhotonClusters.addInputList(prefix+"small photon clusters 1");
-	mergeSmallPhotonClusters.addInputList(prefix+"small photon clusters 2");
+	mergeSmallPhotonClusters.addInputList(prefix+"smallPhotonClusters1");
+	mergeSmallPhotonClusters.addInputList(prefix+"smallPhotonClusters2");
 	mergeSmallPhotonClusters.setOutputList(smallPhotonClusterList);
 
 	add(isFragmentDecisionDriver);
@@ -811,16 +792,21 @@
 
     protected CheatFragmentIdentifier setUpCheatFragmentIdentifier(String prefix, String haloMinusPhotonClusterList, String smallClusterMinusPhotonClusterList, String inputHitMap, String mcListName)
     {
+	// Sometimes these lists are empty.
+	String hitMap1 = prefix+"HitMapForCheatFragmentIdentifier";
+	String hitList1 = prefix+"HitList1ForCheatFragmentIdentifier";
+	String hitMap2 = inputHitMap;
+	String hitList2 = prefix+"HitList2ForCheatFragmentIdentifier";
 	ClusterListToHitMapDriver clusterConverter = new ClusterListToHitMapDriver();
 	clusterConverter.addInputList(haloMinusPhotonClusterList);
 	clusterConverter.addInputList(smallClusterMinusPhotonClusterList);
-	clusterConverter.setOutputHitMap(prefix+"HitMap for CheatFragmentIdentifier");
+	clusterConverter.setOutputHitMap(hitMap1);
 	add(clusterConverter);
-	add(new HitMapToHitListDriver(prefix+"HitMap for CheatFragmentIdentifier", prefix+"HitList for CheatFragmentIdentifier"));
-	add(new HitMapToHitListDriver(inputHitMap, prefix+"HitList2 for CheatFragmentIdentifier"));
-	String[] hitListNames = { prefix+"HitList for CheatFragmentIdentifier", prefix+"HitList2 for CheatFragmentIdentifier" } ; // Do we need HitList2?
+	add(new HitMapToHitListDriver(hitMap1, hitList1));
+	add(new HitMapToHitListDriver(hitMap2, hitList2));
+	String[] hitListNames = { hitList2, hitList1 };
 	String[] clusterListNames = { haloMinusPhotonClusterList, smallClusterMinusPhotonClusterList };
-	CheatFragmentIdentifier cheatFragID = new CheatFragmentIdentifier(hitListNames, clusterListNames, mcListName, prefix+"CheatFragmentIdentifier info P->C", prefix+"CheatFragmentIdentifier info C->P");
+	CheatFragmentIdentifier cheatFragID = new CheatFragmentIdentifier(hitListNames, clusterListNames, mcListName, prefix+"CheatFragmentIdentifierInfoParticlesToComponents", prefix+"CheatFragmentIdentifierInfoComponentsToParticles");
 	return cheatFragID;
     }
 
@@ -830,12 +816,12 @@
 	VetoClustersFromParticles vetoCharged = new VetoClustersFromParticles(chargedParticleList);
 	removeChargedClusters.setInputDecision(vetoCharged);
 	removeChargedClusters.setInputList(inputClusterList);
-	removeChargedClusters.setOutputList(prefix+"neutral clusters with fragments merged");
+	removeChargedClusters.setOutputList(prefix+"neutralClustersWithFragmentsMerged");
 	add(vetoCharged);
 	add(removeChargedClusters);
 	SimpleNeutralParticleMaker hadID3 = new SimpleNeutralParticleMaker(130); // everything is a K0
 	hadID3.setCalibration(calibration);
-	hadID3.setInputClusterList(prefix+"neutral clusters with fragments merged");
+	hadID3.setInputClusterList(prefix+"neutralClustersWithFragmentsMerged");
 	hadID3.setOutputParticleList(outputParticleList);
 	add(hadID3);
     }
@@ -865,19 +851,19 @@
 				    boolean trackDebug)
     {
 	// Fragment handling
-	String clusterList = prefix+"clusters after fragment handling";
-	String hitMap = prefix+"hits left over after fragment handling";
-	addFragmentHandling(prefix+"FragmentHandling: ", fragID, fragMerge, haloMinusPhotonClusterList, smallClusterMinusPhotonClusterList, clusterList, hitMap);
+	String clusterList = prefix+"clustersAfterFragmentHandling";
+	String hitMap = prefix+"hitsLeftOverAfterFragmentHandling";
+	addFragmentHandling(prefix+"FragmentHandling__", fragID, fragMerge, haloMinusPhotonClusterList, smallClusterMinusPhotonClusterList, clusterList, hitMap);
 
 	// Repeat the hadron ID step with the revised cluster list after fragment handling
-	String tempChargedParticleList = prefix+"charged hadron particles after fragment handling";
+	String tempChargedParticleList = prefix+"chargedHadronParticlesAfterFragmentHandling";
 	boolean applyEoverPcut = true;
-	addTrackMatcher(prefix+"FindCharged", trackList, inputMIPList, clusterList, null, tempChargedParticleList,   applyEoverPcut, calibrationForEoverP, trackDebug);
+	addTrackMatcher(prefix+"FindCharged__", trackList, inputMIPList, clusterList, null, tempChargedParticleList,   applyEoverPcut, calibrationForEoverP, trackDebug);
 	System.out.println(prefix+": Will write out charged particles as '"+tempChargedParticleList+"'");
 
 	// ... and then any remaining clusters should be neutral
-	String tempNeutralParticleList = prefix+"neutral hadron particles";
-	addNeutralHadronHandler(prefix+"FindNeutral: ", tempChargedParticleList, clusterList, tempNeutralParticleList, calibration);
+	String tempNeutralParticleList = prefix+"neutralHadronParticles";
+	addNeutralHadronHandler(prefix+"FindNeutral__", tempChargedParticleList, clusterList, tempNeutralParticleList, calibration);
 	System.out.println(prefix+": Will write out neutral particles as '"+tempNeutralParticleList+"'");
 
 	// Make particle lists
CVSspam 0.2.8