lcsim/src/org/lcsim/recon/cluster/muonfinder
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);
}
}