GeomConverter/src/org/lcsim/geometry/layer
diff -u -r1.8 -r1.9
--- Layer.java 6 Apr 2006 17:35:20 -0000 1.8
+++ Layer.java 22 Jul 2006 23:01:55 -0000 1.9
@@ -6,25 +6,44 @@
package org.lcsim.geometry.layer;
-
-import java.util.List;
-import java.util.ArrayList;
import static java.lang.Math.abs;
+import java.util.List;
/**
*
+ * Provides access to information on individual layers within
+ * a subdetector.
+ *
* @author jeremym
*/
public class Layer
{
-
List<LayerSlice> slices;
double preOffset = 0;
+ double thickness = 0;
+ double thicknessToSensor = 0;
+ double thicknessToSensorMid = 0;
+ double sensorThickness = 0;
+ int indexOfFirstSensor = -1;
+ double thicknessWithPreOffset = 0;
+
+ public Layer(List<LayerSlice> slices)
+ {
+ this.slices = slices;
+
+ // Cache computed layer information.
+ computeThickness();
+ computeIndexOfFirstSensor();
+ computeSensorThickness();
+ computeThicknessToSensor();
+ computeThicknessToSensorMid();
+ computeThicknessWithPreOffset();
+ }
- public Layer()
+ public double getThickness()
{
- slices = new ArrayList();
+ return thickness;
}
public void setPreOffset(double preOffset)
@@ -41,88 +60,79 @@
{
return preOffset;
}
+
+ public double getThicknessWithPreOffset()
+ {
+ return thicknessWithPreOffset;
+ }
- public void addSlice(LayerSlice s)
+ public double getThicknessToSensitiveMid()
{
- slices.add(s);
+ return thicknessToSensorMid;
}
- public double getThickness()
+ public double getThicknessToSensitive()
{
- double wid = 0.;
-
- for ( LayerSlice l : slices)
+ return thicknessToSensor;
+ }
+
+ public LayerSlice getSlice(int idx)
+ {
+ if ( idx > ( slices.size() - 1) )
{
- wid += l.getThickness();
+ throw new IllegalArgumentException("LayerSlice idx out of range.");
}
- return wid;
+ return slices.get(idx);
}
- public double getThicknessWithPreOffset()
+ public List<LayerSlice> getSlices()
{
- return getThickness() + getPreOffset();
+ return slices;
}
- public double getThicknessToSensitiveMid()
+ public double getSensorThickness()
{
- int i = indexOfFirstSensor();
-
- double thickness = 0.;
-
- if ( i != -1)
- {
-
- for ( int ii = 0; ii < i; ii++)
- {
- thickness += slices.get(ii).getThickness();
- }
-
- thickness += slices.get(i).getThickness()/2;
- }
-
- return thickness;
+ return sensorThickness;
}
- public double getThicknessToSensitive()
+ public int indexOfFirstSensor()
{
+ return indexOfFirstSensor;
+ }
+
+ private void computeThicknessToSensor()
+ {
int i = indexOfFirstSensor();
- double thickness = 0.;
-
if ( i != -1)
{
for ( int ii = 0; ii < i; ii++)
{
- thickness += slices.get(ii).getThickness();
+ thicknessToSensor += slices.get(ii).getThickness();
}
}
-
- return thickness;
}
- public LayerSlice getSlice(int idx)
+ private void computeThickness()
{
- if ( idx > ( slices.size() - 1) )
+ thickness = 0;
+ for ( LayerSlice l : slices)
{
- throw new IllegalArgumentException("LayerSlice idx out of range.");
+ thickness += l.getThickness();
}
-
- return slices.get(idx);
}
- public List<LayerSlice> getSlices()
- {
- return slices;
+ private void computeSensorThickness()
+ {
+ if (indexOfFirstSensor() != -1)
+ {
+ sensorThickness = slices.get(indexOfFirstSensor()).getThickness();
+ }
}
- public double getSensorThickness()
- {
- return slices.get(indexOfFirstSensor()).getThickness();
- }
-
- public int indexOfFirstSensor()
+ private void computeIndexOfFirstSensor()
{
int i = 0;
boolean fnd = false;
@@ -141,6 +151,27 @@
i = -1;
}
- return i;
+ indexOfFirstSensor = i;
+ }
+
+ private void computeThicknessToSensorMid()
+ {
+ int i = indexOfFirstSensor();
+
+ if ( i != -1)
+ {
+
+ for ( int ii = 0; ii < i; ii++)
+ {
+ thicknessToSensorMid += slices.get(ii).getThickness();
+ }
+
+ thicknessToSensorMid += slices.get(i).getThickness()/2;
+ }
+ }
+
+ private void computeThicknessWithPreOffset()
+ {
+ thicknessWithPreOffset = getThickness() + getPreOffset();
}
}
\ No newline at end of file
GeomConverter/src/org/lcsim/geometry/layer
diff -u -r1.5 -r1.6
--- LayerFromCompactCnv.java 25 Aug 2005 07:56:10 -0000 1.5
+++ LayerFromCompactCnv.java 22 Jul 2006 23:01:55 -0000 1.6
@@ -6,13 +6,14 @@
package org.lcsim.geometry.layer;
-import org.jdom.Element;
-import org.jdom.Attribute;
-import org.jdom.JDOMException;
+import java.util.ArrayList;
import java.util.Iterator;
+import java.util.List;
+
+import org.jdom.Attribute;
import org.jdom.DataConversionException;
-import org.lcsim.material.MaterialManager;
-import org.lcsim.material.Material;
+import org.jdom.Element;
+import org.jdom.JDOMException;
/**
*
@@ -43,7 +44,8 @@
Element lyrElem = (Element) i.next();
/* Start a new layer. */
- Layer lyr = new Layer();
+ //Layer lyr = new Layer();
+ List lyrList = new ArrayList();
/* Default to one repetition. */
int repeat = 1;
@@ -96,10 +98,12 @@
thickness.getDoubleValue(),
isSens);
- /* Add slice to current layer. */
- lyr.addSlice(s);
+ /* Add slice to current layer. */
+ lyrList.add(s);
}
+ Layer lyr = new Layer(lyrList);
+
/* Add layer to stack once for each repetition. */
for (int k = 0; k < repeat; k++)
{