lcsim/test/org/lcsim/util/lcio
diff -N RawTrackerHitIOTest.java
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ RawTrackerHitIOTest.java 20 Aug 2008 01:42:51 -0000 1.1
@@ -0,0 +1,91 @@
+package org.lcsim.util.lcio;
+
+import java.io.File;
+import java.net.URL;
+import java.util.ArrayList;
+import java.util.List;
+
+import org.lcsim.event.EventHeader;
+import org.lcsim.event.RawTrackerHit;
+import org.lcsim.event.SimTrackerHit;
+import org.lcsim.event.base.BaseRawTrackerHit;
+import org.lcsim.util.Driver;
+import org.lcsim.util.cache.FileCache;
+import org.lcsim.util.loop.LCIODriver;
+import org.lcsim.util.loop.LCSimLoop;
+import org.lcsim.util.test.TestUtil.TestOutputFile;
+
+/**
+ *
+ * Create some test RawTrackerHits, write them out, and then read back in.
+ * Primarily checks if {@link #getSimTrackerHits} works correctly.
+ *
+ * @author jeremym
+ * @version $id: $
+ */
+public class RawTrackerHitIOTest
+{
+ public void testRawTrackerHitIO() throws Exception
+ {
+ // Read in a file and write out some test RawTrackerHits.
+ FileCache cache = new FileCache();
+ File inputFile = cache.getCachedFile(new URL("http://www.lcsim.org/test/lcio/muons_Theta4-176_1-10GeV_SLIC-v2r4p6_geant4-v9r1p2_LCPhys_sid01_planar_tracker.slcio"));
+ LCSimLoop loop = new LCSimLoop();
+ loop.setLCIORecordSource(inputFile);
+ loop.add(new SimpleRawHitMaker());
+ File outputFile = new TestOutputFile("RawTrackerHitIOTest.slcio");
+ loop.add(new LCIODriver(outputFile));
+ loop.loop(5,null);
+ loop.dispose();
+
+ // Read back file from above.
+ loop = new LCSimLoop();
+ loop.setLCIORecordSource(outputFile);
+ loop.add(new RawTrackerHitCheck());
+ loop.loop(1,null);
+ loop.dispose();
+ }
+
+ class SimpleRawHitMaker extends Driver
+ {
+ public void process(EventHeader event)
+ {
+ List<SimTrackerHit> simHits = event.get(SimTrackerHit.class, "SiTrackerBarrel_RO");
+ List<RawTrackerHit> rawHits = new ArrayList<RawTrackerHit>();
+ for (SimTrackerHit simHit : simHits)
+ {
+ List<SimTrackerHit> hitList = new ArrayList<SimTrackerHit>();
+ hitList.add(simHit);
+ RawTrackerHit rawHit = new BaseRawTrackerHit(0, simHit.getCellID(), new short[] {}, hitList, null);
+ rawHits.add(rawHit);
+ }
+ int flag = (1 << LCIOConstants.RTHBIT_HITS);
+ event.put("RawTrackerHits", rawHits, RawTrackerHit.class, flag, "SiTrackerBarrel_RO");
+ }
+ }
+
+ class RawTrackerHitCheck extends Driver
+ {
+ public void process(EventHeader event)
+ {
+ List<RawTrackerHit> rawHits = event.get(RawTrackerHit.class, "RawTrackerHits");
+ int simHitsRead = 0;
+ for (RawTrackerHit rawHit : rawHits)
+ {
+ List<SimTrackerHit> simHits = rawHit.getSimTrackerHits();
+ if (simHits.size() < 0)
+ throw new RuntimeException("No SimTrackerHit found on RawTrackerHit!");
+ for (SimTrackerHit simHit : simHits)
+ {
+ if (rawHit.getCellID() != simHit.getCellID())
+ throw new RuntimeException("CellIDs do not match!");
+ ++simHitsRead;
+ }
+ }
+ if (simHitsRead != rawHits.size())
+ throw new RuntimeException("Wrong number of SimTrackerHits!");
+ else
+ System.out.println("Read <" + rawHits.size() + "> RawTrackerHits -- okay!");
+ }
+ }
+}
\ No newline at end of file