Commit in lcsim/test/org/lcsim/util/lcio on MAIN
RawTrackerHitIOTest.java+91added 1.1
JM: tests write and read back of RawTrackerHit collections

lcsim/test/org/lcsim/util/lcio
RawTrackerHitIOTest.java added at 1.1
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
CVSspam 0.2.8