package hep.physics.event.generator.diagnostic; import hep.io.stdhep.StdhepEvent; import hep.io.stdhep.StdhepReader; import hep.io.stdhep.StdhepRecord; import hep.io.stdhep.StdhepWriter; import hep.physics.event.generator.MCEvent; import hep.physics.particle.Particle; import hep.physics.stdhep.convert.StdhepConverter; import java.io.EOFException; import java.io.File; import java.io.IOException; import java.util.Iterator; import java.util.List; import junit.framework.*; /** * * @author tonyj */ public class TestEventGenerator extends TestCase { public TestEventGenerator(String testName) { super(testName); } public static Test suite() { return new TestSuite(TestEventGenerator.class); } public void testStdhepGenerator() throws IOException { int nEvents = 100; DiagnosticEventGenerator gen = new DiagnosticEventGenerator(); gen.setCosthRange(0,0); gen.setMomentumRange(5,5); gen.setTwoParticleRes(Math.PI/90); gen.setParticleType(gen.getParticlePropertyProvider().get(22)); StdhepConverter converter = new StdhepConverter(); File temp = File.createTempFile("test","stdhep"); temp.deleteOnExit(); StdhepWriter writer = new StdhepWriter(temp.getAbsolutePath(),"title","comment",nEvents); for (int i=0; i<nEvents; i++) { MCEvent event = gen.generate(); writer.writeRecord(converter.convert(event)); } writer.close(); // Now see if we can read it! StdhepReader reader = new StdhepReader(temp.getAbsolutePath()); assertEquals("comment",reader.getComment()); assertEquals("title",reader.getTitle()); assertEquals(nEvents,reader.getNumberOfEventsExpected()); assertEquals(nEvents,reader.getNumberOfEvents()); int n = 0; try { for (;;) { StdhepRecord record = reader.nextRecord(); if (record instanceof StdhepEvent) { n++; MCEvent event = converter.convert((StdhepEvent) record); List particles = event.getMCParticles(); assertEquals(2,particles.size()); for (Iterator i = particles.iterator(); i.hasNext(); ) { Particle p = (Particle) i.next(); assertEquals(22,p.getPDGID()); } } } } catch (EOFException x) { // End of file } assertEquals(nEvents,n); } }