Print

Print


Commit in lcsim/src/org/lcsim/contrib/uiowa/MuonFinder on MAIN
MuonFinderWrapper.java+116added 1.1
MuonFinder.java+7-51.6 -> 1.7
+123-5
1 added + 1 modified, total 2 files
MJC: (contrib) Change to MuonFinder interface to avoid hard-coded output name; wrapper for convenience

lcsim/src/org/lcsim/contrib/uiowa/MuonFinder
MuonFinderWrapper.java added at 1.1
diff -N MuonFinderWrapper.java
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ MuonFinderWrapper.java	13 Oct 2008 06:35:31 -0000	1.1
@@ -0,0 +1,116 @@
+package org.lcsim.contrib.uiowa.MuonFinder;
+
+import java.util.*;
+import org.lcsim.event.*;
+import org.lcsim.event.util.*;
+import org.lcsim.util.*;
+import org.lcsim.recon.cluster.util.BasicCluster;
+import org.lcsim.recon.cluster.util.HitInMCALDecision;
+import org.lcsim.util.hitmap.HitMap;
+
+public class MuonFinderWrapper extends Driver {
+
+    // Inputs
+    protected String m_trackList;
+    protected String m_inHitMap;
+    
+    // Outputs
+    protected String m_outMuonTrackClusterMap;
+    protected String m_outHitMap;
+    protected String m_outTrackList;
+
+    // Old/temporary
+    protected String _outName;
+    protected String _outHitMap;
+    protected String _outMapTrackToSetOfClusters;
+    protected String _inMu;
+    protected String _inCal;
+
+    // Option to skip
+    protected boolean m_debugSkip = false;
+    public void skip() { m_debugSkip = true; }
+
+    public MuonFinderWrapper(String inTrackList, String inHitMap, String outMuonTrackClusterMap,  String outHitMap, String outTrackList) 
+    {
+	// Inputs/outputs
+	m_trackList = inTrackList;
+	m_inHitMap = inHitMap;
+	m_outMuonTrackClusterMap = outMuonTrackClusterMap;
+	m_outHitMap = outHitMap;
+	m_outTrackList = outTrackList;
+	// Temporary stuff for old process routine
+	_inCal = new String("tmpCal");
+	_inMu = new String("tmpMu");
+	_outHitMap = new String("tmpMap");
+	_outMapTrackToSetOfClusters = new String("tmpMap2");
+	_outName = new String("tmpName");
+    }
+
+    public void process(EventHeader event) {
+	// Read in
+	HitMap inHitMap = (HitMap)(event.get(m_inHitMap));
+	List<Track> inTrackList = event.get(Track.class, m_trackList);
+
+	// Massage inputs into the form wanted by old process routine
+	HitMap muonHits = new HitMap();
+	HitMap otherHits = new HitMap();
+	HitInMCALDecision dec = new HitInMCALDecision();
+	for (CalorimeterHit hit : inHitMap.values()) {
+	    long id = hit.getCellID();
+	    if (dec.valid(hit)) {
+		muonHits.put(id, hit);
+	    } else {
+		otherHits.put(id, hit);
+	    }
+	}
+	event.put(_inMu, muonHits);
+	event.put(_inCal, otherHits);
+
+	// Prepare outputs
+	List<Track> outTrackList = new Vector<Track>();
+	Map<Track,Cluster> outMuonTrackClusterMap = new HashMap<Track,Cluster>();
+	HitMap outHitMap = new HitMap(inHitMap);
+
+	if (m_debugSkip) {
+	    // Optionally, skip the muon finding
+	    outHitMap = inHitMap;
+	    outTrackList = inTrackList;
+	} else {
+	    // Call old process routine to do the work
+	    MuonFinder tmpWrappedMuonFinder = new MuonFinder(m_trackList, _inCal, _inMu, _outHitMap, _outName, _outMapTrackToSetOfClusters);
+	    tmpWrappedMuonFinder.process(event);
+	    Map<Track,Set<Cluster>> oldMap = (Map<Track,Set<Cluster>>)(event.get(_outMapTrackToSetOfClusters));
+
+	    // Make output muon track -> cluster map
+	    for (Track tr : oldMap.keySet()) {
+		Set<Cluster> clustersOfMuon = oldMap.get(tr);
+		BasicCluster combinedClus = new BasicCluster();
+		for (Cluster clus : clustersOfMuon) {
+		    for (CalorimeterHit hit : clus.getCalorimeterHits()) {
+			combinedClus.addHit(hit);
+		    }
+		}
+		outMuonTrackClusterMap.put(tr, combinedClus);
+	    }
+
+	    // Make HitMap of remaining hits:
+	    for (Cluster muonClus : outMuonTrackClusterMap.values()) {
+		for (CalorimeterHit hit : muonClus.getCalorimeterHits()) {
+		    long id = hit.getCellID();
+		    outHitMap.remove(id);
+		}
+	    }
+
+	    // Make List of remaining tracks:
+	    outTrackList.addAll(inTrackList);
+	    outTrackList.removeAll(outMuonTrackClusterMap.keySet());
+	}
+
+
+	// Write out
+	event.put(m_outMuonTrackClusterMap, outMuonTrackClusterMap);
+	event.put(m_outHitMap, outHitMap);
+	event.put(m_outTrackList, outTrackList);
+    }
+}
+

lcsim/src/org/lcsim/contrib/uiowa/MuonFinder
MuonFinder.java 1.6 -> 1.7
diff -u -r1.6 -r1.7
--- MuonFinder.java	11 Oct 2008 01:01:49 -0000	1.6
+++ MuonFinder.java	13 Oct 2008 06:35:31 -0000	1.7
@@ -35,7 +35,8 @@
     protected AIDA aida = AIDA.defaultInstance();
     protected String _outName;
     protected String _tracklist;
-    protected String _outMap;
+    protected String _outHitMap;
+    protected String _outMapTrackToSetOfClusters; // was "newMapTrackToMip"
     protected String _inMu;
     protected String _inCal;
     protected double _bestmatch = 0.8;
@@ -46,12 +47,13 @@
     protected HelixExtrapolator m_findCluster = new org.lcsim.recon.pfa.identifier.LocalHelixExtrapolator();
     protected boolean useMuonhits = false;
 
-    public MuonFinder(String tracklist, String inCal, String inMu, String outMap, String outName){
+    public MuonFinder(String tracklist, String inCal, String inMu, String outMap, String outName, String outMapTrackToSetOfClusters){
         _inCal = inCal;
         _inMu = inMu;
-        _outMap = outMap;
+        _outHitMap = outMap;
         _outName = outName;
         _tracklist = tracklist;
+	_outMapTrackToSetOfClusters = outMapTrackToSetOfClusters;
     }
 
     public void process(EventHeader event)
@@ -308,8 +310,8 @@
         }
 
         HitMap muonMap = new HitMap(muonclustershits); 
-        event.put(_outMap, muonMap);
-        event.put("newMapTrackToMip", outputmap); 
+        event.put(_outHitMap, muonMap);
+        event.put(_outMapTrackToSetOfClusters, outputmap);
         if(_debug){
             int flag = 1<<LCIOConstants.CLBIT_HITS;
             event.put(_outName, muonClusters, Cluster.class, flag );
CVSspam 0.2.8