Commit in GeomConverter/src/org/lcsim/geometry on MAIN | |||
compact/converter/lcdd/PolyhedraEndcapCalorimeter.java | +2 | 1.25 -> 1.26 | |
/PolyhedraEndcapCalorimeter2.java | +5 | -5 | 1.13 -> 1.14 |
/PolyhedraEndcapCalorimeter3.java | +2 | -5 | 1.6 -> 1.7 |
subdetector/AbstractPolyhedraCalorimeter.java | +31 | -53 | 1.15 -> 1.16 |
/PolyhedraBarrelCalorimeter.java | +2 | -2 | 1.14 -> 1.15 |
/PolyhedraBarrelCalorimeter2.java | +2 | -2 | 1.4 -> 1.5 |
/PolyhedraEndcapCalorimeter.java | +1 | -58 | 1.19 -> 1.20 |
/PolyhedraEndcapCalorimeter2.java | +2 | -61 | 1.12 -> 1.13 |
/PolyhedraEndcapCalorimeter3.java | +1 | -5 | 1.6 -> 1.7 |
+48 | -191 |
corrections to rmax calculations for polyhedra calorimeters
diff -u -r1.25 -r1.26 --- PolyhedraEndcapCalorimeter.java 6 May 2010 18:27:46 -0000 1.25 +++ PolyhedraEndcapCalorimeter.java 30 Jan 2012 13:43:46 -0000 1.26 @@ -93,6 +93,8 @@
LayerStack layers = Layering.makeLayering(this.node).getLayerStack();
+ rmax = rmin + layers.getTotalThickness(); +
// Total thickness of the subdetector. double subdetectorThickness = org.lcsim.geometry.layer.LayerFromCompactCnv.computeDetectorTotalThickness(node);
diff -u -r1.13 -r1.14 --- PolyhedraEndcapCalorimeter2.java 30 Apr 2010 17:40:56 -0000 1.13 +++ PolyhedraEndcapCalorimeter2.java 30 Jan 2012 13:43:46 -0000 1.14 @@ -48,13 +48,13 @@
double rmin = dimensions.getAttribute("rmin").getDoubleValue(); double rmax = dimensions.getAttribute("rmax").getDoubleValue(); int numsides = dimensions.getAttribute("numsides").getIntValue();
-
+
+ LayerStack layers = Layering.makeLayering(this.node).getLayerStack();
+
// Geant4 interprets rmax as the distance to the polygonal flat.
- // we want to interpret this as the distance to the point.
+ // We want to interpret this as the distance to the point.
rmax = rmax*Math.cos(Math.PI/numsides);
- - LayerStack layers = Layering.makeLayering(this.node).getLayerStack(); -
+
double subdetectorThickness = org.lcsim.geometry.layer.LayerFromCompactCnv.computeDetectorTotalThickness(node); PolyhedraRegular envelopeSolid = new PolyhedraRegular(subdetectorName + "_envelope", numsides, rmin, rmax, subdetectorThickness);
diff -u -r1.6 -r1.7 --- PolyhedraEndcapCalorimeter3.java 29 Sep 2010 21:37:04 -0000 1.6 +++ PolyhedraEndcapCalorimeter3.java 30 Jan 2012 13:43:46 -0000 1.7 @@ -1,7 +1,3 @@
-/** - * @author Jeremy McCormick <[log in to unmask]> - * @version $Id: PolyhedraEndcapCalorimeter3.java,v 1.6 2010/09/29 21:37:04 jeremy Exp $ - */
package org.lcsim.geometry.compact.converter.lcdd; import java.util.ArrayList;
@@ -48,10 +44,11 @@
// Get the basic parameters from the XML. Element dimensions = node.getChild("dimensions");
+ int numsides = dimensions.getAttribute("numsides").getIntValue();
double zmin = dimensions.getAttribute("zmin").getDoubleValue(); double rmin = dimensions.getAttribute("rmin").getDoubleValue(); double rmax = dimensions.getAttribute("rmax").getDoubleValue();
- int numsides = dimensions.getAttribute("numsides").getIntValue();
+ rmax = rmax*Math.cos(Math.PI/numsides); // Compute G4 rmax from dimension value.
double innerAngle = dimensions.getAttribute("angle").getDoubleValue(); // Make layering to get thickness.
diff -u -r1.15 -r1.16 --- AbstractPolyhedraCalorimeter.java 3 Dec 2010 01:21:38 -0000 1.15 +++ AbstractPolyhedraCalorimeter.java 30 Jan 2012 13:43:47 -0000 1.16 @@ -9,19 +9,18 @@
import org.lcsim.detector.converter.heprep.DetectorElementToHepRepConverter; /**
- * This class provides common implementation of methods for calorimeters with a polyhedra - * topology.
+ * This class provides common implementation of methods for calorimeters with a polyhedra topology.
* * @see org.lcsim.geometry.Calorimeter * @see org.lcsim.geometry.subdetector.AbstractCalorimeter * * @author Jeremy McCormick <[log in to unmask]>
- * @version $Id: AbstractPolyhedraCalorimeter.java,v 1.15 2010/12/03 01:21:38 jeremy Exp $
+ * @version $Id: AbstractPolyhedraCalorimeter.java,v 1.16 2012/01/30 13:43:47 jeremy Exp $
*/ // TODO Remove duplicate methods (e.g. methods added for Pandora output). public class AbstractPolyhedraCalorimeter extends AbstractCalorimeter {
- public AbstractPolyhedraCalorimeter( Element node ) throws JDOMException
+ public AbstractPolyhedraCalorimeter( Element node) throws JDOMException
{ super( node ); build( node );
@@ -32,10 +31,15 @@
Element dimensions = node.getChild( "dimensions" ); nsides = dimensions.getAttribute( "numsides" ).getIntValue();
- sectionPhi = ( 2. * PI ) / ( ( double ) nsides ); -
+ sectionPhi = (2. * PI) / ((double) nsides); +
// Additional parameters are read by subclasses. }
+ + protected final double computeBarrelOuterRadius() + { + return (getInnerRadius() + getLayering().getThickness())/(Math.cos(Math.PI/getNumberOfSides())); + }
public int getNumberOfSides() {
@@ -79,13 +83,10 @@
// Old HepRep method. Keep here for reference. --JM /*
- * public void appendHepRep(HepRepFactory factory, HepRep heprep) { HepRepInstanceTree - * instanceTree = heprep.getInstanceTreeTop("Detector","1.0"); HepRepTypeTree typeTree - * = heprep.getTypeTree("DetectorType","1.0"); HepRepType barrel = - * typeTree.getType("Barrel");
+ * public void appendHepRep(HepRepFactory factory, HepRep heprep) { HepRepInstanceTree instanceTree = heprep.getInstanceTreeTop("Detector","1.0"); HepRepTypeTree typeTree = + * heprep.getTypeTree("DetectorType","1.0"); HepRepType barrel = typeTree.getType("Barrel");
*
- * HepRepType type = factory.createHepRepType(barrel, getName()); - * type.addAttValue("drawAs","Polygon");
+ * HepRepType type = factory.createHepRepType(barrel, getName()); type.addAttValue("drawAs","Polygon");
* * setHepRepColor(type); *
@@ -105,43 +106,29 @@
* * double x3 = -x4; double y3 = y4; *
- * // Place nsides sections by applying matrix transform to starting coordinates. - * double phi = 0; for ( int i=0; i<getNumberOfSides(); i++) { instance = - * factory.createHepRepInstance(instanceTree, type);
+ * // Place nsides sections by applying matrix transform to starting coordinates. double phi = 0; for ( int i=0; i<getNumberOfSides(); i++) { instance = factory.createHepRepInstance(instanceTree, + * type);
*
- * double ix1 = x1 * cos(phi) - y1 * sin(phi); double iy1 = x1 * sin(phi) + y1 * - * cos(phi);
+ * double ix1 = x1 * cos(phi) - y1 * sin(phi); double iy1 = x1 * sin(phi) + y1 * cos(phi);
*
- * double ix2 = x2 * cos(phi) - y2 * sin(phi); double iy2 = x2 * sin(phi) + y2 * - * cos(phi);
+ * double ix2 = x2 * cos(phi) - y2 * sin(phi); double iy2 = x2 * sin(phi) + y2 * cos(phi);
*
- * double ix3 = x3 * cos(phi) - y3 * sin(phi); double iy3 = x3 * sin(phi) + y3 * - * cos(phi);
+ * double ix3 = x3 * cos(phi) - y3 * sin(phi); double iy3 = x3 * sin(phi) + y3 * cos(phi);
*
- * double ix4 = x4 * cos(phi) - y4 * sin(phi); double iy4 = x4 * sin(phi) + y4 * - * cos(phi);
+ * double ix4 = x4 * cos(phi) - y4 * sin(phi); double iy4 = x4 * sin(phi) + y4 * cos(phi);
*
- * // +z face factory.createHepRepPoint(instance, ix1, iy1, z); - * factory.createHepRepPoint(instance, ix2, iy2, z); - * factory.createHepRepPoint(instance, ix3, iy3, z);
+ * // +z face factory.createHepRepPoint(instance, ix1, iy1, z); factory.createHepRepPoint(instance, ix2, iy2, z); factory.createHepRepPoint(instance, ix3, iy3, z);
* factory.createHepRepPoint(instance, ix4, iy4, z); *
- * // -z face factory.createHepRepPoint(instance, ix4, iy4, -z); - * factory.createHepRepPoint(instance, ix3, iy3, -z); - * factory.createHepRepPoint(instance, ix2, iy2, -z);
+ * // -z face factory.createHepRepPoint(instance, ix4, iy4, -z); factory.createHepRepPoint(instance, ix3, iy3, -z); factory.createHepRepPoint(instance, ix2, iy2, -z);
* factory.createHepRepPoint(instance, ix1, iy1, -z); * * phi += getSectionPhi(); } } *
- * // Static version for subclasses. public static final void - * appendHepRep(AbstractPolyhedraCalorimeter cal, HepRepFactory factory, HepRep - * heprep) { HepRepInstanceTree instanceTree = - * heprep.getInstanceTreeTop("Detector","1.0"); HepRepTypeTree typeTree = - * heprep.getTypeTree("DetectorType","1.0"); HepRepType barrel = - * typeTree.getType("Barrel");
+ * // Static version for subclasses. public static final void appendHepRep(AbstractPolyhedraCalorimeter cal, HepRepFactory factory, HepRep heprep) { HepRepInstanceTree instanceTree = + * heprep.getInstanceTreeTop("Detector","1.0"); HepRepTypeTree typeTree = heprep.getTypeTree("DetectorType","1.0"); HepRepType barrel = typeTree.getType("Barrel");
*
- * HepRepType type = factory.createHepRepType(barrel, cal.getName()); - * type.addAttValue("drawAs","Polygon");
+ * HepRepType type = factory.createHepRepType(barrel, cal.getName()); type.addAttValue("drawAs","Polygon");
* * cal.setHepRepColor(type); *
@@ -161,30 +148,21 @@
* * double x3 = -x4; double y3 = y4; *
- * // Place nsides sections by applying matrix transform to starting coordinates. - * double phi = 0; for ( int i=0; i<cal.getNumberOfSides(); i++) { instance =
+ * // Place nsides sections by applying matrix transform to starting coordinates. double phi = 0; for ( int i=0; i<cal.getNumberOfSides(); i++) { instance =
* factory.createHepRepInstance(instanceTree, type); *
- * double ix1 = x1 * cos(phi) - y1 * sin(phi); double iy1 = x1 * sin(phi) + y1 * - * cos(phi);
+ * double ix1 = x1 * cos(phi) - y1 * sin(phi); double iy1 = x1 * sin(phi) + y1 * cos(phi);
*
- * double ix2 = x2 * cos(phi) - y2 * sin(phi); double iy2 = x2 * sin(phi) + y2 * - * cos(phi);
+ * double ix2 = x2 * cos(phi) - y2 * sin(phi); double iy2 = x2 * sin(phi) + y2 * cos(phi);
*
- * double ix3 = x3 * cos(phi) - y3 * sin(phi); double iy3 = x3 * sin(phi) + y3 * - * cos(phi);
+ * double ix3 = x3 * cos(phi) - y3 * sin(phi); double iy3 = x3 * sin(phi) + y3 * cos(phi);
*
- * double ix4 = x4 * cos(phi) - y4 * sin(phi); double iy4 = x4 * sin(phi) + y4 * - * cos(phi);
+ * double ix4 = x4 * cos(phi) - y4 * sin(phi); double iy4 = x4 * sin(phi) + y4 * cos(phi);
*
- * // +z face factory.createHepRepPoint(instance, ix1, iy1, z); - * factory.createHepRepPoint(instance, ix2, iy2, z); - * factory.createHepRepPoint(instance, ix3, iy3, z);
+ * // +z face factory.createHepRepPoint(instance, ix1, iy1, z); factory.createHepRepPoint(instance, ix2, iy2, z); factory.createHepRepPoint(instance, ix3, iy3, z);
* factory.createHepRepPoint(instance, ix4, iy4, z); *
- * // -z face factory.createHepRepPoint(instance, ix4, iy4, -z); - * factory.createHepRepPoint(instance, ix3, iy3, -z); - * factory.createHepRepPoint(instance, ix2, iy2, -z);
+ * // -z face factory.createHepRepPoint(instance, ix4, iy4, -z); factory.createHepRepPoint(instance, ix3, iy3, -z); factory.createHepRepPoint(instance, ix2, iy2, -z);
* factory.createHepRepPoint(instance, ix1, iy1, -z); * * phi += cal.getSectionPhi(); } }
diff -u -r1.14 -r1.15 --- PolyhedraBarrelCalorimeter.java 3 Dec 2010 01:21:39 -0000 1.14 +++ PolyhedraBarrelCalorimeter.java 30 Jan 2012 13:43:47 -0000 1.15 @@ -9,7 +9,7 @@
/** * @author Jeremy McCormick <[log in to unmask]>
- * @version $Id: PolyhedraBarrelCalorimeter.java,v 1.14 2010/12/03 01:21:39 jeremy Exp $
+ * @version $Id: PolyhedraBarrelCalorimeter.java,v 1.15 2012/01/30 13:43:47 jeremy Exp $
*/ public class PolyhedraBarrelCalorimeter extends AbstractPolyhedraCalorimeter {
@@ -22,7 +22,7 @@
outerZ = zlength / 2; innerZ = -outerZ; innerRadius = node.getChild( "dimensions" ).getAttribute( "rmin" ).getDoubleValue();
- outerRadius = innerRadius + getLayering().getThickness();
+ outerRadius = computeBarrelOuterRadius();
} public boolean isBarrel()
diff -u -r1.4 -r1.5 --- PolyhedraBarrelCalorimeter2.java 3 Dec 2010 01:21:39 -0000 1.4 +++ PolyhedraBarrelCalorimeter2.java 30 Jan 2012 13:43:47 -0000 1.5 @@ -14,7 +14,7 @@
/** * @author Jeremy McCormick <[log in to unmask]>
- * @version $Id: PolyhedraBarrelCalorimeter2.java,v 1.4 2010/12/03 01:21:39 jeremy Exp $
+ * @version $Id: PolyhedraBarrelCalorimeter2.java,v 1.5 2012/01/30 13:43:47 jeremy Exp $
*/ public class PolyhedraBarrelCalorimeter2 extends AbstractPolyhedraCalorimeter {
@@ -27,7 +27,7 @@
outerZ = zlength / 2; innerZ = -outerZ; innerRadius = node.getChild( "dimensions" ).getAttribute( "rmin" ).getDoubleValue();
- outerRadius = innerRadius + getLayering().getThickness();
+ outerRadius = computeBarrelOuterRadius();
} public boolean isBarrel()
diff -u -r1.19 -r1.20 --- PolyhedraEndcapCalorimeter.java 26 Jan 2011 01:11:57 -0000 1.19 +++ PolyhedraEndcapCalorimeter.java 30 Jan 2012 13:43:47 -0000 1.20 @@ -14,7 +14,7 @@
/** * @author Jeremy McCormick <[log in to unmask]>
- * @version $Id: PolyhedraEndcapCalorimeter.java,v 1.19 2011/01/26 01:11:57 jeremy Exp $
+ * @version $Id: PolyhedraEndcapCalorimeter.java,v 1.20 2012/01/30 13:43:47 jeremy Exp $
*/ public class PolyhedraEndcapCalorimeter extends AbstractPolyhedraCalorimeter {
@@ -37,7 +37,6 @@
innerRadius = dimensions.getAttribute( "rmin" ).getDoubleValue(); outerRadius = dimensions.getAttribute( "rmax" ).getDoubleValue();
- outerRadius = outerRadius * Math.cos( Math.PI / nsides );
// Set layering pre-offset. getLayering().setOffset( innerZ );
@@ -46,62 +45,6 @@
public void appendHepRep( HepRepFactory factory, HepRep heprep ) { DetectorElementToHepRepConverter.convert( getDetectorElement(), factory, heprep, 2, true, getVisAttributes().getColor() );
- /* - * HepRepInstanceTree instanceTree = heprep.getInstanceTreeTop("Detector", "1.0"); - * HepRepTypeTree typeTree = heprep.getTypeTree("DetectorType", "1.0"); HepRepType - * barrel = typeTree.getType("Barrel"); - * - * HepRepType type = factory.createHepRepType(barrel, getName()); - * type.addAttValue("drawAs", "Polygon"); - * - * setHepRepColor(type); - * - * HepRepInstance instance = factory.createHepRepInstance(instanceTree, type); - * - * // Compute section (x,y) coordinates. double rmin = getInnerR(); - * - * double x1 = rmin * tan(this.getHalfSectionPhi()); double y1 = rmin; - * - * double x2 = -x1; double y2 = y1; - * - * double t = this.getLayering().getLayerStack().getTotalThickness(); double zin = - * this.getZMin(); double zout = zin + t; - * - * double rmax = this.getOuterR(); - * - * double x4 = rmax * tan(this.getHalfSectionPhi()); double y4 = rmax; - * - * double x3 = -x4; double y3 = y4; - * - * // Place nsides sections by applying matrix transform to starting // - * coordinates. double phi = 0; for (int i = 0; i < 2; i++) { for (int j = 0; j < - * getNumberOfSides(); j++) { instance = - * factory.createHepRepInstance(instanceTree, type); - * - * double ix1 = x1 * cos(phi) - y1 * sin(phi); double iy1 = x1 * sin(phi) + y1 * - * cos(phi); - * - * double ix2 = x2 * cos(phi) - y2 * sin(phi); double iy2 = x2 * sin(phi) + y2 * - * cos(phi); - * - * double ix3 = x3 * cos(phi) - y3 * sin(phi); double iy3 = x3 * sin(phi) + y3 * - * cos(phi); - * - * double ix4 = x4 * cos(phi) - y4 * sin(phi); double iy4 = x4 * sin(phi) + y4 * - * cos(phi); - * - * factory.createHepRepPoint(instance, ix1, iy1, zin); - * factory.createHepRepPoint(instance, ix2, iy2, zin); - * factory.createHepRepPoint(instance, ix3, iy3, zin); - * factory.createHepRepPoint(instance, ix4, iy4, zin); - * - * factory.createHepRepPoint(instance, ix4, iy4, zout); - * factory.createHepRepPoint(instance, ix3, iy3, zout); - * factory.createHepRepPoint(instance, ix2, iy2, zout); - * factory.createHepRepPoint(instance, ix1, iy1, zout); - * - * phi += getSectionPhi(); } if (!getReflect()) break; zin = -zin; zout = -zout; } - */
} public boolean isEndcap()
diff -u -r1.12 -r1.13 --- PolyhedraEndcapCalorimeter2.java 26 Jan 2011 01:11:58 -0000 1.12 +++ PolyhedraEndcapCalorimeter2.java 30 Jan 2012 13:43:47 -0000 1.13 @@ -9,7 +9,7 @@
/** * @author Jeremy McCormick <[log in to unmask]>
- * @version $Id: PolyhedraEndcapCalorimeter2.java,v 1.12 2011/01/26 01:11:58 jeremy Exp $
+ * @version $Id: PolyhedraEndcapCalorimeter2.java,v 1.13 2012/01/30 13:43:47 jeremy Exp $
*/ public class PolyhedraEndcapCalorimeter2 extends AbstractPolyhedraCalorimeter {
@@ -29,8 +29,7 @@
innerRadius = dimensions.getAttribute( "rmin" ).getDoubleValue(); outerRadius = dimensions.getAttribute( "rmax" ).getDoubleValue();
- outerRadius = outerRadius * Math.cos( Math.PI / nsides ); -
+
// Set layering pre-offset. getLayering().setOffset( innerZ ); }
@@ -40,64 +39,6 @@
DetectorElementToHepRepConverter.convert( this.getDetectorElement(), factory, heprep, 2, true, getVisAttributes().getColor() ); }
- /* - * public void appendHepRep(HepRepFactory factory, HepRep heprep) { HepRepInstanceTree - * instanceTree = heprep.getInstanceTreeTop("Detector", "1.0"); HepRepTypeTree - * typeTree = heprep.getTypeTree("DetectorType", "1.0"); HepRepType barrel = - * typeTree.getType("Barrel"); - * - * HepRepType type = factory.createHepRepType(barrel, getName()); - * type.addAttValue("drawAs", "Polygon"); - * - * setHepRepColor(type); - * - * HepRepInstance instance = factory.createHepRepInstance(instanceTree, type); - * - * // Compute section (x,y) coordinates. double rmin = getInnerR(); - * - * double x1 = rmin * tan(this.getHalfSectionPhi()); double y1 = rmin; - * - * double x2 = -x1; double y2 = y1; - * - * double t = this.getLayering().getLayerStack().getTotalThickness(); double zin = - * this.getZMin(); double zout = zin + t; - * - * double rmax = this.getOuterR(); - * - * double x4 = rmax * tan(this.getHalfSectionPhi()); double y4 = rmax; - * - * double x3 = -x4; double y3 = y4; - * - * // Place nsides sections by applying matrix transform to starting // coordinates. - * double phi = 0; for (int i = 0; i < 2; i++) { for (int j = 0; j < - * getNumberOfSides(); j++) { instance = factory.createHepRepInstance(instanceTree, - * type); - * - * double ix1 = x1 * cos(phi) - y1 * sin(phi); double iy1 = x1 * sin(phi) + y1 * - * cos(phi); - * - * double ix2 = x2 * cos(phi) - y2 * sin(phi); double iy2 = x2 * sin(phi) + y2 * - * cos(phi); - * - * double ix3 = x3 * cos(phi) - y3 * sin(phi); double iy3 = x3 * sin(phi) + y3 * - * cos(phi); - * - * double ix4 = x4 * cos(phi) - y4 * sin(phi); double iy4 = x4 * sin(phi) + y4 * - * cos(phi); - * - * factory.createHepRepPoint(instance, ix1, iy1, zin); - * factory.createHepRepPoint(instance, ix2, iy2, zin); - * factory.createHepRepPoint(instance, ix3, iy3, zin); - * factory.createHepRepPoint(instance, ix4, iy4, zin); - * - * factory.createHepRepPoint(instance, ix4, iy4, zout); - * factory.createHepRepPoint(instance, ix3, iy3, zout); - * factory.createHepRepPoint(instance, ix2, iy2, zout); - * factory.createHepRepPoint(instance, ix1, iy1, zout); - * - * phi += getSectionPhi(); } if (!getReflect()) break; zin = -zin; zout = -zout; } } - */ -
public boolean isEndcap() { return true;
diff -u -r1.6 -r1.7 --- PolyhedraEndcapCalorimeter3.java 3 Jun 2011 23:52:17 -0000 1.6 +++ PolyhedraEndcapCalorimeter3.java 30 Jan 2012 13:43:47 -0000 1.7 @@ -5,7 +5,7 @@
/** * @author Jeremy McCormick <[log in to unmask]>
- * @version $Id: PolyhedraEndcapCalorimeter3.java,v 1.6 2011/06/03 23:52:17 jeremy Exp $
+ * @version $Id: PolyhedraEndcapCalorimeter3.java,v 1.7 2012/01/30 13:43:47 jeremy Exp $
*/ public class PolyhedraEndcapCalorimeter3 extends AbstractPolyhedraCalorimeter {
@@ -30,12 +30,8 @@
innerRadius = dimensions.getAttribute( "rmin" ).getDoubleValue(); outerRadius = dimensions.getAttribute( "rmax" ).getDoubleValue();
- //System.out.println("outerRadius (before) = " + outerRadius);
outerRadius = outerRadius * Math.cos( Math.PI / nsides );
- //System.out.println("outerRadius (after) = " + outerRadius);
- System.out.println(); -
// Set layering pre-offset. getLayering().setOffset( innerZ ); }
Use REPLY-ALL to reply to list
To unsubscribe from the LCD-CVS list, click the following link:
https://listserv.slac.stanford.edu/cgi-bin/wa?SUBED1=LCD-CVS&A=1