Commit in lcsim/test/org/lcsim on MAIN
HitMixingTest.java+87added 1.1


lcsim/test/org/lcsim
HitMixingTest.java added at 1.1
diff -N HitMixingTest.java
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ HitMixingTest.java	23 May 2008 04:15:52 -0000	1.1
@@ -0,0 +1,87 @@
+package org.lcsim;
+
+import java.io.File;
+import java.io.IOException;
+import java.net.URL;
+import java.util.ArrayList;
+import java.util.List;
+
+import junit.framework.TestCase;
+
+import org.freehep.record.loop.LoopException;
+import org.lcsim.event.EventHeader;
+import org.lcsim.event.SimCalorimeterHit;
+import org.lcsim.util.Driver;
+import org.lcsim.util.cache.FileCache;
+import org.lcsim.util.loop.LCSimLoop;
+
+import static java.lang.Math.abs;
+
+public class HitMixingTest extends TestCase
+{
+    private static int nhits;
+        
+    public void testMix() throws IOException, LoopException
+    {
+        FileCache cache = new FileCache();
+        File events = cache.getCachedFile(new URL("http://www.lcsim.org/test/lcio/muons10_Theta4-176_1-10GeV_SLIC_v2r2p1_sid01.slcio"));        
+        LCSimLoop loop = new LCSimLoop();
+        loop.setLCIORecordSource(events);
+        loop.add(new MixDriver());
+        loop.add(new CheckDriver());
+        loop.loop(1);                
+        loop.dispose();
+    }
+    
+    private static final class MixDriver extends Driver
+    {         
+        public void process(EventHeader event)
+        {
+            List<SimCalorimeterHit> combined = new ArrayList<SimCalorimeterHit>();
+                        
+            List<List<SimCalorimeterHit>> collections = event.get(SimCalorimeterHit.class);
+            for (List<SimCalorimeterHit> collection : collections)
+            {
+                for (SimCalorimeterHit hit : collection)
+                {
+                    combined.add(hit);
+                    ++nhits;
+                }
+            }            
+            
+            event.put("CombinedHits", combined);
+        }        
+    }
+    
+    private static final class CheckDriver extends Driver
+    {
+        public void process(EventHeader event)
+        {
+            List<SimCalorimeterHit> hits = event.get(SimCalorimeterHit.class, "CombinedHits");
+            try {
+                event.getMetaData(hits).getIDDecoder();
+                // This means an IDDecoder was created but it should not have been.                
+                assertTrue(false);
+            }
+            catch (Exception x)
+            {
+                System.out.println("Okay --> " + x.getLocalizedMessage());
+            }
+            assertEquals(hits.size(), nhits);
+            System.out.println("Found " + nhits + " hits in CombinedHits.");
+            for (SimCalorimeterHit hit : hits)
+            {
+                assertTrue(hit.getMetaData() != null);
+                assertTrue(hit.getSubdetector() != null);
+                assertTrue(hit.getIDDecoder() != null);
+                double p[] = hit.getPosition();
+                assertTrue(p != null);
+                assertTrue((abs(p[0]) + abs(p[1]) + abs(p[2])) > 0);
+                assertTrue(hit.getMCParticleCount() > 0);
+                assertTrue(hit.getCellID() != 0);
+                assertTrue(hit.getRawEnergy() != 0);
+                assertTrue(hit.getTime() != 0);
+            }
+        }        
+    }
+}
\ No newline at end of file
CVSspam 0.2.8