lcsim/test/org/lcsim
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