Commit in lcsim/test/org/lcsim/detector/driver on MAIN
SimTrackerHitIdHelperCheck.java+93added 1.1
JM: Better test of identifier and IDDecoder.

lcsim/test/org/lcsim/detector/driver
SimTrackerHitIdHelperCheck.java added at 1.1
diff -N SimTrackerHitIdHelperCheck.java
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ SimTrackerHitIdHelperCheck.java	4 May 2007 01:32:45 -0000	1.1
@@ -0,0 +1,93 @@
+package org.lcsim.detector.driver;
+
+import java.util.List;
+
+import java.io.File;
+import java.net.URL;
+
+import junit.framework.Test;
+import junit.framework.TestCase;
+import junit.framework.TestSuite;
+
+import org.lcsim.util.cache.FileCache;
+import org.lcsim.util.loop.LCSimLoop;
+
+import org.lcsim.util.Driver;
+import org.lcsim.event.*;
+import org.lcsim.detector.identifier.*;
+
+import org.lcsim.geometry.IDDecoder;
+
+/**
+ * Checks whether the {@link org.lcsim.identifier} package
+ * can unpack the value from {@link org.lcsim.event.SimTrackerHit#getCellI} 
+ * and get the same results as {@link org.lcsim.geometry.IDDecoder} 
+ * on some {@link org.lcsim.event.SimTrackerHit} objects from SiTrackerBarrel00.
+ * 
+ * @see org.lcsim.identifier
+ * @see org.lcsim.detector.identifier.IIdentifier
+ * @see org.lcsim.detector.identifier.IExpandedIdentifier
+ * @see org.lcsim.geometry.IDDecoder
+ * @see org.lcsim.detector.IDetectorElement
+ * @see org.lcsim.geometry.Subdetector
+ *
+ * @version $Id: SimTrackerHitIdHelperCheck.java,v 1.1 2007/05/04 01:32:45 jeremy Exp $
+ * @author  jeremym
+ */
+public class SimTrackerHitIdHelperCheck 
+extends TestCase
+{
+    public SimTrackerHitIdHelperCheck(String testName)
+    {
+       super(testName);
+    }
+    
+    public static Test suite()
+    {
+       return new TestSuite(SimTrackerHitIdHelperCheck.class);
+    }
+    
+    public void testReadLcio() throws Exception
+    {        
+        URL url = 
+            new URL("http://www.lcsim.org/test/lcio/mu-_10GeV_10_SLIC_v2r1p7_geant4-v8r2p0_SiTrackerBarrelTest00.slcio");
+        FileCache cache = new FileCache();
+        File file = cache.getCachedFile(url);
+        
+        LCSimLoop loop = new LCSimLoop();
+        loop.setLCIORecordSource(file);
+        loop.add( new SimTrackerHitPositionalReadoutDriver(
+                new String[] { "SiTrackerBarrel_RO" } ) );
+        loop.add( new TestDriver() );        
+        loop.loop(2);
+        loop.dispose();
+    }
+
+    class TestDriver
+    extends Driver
+    {
+        protected void process( EventHeader event ) 
+        {
+            List<SimTrackerHit> collection = event.get( SimTrackerHit.class, "SiTrackerBarrel_RO" );
+            IDDecoder decoder = event.getMetaData( collection ).getIDDecoder();
+            IIdentifierHelper helper = decoder.getSubdetector().getDetectorElement().getIdentifierHelper();
+            for ( SimTrackerHit hit : collection ) 
+            {
+                // Setup the IDDecoder.
+                decoder.setID( hit.getCellID() );
+
+                // Create an ExpandedIdentifier. 
+                IExpandedIdentifier exp = helper.unpack( new Identifier( hit.getCellID() ) );
+
+                // Check that both have the same number of fields.
+                assertEquals( "IDs have different number of fields.", decoder.getFieldCount(), exp.size() );
+
+                // Check that the ids have all the same values.
+                for ( int i=0; i<decoder.getFieldCount(); i++ )
+                {
+                    assertEquals( "Field value <" + i + "> is different." + decoder.getFieldName( i ), decoder.getValue( i ), exp.getValue( i ) );
+                }
+            }
+        }
+    }
+}
CVSspam 0.2.8