Commit in GeomConverter/src/org/lcsim/geometry/compact/converter/lcdd on MAIN
PolyhedraEndcapCalorimeter.java+41-251.18 -> 1.19
JM: bug fixes to cal endcap converter; set tolerances to zero for debugging

GeomConverter/src/org/lcsim/geometry/compact/converter/lcdd
PolyhedraEndcapCalorimeter.java 1.18 -> 1.19
diff -u -r1.18 -r1.19
--- PolyhedraEndcapCalorimeter.java	2 Jun 2008 20:37:00 -0000	1.18
+++ PolyhedraEndcapCalorimeter.java	22 Jan 2009 22:55:03 -0000	1.19
@@ -35,19 +35,24 @@
     private Element node;
 
     // Subtracted from stave envelope dimensions.
-    private final double STAVE_ENVELOPE_TOLERANCE=10.0;
+    //private final double STAVE_ENVELOPE_TOLERANCE=10.0;
+    private final double STAVE_ENVELOPE_TOLERANCE=0.0;
     
     // Subtracted from layer envelope dimensions.
-    private final double LAYER_ENVELOPE_TOLERANCE=1.0;
+    //private final double LAYER_ENVELOPE_TOLERANCE=1.0;
+    private final double LAYER_ENVELOPE_TOLERANCE=0.0;
     
     // Subtracted from slice dimensions.
-    private final double SLICE_ENVELOPE_TOLERANCE=1.0;
+    //private final double SLICE_ENVELOPE_TOLERANCE=1.0;
+    private final double SLICE_ENVELOPE_TOLERANCE=0.0;
     
     // Small gap placed in front of each layer.
-    private final double INTER_LAYER_GAP=1.0;
+    //private final double INTER_LAYER_GAP=1.0;
+    private final double INTER_LAYER_GAP=0.0;
     
     // Small subtraction from given thickness of slice.  
-    private final double SLICE_TOLERANCE=0.01;
+    //private final double SLICE_TOLERANCE=0.01;
+    private final double SLICE_TOLERANCE=0.0;
 
     public PolyhedraEndcapCalorimeter(Element node) throws JDOMException
     {
@@ -114,8 +119,8 @@
         // The stave's trapezoid.
         double innerAngle = Math.PI * 2 / numsides;
         double halfInnerAngle = innerAngle/2;
-        double innerFaceLength = rmin * tan(halfInnerAngle) * 2;
-        double outerFaceLength = rmax * tan(halfInnerAngle) * 2;
+        double innerFaceLength = (rmin * tan(halfInnerAngle)) * 2;
+        double outerFaceLength = (rmax * tan(halfInnerAngle)) * 2;
 
         // Apply tolerances to the computed dimensions.
         radial_thickness -= STAVE_ENVELOPE_TOLERANCE;
@@ -126,11 +131,11 @@
         //System.out.println("outerFaceLength="+outerFaceLength);
         
         Trapezoid sectTrd = new Trapezoid(detName + "_stave_trapezoid");
-        sectTrd.setY2(subdetector_thickness);
-        sectTrd.setY1(subdetector_thickness);
-        sectTrd.setZ(radial_thickness);
-        sectTrd.setX1(innerFaceLength);
-        sectTrd.setX2(outerFaceLength);
+        sectTrd.setY2(subdetector_thickness/2);
+        sectTrd.setY1(subdetector_thickness/2);
+        sectTrd.setZ(radial_thickness/2);
+        sectTrd.setX1(innerFaceLength/2);
+        sectTrd.setX2(outerFaceLength/2);
         
         solids.addSolid(sectTrd);
         Volume sectVolume = new Volume(detName + "_stave");
@@ -143,7 +148,6 @@
         
         // DEBUG
         layer_position_y -= INTER_LAYER_GAP;
-               
         for (Iterator i = node.getChildren("layer").iterator(); i.hasNext();)
         {
             Element layer_element = (Element) i.next();
@@ -170,11 +174,11 @@
                 double layerOuterFaceLength=outerFaceLength-LAYER_ENVELOPE_TOLERANCE;
                 double layerRadialThickness=radial_thickness-LAYER_ENVELOPE_TOLERANCE;
                 
-                layer_trd.setX1(layerInnerFaceLength);
-                layer_trd.setX2(layerOuterFaceLength);
-                layer_trd.setY1(layer_thickness);
-                layer_trd.setY2(layer_thickness);
-                layer_trd.setZ(layerRadialThickness);
+                layer_trd.setX1(layerInnerFaceLength/2);
+                layer_trd.setX2(layerOuterFaceLength/2);
+                layer_trd.setY1(layer_thickness/2);
+                layer_trd.setY2(layer_thickness/2);
+                layer_trd.setZ(layerRadialThickness/2);
                                 
                 solids.addSolid(layer_trd);
 
@@ -210,11 +214,11 @@
                     double sliceOuterFaceLength = layerOuterFaceLength - SLICE_ENVELOPE_TOLERANCE;
                     double sliceRadialThickness = layerRadialThickness - SLICE_ENVELOPE_TOLERANCE;
                     
-                    sliceTrd.setX1(sliceInnerFaceLength);
-                    sliceTrd.setX2(sliceOuterFaceLength);
-                    sliceTrd.setY1(slice_thickness-SLICE_TOLERANCE);  // Subtract tolerance from slice_thickness.
-                    sliceTrd.setY2(slice_thickness-SLICE_TOLERANCE);  // Subtract tolerance from slice_thickness.
-                    sliceTrd.setZ(sliceRadialThickness);
+                    sliceTrd.setX1(sliceInnerFaceLength/2);
+                    sliceTrd.setX2(sliceOuterFaceLength/2);
+                    sliceTrd.setY1((slice_thickness-SLICE_TOLERANCE)/2);  // Subtract tolerance from slice_thickness.
+                    sliceTrd.setY2((slice_thickness-SLICE_TOLERANCE)/2);  // Subtract tolerance from slice_thickness.
+                    sliceTrd.setZ(sliceRadialThickness/2);
                     
                     solids.addSolid(sliceTrd);
 
@@ -275,7 +279,10 @@
         //double offsetRotation = -innerRotation / 2;
         //double offsetRotation = 0.;
 
+        System.out.println("radial_thickness: " + radial_thickness);
+
         double sectCenterRadius = rmin + radial_thickness / 2;
+        System.out.println("sectCenterRadius: " + sectCenterRadius);
         //double rotY = -offsetRotation;
         double rotY = 0.;
         //double rotY = 0.;
@@ -283,10 +290,16 @@
         //double rotX = PI / 4;
         double posX = -sectCenterRadius * sin(rotY);
         double sectPosY = sectCenterRadius * cos(rotY);
+        //System.out.println("posX: " + posX);
+        //System.out.println("sectPosY: " + sectPosY);
         for ( int i=0; i < numsides; i++)
         {
             int moduleNumber=i;
 
+            System.out.println("moduleNumber: " + moduleNumber);
+            System.out.println("posX: " + posX);
+            System.out.println("sectPosY: " + sectPosY);
+            
             Position position = new Position(detName + "_stave0_module" + moduleNumber + "_position");
             position.setX(posX);
             position.setY(sectPosY);
@@ -311,7 +324,7 @@
             sectPhysVol.addPhysVolID("module",moduleNumber);
             
             // Place the reflected subdetector envelope.
-
+/*
             boolean reflect = node.getAttribute("reflect").getBooleanValue();
             if (reflect)
             {
@@ -343,11 +356,14 @@
                 physvol2.addPhysVolID("stave",0);
                 physvol2.addPhysVolID("module",moduleNumber);
                 motherVolume.addPhysVol(physvol2);
-            }            
+            } 
+*/           
             
             rotY -= innerRotation;
             posX = -sectCenterRadius * sin(rotY);
             sectPosY = sectCenterRadius * cos(rotY);
+
+            System.out.println();
             
             // DEBUG
             //if (i==1)
CVSspam 0.2.8