1 added + 3 modified, total 4 files
GeomConverter/src/org/lcsim/detector
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
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
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
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