Print

Print


Commit in lcsim/src/org/lcsim/recon/cluster/muonfinder on MAIN
MuonFinderWrapper.java+19-21.1 -> 1.2
MJC: Avoid overlapping muon clusters

lcsim/src/org/lcsim/recon/cluster/muonfinder
MuonFinderWrapper.java 1.1 -> 1.2
diff -u -r1.1 -r1.2
--- MuonFinderWrapper.java	22 Oct 2008 23:24:34 -0000	1.1
+++ MuonFinderWrapper.java	25 Oct 2008 00:48:44 -0000	1.2
@@ -12,7 +12,7 @@
  * Wrapper class for MuonFinder.
  *
  * @author [log in to unmask]
- * @version $Id: MuonFinderWrapper.java,v 1.1 2008/10/22 23:24:34 mcharles Exp $
+ * @version $Id: MuonFinderWrapper.java,v 1.2 2008/10/25 00:48:44 mcharles Exp $
  */
 
 public class MuonFinderWrapper extends Driver {
@@ -101,9 +101,26 @@
 
 
 	// Write out
-	event.put(m_outMuonTrackClusterMap, outMuonTrackClusterMap);
 	event.put(m_outHitMap, outHitMap);
 	event.put(m_outTrackList, outTrackList);
+
+	// One last thing: We occasionally get two muon clusters that overlap.
+	// Go through and prevent that:
+	Map<Track,Cluster> nonOverlappingOutputMap = new HashMap<Track,Cluster>();
+	Set<Long> usedHits = new HashSet<Long>();
+	for (Track muonTrack : outMuonTrackClusterMap.keySet()) {
+	    Cluster oldMuonCluster = outMuonTrackClusterMap.get(muonTrack);
+	    BasicCluster newMuonCluster = new BasicCluster();
+	    for (CalorimeterHit hit : oldMuonCluster.getCalorimeterHits()) {
+		long id = hit.getCellID();
+		if (!usedHits.contains(id)) {
+		    usedHits.add(id);
+		    newMuonCluster.addHit(hit);
+		}
+		nonOverlappingOutputMap.put(muonTrack, newMuonCluster);
+	    }
+	}
+	event.put(m_outMuonTrackClusterMap, nonOverlappingOutputMap);
     }
 }
 
CVSspam 0.2.8