Author: [log in to unmask]
Date: Wed Aug 26 14:28:01 2015
New Revision: 3406
Log:
Integration test to check full reconstruction on a sample of clean events stripped from pass1. Work in progress.
Added:
java/trunk/integration-tests/src/test/java/org/hps/EngRun2015ReconTest.java
- copied, changed from r3096, java/trunk/integration-tests/src/test/java/org/hps/TestRunEvioToLcioTest.java
Copied: java/trunk/integration-tests/src/test/java/org/hps/EngRun2015ReconTest.java (from r3096, java/trunk/integration-tests/src/test/java/org/hps/TestRunEvioToLcioTest.java)
=============================================================================
--- java/trunk/integration-tests/src/test/java/org/hps/TestRunEvioToLcioTest.java (original)
+++ java/trunk/integration-tests/src/test/java/org/hps/EngRun2015ReconTest.java Wed Aug 26 14:28:01 2015
@@ -1,40 +1,123 @@
package org.hps;
import java.io.File;
+import java.io.IOException;
import java.net.URL;
+import java.util.List;
import junit.framework.TestCase;
+import static junit.framework.TestCase.assertEquals;
+import static junit.framework.TestCase.assertTrue;
import org.hps.evio.EvioToLcio;
+import org.lcsim.event.EventHeader;
+import org.lcsim.event.ReconstructedParticle;
+import org.lcsim.util.Driver;
import org.lcsim.util.cache.FileCache;
+import org.lcsim.util.loop.LCSimLoop;
import org.lcsim.util.test.TestUtil.TestOutputFile;
/**
- * Test to run the reconstruction on Test Run 2012 EVIO data.
- * @author Jeremy McCormick <[log in to unmask]>
+ * Test to run the standard reconstruction on Engineering Run 2015 EVIO data.
+ * Full energy electron candidate events were selected from pass1 output.
+ * The current test runs the default reconstruction over the evio file
+ * then analyzes the output lcio file.
+ * The current checks are minimal and need to be improved.
+ *
+ * @author Norman A Graf
*/
-public class TestRunEvioToLcioTest extends TestCase {
-
- final static String fileLocation = "http://www.lcsim.org/test/hps-java/TestRunEvioToLcioTest.evio";
-
- public void testTestRunEvioToLcio() throws Exception {
+public class EngRun2015ReconTest extends TestCase
+{
+
+ final static String fileLocation = "http://www.lcsim.org/test/hps-java/run5772_pass1_stripOneFee_1000Events.evio";
+
+ public void testEngRun2015Recon() throws Exception
+ {
System.out.println("Caching file...");
FileCache cache = new FileCache();
File inputFile = cache.getCachedFile(new URL(fileLocation));
+ File outputFile = new TestOutputFile("EngRun2015ReconTest");
String args[] = {
- "-r",
- "-x",
- "/org/hps/steering/recon/TestRunOfflineRecon.lcsim",
- "-d",
- "HPS-TestRun-v5",
- "-D",
- "outputFile=" + new TestOutputFile("TestRunEvioToLcioTest").getPath(),
- inputFile.getPath(),
- "-n",
- "1000"
+ "-r",
+ "-x",
+ "/org/hps/steering/recon/EngineeringRun2015FullReconGbl2.lcsim",
+ "-d",
+ "HPS-EngRun2015-Nominal-v2",
+ "-D",
+ "outputFile=" + outputFile.getPath(),
+ inputFile.getPath(),
+ "-n",
+ "1000"
};
- System.out.println("Running TestRunEvioToLcio.main ...");
+ System.out.println("Running EngRun2015ReconTest.main ...");
+ System.out.println("writing to: " + outputFile.getPath());
EvioToLcio.main(args);
+
+ // Read in the LCIO event file and print out summary information.
+ System.out.println("Running ReconCheckDriver on output ...");
+ LCSimLoop loop = new LCSimLoop();
+ loop.add(new EngRun2015ReconTest.ReconCheckDriver());
+ try {
+ loop.setLCIORecordSource(new File(outputFile.getPath() + ".slcio"));
+ loop.loop(-1);
+ } catch (IOException e) {
+ throw new RuntimeException(e);
+ }
+ System.out.println("Loop processed " + loop.getTotalSupplied() + " events.");
+ System.out.println("Done!");
}
+ static class ReconCheckDriver extends Driver
+ {
+ int nFail;
+ int nProcessed;
+
+ public void process(EventHeader event)
+ {
+ boolean fail = false;
+ List<ReconstructedParticle> rps = event.get(ReconstructedParticle.class, "FinalStateParticles");
+ int nrp = rps.size();
+ if (nrp < 1) {
+ fail = true;
+ }
+ assertTrue("Didn't find at least one ReconstructedParticle", nrp > 0);
+ int nelectron = 0;
+ int npositron = 0;
+
+ ReconstructedParticle electron = null;
+ ReconstructedParticle positron = null;
+ for (ReconstructedParticle p : rps) {
+ if (p.getParticleIDUsed().getPDG() == 11) {
+ electron = p;
+ ++nelectron;
+ }
+ if (p.getParticleIDUsed().getPDG() == -11) {
+ positron = p;
+ ++npositron;
+ }
+ }
+ if (nelectron != 1) {
+ fail = true;
+ }
+ if (npositron != 0) {
+ fail = true;
+ }
+ if (fail) {
+ System.out.println("run " + event.getRunNumber() + " event " + event.getEventNumber());
+ System.out.println("found " + nelectron + " electrons and " + npositron + " positrons");
+ System.out.println("found " + nrp + " ReconstructedParticles ");
+ }
+ nProcessed++;
+ if (fail) {
+ nFail++;
+ }
+ //TODO add checks on quality of output (chi2, p, E, E/p matching, position matching, etc.)
+ }
+
+ public void endOfData()
+ {
+ System.out.println(nFail + " of " + nProcessed + " events failed");
+ assertEquals("Expected no events to fail",nFail, 0);
+ }
+ }
}
|