11 modified files
GeomConverter/src/org/lcsim/geometry
diff -u -r1.7 -r1.8
--- CylindricalSubdetector.java 20 Jul 2005 19:11:56 -0000 1.7
+++ CylindricalSubdetector.java 24 Aug 2005 06:10:57 -0000 1.8
@@ -4,8 +4,7 @@
*
* @author tonyj
*
- * FIXME: This should be called Cylinder and inherit from a Shape class.
- *
+ * FIXME: Subdetectors should have a "has a" rather than "is a" relationship to shapes.
*/
public interface CylindricalSubdetector
{
GeomConverter/src/org/lcsim/geometry
diff -u -r1.7 -r1.8
--- IDDecoder.java 24 Jul 2005 07:40:47 -0000 1.7
+++ IDDecoder.java 24 Aug 2005 06:10:57 -0000 1.8
@@ -16,14 +16,17 @@
/* @return the currently loaded IDDescriptor */
public IDDescriptor getIDDescription();
+
+ /* FIXME: Can just call getValue("layer") instead ??? */
+ public int getLayer();
- /* FIXME: use Position interface */
+ /* FIXME: use Position interface or Hep3Vector */
public double[] getPosition();
+ /* FIXME: Move these someplace else! */
public double getX();
public double getY();
public double getZ();
public double getPhi();
public double getTheta();
- public int getLayer();
}
\ No newline at end of file
GeomConverter/src/org/lcsim/geometry/segmentation
diff -u -r1.14 -r1.15
--- NonprojectiveCylinder.java 29 Jul 2005 23:08:48 -0000 1.14
+++ NonprojectiveCylinder.java 24 Aug 2005 06:10:57 -0000 1.15
@@ -15,7 +15,7 @@
import org.jdom.Element;
import org.lcsim.geometry.layer.Layer;
import org.lcsim.geometry.layer.LayerStack;
-import org.lcsim.geometry.subdetector.CylindricalCalorimeter;
+import org.lcsim.geometry.CylindricalSubdetector;
import org.lcsim.geometry.util.IDDescriptor;
import org.lcsim.geometry.util.IDDecoder;
import org.lcsim.geometry.util.IDEncoder;
@@ -200,19 +200,19 @@
// Not for public use, this is needed to calculate positions
// and number of cells, etc.
private double getZMin() {
- return ((CylindricalCalorimeter)detector).getZMin();
+ return ((CylindricalSubdetector)detector).getZMin();
}
private double getZMax() {
- return ((CylindricalCalorimeter)detector).getZMax();
+ return ((CylindricalSubdetector)detector).getZMax();
}
private double getRMin() {
- return ((CylindricalCalorimeter)detector).getInnerRadius();
+ return ((CylindricalSubdetector)detector).getInnerRadius();
}
private double getRMax() {
- return ((CylindricalCalorimeter)detector).getOuterRadius();
+ return ((CylindricalSubdetector)detector).getOuterRadius();
}
/**
GeomConverter/src/org/lcsim/geometry/subdetector
diff -u -r1.3 -r1.4
--- CalorimeterBase.java 2 Aug 2005 16:27:54 -0000 1.3
+++ CalorimeterBase.java 24 Aug 2005 06:10:57 -0000 1.4
@@ -14,7 +14,7 @@
*
* @author jeremym
*/
-public class CalorimeterBase
+abstract class CalorimeterBase
extends LayeredSubdetectorBase implements Calorimeter
{
/** Creates a new instance of CalorimeterBase */
GeomConverter/src/org/lcsim/geometry/subdetector
diff -u -r1.2 -r1.3
--- CalorimeterIDDecoder.java 24 Jul 2005 06:47:42 -0000 1.2
+++ CalorimeterIDDecoder.java 24 Aug 2005 06:10:57 -0000 1.3
@@ -7,7 +7,7 @@
*
*/
public class CalorimeterIDDecoder extends org.lcsim.geometry.CalorimeterIDDecoder
-{
+{
public Calorimeter getCalorimeter()
{
return (Calorimeter) getSubdetector();
@@ -24,7 +24,7 @@
}
return detector.getLayering().getDistanceToLayerSensorMid(layer);
}
-
+
/* FIXME: Next 3 should be in CellNeighbours (or equiv) interface definition. */
public long[] getNeighbourIDs(int deltaLayer, int deltaTheta, int deltaPhi)
{
GeomConverter/src/org/lcsim/geometry/subdetector
diff -u -r1.1 -r1.2
--- CylindricalTracker.java 20 Aug 2005 19:56:00 -0000 1.1
+++ CylindricalTracker.java 24 Aug 2005 06:10:57 -0000 1.2
@@ -15,7 +15,7 @@
*
* @author jeremym
*/
-public class CylindricalTracker extends TrackerBase
+abstract class CylindricalTracker extends TrackerBase
implements CylindricalSubdetector
{
private double zmax;
GeomConverter/src/org/lcsim/geometry/subdetector
diff -u -r1.8 -r1.9
--- DiskTracker.java 23 Jul 2005 00:43:00 -0000 1.8
+++ DiskTracker.java 24 Aug 2005 06:10:58 -0000 1.9
@@ -1,106 +1,109 @@
-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;
- }
- }
+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/subdetector
diff -u -r1.3 -r1.4
--- SubdetectorBase.java 20 Jul 2005 19:11:59 -0000 1.3
+++ SubdetectorBase.java 24 Aug 2005 06:10:58 -0000 1.4
@@ -23,16 +23,10 @@
* implementation classes, which extend it.
*
*/
-class SubdetectorBase
+abstract class SubdetectorBase
extends org.lcsim.geometry.compact.Subdetector
implements HepRepProvider
-{
- /**
- * FIXME: This means the JDOM reference is kept around until
- * corresponding object is deleted. It doesn't seem like a good idea.
- */
- Element node;
-
+{
/** Creates a new instance of SubdetectorBase */
public SubdetectorBase(Element node) throws JDOMException
{
@@ -43,7 +37,7 @@
{
return (SubdetectorIDDecoder)(getReadout().getIDDecoder() );
}
-
+
/** HepRepProvider: optional impl for subclass */
/** FIXME: Should live in org.lcsim.geometry.heprep or equivalent. */
public void appendHepRep(HepRepFactory factory, HepRep heprep)
GeomConverter/src/org/lcsim/geometry/subdetector
diff -u -r1.1 -r1.2
--- SubdetectorIDDecoder.java 20 Jul 2005 19:11:59 -0000 1.1
+++ SubdetectorIDDecoder.java 24 Aug 2005 06:10:58 -0000 1.2
@@ -36,6 +36,11 @@
public void setIDDescription(IDDescriptor id)
{
super.setIDDescription(id);
+ setLayerIndex(id);
+ }
+
+ private void setLayerIndex(IDDescriptor id)
+ {
layerIndex = id.indexOf("layer");
}
GeomConverter/src/org/lcsim/geometry/subdetector
diff -u -r1.3 -r1.4
--- TrackerBase.java 20 Jul 2005 19:11:59 -0000 1.3
+++ TrackerBase.java 24 Aug 2005 06:10:58 -0000 1.4
@@ -17,7 +17,7 @@
*
* Assumes that all concrete Tracker types will implement Layering interface.
*/
-public class TrackerBase
+abstract class TrackerBase
extends LayeredSubdetectorBase
implements Tracker
{
GeomConverter/test/org/lcsim/geometry
diff -u -r1.7 -r1.8
--- GeometryReaderTest.java 20 Jul 2005 19:12:00 -0000 1.7
+++ GeometryReaderTest.java 24 Aug 2005 06:10:59 -0000 1.8
@@ -1,9 +1,6 @@
package org.lcsim.geometry;
import org.lcsim.geometry.compact.Segmentation;
-import org.lcsim.geometry.subdetector.TrackerBase;
-import org.lcsim.geometry.subdetector.CalorimeterBase;
-import org.lcsim.geometry.subdetector.CylindricalCalorimeter;
import org.lcsim.geometry.layer.*;
import junit.framework.*;
@@ -182,13 +179,13 @@
/* if tracker, test for TrackerIDDecoder */
if ( subdetector.isTracker() )
{
- TrackerIDDecoder tdec = ((TrackerBase)subdetector).getTrackerIDDecoder();
+ TrackerIDDecoder tdec = ((Tracker)subdetector).getTrackerIDDecoder();
assert(tdec != null);
}
/* test for CalorimeterIDDecoder */
else
{
- CalorimeterIDDecoder cdec = ((CalorimeterBase)subdetector).getCalorimeterIDDecoder();
+ CalorimeterIDDecoder cdec = ((Calorimeter)subdetector).getCalorimeterIDDecoder();
/* test for segmentation */
Segmentation seg = ((Segmentation)cdec);
@@ -211,7 +208,7 @@
/* test thickness */
assertEquals( totThick, EMThick, tol );
- CylindricalCalorimeter cyl = (CylindricalCalorimeter) subdetector;
+ CylindricalSubdetector cyl = (CylindricalSubdetector) subdetector;
assert(cyl != null);
/* test barrel attributes */
CVSspam 0.2.8