Print

Print


Commit in GeomConverter/src/org/lcsim/geometry/compact/converter/pandora on MAIN
Main.java+23-91.29 -> 1.30
bug fix to X0 calculation

GeomConverter/src/org/lcsim/geometry/compact/converter/pandora
Main.java 1.29 -> 1.30
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;
CVSspam 0.2.8