GeomConverter/src/org/lcsim/geometry/compact/converter/lcdd
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)