Commit in GeomConverter on MAIN
src/org/lcsim/detector/converter/compact/CylindricalBarrelCalorimeterConverter.java+5-61.6 -> 1.7
                                        /CylindricalEndcapCalorimeterConverter.java+4-21.6 -> 1.7
                                        /DetectorConverter.java+10-31.11 -> 1.12
                                        /DiskTrackerConverter.java+5-51.7 -> 1.8
                                        /MultiLayerTrackerConverter.java+3-31.4 -> 1.5
                                        /SiTrackerBarrelConverter.java+10-901.6 -> 1.7
src/org/lcsim/detector/tracker/silicon/SiTrackerBarrelLayer.java+27added 1.1
                                      /SiTrackerBarrelModule.java+37added 1.1
src/org/lcsim/geometry/Detector.java+3-31.33 -> 1.34
                      /Subdetector.java+6-41.16 -> 1.17
src/org/lcsim/geometry/compact/Detector.java+15-41.21 -> 1.22
                              /Subdetector.java+16-51.17 -> 1.18
test/org/lcsim/detector/converter/compact/DetectorConverterTest.java+3-41.7 -> 1.8
                                         /DiskTrackerTest.java+1-11.3 -> 1.4
+145-130
2 added + 12 modified, total 14 files
JM: Make Detector and Subdetector have a DetectorElement rather than using inheritance.

GeomConverter/src/org/lcsim/detector/converter/compact
CylindricalBarrelCalorimeterConverter.java 1.6 -> 1.7
diff -u -r1.6 -r1.7
--- CylindricalBarrelCalorimeterConverter.java	18 Apr 2007 00:05:27 -0000	1.6
+++ CylindricalBarrelCalorimeterConverter.java	20 Apr 2007 00:16:53 -0000	1.7
@@ -52,13 +52,12 @@
 		IPhysicalVolumeNavigator nav = 
             PhysicalVolumeNavigatorStore.getInstance().getDefaultNavigator();
 		IPhysicalVolumePath path = nav.getPath( cal.getName() );
-        cal.setSupport(path);
-        
+		
+		// Create the Subdetector's DetectorElement.
+		cal.setDetectorElement( new DetectorElement( cal.getName(), detector.getDetectorElement(), path) );
+		
         // Build the layers.
         buildLayers(cal, envelope);      
-        
-        // Set the parent DE.
-        subdet.setParent(detector);
 	}
 	
 	private ILogicalVolume buildEnvelope(
@@ -160,7 +159,7 @@
                      
                     new CylindricalBarrelCalorimeterSensorLayer(
                             cal.getName() + "_sensor" + sensorNumber, 
-                            cal,
+                            cal.getDetectorElement(),
                             sensorPath);
                     
                     // Increment the number of sensors.

GeomConverter/src/org/lcsim/detector/converter/compact
CylindricalEndcapCalorimeterConverter.java 1.6 -> 1.7
diff -u -r1.6 -r1.7
--- CylindricalEndcapCalorimeterConverter.java	18 Apr 2007 00:05:27 -0000	1.6
+++ CylindricalEndcapCalorimeterConverter.java	20 Apr 2007 00:16:54 -0000	1.7
@@ -27,6 +27,8 @@
     {        
         CylindricalEndcapCalorimeter cal = (CylindricalEndcapCalorimeter)subdet;
     
+        subdet.setDetectorElement( new DetectorElement(subdet.getName(), detector.getDetectorElement() ) );
+        
         IPhysicalVolume world = detector.getWorldVolume();
         
         ILogicalVolume envelope = buildEnvelope( cal, world.getLogicalVolume().getMaterial() );
@@ -48,7 +50,7 @@
                
         // DE for positive endcap.
         DetectorElement endcap = 
-            new CylindricalEndcapCalorimeterDE(cal.getName() + "_positive", detector);
+            new CylindricalEndcapCalorimeterDE(cal.getName() + "_positive", subdet.getDetectorElement());
         endcap.setSupport(cal.getName() + "_positive");
                 
         // DE for negative endcap.
@@ -71,7 +73,7 @@
             );                         
 
             reflectedEndcap = 
-                new CylindricalEndcapCalorimeterDE(cal.getName() + "_negative", detector);
+                new CylindricalEndcapCalorimeterDE(cal.getName() + "_negative", subdet.getDetectorElement());
             reflectedEndcap.setSupport(cal.getName() + "_negative");            
         }
 

GeomConverter/src/org/lcsim/detector/converter/compact
DetectorConverter.java 1.11 -> 1.12
diff -u -r1.11 -r1.12
--- DetectorConverter.java	18 Apr 2007 00:05:27 -0000	1.11
+++ DetectorConverter.java	20 Apr 2007 00:16:54 -0000	1.12
@@ -7,6 +7,8 @@
 import org.jdom.Document;
 import org.jdom.Element;
 import org.jdom.JDOMException;
+import org.lcsim.detector.DetectorElement;
+import org.lcsim.detector.IDetectorElement;
 import org.lcsim.detector.ILogicalVolume;
 import org.lcsim.detector.IPhysicalVolume;
 import org.lcsim.detector.LogicalVolume;
@@ -65,10 +67,15 @@
         // Create the default navigator.
         PhysicalVolumeNavigatorStore.getInstance().reset();
         PhysicalVolumeNavigatorStore.getInstance().createDefault(pvWorld);               
-        detector.setSupport("/");        
+        
+        IDetectorElement deDet = new DetectorElement(detector.getName(), null, "/");
+        
+        detector.setDetectorElement( deDet );
+        
+        //detector.setSupport("/");        
         
         // Construct the tracking volume.
-        buildTrackingVolume(pvWorld.getLogicalVolume(), detector);
+        buildTrackingVolume( pvWorld.getLogicalVolume(), detector );
         
         detector.setWorldVolume(pvWorld);
                                      
@@ -192,4 +199,4 @@
         
 		return pvWorld;
 	}	
-}
+}
\ No newline at end of file

GeomConverter/src/org/lcsim/detector/converter/compact
DiskTrackerConverter.java 1.7 -> 1.8
diff -u -r1.7 -r1.8
--- DiskTrackerConverter.java	18 Apr 2007 00:05:27 -0000	1.7
+++ DiskTrackerConverter.java	20 Apr 2007 00:16:54 -0000	1.8
@@ -33,20 +33,20 @@
         ILogicalVolume trackingVolume = detector.getTrackingVolume().getLogicalVolume();
 
         DiskTracker tracker = (DiskTracker)subdet;
-
-        subdet.setParent(detector);
+        
+        subdet.setDetectorElement( new DetectorElement( subdet.getName(), detector.getDetectorElement() ) );
 
         Layering layering = tracker.getLayering();
         String name = tracker.getName();
 
         DetectorElement endcapPos = new DiskTrackerDE(name + "_positive");
-        endcapPos.setParent(tracker);
+        endcapPos.setParent(tracker.getDetectorElement());
 
         DetectorElement endcapNeg=null;
         if ( tracker.getReflect() )
         {
             endcapNeg = new DiskTrackerDE(name + "_negative");
-            endcapNeg.setParent(tracker);
+            endcapNeg.setParent(tracker.getDetectorElement());
         }
 
         Rotation3D reflect = new Rotation3D();
@@ -73,7 +73,7 @@
             LogicalVolume layerLV = new LogicalVolume(
                     name + "_layer" + i,
                     layerTube,
-                    detector.getGeometry().getLogicalVolume().getMaterial()
+                    detector.getDetectorElement().getGeometry().getLogicalVolume().getMaterial()
             );
 
             // Layer in positive z.

GeomConverter/src/org/lcsim/detector/converter/compact
MultiLayerTrackerConverter.java 1.4 -> 1.5
diff -u -r1.4 -r1.5
--- MultiLayerTrackerConverter.java	18 Apr 2007 00:05:27 -0000	1.4
+++ MultiLayerTrackerConverter.java	20 Apr 2007 00:16:54 -0000	1.5
@@ -29,7 +29,7 @@
         ILogicalVolume trackingVolume = 
             detector.getTrackingVolume().getLogicalVolume();
         
-        tracker.setParent(detector);
+        tracker.setDetectorElement( new DetectorElement( subdet.getName(), detector.getDetectorElement() ) );
         
         Layering layering = tracker.getLayering();
         
@@ -50,7 +50,7 @@
                     layerOuterZ
                     );
             
-            IMaterial layerMaterial = detector.getGeometry().getLogicalVolume().getMaterial();
+            IMaterial layerMaterial = detector.getDetectorElement().getGeometry().getLogicalVolume().getMaterial();
             
             LogicalVolume layerLV = new LogicalVolume(
                     name + "_layer" + i,
@@ -99,7 +99,7 @@
                 if ( slice.isSensitive() )
                 {
                     String path = "/tracking_region/" + name + "_layer" +i + "/slice" + j;
-                    new MultiLayerTrackerSensorLayer(name + "_layer" + layerNumber, tracker, path);
+                    new MultiLayerTrackerSensorLayer(name + "_layer" + layerNumber, tracker.getDetectorElement(), path);
                     ++layerNumber;
                 }
                 

GeomConverter/src/org/lcsim/detector/converter/compact
SiTrackerBarrelConverter.java 1.6 -> 1.7
diff -u -r1.6 -r1.7
--- SiTrackerBarrelConverter.java	11 Apr 2007 20:34:14 -0000	1.6
+++ SiTrackerBarrelConverter.java	20 Apr 2007 00:16:54 -0000	1.7
@@ -24,6 +24,9 @@
 import org.lcsim.detector.solids.Box;
 import org.lcsim.detector.solids.ISolid;
 import org.lcsim.detector.solids.Tube;
+import org.lcsim.detector.tracker.silicon.SiSensor;
+import org.lcsim.detector.tracker.silicon.SiTrackerBarrelLayer;
+import org.lcsim.detector.tracker.silicon.SiTrackerBarrelModule;
 import org.lcsim.geometry.compact.Detector;
 import org.lcsim.geometry.compact.Subdetector;
 import org.lcsim.geometry.subdetector.SiTrackerBarrel;
@@ -34,7 +37,9 @@
     public void convert( Subdetector subdet, Detector detector)
     {
         //System.out.println("SiTrackerBarrelConverter.convert");
-                      
+        
+    	subdet.setDetectorElement( new DetectorElement( subdet.getName(), detector.getDetectorElement() ) );
+    	
         Map<String, ILogicalVolume> modules = buildModules(subdet);
         
         try {
@@ -46,8 +51,6 @@
         }
         
         setupSensorDetectorElements(subdet);
-        
-        subdet.setParent(detector);
     }
     
     private Map<String, ILogicalVolume> buildModules(Subdetector subdet)
@@ -268,9 +271,9 @@
                         nlayer); 
             
             // Layer DE.
-            String layerPath = "/tracking_region/" + layer_name;            
+            String layerPath = "/tracking_region/" + layer_name;
             IDetectorElement layerDE = 
-                new SiTrackerBarrelLayer(layer_name, subdet, layerPath, nlayer);            
+                new SiTrackerBarrelLayer(layer_name, subdet.getDetectorElement(), layerPath, nlayer);            
 
             // Get the rphi_layout element.
             Element rphi_layout = layer_element.getChild("rphi_layout");
@@ -461,7 +464,7 @@
     {
         //System.out.println("setupDetectorElements");
         int sensorID=0;
-        for ( IDetectorElement layer : subdet.getChildren() )
+        for ( IDetectorElement layer : subdet.getDetectorElement().getChildren() )
         {
             for ( IDetectorElement module : layer.getChildren() )
             {
@@ -479,94 +482,11 @@
                         //System.out.println("path : " + modulePath.toString() + "/" + pv.getName());
                         String sensorPath = modulePath.toString() + "/" + pv.getName();
                         String sensorName = subdet.getName() + "_sensor" + sensorID;
-                        new SiTrackerBarrelSensor(sensorName, module, sensorPath);
+                        new SiSensor(sensorID, sensorName, module, sensorPath);
                         ++sensorID;
                     }
                 }
             }
         }
     }
-    
-    /**
-     * Dummy DetectorElement for an SiTrackerBarrel sensor.
-     * 
-     * @todo Replace with a real sensor DetectorElement.
-     */ 
-    public class SiTrackerBarrelSensor extends DetectorElement
-    {
-        int sensorID;
-        
-        SiTrackerBarrelSensor(String name,
-                IDetectorElement parent,
-                String path) 
-        {
-            super(name, parent, path);
-            //System.out.println(name + " : " + path);
-        }
-        
-        public void setSensorID(int sensorID)
-        {
-            this.sensorID = sensorID;
-        }
-    }
-    
-    /**
-     * 
-     * Dummy DetectorElement for an SiTrackerBarrel layer.
-     * 
-     * @todo Replace with a real layer DetectorElement.
-     */ 
-    public class SiTrackerBarrelLayer 
-    extends DetectorElement
-    {
-        private int layerNumber;       
-        SiTrackerBarrelLayer(
-                String name,
-                IDetectorElement parent,
-                String path,
-                int layerNumber)
-        {
-            super(name,parent,path);
-            this.layerNumber = layerNumber;
-        }   
-        
-        public int getLayerNumber()
-        {
-            return layerNumber;
-        }
-    }
-    
-    /**
-     * 
-     * Dummy DetectorElement for an SiTrackerBarrel module.
-     * 
-     * @todo Replace with a real layer DetectorElement.
-     */ 
-    public class SiTrackerBarrelModule extends DetectorElement
-    {
-        private int phiNumber;
-        private int zNumber;
-        
-        SiTrackerBarrelModule(String name,
-                IDetectorElement parent,
-                String path,
-                int phiNumber,
-                int zNumber) 
-        {
-            super(name, parent, path);
-            this.phiNumber = phiNumber;
-            this.zNumber = zNumber;
-            //System.out.println(name + " : " + path);
-        }
-        
-        public int getPhiNumber()
-        {
-            return phiNumber;
-        }
-        
-        public int getZNumber()
-        {
-            return zNumber;
-        }
-    }
 }
\ No newline at end of file

GeomConverter/src/org/lcsim/detector/tracker/silicon
SiTrackerBarrelLayer.java added at 1.1
diff -N SiTrackerBarrelLayer.java
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ SiTrackerBarrelLayer.java	20 Apr 2007 00:16:54 -0000	1.1
@@ -0,0 +1,27 @@
+package org.lcsim.detector.tracker.silicon;
+
+import org.lcsim.detector.DetectorElement;
+import org.lcsim.detector.IDetectorElement;
+
+/**
+ * DetectorElement for an SiTrackerBarrel layer.
+ */ 
+public class SiTrackerBarrelLayer 
+extends DetectorElement
+{
+    private int layerNumber;       
+    public SiTrackerBarrelLayer(
+            String name,
+            IDetectorElement parent,
+            String path,
+            int layerNumber)
+    {
+        super(name,parent,path);
+        this.layerNumber = layerNumber;
+    }   
+    
+    public int getLayerNumber()
+    {
+        return layerNumber;
+    }
+}
\ No newline at end of file

GeomConverter/src/org/lcsim/detector/tracker/silicon
SiTrackerBarrelModule.java added at 1.1
diff -N SiTrackerBarrelModule.java
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ SiTrackerBarrelModule.java	20 Apr 2007 00:16:54 -0000	1.1
@@ -0,0 +1,37 @@
+package org.lcsim.detector.tracker.silicon;
+
+import org.lcsim.detector.DetectorElement;
+import org.lcsim.detector.IDetectorElement;
+
+/**
+ * 
+ * DetectorElement for an SiTrackerBarrel module.
+ *
+ */ 
+public class SiTrackerBarrelModule extends DetectorElement
+{
+    private int phiNumber;
+    private int zNumber;
+    
+    public SiTrackerBarrelModule(String name,
+            IDetectorElement parent,
+            String path,
+            int phiNumber,
+            int zNumber) 
+    {
+        super(name, parent, path);
+        this.phiNumber = phiNumber;
+        this.zNumber = zNumber;
+        //System.out.println(name + " : " + path);
+    }
+    
+    public int getPhiNumber()
+    {
+        return phiNumber;
+    }
+    
+    public int getZNumber()
+    {
+        return zNumber;
+    }
+}
\ No newline at end of file

GeomConverter/src/org/lcsim/geometry
Detector.java 1.33 -> 1.34
diff -u -r1.33 -r1.34
--- Detector.java	9 Apr 2007 05:04:28 -0000	1.33
+++ Detector.java	20 Apr 2007 00:16:54 -0000	1.34
@@ -8,7 +8,6 @@
 import hep.graphics.heprep.HepRepTypeTree;
 
 import org.jdom.Element;
-import org.lcsim.detector.IDetectorElement;
 import org.lcsim.geometry.compact.Field;
 import org.lcsim.geometry.compact.Readout;
 import org.lcsim.geometry.field.FieldOverlay;
@@ -19,9 +18,9 @@
  */
 public class Detector 
 extends org.lcsim.geometry.compact.Detector 
-implements HepRepProvider, IDetectorElement
+implements HepRepProvider
 {
-    private FieldOverlay fieldOverlay = new FieldOverlay();
+    private FieldOverlay fieldOverlay = new FieldOverlay();  
 
     protected Detector(Element node)
     {
@@ -106,4 +105,5 @@
             }
         }
     }
+    
 }
\ No newline at end of file

GeomConverter/src/org/lcsim/geometry
Subdetector.java 1.16 -> 1.17
diff -u -r1.16 -r1.17
--- Subdetector.java	18 Apr 2007 00:07:47 -0000	1.16
+++ Subdetector.java	20 Apr 2007 00:16:54 -0000	1.17
@@ -1,16 +1,16 @@
 package org.lcsim.geometry;
 
-import org.jdom.Element;
 import org.lcsim.detector.IDetectorElement;
 import org.lcsim.geometry.compact.ParameterSet;
 import org.lcsim.geometry.compact.VisAttributes;
 import org.lcsim.geometry.layer.Layering;
 
 /**
- * @author jeremym
+ * @author Jeremy McCormick <[log in to unmask]>
+ * @author Tony Johnson <[log in to unmask]>
  */
 public interface Subdetector 
-extends IDetectorElement
+//extends IDetectorElement
 {
     //public String getName();
     public int getSystemID();
@@ -26,4 +26,6 @@
     public boolean isEndcap();
         
     public double[] transformLocalToGlobal(double[] localPos);
-}
+    
+    public IDetectorElement getDetectorElement();
+}
\ No newline at end of file

GeomConverter/src/org/lcsim/geometry/compact
Detector.java 1.21 -> 1.22
diff -u -r1.21 -r1.22
--- Detector.java	9 Apr 2007 05:04:29 -0000	1.21
+++ Detector.java	20 Apr 2007 00:16:54 -0000	1.22
@@ -5,7 +5,7 @@
 import java.util.Set;
 
 import org.jdom.Element;
-import org.lcsim.detector.DetectorElement;
+import org.lcsim.detector.IDetectorElement;
 import org.lcsim.detector.IPhysicalVolume;
 import org.lcsim.detector.IPhysicalVolumeNavigator;
 import org.lcsim.detector.PhysicalVolumeNavigator;
@@ -16,7 +16,6 @@
  * @author tonyj
  */
 public class Detector
-extends DetectorElement
 {
     private Header header;
     private Map<String,Constant> constants = new HashMap<String,Constant>();
@@ -33,6 +32,8 @@
     private IPhysicalVolume worldVolume;
     private IPhysicalVolume trackingVolume;
     private IPhysicalVolumeNavigator navigator;
+
+    private IDetectorElement de;
     
     /**
      * Called by the reader to create a new Detector
@@ -40,7 +41,7 @@
      */
     protected Detector(Element element)
     {
-        super(element == null ? "ImNotReallyADetectorElement" : element.getChild("info").getAttributeValue("name"));
+        //super(element == null ? "ImNotReallyADetectorElement" : element.getChild("info").getAttributeValue("name"));
         materialMgr = XMLMaterialManager.create(XMLMaterialManager.materials() );
     }
     
@@ -237,5 +238,15 @@
     public Map<String,VisAttributes> getVisAttributes()
     {
     	return display;
-    }   
+    }
+    
+    public IDetectorElement getDetectorElement()
+    {
+    	return de;
+    }
+    
+    public void setDetectorElement(IDetectorElement de)
+    {
+    	this.de = de;
+    }
 }
\ No newline at end of file

GeomConverter/src/org/lcsim/geometry/compact
Subdetector.java 1.17 -> 1.18
diff -u -r1.17 -r1.18
--- Subdetector.java	9 Apr 2007 21:05:30 -0000	1.17
+++ Subdetector.java	20 Apr 2007 00:16:54 -0000	1.18
@@ -3,9 +3,9 @@
 import org.jdom.Attribute;
 import org.jdom.Element;
 import org.jdom.JDOMException;
-import org.lcsim.geometry.layer.Layering;
+import org.lcsim.detector.IDetectorElement;
 import org.lcsim.geometry.IDDecoder;
-import org.lcsim.detector.DetectorElement;
+import org.lcsim.geometry.layer.Layering;
 
 /**
  *
@@ -15,7 +15,7 @@
  * @author Jeremy McCormick <[log in to unmask]>
  */
 public class Subdetector 
-extends DetectorElement
+//extends DetectorElement
 implements org.lcsim.geometry.Subdetector
 {
     private boolean reflect;
@@ -25,10 +25,11 @@
     private ParameterSet _parameters;
     private VisAttributes vis;
     private Element node;
+    private IDetectorElement de;
     
     protected Subdetector(Element element) throws JDOMException
     {        
-    	super(element.getAttributeValue("name"));
+    	//super(element.getAttributeValue("name"));
         
         node = element;
         
@@ -139,4 +140,14 @@
     {
         return node;
     }
-}
+    
+    public IDetectorElement getDetectorElement()
+    {
+    	return de;
+    }
+    
+    public void setDetectorElement(IDetectorElement de)
+    {
+    	this.de = de;
+    }
+}
\ No newline at end of file

GeomConverter/test/org/lcsim/detector/converter/compact
DetectorConverterTest.java 1.7 -> 1.8
diff -u -r1.7 -r1.8
--- DetectorConverterTest.java	24 Mar 2007 01:23:45 -0000	1.7
+++ DetectorConverterTest.java	20 Apr 2007 00:16:54 -0000	1.8
@@ -63,12 +63,11 @@
         // Check that the world volume does not have a mother volume.
         assertTrue("World volume has a mother!", world.getMotherLogicalVolume() == null);
         
-        IDetectorElement deDetector = (IDetectorElement)detector;
+        IDetectorElement deDetector = detector.getDetectorElement();
         
         String des[] = new String[]{
                 "ecal_barrel",
-                "ecal_endcap_positive",
-                "ecal_endcap_negative",
+                "ecal_endcap",
                 "tracker"};
 
         // Check for top-level DEs that should have been built.
@@ -120,7 +119,7 @@
         //System.out.println("ecn="+ecn.getTopVolume().getName());
         //System.out.println("ecn trans="+ecn.getTopVolume().getTransform());
         
-        for ( IDetectorElement child : detector.getChildren() ) 
+        for ( IDetectorElement child : detector.getDetectorElement().getChildren() ) 
         {
             for ( IDetectorElement sensor : child.getChildren() )
             {

GeomConverter/test/org/lcsim/detector/converter/compact
DiskTrackerTest.java 1.3 -> 1.4
diff -u -r1.3 -r1.4
--- DiskTrackerTest.java	30 Mar 2007 23:43:35 -0000	1.3
+++ DiskTrackerTest.java	20 Apr 2007 00:16:54 -0000	1.4
@@ -120,7 +120,7 @@
                     path.toString().equals(pathAnswerKey[i])
                     );
             
-            IDetectorElement srch = detector.findDetectorElement(zpoint);
+            IDetectorElement srch = detector.getDetectorElement().findDetectorElement(zpoint);
            
             assertTrue("Wrong path <" + path.toString() + "> at z = " + zpoints[i] + ".  Expected <" + pathAnswerKey[i] + ">.",
                     srch.getName().equals(deAnswerKey[i]));
CVSspam 0.2.8