GeomConverter/src/org/lcsim/geometry/compact/converter/pandora
diff -u -r1.32 -r1.33
--- Main.java 11 Mar 2011 19:22:20 -0000 1.32
+++ Main.java 17 Mar 2011 22:06:36 -0000 1.33
@@ -53,7 +53,7 @@
* geometry input format.
*
* @author Jeremy McCormick <[log in to unmask]>
- * @version $Id: Main.java,v 1.32 2011/03/11 19:22:20 jeremy Exp $
+ * @version $Id: Main.java,v 1.33 2011/03/17 22:06:36 jeremy Exp $
*/
public class Main implements Converter
{
@@ -621,32 +621,50 @@
double coilOuterR = 0;
double bfield = 0;
double coilMaxZ = 0;
- try {
+ try
+ {
MultiLayerTracker c = (MultiLayerTracker) detector.getSubdetector("SolenoidCoilBarrel");
- if (c != null) {
+ if (c != null)
+ {
coilLayers = c.getNumberOfLayers();
coilInnerR = c.getInnerR()[0];
coilOuterR = c.getInnerR()[coilLayers-1] + c.getLayerThickness(coilLayers-1);
- for (int layern = 0; layern != c.getNumberOfLayers(); layern++) {
- coilRadLen += c.getRadiationLengths(layern);
- coilIntLen += c.getInteractionLengths(layern);
+ for (int layern = 0; layern != c.getNumberOfLayers(); layern++)
+ {
+ for (LayerSlice slice : c.getLayer(layern).getSlices())
+ {
+ double x0 = slice.getMaterial().getRadiationLength();
+ double sliceRadLen = slice.getThickness() / (x0*10);
+ double lambda = slice.getMaterial().getNuclearInteractionLength();
+ double sliceIntLen = slice.getThickness() / (lambda*10);
+
+ coilRadLen += sliceRadLen;
+ coilIntLen += sliceIntLen;
+ }
}
//calculate average interaction/radiation length in coil material
coilRadLen = coilRadLen/(coilOuterR-coilInnerR);
coilIntLen = coilIntLen/(coilOuterR-coilInnerR);
- }
- } catch (ClassCastException e) {
-
+ }
+ }
+ catch (ClassCastException e)
+ {
+ throw new RuntimeException(e);
}
- try {
+ try
+ {
Solenoid s = (Solenoid) detector.getFields().get("GlobalSolenoid");
- if (s != null) {
+ if (s != null)
+ {
bfield = s.getField(new BasicHep3Vector(0, 0, 0)).z();
coilMaxZ = s.getZMax();
}
- } catch (ClassCastException e) {
-
+ }
+ catch (ClassCastException e)
+ {
+ throw new RuntimeException(e);
}
+
Element coil = new Element("coil");
coil.setAttribute("radLen", xlen.format(coilRadLen));
coil.setAttribute("intLen", xlen.format(coilIntLen));
@@ -654,8 +672,7 @@
coil.setAttribute("outerR", Double.toString(coilOuterR));
coil.setAttribute("z", Double.toString(coilMaxZ));
coil.setAttribute("bfield", Double.toString(bfield));
- root.addContent(coil);
-
+ root.addContent(coil);
Tube tube = (Tube) detector.getTrackingVolume().getLogicalVolume().getSolid();
Element tracking = new Element("tracking");