Commit in GeomConverter/src/org/lcsim/detector on MAIN
DetectorElementIdentifierHash.java+66added 1.1
DetectorElement.java+3-111.43 -> 1.44
DetectorElementContainer.java+1-11.13 -> 1.14
DetectorElementStore.java+5-371.14 -> 1.15
+75-49
1 added + 3 modified, total 4 files
fix up identifier caching so lookup by id works

GeomConverter/src/org/lcsim/detector
DetectorElementIdentifierHash.java added at 1.1
diff -N DetectorElementIdentifierHash.java
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ DetectorElementIdentifierHash.java	22 Apr 2009 18:49:42 -0000	1.1
@@ -0,0 +1,66 @@
+package org.lcsim.detector;
+
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import org.lcsim.detector.identifier.IIdentifier;
+
+public class DetectorElementIdentifierHash
+{
+	private Map<Long, IDetectorElementContainer> idhash = new HashMap<Long, IDetectorElementContainer>(); 
+	
+	public void put(IDetectorElement de)
+	{
+		IIdentifier id = de.getIdentifier();
+		
+		// Ignore null id.
+		if (id == null)
+		{
+			return;
+		}
+		
+		// Ignore invalid id.
+		if (!id.isValid())
+		{
+			return;
+		}
+		
+		Long rawid = id.getValue();
+		
+		// Create list if doesn't exist.
+		if (idhash.get(rawid) == null)
+		{
+			idhash.put(rawid, new DetectorElementContainer());
+		}
+		
+		// Add a hash from id to DetectorElement.
+		idhash.get(rawid).add(de);
+	}
+	
+	public IDetectorElementContainer get(IIdentifier id)
+	{
+		return idhash.get(id.getValue());
+	}
+	
+	public IDetectorElementContainer get(Long rawid)
+	{
+		return idhash.get(rawid);
+	}
+	
+	public IDetectorElementContainer get(List<IIdentifier> ids)
+	{
+		IDetectorElementContainer ret = new DetectorElementContainer();
+		for (IIdentifier id : ids)
+		{
+			IDetectorElementContainer src = get(id);
+			ret.addAll(src);
+		}
+		return ret;
+	}
+	
+	public void clear()
+	{
+		idhash.clear();
+	}
+}
\ No newline at end of file

GeomConverter/src/org/lcsim/detector
DetectorElement.java 1.43 -> 1.44
diff -u -r1.43 -r1.44
--- DetectorElement.java	25 Mar 2009 01:05:01 -0000	1.43
+++ DetectorElement.java	22 Apr 2009 18:49:42 -0000	1.44
@@ -15,7 +15,7 @@
  * Implementation of {@link IDetectorElement}.
  * 
  * @author Jeremy McCormick
- * @version $Id: DetectorElement.java,v 1.43 2009/03/25 01:05:01 jeremy Exp $
+ * @version $Id: DetectorElement.java,v 1.44 2009/04/22 18:49:42 jeremy Exp $
  */
 public class DetectorElement 
 implements IDetectorElement
@@ -619,15 +619,7 @@
      */
     public IDetectorElementContainer findDetectorElement(IIdentifier id)
     {
-        IDetectorElementContainer search = DetectorElementStore.getInstance().find(id);
-        for (IDetectorElement de : search)
-        {
-            if (!isDescendant(de))
-            {
-                search.remove(de);
-            }
-        }
-        return search;
+    	return DetectorElementStore.getInstance().find(id);
     }      
     
     public IDetectorElement findDetectorElement(String pathString)
@@ -689,5 +681,5 @@
             return pv.isSensitive();
         else 
             return false;
-    }
+    }   
 }
\ No newline at end of file

GeomConverter/src/org/lcsim/detector
DetectorElementContainer.java 1.13 -> 1.14
diff -u -r1.13 -r1.14
--- DetectorElementContainer.java	25 Mar 2009 00:30:16 -0000	1.13
+++ DetectorElementContainer.java	22 Apr 2009 18:49:42 -0000	1.14
@@ -58,7 +58,7 @@
         }
         return matches;
     }   
-
+    
     /**
      * Current implementation does not allow duplicate name, id, or object.
      */

GeomConverter/src/org/lcsim/detector
DetectorElementStore.java 1.14 -> 1.15
diff -u -r1.14 -r1.15
--- DetectorElementStore.java	17 Apr 2009 19:21:20 -0000	1.14
+++ DetectorElementStore.java	22 Apr 2009 18:49:42 -0000	1.15
@@ -8,7 +8,8 @@
 {
 	private static DetectorElementStore store = null;
 
-	DetectorElementMap cache = new DetectorElementMap();
+	//DetectorElementMap cache = new DetectorElementMap();
+	DetectorElementIdentifierHash cache = new DetectorElementIdentifierHash();	
     
 	public static IDetectorElementStore getInstance()
 	{
@@ -21,48 +22,15 @@
     
     public boolean add(IDetectorElement de)
     {   
-    	// Add to the list using super.
-    	super.add(de);
-    	    	
-    	// Check to see if the id is cacheable...
-    	IIdentifier id = de.getIdentifier(); 
-
-/*
-    	// Is the id non-null?
-    	if (id != null)
-    	{
-    		// Is the id valid?
-    		if (id.isValid())
-    		{    		        		       		   
-    			// Check for existing.
-    		    if (cache.get(id.getValue()) != null)
-    		    {
-    		        throw new IllegalArgumentException(
-    		                "Attempting to add DetectorElement <" 
-    		                + de.getName() + ">, but an existing DetectorElement <" 
-    		                + cache.get(id.getValue()).getName() 
-    		                + "> has the same id <" + id.toHexString() + ">.");
-    		    }
-    		    
-    		    // Cache this DE in the lookup map.
-    			cache.put(id.getValue(), de);
-    		}
-    	}
-*/
-    	
+    	super.add(de);    	
+    	cache.put(de);    	    
     	return true;
     }
 
-
-/*
     public IDetectorElementContainer find(IIdentifier id)
     {  
-    	IDetectorElementContainer match = new DetectorElementContainer();
-    	IDetectorElement lookup = cache.get(id.getValue());
-    	if (lookup != null) match.add(lookup);
-    	return match;
+    	return cache.get(id);
     }      
-*/
     
     public void clear()
     {
CVSspam 0.2.8