Commit in lcsim/test/org/lcsim/detector/driver on MAIN
SimTrackerHitIdentifierReadoutDriverTest_sid01.java+99added 1.1
JM: ReadoutDriver test for sid01.  Checks that DetectorElements are assigned correctly to hits and vice versa.

lcsim/test/org/lcsim/detector/driver
SimTrackerHitIdentifierReadoutDriverTest_sid01.java added at 1.1
diff -N SimTrackerHitIdentifierReadoutDriverTest_sid01.java
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ SimTrackerHitIdentifierReadoutDriverTest_sid01.java	28 Aug 2007 03:18:01 -0000	1.1
@@ -0,0 +1,99 @@
+package org.lcsim.detector.driver;
+
+import hep.physics.vec.BasicHep3Vector;
+
+import java.io.File;
+import java.net.URL;
+import java.util.ArrayList;
+import java.util.List;
+
+import junit.framework.Test;
+import junit.framework.TestCase;
+import junit.framework.TestSuite;
+
+import org.lcsim.detector.solids.Inside;
+import org.lcsim.detector.IDetectorElement;
+import org.lcsim.detector.IReadout;
+import org.lcsim.detector.identifier.Identifier;
+import org.lcsim.detector.driver.CollectionHandler;
+import org.lcsim.event.EventHeader;
+import org.lcsim.event.SimTrackerHit;
+import org.lcsim.geometry.compact.Subdetector;
+import org.lcsim.util.Driver;
+import org.lcsim.util.cache.FileCache;
+import org.lcsim.util.loop.LCSimLoop;
+
+/**
+ * Test the {@link org.lcsim.detector.driver.SimTrackerHitIdentifierReadoutDriver} on the sid01 detector.
+ */
+public class SimTrackerHitIdentifierReadoutDriverTest_sid01 extends TestCase
+{
+    public void setUp()
+    {
+        java.lang.Runtime.getRuntime().gc();
+    }
+
+    public void testReadout() throws Exception
+    {        
+        URL url = 
+            new URL("http://www.lcsim.org/test/lcio/muons10_Theta4-176_1-10GeV_SLIC_v2r2p1_sid01.slcio");
+        FileCache cache = new FileCache();
+        File file = cache.getCachedFile(url);        
+
+        LCSimLoop loop = new LCSimLoop();
+        loop.setLCIORecordSource(file);
+
+        String[] colls = {"TkrBarrHits","TkrEndcapHits"};
+
+        loop.add( new SimTrackerHitIdentifierReadoutDriver(colls));
+        loop.add( new TestDriver(colls));
+        loop.loop(1);
+        loop.dispose();
+    }     
+    
+    class TestDriver
+    extends CollectionHandler
+    {
+    	TestDriver(String[] colls)
+    	{
+    		super(colls);
+    	}
+    	
+    	protected void process(EventHeader event)
+    	{
+    		List<List<SimTrackerHit>> collections = event.get(SimTrackerHit.class);
+    		for (List<SimTrackerHit> collection : collections)
+    		{
+    			if (canHandle(event.getMetaData(collection).getName()))
+    			{
+    				for (SimTrackerHit hit : collection)
+    				{
+    					//System.out.println("Checking SimTrackerHit at " + hit.getPoint()[0] + "," + hit.getPoint()[1] + " " + hit.getPoint()[2] + " with id: " + new Identifier(hit.getCellID()).toHexString());
+    					IDetectorElement deHit = hit.getDetectorElement();
+    					assertTrue("DetectorElement from the hit is null!",deHit!=null);
+    					assertEquals("IDs do not match",new Identifier(hit.getCellID()),deHit.getIdentifier());
+    					SimTrackerHit lkpHit = findHitByPosition(hit,deHit.getReadout().getHits(SimTrackerHit.class));
+    					assertTrue("Failed to find SimTrackerHit in Readout!",lkpHit != null);
+    					//System.out.println("OK!");
+    				}
+    			}
+    		}
+    	}
+    }
+    
+    private SimTrackerHit findHitByPosition( SimTrackerHit findHit, List<SimTrackerHit> hits)
+    {
+        double[] findHitPos = findHit.getPoint();
+        for ( SimTrackerHit hit : hits )
+        {
+            double[] hitPos = hit.getPoint();
+            if ( findHitPos[0] == hitPos[0] && 
+                    findHitPos[1] == hitPos[1] && 
+                    findHitPos[2] == hitPos[2] )
+            {
+                return hit;
+            }
+        }
+        return null;
+    }
+}
CVSspam 0.2.8