Commit in lcsim/src/org/lcsim/contrib/uiowa on MAIN
NonTrivialPFA.java+44-291.28 -> 1.29
MJC: Modest changes to PFA, mostly increasing ECAL-HCAL cluster bridge window

lcsim/src/org/lcsim/contrib/uiowa
NonTrivialPFA.java 1.28 -> 1.29
diff -u -r1.28 -r1.29
--- NonTrivialPFA.java	20 Oct 2007 00:47:56 -0000	1.28
+++ NonTrivialPFA.java	10 Nov 2007 02:09:57 -0000	1.29
@@ -176,17 +176,13 @@
 	    add (new MCFastTracking());
 	    String fastMCTrackList = EventHeader.TRACKS;
 	    
-	    // Find tracks (really cheating)
-            String cheatingTrackList = "Tracks_by_cheat";
-	    // THIS BREAKS SOMETHING ELSE DOWNSTREAM // add (new ImprovisedTrackCheater(mcListName, cheatingTrackList));
-
 	    // Find tracks (cheating)
-	    String ronTrackList = "Tracks_by_ron";
+	    String ronTrackList = "FSReconTracks";
 	    String ronMCList = "ReconFSParticles";
 	    add(new org.lcsim.contrib.Cassell.recon.Cheat.CheatReconDriver());
 	    
 	    // Choose which track list to use
-	    boolean useRonTrackList = false;
+	    boolean useRonTrackList = true;
 	    if (useRonTrackList) {
 		trackList = ronTrackList;
 		mcListName = ronMCList;
@@ -206,7 +202,8 @@
 	{
 	    // Muons
 	    String prefix = "muonfinder__";
-	    addCheatingMuonFinder(prefix, eventHitMapEcal, eventHitMapHcal, trackList, eventMuonClusters, eventHitMapEcalWithoutMuons, eventHitMapHcalWithoutMuons, mcListName, eventTracksMinusMuons, eventMuonParticles);
+	    //addCheatingMuonFinder(prefix, eventHitMapEcal, eventHitMapHcal, trackList, eventMuonClusters, eventHitMapEcalWithoutMuons, eventHitMapHcalWithoutMuons, mcListName, eventTracksMinusMuons, eventMuonParticles);
+	    addEmptyMuonFinder(prefix, eventHitMapEcal, eventHitMapHcal, trackList, eventMuonClusters, eventHitMapEcalWithoutMuons, eventHitMapHcalWithoutMuons, mcListName, eventTracksMinusMuons, eventMuonParticles);
 	    trackList = eventTracksMinusMuons; // CHANGES TRACK LIST (UGLY)
 	    // Book-keeping
 	    accountant.addListOfNamedLists( new String[] { eventHitMapEcalWithoutMuons, eventMuonClusters, eventHitMapHcalWithoutMuons } );
@@ -428,6 +425,7 @@
 
 	    // OK! Now try again in a different way.
 	    //add(new ReclusterDriver(mcListName, trackList,  eventMuonParticles,  eventPhotonClusters,  eventSkeletonClusters,  eventSmallClusters,  eventUnusedHits,  eventLargeClusters,  eventMips,  eventClumps, eventSplitSkeletonClusters, evalWrapper));
+	    //add(new ParticleListToClusterListDriver("ReclusteredParticles", "ReclusteredClusters"));
 	}
 
 	// Make sure the book-keeping is OK:
@@ -521,6 +519,44 @@
 	add(new HitMapSubtractDriver(inputHitMapHcal, prefix+"TempMuonHitMap", outputHitMapHcal));
     }
 
+    // This is a silly hack for now. The main thing is to ensure
+    // that the right output lists get created.
+    protected void addEmptyMuonFinder(String prefix, String inputHitMapEcal, String inputHitMapHcal, String inputTrackList, String outputMuonClusterList, String outputHitMapEcal, String outputHitMapHcal, String mcListName, String outputTrackList, String outputParticleList)
+    {
+	System.out.println("WARNING: Not using a muon finder");
+
+	// Nothing will pass this filter!
+        add(new ListFilterDriver(new ParticlePDGDecision(1393174826), mcListName, prefix+"MCParticlesMuonsOnly"));
+
+	List<String> inputHitMaps = new Vector<String>();
+	inputHitMaps.add(inputHitMapEcal);
+	inputHitMaps.add(inputHitMapHcal);
+	add(new HitMapAddDriver(inputHitMaps, prefix+"TempHitMap"));
+
+        org.lcsim.recon.cluster.cheat.PerfectClusterer myCheatMuonFinder = new org.lcsim.recon.cluster.cheat.PerfectClusterer();
+        myCheatMuonFinder.setInputHitMap(prefix+"TempHitMap");
+        myCheatMuonFinder.setOutputHitMap(prefix+"TempOutputHitMap");
+        myCheatMuonFinder.setOutputClusterList(prefix+"TempMuonClusterList");
+        myCheatMuonFinder.setMCParticleList(prefix+"MCParticlesMuonsOnly");
+        myCheatMuonFinder.allowHitSharing(false);
+        add(myCheatMuonFinder);
+
+	PerfectIdentifier id = new PerfectIdentifier();
+	id.setInputClusterList(prefix+"TempMuonClusterList");
+	id.setOutputParticleList(outputParticleList);
+	id.setMCParticleList(prefix+"MCParticlesMuonsOnly");
+	id.setInputTrackList(inputTrackList);
+	id.setOutputTrackList(outputTrackList);
+	id.requireTrack(true);
+	add(id);
+
+	// OK. Now go back and remove the hits from muons that were used
+	add(new ParticleListToClusterListDriver(outputParticleList, outputMuonClusterList));
+	add(new ClusterListToHitMapDriver(outputMuonClusterList, prefix+"TempMuonHitMap"));
+	add(new HitMapSubtractDriver(inputHitMapEcal, prefix+"TempMuonHitMap", outputHitMapEcal));
+	add(new HitMapSubtractDriver(inputHitMapHcal, prefix+"TempMuonHitMap", outputHitMapHcal));
+    }
+
     protected void addRonPhotonFinder(String prefix, String inputHitMap, String outputPhotonClusterList, String outputHitMap)
     {
 	org.lcsim.contrib.uiowa.RonPhotonFinder.RonPhotonFinderSid01 driver = new org.lcsim.contrib.uiowa.RonPhotonFinder.RonPhotonFinderSid01(inputHitMap, outputHitMap, outputPhotonClusterList);
@@ -715,7 +751,7 @@
 	// Link across the ECAL-HCAL boundary
 	MSTClusterDriver mstDriverLink = new MSTClusterDriver("User");
 	mstDriverLink.registerMetrics(new MinimumHitToHitDistance());
-	mstDriverLink.setThreshold(50.0); // 5cm
+	mstDriverLink.setThreshold(70.0); // 7cm -- eyeballed to get good cross-boundary linkage.
 	mstDriverLink.addUserInputList(prefix+"mstClustersEcal");
 	mstDriverLink.addUserInputList(prefix+"mstClustersHcal");
 	mstDriverLink.setClusterName(prefix+"mstClustersLinked");
@@ -1013,27 +1049,6 @@
 	addMerger(mergeThese, outputList);
 
     }
-
-    // This belongs somewhere central
-    private class ImprovisedTrackCheater extends Driver {
-	String m_inputMCListName;
-	String m_outputTrackListName;
-	public ImprovisedTrackCheater(String inputMCList, String outputTrackList) {
-	    m_inputMCListName = inputMCList;
-	    m_outputTrackListName = outputTrackList;
-	}
-	protected void process(EventHeader event) {
-	    List<MCParticle> mcList = event.get(MCParticle.class, m_inputMCListName);
-	    List<Track> trackList = new Vector<Track>();
-	    for (MCParticle part : mcList) {
-		if (part.getCharge() != 0) {
-		    BaseTrackMC track = new BaseTrackMC(part);
-		    trackList.add(track);
-		}
-	    }
-	    event.put(m_outputTrackListName, trackList);
-	}
-    }
 }
 
 
CVSspam 0.2.8