Print

Print


Author: [log in to unmask]
Date: Fri Oct 31 18:02:49 2014
New Revision: 1375

Log:
Fix up failing test.  Use different input file.

Modified:
    java/branches/hps_java_trunk_HPSJAVA-255/integration-tests/src/test/java/org/hps/MCFilteredReconTest.java

Modified: java/branches/hps_java_trunk_HPSJAVA-255/integration-tests/src/test/java/org/hps/MCFilteredReconTest.java
 =============================================================================
--- java/branches/hps_java_trunk_HPSJAVA-255/integration-tests/src/test/java/org/hps/MCFilteredReconTest.java	(original)
+++ java/branches/hps_java_trunk_HPSJAVA-255/integration-tests/src/test/java/org/hps/MCFilteredReconTest.java	Fri Oct 31 18:02:49 2014
@@ -1,17 +1,17 @@
 package org.hps;
 
 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.hps.readout.ecal.FADCEcalReadoutDriver;
 import org.hps.users.meeg.FilterMCBunches;
 import org.lcsim.job.JobControlManager;
+import org.lcsim.util.Driver;
 import org.lcsim.util.cache.FileCache;
-import org.lcsim.util.loop.LCSimLoop;
 import org.lcsim.util.test.TestUtil.TestOutputFile;
 
 /**
@@ -19,22 +19,25 @@
  * Insert empty events into an input MC file using <code>FilterMCBunches</code> 
  * and then run the resulting output through the readout simulation and reconstruction.
  * <p>
- * The original name of the MC input file was:
- * <p>
- * ap075mev_egs_tri_2.2gev_0.00125x0_200na_5e5b_30mr_001_SLIC-v04-00-00_Geant4-v10-00-02_QGSP_BERT_HPS-Proposal2014-v8-2pt2.slcio
- * <p>
  * See this wiki page:
  * <p>
  * <a href="https://confluence.slac.stanford.edu/display/hpsg/Running+Readout+Simulation">Running Readout Simulation</a>
  * <p>
  * under "Filter and space out events" for details about inserting empty events.
+ * <p>
+ * The test runs the filtering on 10 Aprime events, inserting 250 empty events in between in order to simulate a single readout window.
+ * Then the filtered events are run through the readout simulation to run the triggering algorithms.  The acceptance is approximately 20%
+ * so the 10 input events ends up as 2 events in the recon.
  * 
  * @author Jeremy McCormick <[log in to unmask]>
  */
+// TODO: Remove noise from readout simulation Driver and add test assertions.
 public class MCFilteredReconTest extends TestCase {
+        
+    final static String fileLocation = 
+    		"http://www.lcsim.org/test/hps-java/MCFilteredReconTest/ap2.2gev075mev_SLIC-v04-00-00_Geant4-v10-00-02_QGSP_BERT_HPS-Proposal2014-v7-2pt2.slcio";
     
-    final static String fileLocation = "http://www.lcsim.org/test/hps-java/MCFilteredReconTest.slcio"; 
-    
+    // 250 bunches which is ~250 ns or time of readout window.  
     static final Integer EMPTY_EVENTS = 250;
     
     public void testMCFilteredRecon() throws Exception {
@@ -46,10 +49,7 @@
         System.out.println("Downloading MC input file ...");
         FileCache cache = new FileCache();
         File inputFile = cache.getCachedFile(new URL(fileLocation));
-        
-        // Get the number of events in the MC input file.
-        long nMC = countEvents(inputFile);
-        
+                
         // 1) Filter MC events to insert 250 empty events between Aprime events.
         List<String> args = new ArrayList<String>();
         args.add(inputFile.getPath());
@@ -61,22 +61,22 @@
         System.out.println("Running FilterMCBunches.main on " + inputFile.getPath() + " with ");
         FilterMCBunches.main(args.toArray(new String[]{}));
         System.out.print("Created filtered MC file " + filteredOutputFile.getPath());
-        
-        // Get number of events in filtered output file.
-        long nFiltered = countEvents(filteredOutputFile);
-        
+                
         // 2) Run readout simulation.
         JobControlManager job = new JobControlManager();        
         File readoutOutputFile = new TestOutputFile(this.getClass().getSimpleName() + File.separator + this.getClass().getSimpleName() + "_readout");
         job.addVariableDefinition("outputFile", readoutOutputFile.getPath());
         job.addInputFile(filteredOutputFile);
         job.setup("/org/hps/steering/readout/HPS2014ReadoutToLcio.lcsim");
+        for (Driver driver : job.getDriverAdapter().getDriver().drivers()) {
+        	if (driver instanceof FADCEcalReadoutDriver) {
+        		// Turn off noise in the readout driver.
+        		((FADCEcalReadoutDriver)driver).setAddNoise(false);
+        	}
+        }
         job.run();                
         System.out.println("Created readout file " + readoutOutputFile.getPath());
-        
-        // Get number of events created by readout simulation.
-        long nReadout = countEvents(new File(readoutOutputFile.getPath() + ".slcio"));
-        
+                
         // 3) Run readout events through reconstruction.
         File reconOutputFile = new TestOutputFile(this.getClass().getSimpleName() + File.separator + this.getClass().getSimpleName() + "_recon");
         job = new JobControlManager();
@@ -85,26 +85,8 @@
         job.setup("/org/hps/steering/recon/HPS2014OfflineTruthRecon.lcsim");
         System.out.println("Running recon on filtered events ...");
         job.run();        
-        long nRecon = job.getLCSimLoop().getTotalSupplied();
         System.out.println("Created recon file " + reconOutputFile.getPath() + ".slcio");
         
-        System.out.println("---------------------------------------------------");
-        System.out.println("Job summary ...");
-        System.out.println("  MC input events: " + nMC);
-        System.out.println("  filtered output events: " + nFiltered);
-        System.out.println("  readout output events: " + nReadout);
-        System.out.println("  recon output events: " + nRecon);
-        System.out.println("  nRecon / nMC = " + (double)nRecon / (double)nMC);
-        System.out.println("---------------------------------------------------");
-        System.out.println();
-        System.out.println("Done!");        
-    }
-    
-    public long countEvents(File file) throws IOException {
-        LCSimLoop loop = new LCSimLoop();
-        loop.setLCIORecordSource(file);
-        loop.loop(-1, null);
-        return loop.getTotalSupplied();
-    }
-
+        System.out.println("Created " + job.getLCSimLoop().getTotalSupplied() + " recon output events.");
+    }    
 }