lcsim
diff -u -r1.64 -r1.65
--- project.xml 17 Oct 2007 02:06:25 -0000 1.64
+++ project.xml 21 Nov 2007 01:10:51 -0000 1.65
@@ -187,6 +187,8 @@
<exclude>org/lcsim/detector/driver/SimTrackerHitIdentifierReadoutDriverTest.java</exclude>
<exclude>org/lcsim/NonTrivialPFASingleEventTest.java</exclude>
<exclude>org/lcsim/conditions/DetectorLocator_Test.java</exclude>
+ <!-- Prints a lot of stuff. -->
+ <exclude>org/lcsim/detector/driver/TrackingVolumeTest.java</exclude>
<!-- Exclude broken stuff -->
<exclude>org/lcsim/detector/driver/DetectorIdHelperTest.java</exclude>
<exclude>org/lcsim/detector/driver/NewSimTrackerDigitizationTest.java</exclude>
lcsim/test/org/lcsim/detector/driver
diff -N TrackingVolumeTest.java
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ TrackingVolumeTest.java 21 Nov 2007 01:10:51 -0000 1.1
@@ -0,0 +1,87 @@
+package org.lcsim.detector.driver;
+
+import junit.framework.TestCase;
+
+import java.io.File;
+import java.net.URL;
+
+import org.lcsim.util.Driver;
+import org.lcsim.util.loop.LCSimLoop;
+
+import org.lcsim.util.cache.FileCache;
+
+import org.lcsim.geometry.Detector;
+import org.lcsim.detector.ILogicalVolume;
+import org.lcsim.detector.IPhysicalVolume;
+import org.lcsim.detector.solids.Tube;
+
+public class TrackingVolumeTest
+extends TestCase
+{
+ public void testTrackingVolume() throws Exception
+ {
+ URL url =
+ new URL("http://www.lcsim.org/test/lcio/K0L_Theta90_5GeV_slic_1_13_9_geant4_8_0_p01_2006-05-15_sid00.slcio");
+ FileCache cache = new FileCache();
+ File file = cache.getCachedFile(url);
+
+ LCSimLoop loop = new LCSimLoop();
+ loop.setLCIORecordSource(file);
+ loop.add( new TrackingVolumeAccessDriver() );
+ loop.loop(1, null);
+ loop.dispose();
+ }
+
+ class TrackingVolumeAccessDriver
+ extends Driver
+ {
+ protected void detectorChanged(Detector detector)
+ {
+ StringBuffer buff = new StringBuffer();
+
+ // Get the tracking volume from the Detector.
+ ILogicalVolume trackingVolume = detector.getTrackingVolume().getLogicalVolume();
+
+ buff.append(trackingVolume.getName());
+ buff.append('\n');
+
+ // Loop over the layer envelopes in the tracking volume. These have no real
+ // material and are composed of Air.
+ for (IPhysicalVolume layer : trackingVolume.getDaughters())
+ {
+ buff.append(" " + layer.getName());
+ buff.append('\n');
+ // Loop over the slices within the layer. The slices contain the material.
+ for (IPhysicalVolume slice : layer.getLogicalVolume().getDaughters())
+ {
+ buff.append(" " + slice.getName() + " : ");
+
+ // Get the Tube for the slice.
+ Tube sliceTube = (Tube)layer.getLogicalVolume().getSolid();
+
+ // Looks like part of the barrel.
+ if (layer.getName().contains("Barrel"))
+ {
+ // Print thickness for the barrel which corresponds to outer radius minus inner radius.
+ buff.append(sliceTube.getOuterRadius() - sliceTube.getInnerRadius() + " mm ");
+ }
+ // Looks like part of the endcap.
+ else if (layer.getName().contains("Endcap") || layer.getName().contains("positive") || layer.getName().contains("negative"))
+ {
+ // Print thickness for the endcap which correponds to Z.
+ buff.append(sliceTube.getZHalfLength() * 2 + " mm ");
+ }
+ // Don't know what it is! Ignore it.
+ else
+ {}
+
+ // Print material name.
+ buff.append(slice.getLogicalVolume().getMaterial().getName());
+ buff.append('\n');
+ }
+ }
+
+ System.out.println(buff.toString());
+ }
+ }
+}
\ No newline at end of file