GeomConverter/src/org/lcsim/geometry/subdetector
diff -u -r1.7 -r1.8
--- DiskTracker.java 20 Jul 2005 19:11:59 -0000 1.7
+++ DiskTracker.java 23 Jul 2005 00:43:00 -0000 1.8
@@ -1,90 +1,106 @@
-package org.lcsim.geometry.subdetector;
-
-import org.jdom.Element;
-import org.jdom.JDOMException;
-
-import hep.graphics.heprep.HepRep;
-import hep.graphics.heprep.HepRepFactory;
-import hep.graphics.heprep.HepRepInstance;
-import hep.graphics.heprep.HepRepInstanceTree;
-import hep.graphics.heprep.HepRepType;
-import hep.graphics.heprep.HepRepTypeTree;
-
-import java.util.Iterator;
-import java.util.List;
-import org.jdom.DataConversionException;
-
-/**
- *
- * @author tonyj
- */
-class DiskTracker extends TrackerBase
-{
- private double[] innerR;
- private double[] outerR;
- private double[] innerZ;
- private double[] thickness;
-
- DiskTracker(Element node) throws JDOMException
- {
- super(node);
- build(node);
- }
-
- public boolean isEndcap()
- {
- return true;
- }
-
- private void build(Element node) throws DataConversionException
- {
- List layers = node.getChildren("layer");
- int n = layers.size();
- innerR = new double[n];
- outerR = new double[n];
- innerZ = new double[n];
- thickness = new double[n];
- for (int i=0; i<n; i++)
- {
- Element layer = (Element) layers.get(i);
- innerR[i] = layer.getAttribute("inner_r").getDoubleValue();
- outerR[i] = layer.getAttribute("outer_r").getDoubleValue();
- innerZ[i] = layer.getAttribute("inner_z").getDoubleValue();
- thickness[i] = 0;
- for (Iterator iter = layer.getChildren("slice").iterator(); iter.hasNext();)
- {
- Element slice = (Element) iter.next();
- thickness[i] += slice.getAttribute("thickness").getDoubleValue();
- }
- }
- }
-
- public void appendHepRep(HepRepFactory factory, HepRep heprep)
- {
- HepRepInstanceTree instanceTree = heprep.getInstanceTreeTop("Detector","1.0");
- HepRepTypeTree typeTree = heprep.getTypeTree("DetectorType","1.0");
- HepRepType endcap = typeTree.getType("Endcap");
-
- HepRepType type = factory.createHepRepType(endcap, getName());
- type.addAttValue("drawAs","Cylinder");
-
- double flip = 1;
- for (;;)
- {
- for (int i=0; i<innerR.length; i++)
- {
- HepRepInstance instance = factory.createHepRepInstance(instanceTree, type);
- instance.addAttValue("radius",innerR[i]);
- factory.createHepRepPoint(instance,0,0,flip*innerZ[i]);
- factory.createHepRepPoint(instance,0,0,flip*(innerZ[i]+thickness[i]));
-
- HepRepInstance instance2 = factory.createHepRepInstance(instanceTree, type);
- instance2.addAttValue("radius",outerR[i]);
- factory.createHepRepPoint(instance2,0,0,flip*innerZ[i]);
- factory.createHepRepPoint(instance2,0,0,flip*(innerZ[i]+thickness[i]));
- }
- if (!getReflect() || flip<0) break;
- flip = -1;
- }
- }
+package org.lcsim.geometry.subdetector;
+
+import org.jdom.Element;
+import org.jdom.JDOMException;
+
+import hep.graphics.heprep.HepRep;
+import hep.graphics.heprep.HepRepFactory;
+import hep.graphics.heprep.HepRepInstance;
+import hep.graphics.heprep.HepRepInstanceTree;
+import hep.graphics.heprep.HepRepType;
+import hep.graphics.heprep.HepRepTypeTree;
+
+import java.util.Iterator;
+import java.util.List;
+import org.jdom.DataConversionException;
+
+/**
+ *
+ * @author tonyj
+ */
+public class DiskTracker extends TrackerBase
+{
+ private double[] innerR;
+ private double[] outerR;
+ private double[] innerZ;
+ private double[] thickness;
+
+ public double[] getInnerR()
+ {
+ return(innerR);
+ }
+ public double[] getOuterR()
+ {
+ return(outerR);
+ }
+ public double[] getInnerZ()
+ {
+ return(innerZ);
+ }
+ public double[] getThickness()
+ {
+ return(thickness);
+ }
+ DiskTracker(Element node) throws JDOMException
+ {
+ super(node);
+ build(node);
+ }
+
+ public boolean isEndcap()
+ {
+ return true;
+ }
+
+ private void build(Element node) throws DataConversionException
+ {
+ List layers = node.getChildren("layer");
+ int n = layers.size();
+ innerR = new double[n];
+ outerR = new double[n];
+ innerZ = new double[n];
+ thickness = new double[n];
+ for (int i=0; i<n; i++)
+ {
+ Element layer = (Element) layers.get(i);
+ innerR[i] = layer.getAttribute("inner_r").getDoubleValue();
+ outerR[i] = layer.getAttribute("outer_r").getDoubleValue();
+ innerZ[i] = layer.getAttribute("inner_z").getDoubleValue();
+ thickness[i] = 0;
+ for (Iterator iter = layer.getChildren("slice").iterator(); iter.hasNext();)
+ {
+ Element slice = (Element) iter.next();
+ thickness[i] += slice.getAttribute("thickness").getDoubleValue();
+ }
+ }
+ }
+
+ public void appendHepRep(HepRepFactory factory, HepRep heprep)
+ {
+ HepRepInstanceTree instanceTree = heprep.getInstanceTreeTop("Detector","1.0");
+ HepRepTypeTree typeTree = heprep.getTypeTree("DetectorType","1.0");
+ HepRepType endcap = typeTree.getType("Endcap");
+
+ HepRepType type = factory.createHepRepType(endcap, getName());
+ type.addAttValue("drawAs","Cylinder");
+
+ double flip = 1;
+ for (;;)
+ {
+ for (int i=0; i<innerR.length; i++)
+ {
+ HepRepInstance instance = factory.createHepRepInstance(instanceTree, type);
+ instance.addAttValue("radius",innerR[i]);
+ factory.createHepRepPoint(instance,0,0,flip*innerZ[i]);
+ factory.createHepRepPoint(instance,0,0,flip*(innerZ[i]+thickness[i]));
+
+ HepRepInstance instance2 = factory.createHepRepInstance(instanceTree, type);
+ instance2.addAttValue("radius",outerR[i]);
+ factory.createHepRepPoint(instance2,0,0,flip*innerZ[i]);
+ factory.createHepRepPoint(instance2,0,0,flip*(innerZ[i]+thickness[i]));
+ }
+ if (!getReflect() || flip<0) break;
+ flip = -1;
+ }
+ }
}
\ No newline at end of file
GeomConverter/src/org/lcsim/geometry/field
diff -u -r1.2 -r1.3
--- Solenoid.java 21 Jul 2005 01:44:03 -0000 1.2
+++ Solenoid.java 23 Jul 2005 00:43:02 -0000 1.3
@@ -1,56 +1,56 @@
-package org.lcsim.geometry.field;
-
-import org.jdom.Element;
-import org.jdom.JDOMException;
-import org.lcsim.geometry.FieldMap;
-import org.lcsim.geometry.compact.Field;
-
-/**
- *
- * @author tonyj
- */
-public class Solenoid extends Field implements FieldMap
-{
- private double[] innerField;
- private double[] outerField;
- private double zmax;
- private double outerRadius2;
- private double[] noField = { 0, 0, 0 };
-
- Solenoid(Element node) throws JDOMException
- {
- super(node);
-
- double i = node.getAttribute("inner_field").getDoubleValue();
- innerField = new double[] { 0, 0, i};
- double o = node.getAttribute("outer_field").getDoubleValue();
- outerField = new double[] { 0, 0, o};
- zmax = node.getAttribute("zmax").getDoubleValue();
- double r = node.getAttribute("outer_radius").getDoubleValue();
- outerRadius2 = r*r;
- }
-
- public double[] getField(double[] position)
- {
- if (Math.abs(position[2])>zmax) return noField;
- double r2 = position[0]*position[0] + position[1]*position[1];
- if (r2 > outerRadius2) return outerField;
- else return innerField;
- }
- public double[] getInnerField()
- {
- return innerField;
- }
- public double[] getOuterField()
- {
- return outerField;
- }
- public double getZMax()
- {
- return zmax;
- }
- public double outerRadius2()
- {
- return zmax;
- }
-}
+package org.lcsim.geometry.field;
+
+import org.jdom.Element;
+import org.jdom.JDOMException;
+import org.lcsim.geometry.FieldMap;
+import org.lcsim.geometry.compact.Field;
+
+/**
+ *
+ * @author tonyj
+ */
+public class Solenoid extends Field implements FieldMap
+{
+ private double[] innerField;
+ private double[] outerField;
+ private double zmax;
+ private double outerRadius2;
+ private double[] noField = { 0, 0, 0 };
+
+ Solenoid(Element node) throws JDOMException
+ {
+ super(node);
+
+ double i = node.getAttribute("inner_field").getDoubleValue();
+ innerField = new double[] { 0, 0, i};
+ double o = node.getAttribute("outer_field").getDoubleValue();
+ outerField = new double[] { 0, 0, o};
+ zmax = node.getAttribute("zmax").getDoubleValue();
+ double r = node.getAttribute("outer_radius").getDoubleValue();
+ outerRadius2 = r*r;
+ }
+
+ public double[] getField(double[] position)
+ {
+ if (Math.abs(position[2])>zmax) return noField;
+ double r2 = position[0]*position[0] + position[1]*position[1];
+ if (r2 > outerRadius2) return outerField;
+ else return innerField;
+ }
+ public double[] getInnerField()
+ {
+ return innerField;
+ }
+ public double[] getOuterField()
+ {
+ return outerField;
+ }
+ public double getZMax()
+ {
+ return zmax;
+ }
+ public double getOuterRadius2()
+ {
+ return outerRadius2;
+ }
+}