Print

Print


Commit in GeomConverter/src/org/lcsim/detector on MAIN
Readout.java+23-51.3 -> 1.4
JM: Use interface instead of concrete class.

GeomConverter/src/org/lcsim/detector
Readout.java 1.3 -> 1.4
diff -u -r1.3 -r1.4
--- Readout.java	7 May 2007 22:32:48 -0000	1.3
+++ Readout.java	7 May 2007 23:38:34 -0000	1.4
@@ -1,8 +1,9 @@
 package org.lcsim.detector;
+
 import java.util.ArrayList;
+import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
-import java.util.HashMap;
 
 /**
  * Simple implementation that of {@link IReadout}
@@ -17,8 +18,8 @@
 	Map<Class,List> hits = new HashMap<Class,List>();
 
     public <T> List<T> getHits(Class<T> klass)
-    {
-    	if ( !hits.containsKey(klass) )
+    {    	
+    	if ( !hits.containsKey( klass) )
     	{
     		hits.put( klass, new ArrayList<T>() );
     	}
@@ -26,10 +27,27 @@
     }
     
     public <T> void addHit(T hit)
-    {
-    	List<T> addList = (List<T>)getHits(hit.getClass());
+    {    		
+    	// FIXME: Uses first interface which is liable to break easily!
+    	//        Works okay for SimTrackerHit and CalorimeterHit.
+    	List addList = getHits(hit.getClass().getInterfaces()[0]);
     	addList.add(hit);
     }
+    
+    public String toString()
+    {
+    	StringBuffer str = new StringBuffer();
+    	for ( Class k : hits.keySet() )
+    	{
+    		str.append(k.getCanonicalName() + '\n');
+    		List val = hits.get(k);
+    		for ( Object v : val )
+    		{
+    			str.append("    " + v.toString() + '\n');
+    		}   		
+    	}
+    	return str.toString();
+    }
 
     public void clear()
     {
CVSspam 0.2.8