GeomConverter/src/org/lcsim/detector
diff -u -r1.3 -r1.4
--- PhysicalVolumeContainer.java 20 Mar 2007 23:57:50 -0000 1.3
+++ PhysicalVolumeContainer.java 28 Jan 2008 00:23:02 -0000 1.4
@@ -1,6 +1,8 @@
package org.lcsim.detector;
import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
public class PhysicalVolumeContainer
extends ArrayList<IPhysicalVolume>
@@ -45,6 +47,8 @@
public PhysicalVolumeContainer()
{}
+ private HashMap<String,List<IPhysicalVolume>> map = new HashMap<String,List<IPhysicalVolume>>();
+
public PhysicalVolumeContainer(
boolean uniqPhysVol,
boolean uniqName,
@@ -55,10 +59,24 @@
this.uniqCopyNum= uniqCopyNum;
}
+ @Override
public boolean add(IPhysicalVolume physvol)
{
try {
checkAdd(physvol);
+
+ String name = physvol.getName();
+
+ List<IPhysicalVolume> l;
+ if (map.containsKey(name)) {
+ l = map.get(name);
+ }
+
+ else {
+ l = new ArrayList<IPhysicalVolume>();
+ }
+ l.add(physvol);
+ map.put(name, l);
super.add(physvol);
}
catch ( PhysicalVolumeContainerException x )
@@ -87,13 +105,15 @@
public PhysicalVolumeContainer findByName(String name)
{
PhysicalVolumeContainer physvols = new PhysicalVolumeContainer();
- for (IPhysicalVolume physvol : this)
- {
- if (physvol.getName().equals(name))
- {
- physvols.add(physvol);
- }
- }
+// for (IPhysicalVolume physvol : this)
+// {
+// if (physvol.getName().equals(name))
+// {
+// physvols.add(physvol);
+// }
+// }
+ if (map.containsKey(name))
+ physvols.addAll(map.get(name));
return physvols;
}