GeomConverter/src/org/lcsim/geometry/compact/converter/pandora
diff -u -r1.29 -r1.30
--- Main.java 4 Jan 2011 21:58:51 -0000 1.29
+++ Main.java 28 Feb 2011 21:47:51 -0000 1.30
@@ -53,10 +53,12 @@
* geometry input format.
*
* @author Jeremy McCormick <[log in to unmask]>
- * @version $Id: Main.java,v 1.29 2011/01/04 21:58:51 jeremy Exp $
+ * @version $Id: Main.java,v 1.30 2011/02/28 21:47:51 jeremy Exp $
*/
public class Main implements Converter
{
+ private final static boolean DEBUG = false;
+
// ConditionsManager instance.
private ConditionsManager conditionsManager = ConditionsManager.defaultInstance();
@@ -187,7 +189,7 @@
*/
protected CalorimeterConditions(Calorimeter calorimeter, ConditionsSet conditions)
{
- // System.out.println("conditions: " + calorimeter.getName());
+ //System.out.println("conditions: " + calorimeter.getName());
this.name = calorimeter.getName();
// Figure out which layering conditions to use based on the
@@ -414,6 +416,7 @@
// Process the subdetectors.
for (Subdetector subdetector : detector.getSubdetectors().values())
{
+ //System.out.println(subdetector.getName());
// Only handle calorimeters that are planar.
if (subdetector instanceof AbstractPolyhedraCalorimeter)
{
@@ -514,6 +517,8 @@
calorimeter.setAttribute("mipCut", "0");
calorimeter.setAttribute("timeCut", xfrac.format(Double.MAX_VALUE));
}
+
+ double totalX0 = 0;
for (int i = 0; i < layers.getNumberOfLayers(); i++)
{
@@ -528,11 +533,18 @@
for (int j = 0; j < layer.getNumberOfSlices(); j++)
{
LayerSlice slice = layer.getSlice(j);
- radLen += slice.getThickness() / slice.getMaterial().getRadiationLength();
- intLen += slice.getThickness() / slice.getMaterial().getNuclearInteractionLength();
+ double x0 = slice.getMaterial().getRadiationLengthWithDensity();
+ radLen += slice.getThickness() / (x0*10);
+ double lambda = slice.getMaterial().getNuclearInteractionLengthWithDensity();
+ intLen += slice.getThickness() / (lambda*10);
}
- layerElem.setAttribute("radLen", xlen.format(radLen));
- layerElem.setAttribute("intLen", xlen.format(intLen));
+
+ totalX0 += radLen;
+
+ //System.out.println(" layer " + i + " " + radLen);
+
+ //layerElem.setAttribute("radLen", xlen.format(radLen));
+ //layerElem.setAttribute("intLen", xlen.format(intLen));
// Set distance to IP.
double layerD2 = layerD + layer.getThicknessToSensitiveMid();
@@ -574,6 +586,8 @@
// Increment layer distance by thickness of layer.
layerD += layer.getThickness();
}
+
+ //System.out.println(" X0 Sum = " + totalX0);
}
// Set digital flag.
@@ -587,10 +601,10 @@
catch (Exception x)
{
calorimeter.setAttribute("digital", "false");
- }
- }
+ }
+ }
}
-
+
// TODO clean up the hard coded assumptions on coil geometry
double coilRadLen = 0;
double coilIntLen = 0;