Commit in GeomConverter/src/org/lcsim/detector/converter/compact on MAIN
DiskTrackerConverter.java+151-1241.24 -> 1.25
MultiLayerTrackerConverter.java+36-441.18 -> 1.19
PolyconeSupportConverter.java+16-71.3 -> 1.4
SiTrackerEndcap2Converter.java+151-1741.9 -> 1.10
+354-349
4 modified files
add missing DE and ids to detector geometry implementations; still need to confirm correctness with new test cases

GeomConverter/src/org/lcsim/detector/converter/compact
DiskTrackerConverter.java 1.24 -> 1.25
diff -u -r1.24 -r1.25
--- DiskTrackerConverter.java	30 Nov 2010 00:16:27 -0000	1.24
+++ DiskTrackerConverter.java	9 Feb 2011 01:28:15 -0000	1.25
@@ -3,6 +3,7 @@
 import org.lcsim.detector.DetectorElement;
 import org.lcsim.detector.DetectorIdentifierHelper;
 import org.lcsim.detector.ILogicalVolume;
+import org.lcsim.detector.IPhysicalVolume;
 import org.lcsim.detector.IRotation3D;
 import org.lcsim.detector.LogicalVolume;
 import org.lcsim.detector.PhysicalVolume;
@@ -17,7 +18,6 @@
 import org.lcsim.detector.material.IMaterial;
 import org.lcsim.detector.material.MaterialStore;
 import org.lcsim.detector.solids.Tube;
-import org.lcsim.geometry.IDDecoder;
 import org.lcsim.geometry.compact.Detector;
 import org.lcsim.geometry.compact.Subdetector;
 import org.lcsim.geometry.layer.Layer;
@@ -33,10 +33,10 @@
  */
 public class DiskTrackerConverter extends AbstractSubdetectorConverter implements ISubdetectorConverter
 {
-    public void convert( Subdetector subdet, Detector detector )
+    public void convert(Subdetector subdet, Detector detector)
     {
         ILogicalVolume mother = null;
-        if ( subdet.isInsideTrackingVolume() )
+        if (subdet.isInsideTrackingVolume())
         {
             mother = detector.getTrackingVolume().getLogicalVolume();
         }
@@ -45,165 +45,192 @@
             mother = detector.getWorldVolume().getLogicalVolume();
         }
 
-        DiskTracker tracker = ( DiskTracker ) subdet;
+        DiskTracker tracker = (DiskTracker)subdet;
 
         // Some DiskTracker subdetectors are used for support material
-        // so need to make sure IDDecoder is not null before using it.
-        int systemNumber = tracker.getSystemID();
-        /*
-         * = -1;
-         */
-
-        IDDecoder decoder = null;
-        try
-        {
-            decoder = tracker.getIDDecoder();
-        }
-        catch ( NullPointerException x )
+        // so need to make sure Readout is not null before using it.
+        int systemNumber = 0;         
+        DetectorIdentifierHelper helper = null;
+        if (subdet.getReadout() != null)
+        {
+            systemNumber = tracker.getSystemID();
+            helper = (DetectorIdentifierHelper)tracker.getDetectorElement().getIdentifierHelper();
+        }
+        
+        // Get the Subdetector name.
+        String subdetName = tracker.getName();
+        
+        // Create the two endcap containers.
+        DetectorElement endcapPos = new DetectorElement(subdetName + "_positive", tracker.getDetectorElement());
+        DetectorElement endcapNeg = null;
+        if (tracker.getReflect())
         {
+            endcapNeg = new DetectorElement(subdetName + "_negative", tracker.getDetectorElement());
         }
 
-        DetectorIdentifierHelper helper = ( DetectorIdentifierHelper ) tracker.getDetectorElement()
-                .getIdentifierHelper();
+        // Rotation for reflection.
+        IRotation3D reflect = new RotationPassiveXYZ(0, Math.PI, 0);
 
+        // Loop over the layers.
+        //int sensorNum = 0;
         Layering layering = tracker.getLayering();
-        String name = tracker.getName();
-
-        DetectorElement endcapPos = null;
-        DetectorElement endcapNeg = null;
-        if ( decoder != null )
-        {
-            endcapPos = new DetectorElement( name + "_positive", tracker.getDetectorElement() );
-
-            if ( tracker.getReflect() )
+        for (int i = 0; i < layering.getNumberOfLayers(); i++ )
+        {                        
+            // Layer parameters.
+            Layer layer = layering.getLayer(i);
+            double layerInnerRadius = tracker.getInnerR()[i];
+            double layerOuterRadius = tracker.getOuterR()[i];
+            double layerInnerZ = tracker.getInnerZ()[i];
+            
+            // Layer names.
+            String layerName = subdetName + "_layer" + i;
+            String posLayerName = layerName + "_pos";
+            String negLayerName = layerName + "_neg";
+
+            // Create layer solid and LogicalVolume.
+            Tube layerTube =
+                    new Tube(layerName, layerInnerRadius, layerOuterRadius, layer.getThickness() / 2);
+            LogicalVolume layerLV =
+                    new LogicalVolume(layerName + "_volume", layerTube, detector.getDetectorElement().getGeometry()
+                            .getLogicalVolume().getMaterial());
+            
+            // Positive and negative PhysicalVolumes.
+            IPhysicalVolume posLayerPV =
+                new PhysicalVolume(
+                                   new Transform3D(new Translation3D(0, 0, layerInnerZ + layer.getThickness() / 2)),
+                                   posLayerName, layerLV, mother, i);        
+            IPhysicalVolume negLayerPV = null;            
+            if (tracker.getReflect())
             {
-                endcapNeg = new DetectorElement( name + "_negative", tracker.getDetectorElement() );
+                negLayerPV = new PhysicalVolume(new Transform3D(new Translation3D(0., 0., -layerInnerZ - layer.getThickness() / 2),
+                                               reflect), negLayerName, layerLV, mother, i);
+                
             }
-        }
-
-        IRotation3D reflect = new RotationPassiveXYZ( 0, Math.PI, 0 );
-
-        int sensorNum = 0;
-
-        for ( int i = 0; i < layering.getNumberOfLayers(); i++ )
-        {
-            Layer layer = layering.getLayer( i );
-
-            double layerInnerRadius = tracker.getInnerR()[ i ];
-            double layerOuterRadius = tracker.getOuterR()[ i ];
-            double layerInnerZ = tracker.getInnerZ()[ i ];
-
-            // System.out.println("thick="+layer.getThickness());
-
-            Tube layerTube = new Tube( name + "_layer" + i,
-                                       layerInnerRadius,
-                                       layerOuterRadius,
-                                       layer.getThickness() / 2 );
-
-            LogicalVolume layerLV = new LogicalVolume( name + "_layer" + i, layerTube, detector.getDetectorElement()
-                    .getGeometry().getLogicalVolume().getMaterial() );
-
-            // Layer in positive z.
-            new PhysicalVolume( new Transform3D( new Translation3D( 0, 0, layerInnerZ + layer.getThickness() / 2 ) ),
-                                name + "_positive_layer" + i,
-                                layerLV,
-                                mother,
-                                i );
-
-            // Reflected layer in negative z.
-            if ( tracker.getReflect() )
+            
+            // Create the layer paths.
+            String posLayerPath = "/";
+            String negLayerPath = "/";
+            if (subdet.isInsideTrackingVolume())
+            {
+                posLayerPath += detector.getTrackingVolume().getName() + "/";
+                negLayerPath += detector.getTrackingVolume().getName() + "/";
+            }           
+            posLayerPath += posLayerPV.getName();
+            negLayerPath += negLayerPV.getName();
+                                             
+            // Create the layer DetectorElements.
+            new DetectorElement(posLayerPV.getName(), endcapPos, posLayerPath);            
+            if (negLayerPV != null)
             {
-                new PhysicalVolume( new Transform3D( new Translation3D( 0., 0., -layerInnerZ - layer.getThickness() / 2 ),
-                                                     reflect ),
-                                    name + "_negative_layer" + i,
-                                    layerLV,
-                                    mother,
-                                    i );
+                new DetectorElement(negLayerPV.getName(), endcapPos, negLayerPath);
             }
 
+            // Loop over the slices.
             double sliceZ = -layer.getThickness() / 2;
-            for ( int j = 0; j < layer.getNumberOfSlices(); j++ )
+            for (int j = 0; j < layer.getNumberOfSlices(); j++ )
             {
-                // System.out.println("sliceZ="+sliceZ);
-                LayerSlice slice = layer.getSlice( j );
+                // Get slice parameters.
+                LayerSlice slice = layer.getSlice(j);
                 double sliceThickness = slice.getThickness();
-                IMaterial sliceMaterial = MaterialStore.getInstance().get( slice.getMaterial().getName() );
-
-                Tube sliceTube = new Tube( name + "_layer" + i + "_slice" + j,
-                                           layerInnerRadius,
-                                           layerOuterRadius,
-                                           sliceThickness / 2 );
-
-                LogicalVolume sliceLV = new LogicalVolume( name + "_layer" + i + "_slice" + j, sliceTube, sliceMaterial );
+                IMaterial sliceMaterial = MaterialStore.getInstance().get(slice.getMaterial().getName());
+                String sliceName = layerName + "_slice" + j;
 
+                // Create the solid and LogicalVolume.
+                Tube sliceTube =
+                        new Tube(sliceName + "_tube", layerInnerRadius, layerOuterRadius,
+                                 sliceThickness / 2);
+                LogicalVolume sliceLV = new LogicalVolume(sliceName + "_volume", sliceTube, sliceMaterial);
+                
+                // Increment to correct slice Z for this placement.
                 sliceZ += sliceThickness / 2;
 
-                PhysicalVolume slicePV = new PhysicalVolume( new Transform3D( new Translation3D( 0, 0, sliceZ ) ),
-                                                             "slice" + j,
-                                                             sliceLV,
-                                                             layerLV,
-                                                             j );
+                // Create the positive slice PhysicalVolume.  Only one placement is necessary because
+                // the negative and positive layers use the same LogicalVolume.
+                PhysicalVolume slicePV =
+                        new PhysicalVolume(new Transform3D(new Translation3D(0, 0, sliceZ)), sliceName, sliceLV, layerLV, j);                
 
+                // Increment slice Z for next placement.
                 sliceZ += sliceThickness / 2;
 
-                if ( slice.isSensitive() && decoder != null )
+                // Create Identifiers if this is a sensor.
+                IIdentifier posId = null;
+                IIdentifier negId = null;
+                if (slice.isSensitive())
                 {
-                    slicePV.setSensitive( true );
-                    String path = "/tracking_region/" + name + "_positive_layer" + i + "/slice" + j;
-                    IIdentifier posId = makeIdentifier( helper, systemNumber, helper.getEndcapPositiveValue(), i, j );
-
-                    new DetectorElement( name + "_positive_layer" + i + "_sensor" + sensorNum, endcapPos, path, posId );
-
-                    if ( tracker.getReflect() )
-                    {
-                        path = "/tracking_region/" + name + "_negative_layer" + i + "/slice" + j;
-                        IIdentifier negId = makeIdentifier( helper, systemNumber, helper.getEndcapNegativeValue(), i, j );
-
-                        new DetectorElement( name + "_negative_layer" + i + "_sensor" + sensorNum,
-                                             endcapNeg,
-                                             path,
-                                             negId );
-                    }
-
-                    ++sensorNum;
+                    slicePV.setSensitive(true);
+                    posId = makeIdentifier(helper, systemNumber, helper.getEndcapPositiveValue(), i, j);
+                    negId = makeIdentifier(helper, systemNumber, helper.getEndcapNegativeValue(), i, j);
+                }
+                
+                // Create the DetectorElement paths for the slices.
+                String posPath = posLayerPath + "/" + sliceName;
+                String negPath = negLayerPath + "/" + sliceName;
+
+                // Make DetectorElements.
+                new DetectorElement(sliceName + "_pos", endcapPos, posPath, posId);
+                if (tracker.getReflect())
+                {
+                    new DetectorElement(sliceName + "_neg", endcapNeg, negPath, negId);
                 }
+
+                // Increment sensor number if slice was sensitive.
+                //if (slice.isSensitive())
+                //{
+                //    ++sensorNum;
+                //}
             }
         }
     }
 
-    static IIdentifier makeIdentifier( IIdentifierHelper helper, int systemNumber, int barrel, int layer, int slice )
+    static IIdentifier makeIdentifier(IIdentifierHelper helper, int systemNumber, int barrel, int layer, int slice)
+    {
+        ExpandedIdentifier id = new ExpandedIdentifier(helper.getIdentifierDictionary().getNumberOfFields());
+        try
+        {
+            id.setValue(helper.getFieldIndex("system"), systemNumber);
+            id.setValue(helper.getFieldIndex("barrel"), barrel);
+            id.setValue(helper.getFieldIndex("layer"), layer);
+            if (helper.hasField("slice"))
+                id.setValue(helper.getFieldIndex("slice"), slice);
+            return helper.pack(id);
+        }
+        catch (Exception x)
+        {
+            throw new RuntimeException(x);
+        }
+    }
+
+    static IIdentifier makeLayerIdentifier(IIdentifierHelper helper, int systemNumber, int barrel, int layer)
     {
-        ExpandedIdentifier id = new ExpandedIdentifier( helper.getIdentifierDictionary().getNumberOfFields() );
+        ExpandedIdentifier id = new ExpandedIdentifier(helper.getIdentifierDictionary().getNumberOfFields());
         try
         {
-            id.setValue( helper.getFieldIndex( "system" ), systemNumber );
-            id.setValue( helper.getFieldIndex( "barrel" ), barrel );
-            id.setValue( helper.getFieldIndex( "layer" ), layer );
-            if ( helper.hasField( "slice" ) )
-                id.setValue( helper.getFieldIndex( "slice" ), slice );
-            return helper.pack( id );
+            id.setValue(helper.getFieldIndex("system"), systemNumber);
+            id.setValue(helper.getFieldIndex("barrel"), barrel);
+            id.setValue(helper.getFieldIndex("layer"), layer);
+            return helper.pack(id);
         }
-        catch ( Exception x )
+        catch (Exception x)
         {
-            throw new RuntimeException( x );
+            throw new RuntimeException(x);
         }
     }
 
-    public void makeIdentifierContext( Subdetector subdet )
+    public void makeIdentifierContext(Subdetector subdet)
     {
         IIdentifierDictionary iddict = subdet.getDetectorElement().getIdentifierHelper().getIdentifierDictionary();
 
-        int systemIndex = iddict.getFieldIndex( "system" );
-        int barrelIndex = iddict.getFieldIndex( "barrel" );
-        int layerIndex = iddict.getFieldIndex( "layer" );
-
-        IdentifierContext systemContext = new IdentifierContext( new int[] { systemIndex } );
-        IdentifierContext subdetContext = new IdentifierContext( new int[] { systemIndex, barrelIndex } );
-        IdentifierContext layerContext = new IdentifierContext( new int[] { systemIndex, barrelIndex, layerIndex } );
-
-        iddict.addIdentifierContext( "system", systemContext );
-        iddict.addIdentifierContext( "subdetector", subdetContext );
-        iddict.addIdentifierContext( "layer", layerContext );
+        int systemIndex = iddict.getFieldIndex("system");
+        int barrelIndex = iddict.getFieldIndex("barrel");
+        int layerIndex = iddict.getFieldIndex("layer");
+
+        IdentifierContext systemContext = new IdentifierContext(new int[]{systemIndex});
+        IdentifierContext subdetContext = new IdentifierContext(new int[]{systemIndex,barrelIndex});
+        IdentifierContext layerContext = new IdentifierContext(new int[]{systemIndex,barrelIndex,layerIndex});
+
+        iddict.addIdentifierContext("system", systemContext);
+        iddict.addIdentifierContext("subdetector", subdetContext);
+        iddict.addIdentifierContext("layer", layerContext);
     }
 
     public Class getSubdetectorType()

GeomConverter/src/org/lcsim/detector/converter/compact
MultiLayerTrackerConverter.java 1.18 -> 1.19
diff -u -r1.18 -r1.19
--- MultiLayerTrackerConverter.java	26 Jan 2011 01:10:40 -0000	1.18
+++ MultiLayerTrackerConverter.java	9 Feb 2011 01:28:15 -0000	1.19
@@ -2,13 +2,12 @@
 
 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;
 import org.lcsim.detector.PhysicalVolume;
 import org.lcsim.detector.identifier.ExpandedIdentifier;
 import org.lcsim.detector.identifier.IIdentifier;
 import org.lcsim.detector.identifier.IIdentifierDictionary;
-import org.lcsim.detector.identifier.IdentifierContext;
 import org.lcsim.detector.identifier.IdentifierDictionaryManager;
 import org.lcsim.detector.identifier.IdentifierUtil;
 import org.lcsim.detector.material.IMaterial;
@@ -31,91 +30,84 @@
 {
     public void convert(Subdetector subdet, Detector detector)
     {
-        ILogicalVolume mother = null;
+        IPhysicalVolume mother = null;
         if (subdet.isInsideTrackingVolume())
         {
-            mother = detector.getTrackingVolume().getLogicalVolume();
+            mother = detector.getTrackingVolume();
         }
         else
         {
-            mother = detector.getWorldVolume().getLogicalVolume();
+            mother = detector.getWorldVolume();
         }
 
         MultiLayerTracker tracker = (MultiLayerTracker)subdet;
-
         Layering layering = tracker.getLayering();
+        String subdetName = tracker.getName();
 
-        String name = tracker.getName();
-
-        int layerNumber = 0;
+        // int layerNumber = 0;
         for (int i = 0; i < tracker.getLayering().getNumberOfLayers(); i++ )
         {
+            String layerName = subdetName + "_layer" + i;
             Layer layer = layering.getLayer(i);
-            double layerInnerR = tracker.getInnerR()[ i ];
-            double layerOuterZ = tracker.getOuterZ()[ i ];
+            double layerInnerR = tracker.getInnerR()[i];
+            double layerOuterZ = tracker.getOuterZ()[i];
             double layerThickness = layer.getThickness();
 
-            Tube layerTube = new Tube(name + "_layer" + i + "_tube", layerInnerR, layerInnerR + layerThickness, layerOuterZ);
-
+            Tube layerTube = new Tube(layerName + "_tube", layerInnerR, layerInnerR + layerThickness, layerOuterZ);
             IMaterial layerMaterial = detector.getDetectorElement().getGeometry().getLogicalVolume().getMaterial();
-
-            LogicalVolume layerLV = new LogicalVolume(name + "_layer" + i, layerTube, layerMaterial);
-
-            new PhysicalVolume(null, name + "_layer" + i, layerLV, mother, i);
-
+            LogicalVolume layerLV = new LogicalVolume(layerName, layerTube, layerMaterial);
+            new PhysicalVolume(null, layerName, layerLV, mother.getLogicalVolume(), i);
             double sliceInnerR = layerInnerR;
-            
+
             // Make layer name and path to geometry.
-            String layerName = name + "_layer" + i;
             String layerPath = "";
             if (subdet.isInsideTrackingVolume())
             {
-                layerPath += "/tracking_region";
+                layerPath += "/" + mother.getName();
             }
-            layerPath += "/" + layerName;       
-            
-            // Make the layer DetectorElement.  (no id)
+            layerPath += "/" + layerName;
+
+            //System.out.println("MultiLayerTracker: " + layerPath);
+
+            // Make the layer DetectorElement. (no id)
             IDetectorElement layerDe = new DetectorElement(layerName, tracker.getDetectorElement(), layerPath);
-            
+
             for (int j = 0; j < layer.getNumberOfSlices(); j++ )
             {
                 LayerSlice slice = layer.getSlice(j);
-
                 double sliceThickness = slice.getThickness();
+                String sliceName = subdetName + "layer" + i + "_slice" + j;
 
-                Tube sliceTube = new Tube(name + "layer" + i + "_slice" + j + "_tube", sliceInnerR, sliceInnerR + sliceThickness, layerOuterZ);
-
+                Tube sliceTube = new Tube(sliceName + "_tube", sliceInnerR, sliceInnerR + sliceThickness, layerOuterZ);
                 IMaterial sliceMaterial = MaterialStore.getInstance().get(slice.getMaterial().getName());
+                LogicalVolume sliceLV = new LogicalVolume(sliceName, sliceTube, sliceMaterial);
+                PhysicalVolume slicePV = new PhysicalVolume(null, sliceName, sliceLV, layerLV, j);
 
-                LogicalVolume sliceLV = new LogicalVolume(name + "layer" + i + "_slice" + j, sliceTube, sliceMaterial);
-
-                PhysicalVolume slicePV = new PhysicalVolume(null, "slice" + j, sliceLV, layerLV, j);
-                                
+                // Create ID for sensors.
+                IIdentifier id = null;
                 if (slice.isSensitive())
                 {
                     slicePV.setSensitive(true);
 
-                    String path = "/tracking_region/" + name + "_layer" + i + "/slice" + j;
-
-                    ExpandedIdentifier expid = makeExpandedIdentifier(subdet.getIDDecoder(), tracker.getIDDecoder().getSystemNumber(), i);
-
-                    IIdentifierDictionary iddict = IdentifierDictionaryManager.getInstance().getIdentifierDictionary(subdet.getReadout().getName());
-                    IIdentifier id = IdentifierUtil.pack(iddict, expid);
-
-                    new DetectorElement(name + "_layer" + layerNumber, layerDe, path, id);
-
-                    ++layerNumber;
+                    ExpandedIdentifier expid =
+                            makeExpandedIdentifier(subdet.getIDDecoder(), tracker.getIDDecoder().getSystemNumber(), i);
+                    IIdentifierDictionary iddict =
+                            IdentifierDictionaryManager.getInstance().getIdentifierDictionary(
+                                    subdet.getReadout().getName());
+                    id = IdentifierUtil.pack(iddict, expid);
                 }
 
+                String slicePath = layerPath + "/" + slicePV.getName();
+                new DetectorElement(sliceName, layerDe, slicePath, id);
+
                 sliceInnerR += sliceThickness;
             }
         }
     }
 
-    static ExpandedIdentifier makeExpandedIdentifier(IDDecoder decoder, int systemNumber, int layer)
+    private static ExpandedIdentifier makeExpandedIdentifier(IDDecoder decoder, int systemNumber, int layer)
     {
         ExpandedIdentifier id = new ExpandedIdentifier();
-        // int extras=0;
         for (int i = 0; i < decoder.getFieldCount(); i++ )
         {
             String fieldName = decoder.getFieldName(i);

GeomConverter/src/org/lcsim/detector/converter/compact
PolyconeSupportConverter.java 1.3 -> 1.4
diff -u -r1.3 -r1.4
--- PolyconeSupportConverter.java	30 Nov 2010 00:16:27 -0000	1.3
+++ PolyconeSupportConverter.java	9 Feb 2011 01:28:15 -0000	1.4
@@ -6,6 +6,7 @@
 
 import org.jdom.DataConversionException;
 import org.jdom.Element;
+import org.lcsim.detector.DetectorElement;
 import org.lcsim.detector.DetectorFactory;
 import org.lcsim.detector.ILogicalVolume;
 import org.lcsim.detector.IPhysicalVolume;
@@ -25,7 +26,7 @@
  * {@link org.lcsim.detector} detailed detector representation.
  * 
  * @author Jeremy McCormick <[log in to unmask]>
- * @version $Id: PolyconeSupportConverter.java,v 1.3 2010/11/30 00:16:27 jeremy Exp $
+ * @version $Id: PolyconeSupportConverter.java,v 1.4 2011/02/09 01:28:15 jeremy Exp $
  */
 
 public class PolyconeSupportConverter extends AbstractSubdetectorConverter implements ISubdetectorConverter
@@ -39,7 +40,7 @@
     }
 
     public void convert( Subdetector subdet, Detector detector )
-    {
+    {        
         List< ZPlane > zplanes = new ArrayList< ZPlane >();
         Element node = subdet.getNode();
         for ( Iterator i = node.getChildren( "zplane" ).iterator(); i.hasNext(); )
@@ -62,22 +63,30 @@
 
         ILogicalVolume lvPolycone = new LogicalVolume( subdet.getName(), polycone, material );
 
-        ILogicalVolume mom = null;
+        IPhysicalVolume mom = null;
+        String path = "/";
         if ( subdet.isInsideTrackingVolume() )
         {
-            mom = detector.getTrackingVolume().getLogicalVolume();
+            mom = detector.getTrackingVolume();
+            path = mom.getName() + "/";
         }
         else
         {
-            mom = detector.getWorldVolume().getLogicalVolume();
-        }
+            mom = detector.getWorldVolume();
+        } 
 
         IPhysicalVolume pv = DetectorFactory.getInstance().createPhysicalVolume(
                 null,
                 subdet.getName(),
                 lvPolycone,
-                mom,
+                mom.getLogicalVolume(),
                 0 );
+        
+        path += pv.getName();
+        
+        //System.out.println("making PolyconeSupport DE with path: " + path);
+                               
+        new DetectorElement(subdet.getName() + "_placement", subdet.getDetectorElement(), path);
     }
 
     public Class getSubdetectorType()

GeomConverter/src/org/lcsim/detector/converter/compact
SiTrackerEndcap2Converter.java 1.9 -> 1.10
diff -u -r1.9 -r1.10
--- SiTrackerEndcap2Converter.java	30 Nov 2010 00:16:27 -0000	1.9
+++ SiTrackerEndcap2Converter.java	9 Feb 2011 01:28:15 -0000	1.10
@@ -36,151 +36,149 @@
 import org.lcsim.geometry.subdetector.SiTrackerEndcap2;
 
 /**
- * An LCDD converter for a Silicon endcap tracker model based on Bill Cooper's design from
- * <a href="http://ilcagenda.linearcollider.org/materialDisplay.py?contribId=58&sessionId=1&materialId=slides&confId=2784"
+ * An LCDD converter for a Silicon endcap tracker model based on Bill Cooper's design from <a href=
+ * "http://ilcagenda.linearcollider.org/materialDisplay.py?contribId=58&sessionId=1&materialId=slides&confId=2784"
  * >Boulder SiD Workshop 2008</a>.
  * 
  * @author jeremym
  */
 public class SiTrackerEndcap2Converter extends AbstractSubdetectorConverter implements ISubdetectorConverter
 {
-    Map< String, SiTrackerModuleParameters > moduleParameters = new HashMap< String, SiTrackerModuleParameters >();
-    Map< String, LogicalVolume > modules = new HashMap< String, LogicalVolume >();
+    Map<String, SiTrackerModuleParameters> moduleParameters = new HashMap<String, SiTrackerModuleParameters>();
+    Map<String, LogicalVolume> modules = new HashMap<String, LogicalVolume>();
     IMaterial vacuum;
 
-    public IIdentifierHelper makeIdentifierHelper( Subdetector subdetector, SystemMap systemMap )
+    public IIdentifierHelper makeIdentifierHelper(Subdetector subdetector, SystemMap systemMap)
     {
-        return new SiTrackerIdentifierHelper( subdetector.getDetectorElement(),
-                                              makeIdentifierDictionary( subdetector ),
-                                              systemMap );
+        return new SiTrackerIdentifierHelper(subdetector.getDetectorElement(), makeIdentifierDictionary(subdetector),
+                                             systemMap);
     }
 
-    public void convert( Subdetector subdet, Detector detector )
+    public void convert(Subdetector subdet, Detector detector)
     {
         try
         {
             Element node = subdet.getNode();
-            String subdetName = node.getAttributeValue( "name" );
-            vacuum = MaterialStore.getInstance().get( "Air" );
+            String subdetName = node.getAttributeValue("name");
+            vacuum = MaterialStore.getInstance().get("Air");
 
             boolean reflect;
-            if ( node.getAttribute( "reflect" ) != null )
-                reflect = node.getAttribute( "reflect" ).getBooleanValue();
+            if (node.getAttribute("reflect") != null)
+                reflect = node.getAttribute("reflect").getBooleanValue();
             else
                 reflect = true;
 
             IDetectorElement subdetDetElem = subdet.getDetectorElement();
-            DetectorIdentifierHelper helper = ( DetectorIdentifierHelper ) subdetDetElem.getIdentifierHelper();
+            DetectorIdentifierHelper helper = (DetectorIdentifierHelper)subdetDetElem.getIdentifierHelper();
             int nfields = helper.getIdentifierDictionary().getNumberOfFields();
             IDetectorElement endcapPos = null;
             IDetectorElement endcapNeg = null;
             try
             {
                 // Positive endcap DE
-                IExpandedIdentifier endcapPosId = new ExpandedIdentifier( nfields );
-                endcapPosId.setValue( helper.getFieldIndex( "system" ), subdet.getSystemID() );
-                endcapPosId.setValue( helper.getFieldIndex( "barrel" ), helper.getEndcapPositiveValue() );
-                endcapPos = new DetectorElement( subdet.getName() + "_positive", subdetDetElem );
-                endcapPos.setIdentifier( helper.pack( endcapPosId ) );
+                IExpandedIdentifier endcapPosId = new ExpandedIdentifier(nfields);
+                endcapPosId.setValue(helper.getFieldIndex("system"), subdet.getSystemID());
+                endcapPosId.setValue(helper.getFieldIndex("barrel"), helper.getEndcapPositiveValue());
+                endcapPos = new DetectorElement(subdet.getName() + "_positive", subdetDetElem);
+                endcapPos.setIdentifier(helper.pack(endcapPosId));
 
                 // Negative endcap DE.
-                if ( reflect )
+                if (reflect)
                 {
-                    IExpandedIdentifier endcapNegId = new ExpandedIdentifier( nfields );
-                    endcapNegId.setValue( helper.getFieldIndex( "system" ), subdet.getSystemID() );
-                    endcapNegId.setValue( helper.getFieldIndex( "barrel" ), helper.getEndcapNegativeValue() );
-                    endcapNeg = new DetectorElement( subdet.getName() + "_negative", subdetDetElem );
-                    endcapNeg.setIdentifier( helper.pack( endcapNegId ) );
+                    IExpandedIdentifier endcapNegId = new ExpandedIdentifier(nfields);
+                    endcapNegId.setValue(helper.getFieldIndex("system"), subdet.getSystemID());
+                    endcapNegId.setValue(helper.getFieldIndex("barrel"), helper.getEndcapNegativeValue());
+                    endcapNeg = new DetectorElement(subdet.getName() + "_negative", subdetDetElem);
+                    endcapNeg.setIdentifier(helper.pack(endcapNegId));
                 }
 
             }
-            catch ( Exception x )
+            catch (Exception x)
             {
-                throw new RuntimeException( x );
+                throw new RuntimeException(x);
             }
 
-            for ( Iterator i = node.getChildren( "module" ).iterator(); i.hasNext(); )
+            for (Iterator i = node.getChildren("module").iterator(); i.hasNext();)
             {
-                Element module = ( Element ) i.next();
-                String moduleName = module.getAttributeValue( "name" );
-                moduleParameters.put( moduleName, new SiTrackerModuleParameters( module ) );
-                modules.put( moduleName, makeModule( moduleParameters.get( moduleName ) ) );
+                Element module = (Element)i.next();
+                String moduleName = module.getAttributeValue("name");
+                moduleParameters.put(moduleName, new SiTrackerModuleParameters(module));
+                modules.put(moduleName, makeModule(moduleParameters.get(moduleName)));
             }
 
-            for ( Iterator i = node.getChildren( "layer" ).iterator(); i.hasNext(); )
+            for (Iterator i = node.getChildren("layer").iterator(); i.hasNext();)
             {
-                Element layerElement = ( Element ) i.next();
+                Element layerElement = (Element)i.next();
 
-                int layerId = layerElement.getAttribute( "id" ).getIntValue();
+                int layerId = layerElement.getAttribute("id").getIntValue();
 
                 // Positive endcap layer.
-                IExpandedIdentifier layerPosId = new ExpandedIdentifier( nfields );
-                layerPosId.setValue( helper.getFieldIndex( "system" ), subdet.getSystemID() );
-                layerPosId.setValue( helper.getFieldIndex( "barrel" ), helper.getEndcapPositiveValue() );
-                layerPosId.setValue( helper.getFieldIndex( "layer" ), layerId );
-                IDetectorElement layerPos = new DetectorElement( endcapPos.getName() + "_layer" + layerId,
-                                                                 endcapPos,
-                                                                 helper.pack( layerPosId ) );
+                IExpandedIdentifier layerPosId = new ExpandedIdentifier(nfields);
+                layerPosId.setValue(helper.getFieldIndex("system"), subdet.getSystemID());
+                layerPosId.setValue(helper.getFieldIndex("barrel"), helper.getEndcapPositiveValue());
+                layerPosId.setValue(helper.getFieldIndex("layer"), layerId);
+                IDetectorElement layerPos =
+                        new DetectorElement(endcapPos.getName() + "_layer" + layerId, endcapPos, helper
+                                .pack(layerPosId));
 
                 // Negative endcap layer.
                 IDetectorElement layerNeg = null;
-                if ( reflect )
+                if (reflect)
                 {
-                    IExpandedIdentifier layerNegId = new ExpandedIdentifier( nfields );
-                    layerNegId.setValue( helper.getFieldIndex( "system" ), subdet.getSystemID() );
-                    layerNegId.setValue( helper.getFieldIndex( "barrel" ), helper.getEndcapNegativeValue() );
-                    layerNegId.setValue( helper.getFieldIndex( "layer" ), layerId );
-                    layerNeg = new DetectorElement( endcapNeg.getName() + "_layer" + layerId, endcapNeg, helper
-                            .pack( layerNegId ) );
+                    IExpandedIdentifier layerNegId = new ExpandedIdentifier(nfields);
+                    layerNegId.setValue(helper.getFieldIndex("system"), subdet.getSystemID());
+                    layerNegId.setValue(helper.getFieldIndex("barrel"), helper.getEndcapNegativeValue());
+                    layerNegId.setValue(helper.getFieldIndex("layer"), layerId);
+                    layerNeg =
+                            new DetectorElement(endcapNeg.getName() + "_layer" + layerId, endcapNeg, helper
+                                    .pack(layerNegId));
                 }
 
                 int moduleNumber = 0;
-                for ( Iterator j = layerElement.getChildren( "ring" ).iterator(); j.hasNext(); )
+                for (Iterator j = layerElement.getChildren("ring").iterator(); j.hasNext();)
                 {
-                    Element ringElement = ( Element ) j.next();
-                    double r = ringElement.getAttribute( "r" ).getDoubleValue();
+                    Element ringElement = (Element)j.next();
+                    double r = ringElement.getAttribute("r").getDoubleValue();
                     double phi0 = 0;
-                    if ( ringElement.getAttribute( "phi0" ) != null )
+                    if (ringElement.getAttribute("phi0") != null)
                     {
-                        phi0 = ringElement.getAttribute( "phi0" ).getDoubleValue();
+                        phi0 = ringElement.getAttribute("phi0").getDoubleValue();
                     }
-                    double zstart = ringElement.getAttribute( "zstart" ).getDoubleValue();
-                    double dz = Math.abs( ringElement.getAttribute( "dz" ).getDoubleValue() );
-                    int nmodules = ringElement.getAttribute( "nmodules" ).getIntValue();
-                    String module = ringElement.getAttributeValue( "module" );
-                    LogicalVolume moduleVolume = modules.get( module );
-                    if ( moduleVolume == null )
-                        throw new RuntimeException( "Module " + module + " was not found." );
-                    double iphi = ( 2 * Math.PI ) / nmodules;
+                    double zstart = ringElement.getAttribute("zstart").getDoubleValue();
+                    double dz = Math.abs(ringElement.getAttribute("dz").getDoubleValue());
+                    int nmodules = ringElement.getAttribute("nmodules").getIntValue();
+                    String module = ringElement.getAttributeValue("module");
+                    LogicalVolume moduleVolume = modules.get(module);
+                    if (moduleVolume == null)
+                        throw new RuntimeException("Module " + module + " was not found.");
+                    double iphi = (2 * Math.PI) / nmodules;
                     double phi = phi0;
-                    for ( int k = 0; k < nmodules; k++ )
+                    for (int k = 0; k < nmodules; k++ )
                     {
                         String moduleBaseName = subdetName + "_layer" + layerId + "_module" + moduleNumber;
 
-                        double x = r * Math.cos( phi );
-                        double y = r * Math.sin( phi );
+                        double x = r * Math.cos(phi);
+                        double y = r * Math.sin(phi);
 
                         // Positive endcap module.
-                        Translation3D p = new Translation3D( x, y, zstart + dz );
-                        RotationGeant rot = new RotationGeant( -Math.PI / 2, -Math.PI / 2 - phi, 0 );
-                        new PhysicalVolume( new Transform3D( p, rot ), moduleBaseName, moduleVolume, detector
-                                .getTrackingVolume().getLogicalVolume(), k );
+                        Translation3D p = new Translation3D(x, y, zstart + dz);
+                        RotationGeant rot = new RotationGeant(-Math.PI / 2, -Math.PI / 2 - phi, 0);
+                        new PhysicalVolume(new Transform3D(p, rot), moduleBaseName, moduleVolume, detector
+                                .getTrackingVolume().getLogicalVolume(), k);
                         String path = "/" + detector.getTrackingVolume().getName() + "/" + moduleBaseName;
-                        IDetectorElement modulePos = new SiTrackerModule( moduleBaseName, layerPos, path, moduleNumber );
+                        IDetectorElement modulePos = new SiTrackerModule(moduleBaseName, layerPos, path, moduleNumber);
 
                         // Negative endcap module.
-                        if ( reflect )
+                        if (reflect)
                         {
-                            Translation3D pr = new Translation3D( x, y, -zstart - dz );
-                            RotationGeant rotr = new RotationGeant( -Math.PI / 2, -Math.PI / 2 - phi, Math.PI );
+                            Translation3D pr = new Translation3D(x, y, -zstart - dz);
+                            RotationGeant rotr = new RotationGeant(-Math.PI / 2, -Math.PI / 2 - phi, Math.PI);
 
-                            String path2 = "/" + detector.getTrackingVolume().getName() + "/" + moduleBaseName + "_reflected";
-                            new PhysicalVolume( new Transform3D( pr, rotr ),
-                                                moduleBaseName + "_reflected",
-                                                moduleVolume,
-                                                detector.getTrackingVolume().getLogicalVolume(),
-                                                k );
-                            new SiTrackerModule( moduleBaseName + "_reflected", layerNeg, path2, moduleNumber );
+                            String path2 =
+                                    "/" + detector.getTrackingVolume().getName() + "/" + moduleBaseName + "_reflected";
+                            new PhysicalVolume(new Transform3D(pr, rotr), moduleBaseName + "_reflected", moduleVolume,
+                                               detector.getTrackingVolume().getLogicalVolume(), k);
+                            new SiTrackerModule(moduleBaseName + "_reflected", layerNeg, path2, moduleNumber);
                         }
 
                         dz = -dz;
@@ -190,32 +188,32 @@
                 }
             }
         }
-        catch ( JDOMException except )
+        catch (JDOMException except)
         {
-            throw new RuntimeException( except );
+            throw new RuntimeException(except);
         }
 
         // Create DetectorElements for the sensors.
-        setupSensorDetectorElements( subdet );
+        setupSensorDetectorElements(subdet);
     }
 
-    private LogicalVolume makeModule( SiTrackerModuleParameters params )
+    private LogicalVolume makeModule(SiTrackerModuleParameters params)
     {
         double thickness = params.getThickness();
         double dx1, dx2, dy1, dy2, dz;
         dy1 = dy2 = thickness / 2;
-        dx1 = params.getDimension( 0 );
-        dx2 = params.getDimension( 1 );
-        dz = params.getDimension( 2 );
-        Trd envelope = new Trd( params.getName() + "Trd", dx1, dx2, dy1, dy2, dz );
-        LogicalVolume volume = new LogicalVolume( params.getName() + "Volume", envelope, vacuum );
-        makeModuleComponents( volume, params );
+        dx1 = params.getDimension(0);
+        dx2 = params.getDimension(1);
+        dz = params.getDimension(2);
+        Trd envelope = new Trd(params.getName() + "Trd", dx1, dx2, dy1, dy2, dz);
+        LogicalVolume volume = new LogicalVolume(params.getName() + "Volume", envelope, vacuum);
+        makeModuleComponents(volume, params);
         return volume;
     }
 
-    private void makeModuleComponents( LogicalVolume moduleVolume, SiTrackerModuleParameters moduleParameters )
+    private void makeModuleComponents(LogicalVolume moduleVolume, SiTrackerModuleParameters moduleParameters)
     {
-        Trd trd = ( Trd ) moduleVolume.getSolid();
+        Trd trd = (Trd)moduleVolume.getSolid();
 
         double x1 = trd.getXHalfLength1();
         double x2 = trd.getXHalfLength2();
@@ -227,14 +225,15 @@
         String moduleName = moduleVolume.getName();
 
         int sensor = 0;
-        for ( SiTrackerModuleComponentParameters component : moduleParameters )
+        for (SiTrackerModuleComponentParameters component : moduleParameters)
         {
             double thickness = component.getThickness();
 
-            IMaterial material = MaterialStore.getInstance().get( component.getMaterialName() );
-            if ( material == null )
+            IMaterial material = MaterialStore.getInstance().get(component.getMaterialName());
+            if (material == null)
             {
-                throw new RuntimeException( "The material " + component.getMaterialName() + " does not exist in the materials database." );
+                throw new RuntimeException("The material " + component.getMaterialName()
+                        + " does not exist in the materials database.");
             }
             boolean sensitive = component.isSensitive();
             int componentNumber = component.getComponentNumber();
@@ -243,137 +242,115 @@
 
             String componentName = moduleName + "_component" + componentNumber;
 
-            Trd sliceTrd = new Trd( componentName + "_trd", x1, x2, thickness / 2, thickness / 2, z );
+            Trd sliceTrd = new Trd(componentName + "_trd", x1, x2, thickness / 2, thickness / 2, z);
 
-            LogicalVolume volume = new LogicalVolume( componentName, sliceTrd, material );
+            LogicalVolume volume = new LogicalVolume(componentName, sliceTrd, material);
 
             double zrot = 0;
-            if ( sensitive )
+            if (sensitive)
             {
-                if ( sensor > 1 )
+                if (sensor > 1)
                 {
-                    throw new RuntimeException( "Exceeded maximum of 2 sensors per module." );
+                    throw new RuntimeException("Exceeded maximum of 2 sensors per module.");
                 }
                 // Flip 180 deg for 1st sensor.
-                if ( sensor == 0 )
+                if (sensor == 0)
                 {
                     zrot = Math.PI;
                 }
                 ++sensor;
             }
-            Translation3D position = new Translation3D( 0., posY, 0 );
-            RotationGeant rotation = new RotationGeant( 0, 0, zrot );
-            PhysicalVolume pv = new PhysicalVolume( new Transform3D( position, rotation ),
-                                                    componentName,
-                                                    volume,
-                                                    moduleVolume,
-                                                    componentNumber );
-            pv.setSensitive( sensitive );
+            Translation3D position = new Translation3D(0., posY, 0);
+            RotationGeant rotation = new RotationGeant(0, 0, zrot);
+            PhysicalVolume pv =
+                    new PhysicalVolume(new Transform3D(position, rotation), componentName, volume, moduleVolume,
+                                       componentNumber);
+            pv.setSensitive(sensitive);
 
             posY += thickness / 2;
         }
     }
 
-    private void setupSensorDetectorElements( Subdetector subdet )
+    private void setupSensorDetectorElements(Subdetector subdet)
     {
-        SiTrackerIdentifierHelper helper = ( SiTrackerIdentifierHelper ) subdet.getDetectorElement()
-                .getIdentifierHelper();
+        SiTrackerIdentifierHelper helper = (SiTrackerIdentifierHelper)subdet.getDetectorElement().getIdentifierHelper();
 
-        for ( IDetectorElement endcap : subdet.getDetectorElement().getChildren() )
+        for (IDetectorElement endcap : subdet.getDetectorElement().getChildren())
         {
-            for ( IDetectorElement layer : endcap.getChildren() )
+            for (IDetectorElement layer : endcap.getChildren())
             {
-                for ( IDetectorElement module : layer.getChildren() )
+                for (IDetectorElement module : layer.getChildren())
                 {
                     IPhysicalVolume modulePhysVol = module.getGeometry().getPhysicalVolume();
                     IPhysicalVolumePath modulePath = module.getGeometry().getPath();
                     int sensorId = 0;
-                    for ( IPhysicalVolume pv : modulePhysVol.getLogicalVolume().getDaughters() )
+                    for (IPhysicalVolume pv : modulePhysVol.getLogicalVolume().getDaughters())
                     {
-                        if ( pv.isSensitive() )
+                        if (pv.isSensitive())
                         {
-                            IIdentifierDictionary iddict = subdet.getDetectorElement().getIdentifierHelper()
-                                    .getIdentifierDictionary();
+                            IIdentifierDictionary iddict =
+                                    subdet.getDetectorElement().getIdentifierHelper().getIdentifierDictionary();
 
-                            ExpandedIdentifier expId = new ExpandedIdentifier( iddict.getNumberOfFields() );
-                            expId.setValue( iddict.getFieldIndex( "system" ), subdet.getSystemID() );
+                            ExpandedIdentifier expId = new ExpandedIdentifier(iddict.getNumberOfFields());
+                            expId.setValue(iddict.getFieldIndex("system"), subdet.getSystemID());
 
-                            if ( helper.isEndcapPositive( endcap.getIdentifier() ) )
+                            if (helper.isEndcapPositive(endcap.getIdentifier()))
                             {
-                                expId.setValue( iddict.getFieldIndex( "barrel" ), helper.getEndcapPositiveValue() );
+                                expId.setValue(iddict.getFieldIndex("barrel"), helper.getEndcapPositiveValue());
                             }
-                            else if ( helper.isEndcapNegative( endcap.getIdentifier() ) )
+                            else if (helper.isEndcapNegative(endcap.getIdentifier()))
                             {
-                                expId.setValue( iddict.getFieldIndex( "barrel" ), helper.getEndcapNegativeValue() );
+                                expId.setValue(iddict.getFieldIndex("barrel"), helper.getEndcapNegativeValue());
                             }
                             else
                             {
-                                throw new RuntimeException( endcap.getName() + " is not a positive or negative endcap!" );
+                                throw new RuntimeException(endcap.getName() + " is not a positive or negative endcap!");
                             }
-                            expId.setValue( iddict.getFieldIndex( "layer" ), layer.getIdentifierHelper().getValue(
-                                    layer.getIdentifier(),
-                                    "layer" ) );
-                            expId.setValue( iddict.getFieldIndex( "module" ), ( ( SiTrackerModule ) module )
-                                    .getModuleId() );
-                            expId.setValue( iddict.getFieldIndex( "sensor" ), sensorId );
+                            expId.setValue(iddict.getFieldIndex("layer"), layer.getIdentifierHelper().getValue(
+                                    layer.getIdentifier(), "layer"));
+                            expId.setValue(iddict.getFieldIndex("module"), ((SiTrackerModule)module).getModuleId());
+                            expId.setValue(iddict.getFieldIndex("sensor"), sensorId);
 
-                            IIdentifier id = IdentifierUtil.pack( iddict, expId );
+                            IIdentifier id = IdentifierUtil.pack(iddict, expId);
 
                             String sensorPath = modulePath.toString() + "/" + pv.getName();
                             String sensorName = module.getName() + "_sensor" + sensorId;
 
-                            SiSensor sensor = new SiSensor( sensorId, sensorName, module, sensorPath, id );
+                            SiSensor sensor = new SiSensor(sensorId, sensorName, module, sensorPath, id);
 
                             // Set up SiStrips for the sensors
                             /*
-                             * Trd sensor_solid =
-                             * (Trd)sensor.getGeometry().getLogicalVolume().getSolid();
+                             * Trd sensor_solid = (Trd)sensor.getGeometry().getLogicalVolume().getSolid();
                              * 
-                             * Polygon3D n_side = sensor_solid.getFacesNormalTo(new
-                             * BasicHep3Vector(0,-1,0)).get(0); Polygon3D p_side =
-                             * sensor_solid.getFacesNormalTo(new
-                             * BasicHep3Vector(0,1,0)).get(0);
+                             * Polygon3D n_side = sensor_solid.getFacesNormalTo(new BasicHep3Vector(0,-1,0)).get(0);
+                             * Polygon3D p_side = sensor_solid.getFacesNormalTo(new BasicHep3Vector(0,1,0)).get(0);
                              * 
-                             * //System.out.println("Plane of p_side polygon has... ");
-                             * //System
-                             * .out.println("                        normal: "+p_side
-                             * .getNormal());
-                             * //System.out.println("                        distance: "
-                             * +p_side.getDistance()); //for (Point3D point :
-                             * p_side.getVertices()) //{ //
-                             * System.out.println("      Vertex: "+point); //}
+                             * //System.out.println("Plane of p_side polygon has... "); //System
+                             * .out.println("                        normal: "+p_side .getNormal());
+                             * //System.out.println("                        distance: " +p_side.getDistance()); //for
+                             * (Point3D point : p_side.getVertices()) //{ // System.out.println("      Vertex: "+point);
+                             * //}
                              * 
-                             * //System.out.println("Plane of n_side polygon has... ");
-                             * //System
-                             * .out.println("                        normal: "+n_side
-                             * .getNormal());
-                             * //System.out.println("                        distance: "
-                             * +n_side.getDistance());
+                             * //System.out.println("Plane of n_side polygon has... "); //System
+                             * .out.println("                        normal: "+n_side .getNormal());
+                             * //System.out.println("                        distance: " +n_side.getDistance());
                              * 
-                             * // Bias the sensor
-                             * sensor.setBiasSurface(ChargeCarrier.HOLE,p_side);
+                             * // Bias the sensor sensor.setBiasSurface(ChargeCarrier.HOLE,p_side);
                              * sensor.setBiasSurface(ChargeCarrier.ELECTRON,n_side);
                              * 
-                             * double strip_angle =
-                             * Math.atan2(sensor_solid.getXHalfLength2() -
-                             * sensor_solid.getXHalfLength1(),
-                             * sensor_solid.getZHalfLength() * 2);
+                             * double strip_angle = Math.atan2(sensor_solid.getXHalfLength2() -
+                             * sensor_solid.getXHalfLength1(), sensor_solid.getZHalfLength() * 2);
                              * 
                              * ITranslation3D electrodes_position = new
-                             * Translation3D(VecOp.mult(-p_side.getDistance(),new
-                             * BasicHep3Vector(0,0,1))); // translate to outside of
-                             * polygon IRotation3D electrodes_rotation = new
-                             * RotationPassiveXYZ(-Math.PI/2,0,strip_angle); Transform3D
-                             * electrodes_transform = new Transform3D(electrodes_position,
-                             * electrodes_rotation);
+                             * Translation3D(VecOp.mult(-p_side.getDistance(),new BasicHep3Vector(0,0,1))); // translate
+                             * to outside of polygon IRotation3D electrodes_rotation = new
+                             * RotationPassiveXYZ(-Math.PI/2,0,strip_angle); Transform3D electrodes_transform = new
+                             * Transform3D(electrodes_position, electrodes_rotation);
                              * 
-                             * // Free calculation of readout electrodes, sense electrodes
-                             * determined thereon SiSensorElectrodes readout_electrodes =
-                             * new
-                             * SiStrips(ChargeCarrier.HOLE,0.050,sensor,electrodes_transform
-                             * ); SiSensorElectrodes sense_electrodes = new
-                             * SiStrips(ChargeCarrier
-                             * .HOLE,0.025,(readout_electrodes.getNCells
+                             * // Free calculation of readout electrodes, sense electrodes determined thereon
+                             * SiSensorElectrodes readout_electrodes = new
+                             * SiStrips(ChargeCarrier.HOLE,0.050,sensor,electrodes_transform ); SiSensorElectrodes
+                             * sense_electrodes = new SiStrips(ChargeCarrier .HOLE,0.025,(readout_electrodes.getNCells
                              * ()*2-1),sensor,electrodes_transform);
                              * 
                              * sensor.setSenseElectrodes(sense_electrodes);
CVSspam 0.2.8