Print

Print


Author: [log in to unmask]
Date: Thu Feb 11 17:15:20 2016
New Revision: 4207

Log:
Merge to dev branch from trunk.

Added:
    java/branches/jeremy-dev/analysis/src/main/java/org/hps/analysis/examples/VertexAnalysis.java
      - copied unchanged from r4202, java/trunk/analysis/src/main/java/org/hps/analysis/examples/VertexAnalysis.java
    java/branches/jeremy-dev/analysis/src/test/
      - copied from r4202, java/trunk/analysis/src/test/
    java/branches/jeremy-dev/detector-data/detectors/HPS-PhysicsRun2016-1_5mm-v4-4/
      - copied from r4202, java/trunk/detector-data/detectors/HPS-PhysicsRun2016-1_5mm-v4-4/
    java/branches/jeremy-dev/detector-data/detectors/HPS-PhysicsRun2016-2mm-v4-4/
      - copied from r4202, java/trunk/detector-data/detectors/HPS-PhysicsRun2016-2mm-v4-4/
    java/branches/jeremy-dev/detector-data/detectors/HPS-PhysicsRun2016-3mm-v4-4/
      - copied from r4202, java/trunk/detector-data/detectors/HPS-PhysicsRun2016-3mm-v4-4/
    java/branches/jeremy-dev/detector-data/detectors/HPS-PhysicsRun2016-4mm-v4-4/
      - copied from r4202, java/trunk/detector-data/detectors/HPS-PhysicsRun2016-4mm-v4-4/
    java/branches/jeremy-dev/detector-data/detectors/HPS-PhysicsRun2016-Nominal-v4-4/
      - copied from r4202, java/trunk/detector-data/detectors/HPS-PhysicsRun2016-Nominal-v4-4/
    java/branches/jeremy-dev/detector-data/detectors/HPS-PhysicsRun2016-Nominal-v4-4-fieldmap/
      - copied from r4202, java/trunk/detector-data/detectors/HPS-PhysicsRun2016-Nominal-v4-4-fieldmap/
    java/branches/jeremy-dev/monitoring-drivers/src/main/java/org/hps/monitoring/ecal/plots/EcalFeeMonitor.java
      - copied unchanged from r4202, java/trunk/monitoring-drivers/src/main/java/org/hps/monitoring/ecal/plots/EcalFeeMonitor.java
    java/branches/jeremy-dev/recon/src/main/java/org/hps/recon/filtering/CosmicPMTFilter.java
      - copied unchanged from r4202, java/trunk/recon/src/main/java/org/hps/recon/filtering/CosmicPMTFilter.java
    java/branches/jeremy-dev/steering-files/src/main/resources/org/hps/steering/users/baltzell/Cosmic.lcsim
      - copied unchanged from r4202, java/trunk/steering-files/src/main/resources/org/hps/steering/users/baltzell/Cosmic.lcsim
    java/branches/jeremy-dev/steering-files/src/main/resources/org/hps/steering/users/holly/EcalFeeViewer.lcsim
      - copied unchanged from r4202, java/trunk/steering-files/src/main/resources/org/hps/steering/users/holly/EcalFeeViewer.lcsim
    java/branches/jeremy-dev/steering-files/src/main/resources/org/hps/steering/users/spaul/MollerBeamtilt.lcsim
      - copied unchanged from r4202, java/trunk/steering-files/src/main/resources/org/hps/steering/users/spaul/MollerBeamtilt.lcsim
    java/branches/jeremy-dev/users/src/main/java/org/hps/users/spaul/moller/
      - copied from r4202, java/trunk/users/src/main/java/org/hps/users/spaul/moller/
Modified:
    java/branches/jeremy-dev/   (props changed)
    java/branches/jeremy-dev/analysis/pom.xml
    java/branches/jeremy-dev/analysis/src/main/java/org/hps/analysis/dataquality/TrackingMonitoring.java
    java/branches/jeremy-dev/analysis/src/main/java/org/hps/analysis/dataquality/V0Monitoring.java
    java/branches/jeremy-dev/conditions/   (props changed)
    java/branches/jeremy-dev/conditions/pom.xml
    java/branches/jeremy-dev/crawler/pom.xml
    java/branches/jeremy-dev/datacat-client/pom.xml
    java/branches/jeremy-dev/detector-data/pom.xml
    java/branches/jeremy-dev/detector-model/pom.xml
    java/branches/jeremy-dev/distribution/   (props changed)
    java/branches/jeremy-dev/distribution/pom.xml
    java/branches/jeremy-dev/ecal-event-display/pom.xml
    java/branches/jeremy-dev/ecal-readout-sim/pom.xml
    java/branches/jeremy-dev/ecal-recon/pom.xml
    java/branches/jeremy-dev/ecal-recon/src/main/java/org/hps/recon/ecal/FADCGenericHit.java
    java/branches/jeremy-dev/evio/pom.xml
    java/branches/jeremy-dev/evio/src/main/java/org/hps/evio/EvioToLcio.java
    java/branches/jeremy-dev/evio/src/main/java/org/hps/evio/RfFitterDriver.java
    java/branches/jeremy-dev/integration-tests/   (props changed)
    java/branches/jeremy-dev/integration-tests/pom.xml
    java/branches/jeremy-dev/integration-tests/src/test/java/org/hps/test/it/DataQualityMonitorTest.java
    java/branches/jeremy-dev/integration-tests/src/test/java/org/hps/test/it/ReconSteeringTest.java
    java/branches/jeremy-dev/integration-tests/src/test/resources/org/hps/steering/test/DataQualityTest.lcsim
    java/branches/jeremy-dev/job/pom.xml
    java/branches/jeremy-dev/logging/pom.xml
    java/branches/jeremy-dev/logging/src/main/resources/org/hps/logging/config/logging.properties
    java/branches/jeremy-dev/logging/src/main/resources/org/hps/logging/config/test_logging.properties
    java/branches/jeremy-dev/monitoring-app/   (props changed)
    java/branches/jeremy-dev/monitoring-app/pom.xml
    java/branches/jeremy-dev/monitoring-app/src/main/java/org/hps/monitoring/application/MonitoringApplication.java
    java/branches/jeremy-dev/monitoring-app/src/main/java/org/hps/monitoring/application/MonitoringApplicationFrame.java
    java/branches/jeremy-dev/monitoring-drivers/pom.xml
    java/branches/jeremy-dev/monitoring-util/pom.xml
    java/branches/jeremy-dev/monitoring-util/src/main/java/org/hps/monitoring/plotting/ExportPdf.java
    java/branches/jeremy-dev/parent/pom.xml
    java/branches/jeremy-dev/plugin/pom.xml
    java/branches/jeremy-dev/pom.xml
    java/branches/jeremy-dev/recon/pom.xml
    java/branches/jeremy-dev/recon/src/main/java/org/hps/recon/utils/TrackClusterMatcher.java
    java/branches/jeremy-dev/record-util/pom.xml
    java/branches/jeremy-dev/run-database/pom.xml
    java/branches/jeremy-dev/steering-files/pom.xml
    java/branches/jeremy-dev/steering-files/src/main/resources/org/hps/steering/monitoring/TriggerDiagnosticsMonitoring.lcsim
    java/branches/jeremy-dev/steering-files/src/main/resources/org/hps/steering/production/DataQualityRecon.lcsim   (contents, props changed)
    java/branches/jeremy-dev/tracking/pom.xml
    java/branches/jeremy-dev/users/pom.xml
    java/branches/jeremy-dev/users/src/main/java/org/hps/users/meeg/SvtChargeIntegrator.java   (contents, props changed)
    java/branches/jeremy-dev/users/src/main/java/org/hps/users/spaul/StyleUtil.java
    java/branches/jeremy-dev/users/src/main/java/org/hps/users/spaul/SumEverything.java
    java/branches/jeremy-dev/users/src/main/java/org/hps/users/spaul/feecc/ExtractFormFactors.java
    java/branches/jeremy-dev/users/src/main/java/org/hps/users/spaul/feecc/FEESpectrumGenerator.java
    java/branches/jeremy-dev/users/src/main/java/org/hps/users/spaul/feecc/MakeHistograms.java
    java/branches/jeremy-dev/users/src/main/java/org/hps/users/spaul/feecc/RemoveDuplicateParticles.java
    java/branches/jeremy-dev/users/src/main/java/org/hps/users/spaul/feecc/ShowCustomBinningXY.java
    java/branches/jeremy-dev/util/pom.xml

Modified: java/branches/jeremy-dev/analysis/pom.xml
 =============================================================================
--- java/branches/jeremy-dev/analysis/pom.xml	(original)
+++ java/branches/jeremy-dev/analysis/pom.xml	Thu Feb 11 17:15:20 2016
@@ -8,7 +8,7 @@
         <groupId>org.hps</groupId>
         <artifactId>hps-parent</artifactId>
         <relativePath>../parent/pom.xml</relativePath>
-        <version>3.5-SNAPSHOT</version>
+        <version>3.6-SNAPSHOT</version>
     </parent>
     <scm>
         <url>http://java.freehep.org/svn/repos/hps/list/java/trunk/analysis/</url>
@@ -21,4 +21,17 @@
             <artifactId>hps-recon</artifactId>
         </dependency>
     </dependencies>
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-surefire-plugin</artifactId>
+                <configuration>
+                    <excludes>
+                        <exclude>**/VertexAnalysisTest.java</exclude>
+                    </excludes>
+                </configuration>
+            </plugin>
+        </plugins>
+    </build>
 </project>

Modified: java/branches/jeremy-dev/analysis/src/main/java/org/hps/analysis/dataquality/TrackingMonitoring.java
 =============================================================================
--- java/branches/jeremy-dev/analysis/src/main/java/org/hps/analysis/dataquality/TrackingMonitoring.java	(original)
+++ java/branches/jeremy-dev/analysis/src/main/java/org/hps/analysis/dataquality/TrackingMonitoring.java	Thu Feb 11 17:15:20 2016
@@ -165,7 +165,8 @@
     IHistogram2D chi2VsLambda;
     IHistogram2D chi2VsZ0;
 
-    IHistogram2D beamAngle2D;
+    IHistogram2D beamAngleXY;
+    IHistogram2D beamAngleThetaPhi;
 
     IHistogram1D L1Iso;
     IHistogram1D L12Iso;
@@ -288,7 +289,8 @@
         chi2VsLambda = aida.histogram2D(plotDir + trackCollectionName + "/" + triggerType + "/" + "chi2 vs lambda", 50, -lambdaCut, lambdaCut, 50, 0.0, 50.0);
         chi2VsZ0 = aida.histogram2D(plotDir + trackCollectionName + "/" + triggerType + "/" + "chi2 vs z0", 50, -z0Cut, z0Cut, 50, 0.0, 50.0);
 
-        beamAngle2D = aida.histogram2D(plotDir + trackCollectionName + "/" + triggerType + "/" + "angles around beam axis: theta vs phi", 100, -Math.PI, Math.PI, 100, 0, 0.25);
+        beamAngleXY = aida.histogram2D(plotDir + trackCollectionName + "/" + triggerType + "/" + "angles around beam axis: theta_y vs theta_x", 100, -0.1, 0.1, 100, -0.1, 0.1);
+        beamAngleThetaPhi = aida.histogram2D(plotDir + trackCollectionName + "/" + triggerType + "/" + "angles around beam axis: theta vs phi", 100, -Math.PI, Math.PI, 100, 0, 0.25);
 
         L1Iso = aida.histogram1D(plotDir + trackCollectionName + "/" + triggerType + "/" + "L1 isolation", 100, -5.0, 5.0);
         L12Iso = aida.histogram1D(plotDir + trackCollectionName + "/" + triggerType + "/" + "L1-2 isolation", 100, -5.0, 5.0);
@@ -423,7 +425,8 @@
             double beamPhi = Math.atan2(dirRotated.y(), dirRotated.x());
             double beamTheta = Math.acos(dirRotated.z());
 
-            beamAngle2D.fill(beamPhi, beamTheta);
+            beamAngleXY.fill(dirRotated.x(), dirRotated.y());
+            beamAngleThetaPhi.fill(beamPhi, beamTheta);
 
             Double[] isolations = TrackUtils.getIsolations(trk, hitToStrips, hitToRotated);
             double l1Iso = Double.MAX_VALUE;

Modified: java/branches/jeremy-dev/analysis/src/main/java/org/hps/analysis/dataquality/V0Monitoring.java
 =============================================================================
--- java/branches/jeremy-dev/analysis/src/main/java/org/hps/analysis/dataquality/V0Monitoring.java	(original)
+++ java/branches/jeremy-dev/analysis/src/main/java/org/hps/analysis/dataquality/V0Monitoring.java	Thu Feb 11 17:15:20 2016
@@ -135,6 +135,11 @@
     IHistogram2D mollerXVsVtxZ;
     IHistogram2D mollerYVsVtxZ;
     IHistogram2D mollerXVsVtxY;
+    
+    IHistogram1D mollerUx;
+    IHistogram1D mollerUy;
+    
+    
 
     IHistogram1D sumChargeHisto;
     IHistogram1D numChargeHisto;
@@ -240,6 +245,12 @@
         mollerXVsVtxZ = aida.histogram2D(plotDir + trkType + triggerType + "/" + xtra + "/" + "2 Electron/Moller Vx vs Vz", 100, -5, 5, 100, -50, 50);
         mollerYVsVtxZ = aida.histogram2D(plotDir + trkType + triggerType + "/" + xtra + "/" + "2 Electron/Moller Vy vs Vz", 100, -2, 2, 100, -50, 50);
         mollerXVsVtxY = aida.histogram2D(plotDir + trkType + triggerType + "/" + xtra + "/" + "2 Electron/Moller Vx vs Vy", 100, -5, 5, 100, -2, 2);
+    
+        mollerUx = aida.histogram1D(plotDir + trkType + triggerType + "/" + xtra + "/" + "2 Electron/Moller Pair Momentum Direction Ux", 100, .025, .035);
+        mollerUy = aida.histogram1D(plotDir + trkType + triggerType + "/" + xtra + "/" + "2 Electron/Moller Pair Momentum Direction Uy", 100, -.005, .005);
+    
+        
+        
     }
 
     @Override
@@ -459,6 +470,10 @@
                 mollerXVsVtxZ.fill(bv.getPosition().x(), bv.getPosition().z());
                 mollerYVsVtxZ.fill(bv.getPosition().y(), bv.getPosition().z());
                 mollerXVsVtxY.fill(bv.getPosition().x(), bv.getPosition().y());
+                
+                mollerUx.fill((p1.x()+p2.x())/(p1.z()+p2.z()));
+                mollerUy.fill((p1.y()+p2.y())/(p1.z()+p2.z()));
+                
                 if (Math.abs(bv.getPosition().x()) < 2
                         && Math.abs(bv.getPosition().y()) < 0.5) {
                     mollerMassVtxCut.fill(bv.getParameters().get("invMass"));

Modified: java/branches/jeremy-dev/conditions/pom.xml
 =============================================================================
--- java/branches/jeremy-dev/conditions/pom.xml	(original)
+++ java/branches/jeremy-dev/conditions/pom.xml	Thu Feb 11 17:15:20 2016
@@ -8,7 +8,7 @@
         <groupId>org.hps</groupId>
         <artifactId>hps-parent</artifactId>
         <relativePath>../parent/pom.xml</relativePath>
-        <version>3.5-SNAPSHOT</version>
+        <version>3.6-SNAPSHOT</version>
     </parent>
     <scm>
         <url>http://java.freehep.org/svn/repos/hps/list/java/trunk/conditions/</url>

Modified: java/branches/jeremy-dev/crawler/pom.xml
 =============================================================================
--- java/branches/jeremy-dev/crawler/pom.xml	(original)
+++ java/branches/jeremy-dev/crawler/pom.xml	Thu Feb 11 17:15:20 2016
@@ -7,7 +7,7 @@
         <groupId>org.hps</groupId>
         <artifactId>hps-parent</artifactId>
         <relativePath>../parent/pom.xml</relativePath>
-        <version>3.5-SNAPSHOT</version>
+        <version>3.6-SNAPSHOT</version>
     </parent>
     <scm>
         <url>http://java.freehep.org/svn/repos/hps/list/java/trunk/crawler/</url>

Modified: java/branches/jeremy-dev/datacat-client/pom.xml
 =============================================================================
--- java/branches/jeremy-dev/datacat-client/pom.xml	(original)
+++ java/branches/jeremy-dev/datacat-client/pom.xml	Thu Feb 11 17:15:20 2016
@@ -7,7 +7,7 @@
         <groupId>org.hps</groupId>
         <artifactId>hps-parent</artifactId>
         <relativePath>../parent/pom.xml</relativePath>
-        <version>3.5-SNAPSHOT</version>
+        <version>3.6-SNAPSHOT</version>
     </parent>
     <scm>
         <url>http://java.freehep.org/svn/repos/hps/list/java/trunk/datacat-client/</url>

Modified: java/branches/jeremy-dev/detector-data/pom.xml
 =============================================================================
--- java/branches/jeremy-dev/detector-data/pom.xml	(original)
+++ java/branches/jeremy-dev/detector-data/pom.xml	Thu Feb 11 17:15:20 2016
@@ -8,7 +8,7 @@
         <groupId>org.hps</groupId>
         <artifactId>hps-parent</artifactId>
         <relativePath>../parent/pom.xml</relativePath>
-        <version>3.5-SNAPSHOT</version>
+        <version>3.6-SNAPSHOT</version>
     </parent>
     <scm>
         <url>http://java.freehep.org/svn/repos/hps/list/java/trunk/detector-data/</url>

Modified: java/branches/jeremy-dev/detector-model/pom.xml
 =============================================================================
--- java/branches/jeremy-dev/detector-model/pom.xml	(original)
+++ java/branches/jeremy-dev/detector-model/pom.xml	Thu Feb 11 17:15:20 2016
@@ -8,7 +8,7 @@
         <groupId>org.hps</groupId>
         <artifactId>hps-parent</artifactId>
         <relativePath>../parent/pom.xml</relativePath>
-        <version>3.5-SNAPSHOT</version>
+        <version>3.6-SNAPSHOT</version>
     </parent>
     <build>
         <plugins>

Modified: java/branches/jeremy-dev/distribution/pom.xml
 =============================================================================
--- java/branches/jeremy-dev/distribution/pom.xml	(original)
+++ java/branches/jeremy-dev/distribution/pom.xml	Thu Feb 11 17:15:20 2016
@@ -13,7 +13,7 @@
         <groupId>org.hps</groupId>
         <artifactId>hps-parent</artifactId>
         <relativePath>../parent/pom.xml</relativePath>
-        <version>3.5-SNAPSHOT</version>
+        <version>3.6-SNAPSHOT</version>
     </parent>    
     <scm>
         <url>http://java.freehep.org/svn/repos/hps/list/java/trunk/distribution/</url>
@@ -80,7 +80,7 @@
                         <binFileExtensions>
                                 <unix>.sh</unix>
                             </binFileExtensions>
-                            <extraJvmArguments>-Djava.util.logging.config.class=org.hps.logging.config.DefaultLoggingConfig</extraJvmArguments>
+                            <extraJvmArguments>-Xmx2g -Djava.util.logging.config.class=org.hps.logging.config.DefaultLoggingConfig</extraJvmArguments>
                             <programs>
                                 <program>
                                     <mainClass>org.hps.evio.EvioToLcio</mainClass>

Modified: java/branches/jeremy-dev/ecal-event-display/pom.xml
 =============================================================================
--- java/branches/jeremy-dev/ecal-event-display/pom.xml	(original)
+++ java/branches/jeremy-dev/ecal-event-display/pom.xml	Thu Feb 11 17:15:20 2016
@@ -7,7 +7,7 @@
         <groupId>org.hps</groupId>
         <artifactId>hps-parent</artifactId>
         <relativePath>../parent/pom.xml</relativePath>
-        <version>3.5-SNAPSHOT</version>
+        <version>3.6-SNAPSHOT</version>
     </parent>
     <scm>
         <url>http://java.freehep.org/svn/repos/hps/list/java/trunk/ecal-event-display/</url>

Modified: java/branches/jeremy-dev/ecal-readout-sim/pom.xml
 =============================================================================
--- java/branches/jeremy-dev/ecal-readout-sim/pom.xml	(original)
+++ java/branches/jeremy-dev/ecal-readout-sim/pom.xml	Thu Feb 11 17:15:20 2016
@@ -8,7 +8,7 @@
         <groupId>org.hps</groupId>
         <artifactId>hps-parent</artifactId>
         <relativePath>../parent/pom.xml</relativePath>
-        <version>3.5-SNAPSHOT</version>
+        <version>3.6-SNAPSHOT</version>
     </parent>
     <scm>
         <url>http://java.freehep.org/svn/repos/hps/list/java/trunk/ecal-readout-sim/</url>

Modified: java/branches/jeremy-dev/ecal-recon/pom.xml
 =============================================================================
--- java/branches/jeremy-dev/ecal-recon/pom.xml	(original)
+++ java/branches/jeremy-dev/ecal-recon/pom.xml	Thu Feb 11 17:15:20 2016
@@ -8,7 +8,7 @@
         <groupId>org.hps</groupId>
         <artifactId>hps-parent</artifactId>
         <relativePath>../parent/pom.xml</relativePath>
-        <version>3.5-SNAPSHOT</version>
+        <version>3.6-SNAPSHOT</version>
     </parent>
     <scm>
         <url>http://java.freehep.org/svn/repos/hps/list/java/trunk/ecal-recon/</url>

Modified: java/branches/jeremy-dev/ecal-recon/src/main/java/org/hps/recon/ecal/FADCGenericHit.java
 =============================================================================
--- java/branches/jeremy-dev/ecal-recon/src/main/java/org/hps/recon/ecal/FADCGenericHit.java	(original)
+++ java/branches/jeremy-dev/ecal-recon/src/main/java/org/hps/recon/ecal/FADCGenericHit.java	Thu Feb 11 17:15:20 2016
@@ -24,6 +24,14 @@
         this.slot = slot;
         this.channel = channel;
         this.data = data;
+    }
+    
+    public FADCGenericHit(GenericObject object) {
+        this.readoutMode = getReadoutMode(object);
+        this.crate = getCrate(object);
+        this.slot = getSlot(object);
+        this.channel = getChannel(object);
+        this.data = getData(object);
     }
 
     @Override
@@ -114,5 +122,5 @@
             data[i] = object.getIntVal(i+4);
         }
         return data;
-    }
+    }    
 }

Modified: java/branches/jeremy-dev/evio/pom.xml
 =============================================================================
--- java/branches/jeremy-dev/evio/pom.xml	(original)
+++ java/branches/jeremy-dev/evio/pom.xml	Thu Feb 11 17:15:20 2016
@@ -8,7 +8,7 @@
         <groupId>org.hps</groupId>
         <artifactId>hps-parent</artifactId>
         <relativePath>../parent/pom.xml</relativePath>
-        <version>3.5-SNAPSHOT</version>
+        <version>3.6-SNAPSHOT</version>
     </parent>
     <scm>
         <url>http://java.freehep.org/svn/repos/hps/list/java/trunk/evio/</url>

Modified: java/branches/jeremy-dev/evio/src/main/java/org/hps/evio/EvioToLcio.java
 =============================================================================
--- java/branches/jeremy-dev/evio/src/main/java/org/hps/evio/EvioToLcio.java	(original)
+++ java/branches/jeremy-dev/evio/src/main/java/org/hps/evio/EvioToLcio.java	Thu Feb 11 17:15:20 2016
@@ -22,6 +22,7 @@
 import org.apache.commons.cli.Options;
 import org.apache.commons.cli.ParseException;
 import org.apache.commons.cli.DefaultParser;
+import org.apache.commons.cli.PosixParser;
 import org.freehep.record.source.NoSuchRecordException;
 import org.hps.conditions.database.DatabaseConditionsManager;
 import org.hps.job.JobManager;
@@ -71,7 +72,7 @@
  * @author Jeremy McCormick <[log in to unmask]>
  * @author Sho Uemura <[log in to unmask]>
  */
-public class EvioToLcio {
+public final class EvioToLcio {
 
     /**
      * The default steering resource, which basically does nothing except print event numbers.
@@ -113,6 +114,7 @@
      */
     private static Options OPTIONS = new Options();
     static {
+        OPTIONS.addOption(new Option("h", false, "print help and exit"));
         OPTIONS.addOption(new Option("d", true, "detector name (required)"));
         OPTIONS.getOption("d").setRequired(true);
         OPTIONS.addOption(new Option("f", true, "text file containing a list of EVIO files"));
@@ -251,19 +253,25 @@
     }
 
     public void parse(String[] args) {
-        // Parse the command line options.
+        
         if (args.length == 0) {
             this.printUsage();
         }
-        final CommandLineParser parser = new DefaultParser();
+        
+        final CommandLineParser parser = new PosixParser();
         CommandLine cl = null;
         try {
             cl = parser.parse(OPTIONS, args);
         } catch (final ParseException e) {
             throw new RuntimeException("Problem parsing command line options.", e);
         }
+        
+        if (cl.hasOption("h")) {
+            this.printUsage();
+        }
 
         // Set the log level.
+        // TODO: Remove this argument; use java logging prop instead.
         if (cl.hasOption("L")) {
             final Level level = Level.parse(cl.getOptionValue("L").toUpperCase());
 

Modified: java/branches/jeremy-dev/evio/src/main/java/org/hps/evio/RfFitterDriver.java
 =============================================================================
--- java/branches/jeremy-dev/evio/src/main/java/org/hps/evio/RfFitterDriver.java	(original)
+++ java/branches/jeremy-dev/evio/src/main/java/org/hps/evio/RfFitterDriver.java	Thu Feb 11 17:15:20 2016
@@ -1,9 +1,4 @@
 package org.hps.evio;
-
-import java.util.ArrayList;
-import java.util.List;
-import java.util.logging.Level;
-import java.util.logging.Logger;
 
 import hep.aida.IAnalysisFactory;
 import hep.aida.IDataPointSet;
@@ -11,7 +6,9 @@
 import hep.aida.IFitResult;
 import hep.aida.IFitter;
 import hep.aida.IFunction;
-import hep.aida.IFunctionFactory;
+
+import java.util.ArrayList;
+import java.util.List;
 
 import org.hps.recon.ecal.FADCGenericHit;
 import org.lcsim.event.EventHeader;
@@ -19,145 +16,156 @@
 import org.lcsim.util.Driver;
 import org.lcsim.util.aida.AIDA;
 
-/*
+/**
  * Extract RF time from waveform and put into lcsim event.
  */
 public class RfFitterDriver extends Driver {
 
-	static final double NOISE=2.0; // units = FADC
-	static final int CRATE=46;
-	static final int SLOT=13;
-	static final int CHANNELS[]={0,1};
-	static final double NSPERSAMPLE=4;
-		
+    private static final double NOISE = 2.0; // units = FADC
+    private static final int CRATE = 46;
+    private static final int SLOT = 13;
+    private static final int CHANNELS[] = {0, 1};
+    private static final double NSPERSAMPLE = 4;
 
-	// boilerplate:
-    AIDA aida = AIDA.defaultInstance();
-    IAnalysisFactory analysisFactory = aida.analysisFactory();
-    IFunctionFactory functionFactory = analysisFactory.createFunctionFactory(null);
-    IFitFactory fitFactory = analysisFactory.createFitFactory();
-    IFitter fitter=fitFactory.createFitter();
-    IDataPointSet fitData=aida.analysisFactory().createDataPointSetFactory(null).create("RF ADC DataPointSet", 2);
-    
+    // boilerplate:
+    private AIDA aida = AIDA.defaultInstance();
+    private IAnalysisFactory analysisFactory = aida.analysisFactory();
+    //private IFunctionFactory functionFactory = analysisFactory.createFunctionFactory(null);
+    private IFitFactory fitFactory = analysisFactory.createFitFactory();
+    private IFitter fitter = fitFactory.createFitter();
+    private IDataPointSet fitData = aida.analysisFactory().createDataPointSetFactory(null).create("RF ADC DataPointSet", 2);
+
     // the function used to fit the RF pulse:
-    IFunction fitFunction=new RfFitFunction();
+    private IFunction fitFunction = new RfFitFunction();
 
-    /*
+    /**
      * Check the event for an RF pulse, and, if found, fit it to get RF time.
      */
-	public void process(EventHeader event) {
-		
-		List <RfHit> rfHits=new ArrayList<RfHit>();
-		
-		boolean foundRf=false;
-		double times[]={-9999,-9999};
-		
-		if (event.hasCollection(GenericObject.class,"FADCGenericHits")) {
+    public void process(EventHeader event) {
 
-			for (GenericObject gob : event.get(GenericObject.class,"FADCGenericHits")) {
-				FADCGenericHit hit=(FADCGenericHit)gob;
+        List<RfHit> rfHits = new ArrayList<RfHit>();
 
-				// ignore hits not from proper RF signals based on crate/slot/channel:
-				if (hit.getCrate()!=CRATE || hit.getSlot()!=SLOT) continue;
-				
-				for (int ii=0; ii<CHANNELS.length; ii++) {
-					if (hit.getChannel()==CHANNELS[ii]) {
+        boolean foundRf = false;
+        double times[] = {-9999, -9999};
 
-						// we found a RF readout, fit it:
-						foundRf=true;
-						times[ii] = fitPulse(hit);
+        if (event.hasCollection(GenericObject.class, "FADCGenericHits")) {
 
-						break;
-					}
-				}
-			}
-		}
-    	if (foundRf) rfHits.add(new RfHit(times));
-    	event.put("RFHits", rfHits, RfHit.class, 1);
-	}
+            for (GenericObject gob : event.get(GenericObject.class, "FADCGenericHits")) {
 
-	/*
-	 * Perform the fit to the RF pulse:
-	 */
-	public double fitPulse(FADCGenericHit hit) {
-		fitData.clear();
-		final int adcSamples[]=hit.getData();
-		//stores the number of peaks
-		int iz=0;
-		int peakBin[]={-999,-999};
-		final int threshold = 300;	
-		double fitThresh[]={-999,-999};
-		double pedVal[]={-999,-999};
-		
-		// Look for bins containing the peaks (2-3 peaks)
-		for (int ii=4; ii<adcSamples.length; ii++) {
-			// After 2 peaks, stop looking for more
-			if (iz==2){break;}
-			if ((adcSamples[ii+1]>0) && (adcSamples[ii-1]>0) && (adcSamples[ii]>threshold) && ii>8){
-				if ((adcSamples[ii]>adcSamples[ii+1]) && (adcSamples[ii]>=adcSamples[ii-1]) ){
-					
-					peakBin[iz]=ii;
-					iz++;
-				}
-			}
-		}
-		
-		
-		int jj=0;
-		// Choose peak closest to center of window (second peak, ik=1)
-		final int ik=1;
-		pedVal[ik] = (adcSamples[peakBin[ik]-6]+adcSamples[peakBin[ik]-7]+adcSamples[peakBin[ik]-8]+adcSamples[peakBin[ik]-9])/4.0;
-		fitThresh[ik]= (adcSamples[peakBin[ik]]+pedVal[ik])/3.0;
-	
-		// Initial values: we find/fit 3 points:
-		double itime[] = {-999,-999,-999};
-		double ifadc[] = {-999,-999,-999};
-		
-		// Find the points of the peak bin to peak bin-5 
-		for (int ll=0; ll<5; ll++){	
-			if ((adcSamples[peakBin[ik]-5+ll]) > fitThresh[ik]){
-				// One point is below fit threshold and two points are above	
-				if(jj==0 && (adcSamples[peakBin[ik]-6+ll] > pedVal[ik])){
-					final int zz=fitData.size();	
-					fitData.addPoint();
-					itime[zz] = peakBin[ik]-6+ll;
-					ifadc[zz] = adcSamples[peakBin[ik]-6+ll];
-					fitData.point(zz).coordinate(0).setValue(peakBin[ik]-6+ll);
-					fitData.point(zz).coordinate(1).setValue(adcSamples[peakBin[ik]-6+ll]);
-					fitData.point(zz).coordinate(1).setErrorMinus(NOISE);
-					fitData.point(zz).coordinate(1).setErrorPlus(NOISE);		
-					jj++;	
-				}
-				final int zz=fitData.size();	
-				fitData.addPoint();
-				itime[zz] = peakBin[ik]-5+ll;
-				ifadc[zz] = adcSamples[peakBin[ik]-5+ll];
-				fitData.point(zz).coordinate(0).setValue(peakBin[ik]-5+ll);
-				fitData.point(zz).coordinate(1).setValue(adcSamples[peakBin[ik]-5+ll]);
-				fitData.point(zz).coordinate(1).setErrorMinus(NOISE);
-				fitData.point(zz).coordinate(1).setErrorPlus(NOISE);
-					
-				jj++;
-				if (jj==3) {break;}					
-			}
-		}
-		
-		double islope = ((double)(ifadc[2]-ifadc[0]))/(itime[2]-itime[0]);
-		double icept = ifadc[1] - islope*itime[1];
-		// Initialize fit parameters:
-		fitFunction.setParameter("intercept",icept);
-		fitFunction.setParameter("slope",islope);
+                FADCGenericHit hit = null;
 
-		// this used to be turned on somewhere else on every event, dunno if it still is:
-		//Logger.getLogger("org.freehep.math.minuit").setLevel(Level.OFF);
-	
-		IFitResult fitResults = fitter.fit(fitData,fitFunction);
-		
-		// Read the time value at this location on the fit:
-		double halfVal = (adcSamples[peakBin[1]]+pedVal[1])/2.0;	
-	
-		return NSPERSAMPLE*(halfVal-fitResults.fittedParameter("intercept"))/fitResults.fittedParameter("slope");
-			
-	}
-		
+                /* Added conversion from GenericObject in case loading back from an LCIO file. --JM */
+                if (gob instanceof FADCGenericHit) {
+                    hit = (FADCGenericHit) gob;
+                } else {
+                    hit = new FADCGenericHit(gob);
+                }
+
+                // ignore hits not from proper RF signals based on crate/slot/channel:
+                if (hit.getCrate() != CRATE || hit.getSlot() != SLOT)
+                    continue;
+
+                for (int ii = 0; ii < CHANNELS.length; ii++) {
+                    if (hit.getChannel() == CHANNELS[ii]) {
+
+                        // we found a RF readout, fit it:
+                        foundRf = true;
+                        times[ii] = fitPulse(hit);
+
+                        break;
+                    }
+                }
+            }
+        }
+        if (foundRf) {
+            rfHits.add(new RfHit(times));
+        }
+        event.put("RFHits", rfHits, RfHit.class, 1);
+    }
+
+    /**
+     * Perform the fit to the RF pulse:
+     */
+    private double fitPulse(FADCGenericHit hit) {
+        fitData.clear();
+        final int adcSamples[] = hit.getData();
+        // stores the number of peaks
+        int iz = 0;
+        int peakBin[] = {-999, -999};
+        final int threshold = 300;
+        double fitThresh[] = {-999, -999};
+        double pedVal[] = {-999, -999};
+
+        // Look for bins containing the peaks (2-3 peaks)
+        for (int ii = 4; ii < adcSamples.length; ii++) {
+            // After 2 peaks, stop looking for more
+            if (iz == 2) {
+                break;
+            }
+            if ((adcSamples[ii + 1] > 0) && (adcSamples[ii - 1] > 0) && (adcSamples[ii] > threshold) && ii > 8) {
+                if ((adcSamples[ii] > adcSamples[ii + 1]) && (adcSamples[ii] >= adcSamples[ii - 1])) {
+
+                    peakBin[iz] = ii;
+                    iz++;
+                }
+            }
+        }
+
+        int jj = 0;
+        // Choose peak closest to center of window (second peak, ik=1)
+        final int ik = 1;
+        pedVal[ik] = (adcSamples[peakBin[ik] - 6] + adcSamples[peakBin[ik] - 7] + adcSamples[peakBin[ik] - 8] + adcSamples[peakBin[ik] - 9]) / 4.0;
+        fitThresh[ik] = (adcSamples[peakBin[ik]] + pedVal[ik]) / 3.0;
+
+        // Initial values: we find/fit 3 points:
+        double itime[] = {-999, -999, -999};
+        double ifadc[] = {-999, -999, -999};
+
+        // Find the points of the peak bin to peak bin-5
+        for (int ll = 0; ll < 5; ll++) {
+            if ((adcSamples[peakBin[ik] - 5 + ll]) > fitThresh[ik]) {
+                // One point is below fit threshold and two points are above
+                if (jj == 0 && (adcSamples[peakBin[ik] - 6 + ll] > pedVal[ik])) {
+                    final int zz = fitData.size();
+                    fitData.addPoint();
+                    itime[zz] = peakBin[ik] - 6 + ll;
+                    ifadc[zz] = adcSamples[peakBin[ik] - 6 + ll];
+                    fitData.point(zz).coordinate(0).setValue(peakBin[ik] - 6 + ll);
+                    fitData.point(zz).coordinate(1).setValue(adcSamples[peakBin[ik] - 6 + ll]);
+                    fitData.point(zz).coordinate(1).setErrorMinus(NOISE);
+                    fitData.point(zz).coordinate(1).setErrorPlus(NOISE);
+                    jj++;
+                }
+                final int zz = fitData.size();
+                fitData.addPoint();
+                itime[zz] = peakBin[ik] - 5 + ll;
+                ifadc[zz] = adcSamples[peakBin[ik] - 5 + ll];
+                fitData.point(zz).coordinate(0).setValue(peakBin[ik] - 5 + ll);
+                fitData.point(zz).coordinate(1).setValue(adcSamples[peakBin[ik] - 5 + ll]);
+                fitData.point(zz).coordinate(1).setErrorMinus(NOISE);
+                fitData.point(zz).coordinate(1).setErrorPlus(NOISE);
+
+                jj++;
+                if (jj == 3) {
+                    break;
+                }
+            }
+        }
+
+        double islope = ((double) (ifadc[2] - ifadc[0])) / (itime[2] - itime[0]);
+        double icept = ifadc[1] - islope * itime[1];
+        // Initialize fit parameters:
+        fitFunction.setParameter("intercept", icept);
+        fitFunction.setParameter("slope", islope);
+
+        // this used to be turned on somewhere else on every event, dunno if it still is:
+        // Logger.getLogger("org.freehep.math.minuit").setLevel(Level.OFF);
+
+        IFitResult fitResults = fitter.fit(fitData, fitFunction);
+
+        // Read the time value at this location on the fit:
+        double halfVal = (adcSamples[peakBin[1]] + pedVal[1]) / 2.0;
+
+        return NSPERSAMPLE * (halfVal - fitResults.fittedParameter("intercept")) / fitResults.fittedParameter("slope");
+    }
 }

Modified: java/branches/jeremy-dev/integration-tests/pom.xml
 =============================================================================
--- java/branches/jeremy-dev/integration-tests/pom.xml	(original)
+++ java/branches/jeremy-dev/integration-tests/pom.xml	Thu Feb 11 17:15:20 2016
@@ -23,7 +23,7 @@
         <dependency>
             <groupId>org.hps</groupId>
             <artifactId>hps-test-data</artifactId>
-            <version>1.0.0-SNAPSHOT</version>
+            <version>1.0-SNAPSHOT</version>
             <scope>test</scope>
             <classifier>archive</classifier>
             <type>jar</type>
@@ -31,7 +31,7 @@
         <dependency>
             <groupId>org.hps</groupId>
             <artifactId>hps-test-data</artifactId>
-            <version>1.0.0-SNAPSHOT</version>
+            <version>1.0-SNAPSHOT</version>
             <scope>test</scope>
             <type>jar</type>
         </dependency>
@@ -51,7 +51,8 @@
                 <version>2.19</version>
                 <configuration>
                     <argLine>-server -Xmx2g -XX:MaxPermSize=512m -Djava.util.logging.config.class=org.hps.logging.config.TestLoggingConfig</argLine>
-                    <forkMode>always</forkMode>
+                    <forkCount>1</forkCount>
+                    <reuseForks>false</reuseForks>
                     <includes>
                         <include>org/hps/test/it/*Test.java</include>
                     </includes>

Modified: java/branches/jeremy-dev/integration-tests/src/test/java/org/hps/test/it/DataQualityMonitorTest.java
 =============================================================================
--- java/branches/jeremy-dev/integration-tests/src/test/java/org/hps/test/it/DataQualityMonitorTest.java	(original)
+++ java/branches/jeremy-dev/integration-tests/src/test/java/org/hps/test/it/DataQualityMonitorTest.java	Thu Feb 11 17:15:20 2016
@@ -17,16 +17,14 @@
 
     private static final String CLASS_NAME = DataQualityMonitorTest.class.getSimpleName();
     private static final File OUTPUT_DIR = new File("./target/test-output/" + CLASS_NAME);
-    private static final File OUTPUT_FILE = new File(OUTPUT_DIR.getAbsolutePath() + File.separator + CLASS_NAME);
-    private static final File AIDA_FILE = new File(OUTPUT_FILE.getAbsolutePath() + ".aida");
+    private static final File OUTPUT_FILE = new File(OUTPUT_DIR.getAbsolutePath() + File.separator + CLASS_NAME + ".aida");
     private static final String STEERING_RESOURCE = "/org/hps/steering/test/DataQualityTest.lcsim";
 
     public void setUp() {
         
-        System.out.println("Setting up DQM Test");
         // Delete files if they already exist.     
-        if (AIDA_FILE.exists())
-            AIDA_FILE.delete();
+        if (OUTPUT_FILE.exists())
+            OUTPUT_FILE.delete();
 
         // Create output dir.
         OUTPUT_DIR.mkdirs();
@@ -36,11 +34,12 @@
 
     public void testQualityMonitor() {
         File dataFile = new TestDataUtility().getTestData("DataQualityMonitorTest.slcio");
-        System.out.println("running data quality job with steering resource " + STEERING_RESOURCE);
+        System.out.println("running data quality job with steering resource " + STEERING_RESOURCE + " ...");
         JobManager jobManager = new JobManager();
         jobManager.addVariableDefinition("outputFile", OUTPUT_FILE.getPath());
         jobManager.addInputFile(dataFile);
         jobManager.setup(STEERING_RESOURCE);
         jobManager.run();
+        System.out.println("Done!");
     }
 }

Modified: java/branches/jeremy-dev/integration-tests/src/test/java/org/hps/test/it/ReconSteeringTest.java
 =============================================================================
--- java/branches/jeremy-dev/integration-tests/src/test/java/org/hps/test/it/ReconSteeringTest.java	(original)
+++ java/branches/jeremy-dev/integration-tests/src/test/java/org/hps/test/it/ReconSteeringTest.java	Thu Feb 11 17:15:20 2016
@@ -1,100 +1,41 @@
 package org.hps.test.it;
 
 import java.io.File;
-import java.io.IOException;
-import java.net.URL;
 
 import junit.framework.TestCase;
 
 import org.hps.data.test.TestDataUtility;
 import org.hps.job.JobManager;
-import org.lcsim.util.cache.FileCache;
 import org.lcsim.util.test.TestUtil.TestOutputFile;
 
 /**
- * Test that production MC recon steering files are not broken by running an LCSim job on them
- * using an LCIO file.
+ * Run a test job on Eng Run 2015 data.
  * 
  * @author Jeremy McCormick, SLAC
  */
 public class ReconSteeringTest extends TestCase {
     
-    /**
-     * List of steering files to run.
-     */
-    final static String[] STEERING_FILES = {
-        "EngineeringRun2014EcalRecon_Pass1.lcsim",
-        "EngineeringRun2014EcalRecon.lcsim",
-        "EngineeringRun2015EcalRecon.lcsim",
-        "EngineeringRun2015FullRecon.lcsim",
-        "EngineeringRun2015FullRecon_Pass2.lcsim",
-        "EngineeringRun2015HitRecon.lcsim",
-        "HPSTrackingDefaultsRecon.lcsim"
-    };
-            
-    /**
-     * Test recon steering files.
-     * @throws Exception if any error occurs running the recon job
-     */
-    public void testSteeringFiles() {
+    final static String STEERING_RESOURCE = "/org/hps/steering/recon/EngineeringRun2015FullRecon.lcsim";
+              
+    public void testReconSteering() throws Exception {
         
-        File inputFile = new TestDataUtility().getTestData("tritrigv1-egsv3-triv2-g4v1_s2d6_HPS-EngRun2015-Nominal-v3_3.4.0_pairs1_1.slcio");
-        
-        for (String steeringFile : STEERING_FILES) {
-            
-            // Run the reconstruction steering file.
-            File outputFile = null;
-            try {
-                outputFile = new TestOutputFile(new File(steeringFile).getName().replace(".lcsim", ""));
-                runSteering("/org/hps/steering/recon/" + steeringFile, inputFile, outputFile);
-            } catch (Throwable e) {
-                System.err.println("Job with steering " + steeringFile + " failed!");
-                throw new RuntimeException("Recon job failed.", e);
-            }
-            
-            Runtime runtime = Runtime.getRuntime();
-            
-            int mb = 1024 * 1024;
-            
-            System.out.println("total memory: " + runtime.totalMemory() / mb);
-            System.out.println("free memory: " + runtime.freeMemory() / mb);
-            System.out.println("max memory: " + runtime.maxMemory() / mb);
-            System.out.println("used memory: " + (runtime.totalMemory() - runtime.freeMemory()) / mb);
-            
-            System.gc();
-            
-            // Create DQM output for QA.
-            try {
-                runDQM(outputFile);
-            } catch (Throwable e) {
-                throw new RuntimeException("The DQM job failed.", e);
-            }
-        }
-    }
-       
-    private void runSteering(String steeringFile, File inputFile, File outputFile) {
-        System.out.println("Testing steering file " + steeringFile + " ...");
+        File inputFile = new TestDataUtility().getTestData("run_5772_data_only.slcio");
+                           
+        File outputFile = null;
+        outputFile = new TestOutputFile(new File(STEERING_RESOURCE).getName().replace(".lcsim", ""));
+        System.out.println("Testing steering " + STEERING_RESOURCE + " ...");
         JobManager job = new JobManager();
         job.addVariableDefinition("outputFile", outputFile.getPath());
-        job.addVariableDefinition("detector", "HPS-EngRun2015-Nominal-v3");
-        job.addVariableDefinition("run", "5772");
-        job.addVariableDefinition("isMC", "true");
         job.addInputFile(inputFile);
-        job.setup(steeringFile);
+        job.setup(STEERING_RESOURCE);
         job.run();
-        System.out.println("Job with steering " + steeringFile + " successfully processed " + job.getLCSimLoop().getTotalCountableConsumed() + " events.");
-    }
-    
-    private void runDQM(File outputFile) {
-        System.out.println("Running DQM on " + outputFile.getPath() + " ...");
-        JobManager job = new JobManager();
-        File inputFile = new File(outputFile.getPath() + ".slcio");
-        job.addInputFile(inputFile);
-        job.addVariableDefinition("outputFile", outputFile.getPath().replace(".slcio", ""));
-        job.setup("/org/hps/steering/production/DataQualityRecon.lcsim");
-        job.run();
-        System.out.println("DQM processed " + job.getLCSimLoop().getTotalCountableConsumed() + " events from " + outputFile + ".");
+        System.out.println("Done processing " + job.getLCSimLoop().getTotalCountableConsumed() + " events.");
+                            
+        Runtime runtime = Runtime.getRuntime();
+        int mb = 1024 * 1024; 
+        System.out.printf("total memory: %d mb\n", runtime.totalMemory() / mb); 
+        System.out.printf("free memory: %d mb\n", runtime.freeMemory() / mb);
+        System.out.printf("max memory: %d mb\n", runtime.maxMemory() / mb);
+        System.out.printf("used memory: %d mb\n", (runtime.totalMemory() - runtime.freeMemory()) / mb);
     }
 }
-
-

Modified: java/branches/jeremy-dev/integration-tests/src/test/resources/org/hps/steering/test/DataQualityTest.lcsim
 =============================================================================
--- java/branches/jeremy-dev/integration-tests/src/test/resources/org/hps/steering/test/DataQualityTest.lcsim	(original)
+++ java/branches/jeremy-dev/integration-tests/src/test/resources/org/hps/steering/test/DataQualityTest.lcsim	Thu Feb 11 17:15:20 2016
@@ -18,13 +18,12 @@
         <driver name="CleanupDriver"/>
     </execute>    
     <drivers>    
-        <!--    <driver name="DQMDatabaseDriver" type="org.hps.analysis.dataquality.DQMDatabaseDriver"/> -->
         <driver name="EventMarkerDriver" type="org.lcsim.job.EventMarkerDriver">
-            <eventInterval>1</eventInterval>
+            <eventInterval>100</eventInterval>
         </driver>        
         <driver name="RawTrackerHitSensorSetup" type="org.lcsim.recon.tracking.digitization.sisim.config.RawTrackerHitSensorSetup"/>
         <driver name="AidaSaveDriver" type="org.lcsim.job.AidaSaveDriver">
-            <outputFileName>${outputFile}.root</outputFileName>
+            <outputFileName>${outputFile}</outputFileName>
         </driver>
         <driver name="SVTMonitoring" type="org.hps.analysis.dataquality.SvtMonitoring">
             <overwriteDB>false</overwriteDB>
@@ -48,6 +47,5 @@
             <overwriteDB>false</overwriteDB>
         </driver>
         <driver name="CleanupDriver" type="org.lcsim.recon.tracking.digitization.sisim.config.ReadoutCleanupDriver"/>
-
     </drivers>
 </lcsim>

Modified: java/branches/jeremy-dev/job/pom.xml
 =============================================================================
--- java/branches/jeremy-dev/job/pom.xml	(original)
+++ java/branches/jeremy-dev/job/pom.xml	Thu Feb 11 17:15:20 2016
@@ -7,7 +7,7 @@
         <groupId>org.hps</groupId>
         <artifactId>hps-parent</artifactId>
         <relativePath>../parent/pom.xml</relativePath>
-        <version>3.5-SNAPSHOT</version>
+        <version>3.6-SNAPSHOT</version>
     </parent>
     <scm>
         <url>http://java.freehep.org/svn/repos/hps/list/java/trunk/job/</url>

Modified: java/branches/jeremy-dev/logging/pom.xml
 =============================================================================
--- java/branches/jeremy-dev/logging/pom.xml	(original)
+++ java/branches/jeremy-dev/logging/pom.xml	Thu Feb 11 17:15:20 2016
@@ -7,7 +7,7 @@
         <groupId>org.hps</groupId>
         <artifactId>hps-parent</artifactId>
         <relativePath>../parent/pom.xml</relativePath>
-        <version>3.5-SNAPSHOT</version>
+        <version>3.6-SNAPSHOT</version>
     </parent>
     <scm>
         <url>http://java.freehep.org/svn/repos/hps/list/java/trunk/logging/</url>

Modified: java/branches/jeremy-dev/logging/src/main/resources/org/hps/logging/config/logging.properties
 =============================================================================
--- java/branches/jeremy-dev/logging/src/main/resources/org/hps/logging/config/logging.properties	(original)
+++ java/branches/jeremy-dev/logging/src/main/resources/org/hps/logging/config/logging.properties	Thu Feb 11 17:15:20 2016
@@ -16,6 +16,9 @@
 # configure the console handler
 java.util.logging.ConsoleHandler.level = ALL
 java.util.logging.ConsoleHandler.formatter = java.util.logging.SimpleFormatter
+
+# turn minuit logging off
+org.freehep.math.minuit = OFF
 
 # lcsim job
 org.lcsim.job.level = CONFIG

Modified: java/branches/jeremy-dev/logging/src/main/resources/org/hps/logging/config/test_logging.properties
 =============================================================================
--- java/branches/jeremy-dev/logging/src/main/resources/org/hps/logging/config/test_logging.properties	(original)
+++ java/branches/jeremy-dev/logging/src/main/resources/org/hps/logging/config/test_logging.properties	Thu Feb 11 17:15:20 2016
@@ -16,7 +16,10 @@
 # configure the console handler
 java.util.logging.ConsoleHandler.level = ALL
 java.util.logging.ConsoleHandler.formatter = java.util.logging.SimpleFormatter
-f
+
+# turn minuit off
+org.freehep.math.minuit = OFF
+
 # lcsim job
 org.lcsim.job.level = WARNING
 org.lcsim.job.EventMarkerDriver.level = OFF

Modified: java/branches/jeremy-dev/monitoring-app/pom.xml
 =============================================================================
--- java/branches/jeremy-dev/monitoring-app/pom.xml	(original)
+++ java/branches/jeremy-dev/monitoring-app/pom.xml	Thu Feb 11 17:15:20 2016
@@ -7,7 +7,7 @@
         <groupId>org.hps</groupId>
         <artifactId>hps-parent</artifactId>
         <relativePath>../parent/pom.xml</relativePath>
-        <version>3.5-SNAPSHOT</version>
+        <version>3.6-SNAPSHOT</version>
     </parent>
     <scm>
         <url>http://java.freehep.org/svn/repos/hps/list/java/trunk/monitoring-app/</url>

Modified: java/branches/jeremy-dev/monitoring-app/src/main/java/org/hps/monitoring/application/MonitoringApplication.java
 =============================================================================
--- java/branches/jeremy-dev/monitoring-app/src/main/java/org/hps/monitoring/application/MonitoringApplication.java	(original)
+++ java/branches/jeremy-dev/monitoring-app/src/main/java/org/hps/monitoring/application/MonitoringApplication.java	Thu Feb 11 17:15:20 2016
@@ -954,7 +954,7 @@
 
             // Add listener to push conditions changes to conditions panel.
             final List<ConditionsListener> conditionsListeners = new ArrayList<ConditionsListener>();
-            conditionsListeners.add(this.frame.getConditionsPanel().new ConditionsPanelListener());
+            //conditionsListeners.add(this.frame.getConditionsPanel().new ConditionsPanelListener());
 
             // Instantiate the event processing wrapper.
             this.processing = new EventProcessing(this, processors, drivers, conditionsListeners);

Modified: java/branches/jeremy-dev/monitoring-app/src/main/java/org/hps/monitoring/application/MonitoringApplicationFrame.java
 =============================================================================
--- java/branches/jeremy-dev/monitoring-app/src/main/java/org/hps/monitoring/application/MonitoringApplicationFrame.java	(original)
+++ java/branches/jeremy-dev/monitoring-app/src/main/java/org/hps/monitoring/application/MonitoringApplicationFrame.java	Thu Feb 11 17:15:20 2016
@@ -37,7 +37,7 @@
     /**
      * The conditions panel.
      */
-    private final ConditionsPanel conditionsPanel;
+    //private final ConditionsPanel conditionsPanel;
 
     /**
      * The dashboard panel.
@@ -150,8 +150,8 @@
         tableTabbedPane.addTab("Trigger Diagnostics", this.triggerPanel);
 
         // Add the conditions panel.
-        this.conditionsPanel = new ConditionsPanel();
-        tableTabbedPane.addTab("Detector Conditions", this.conditionsPanel);
+        //this.conditionsPanel = new ConditionsPanel();
+        //tableTabbedPane.addTab("Detector Conditions", this.conditionsPanel);
 
         // Vertical split pane in left panel.
         this.leftSplitPane = new JSplitPane(JSplitPane.VERTICAL_SPLIT, this.dashboardPanel, tableTabbedPane);
@@ -209,9 +209,9 @@
      *
      * @return the conditions panel
      */
-    ConditionsPanel getConditionsPanel() {
-        return this.conditionsPanel;
-    }
+    //ConditionsPanel getConditionsPanel() {
+    //    return this.conditionsPanel;
+    //}
 
     /**
      * Get the panel for the dashboard.

Modified: java/branches/jeremy-dev/monitoring-drivers/pom.xml
 =============================================================================
--- java/branches/jeremy-dev/monitoring-drivers/pom.xml	(original)
+++ java/branches/jeremy-dev/monitoring-drivers/pom.xml	Thu Feb 11 17:15:20 2016
@@ -7,7 +7,7 @@
         <groupId>org.hps</groupId>
         <artifactId>hps-parent</artifactId>
         <relativePath>../parent/pom.xml</relativePath>
-        <version>3.5-SNAPSHOT</version>
+        <version>3.6-SNAPSHOT</version>
     </parent>
     <scm>
         <url>http://java.freehep.org/svn/repos/hps/list/java/trunk/monitoring-drivers/</url>

Modified: java/branches/jeremy-dev/monitoring-util/pom.xml
 =============================================================================
--- java/branches/jeremy-dev/monitoring-util/pom.xml	(original)
+++ java/branches/jeremy-dev/monitoring-util/pom.xml	Thu Feb 11 17:15:20 2016
@@ -7,7 +7,7 @@
         <groupId>org.hps</groupId>
         <artifactId>hps-parent</artifactId>
         <relativePath>../parent/pom.xml</relativePath>
-        <version>3.5-SNAPSHOT</version>
+        <version>3.6-SNAPSHOT</version>
     </parent>
     <scm>
         <url>http://java.freehep.org/svn/repos/hps/list/java/trunk/monitoring-util/</url>

Modified: java/branches/jeremy-dev/monitoring-util/src/main/java/org/hps/monitoring/plotting/ExportPdf.java
 =============================================================================
--- java/branches/jeremy-dev/monitoring-util/src/main/java/org/hps/monitoring/plotting/ExportPdf.java	(original)
+++ java/branches/jeremy-dev/monitoring-util/src/main/java/org/hps/monitoring/plotting/ExportPdf.java	Thu Feb 11 17:15:20 2016
@@ -8,6 +8,9 @@
 import java.awt.image.BufferedImage;
 import java.io.FileOutputStream;
 import java.io.IOException;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.Comparator;
 import java.util.List;
 import java.util.logging.Logger;
 
@@ -70,9 +73,23 @@
         } catch (DocumentException e) {
             throw new IOException(e);
         }
+        
+        // Sort plotters so output appears the same every time.
+        ArrayList<IPlotter> sortedPlotters = new ArrayList<IPlotter>(plotters);
+        Collections.sort(sortedPlotters, new Comparator<IPlotter>() {
+           public int compare(IPlotter object1, IPlotter object2) {
+               if (object1.title() == null) {
+                   return -1;
+               }
+               if (object2.title() == null) {
+                   return 1;
+               }
+               return object1.title().compareTo(object2.title());
+           }
+        });
 
         // Write the graphics from each plotter on a new page.
-        for (IPlotter plotter : plotters) {
+        for (IPlotter plotter : sortedPlotters) {
             plotter.refresh();
             document.newPage();
             writePage(document, writer, plotter);

Modified: java/branches/jeremy-dev/parent/pom.xml
 =============================================================================
--- java/branches/jeremy-dev/parent/pom.xml	(original)
+++ java/branches/jeremy-dev/parent/pom.xml	Thu Feb 11 17:15:20 2016
@@ -6,13 +6,13 @@
     <groupId>org.hps</groupId>
     <artifactId>hps-parent</artifactId>
     <packaging>pom</packaging>
-    <version>3.5-SNAPSHOT</version>
+    <version>3.6-SNAPSHOT</version>
     <name>parent</name>
     <description>HPS Java parent POM</description>
     <properties>
         <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
         <org.lcsim.cacheDir>${user.home}</org.lcsim.cacheDir>
-        <lcsimVersion>3.1.7-SNAPSHOT</lcsimVersion>
+        <lcsimVersion>3.2-SNAPSHOT</lcsimVersion>
         <skipSite>false</skipSite>
         <skipPlugin>false</skipPlugin>
     </properties>
@@ -142,117 +142,117 @@
             <dependency>
                 <groupId>org.hps</groupId>
                 <artifactId>hps-util</artifactId>
-                <version>${project.version}</version>
+                <version>3.6-SNAPSHOT</version>
             </dependency>
             <dependency>
                 <groupId>org.hps</groupId>
                 <artifactId>hps-detector-data</artifactId>
-                <version>${project.version}</version>
+                <version>3.6-SNAPSHOT</version>
             </dependency>
             <dependency>
                 <groupId>org.hps</groupId>
                 <artifactId>hps-detector-model</artifactId>
-                <version>${project.version}</version>
+                <version>3.6-SNAPSHOT</version>
             </dependency>
             <dependency>
                 <groupId>org.hps</groupId>
                 <artifactId>hps-conditions</artifactId>
-                <version>${project.version}</version>
+                <version>3.6-SNAPSHOT</version>
             </dependency>
             <dependency>
                 <groupId>org.hps</groupId>
                 <artifactId>hps-ecal-recon</artifactId>
-                <version>${project.version}</version>
+                <version>3.6-SNAPSHOT</version>
             </dependency>
             <dependency>
                 <groupId>org.hps</groupId>
                 <artifactId>hps-ecal-readout-sim</artifactId>
-                <version>${project.version}</version>
+                <version>3.6-SNAPSHOT</version>
             </dependency>
             <dependency>
                 <groupId>org.hps</groupId>
                 <artifactId>hps-tracking</artifactId>
-                <version>${project.version}</version>
+                <version>3.6-SNAPSHOT</version>
             </dependency>
             <dependency>
                 <groupId>org.hps</groupId>
                 <artifactId>hps-evio</artifactId>
-                <version>${project.version}</version>
+                <version>3.6-SNAPSHOT</version>
             </dependency>
             <dependency>
                 <groupId>org.hps</groupId>
                 <artifactId>hps-recon</artifactId>
-                <version>${project.version}</version>
+                <version>3.6-SNAPSHOT</version>
             </dependency>
             <dependency>
                 <groupId>org.hps</groupId>
                 <artifactId>hps-analysis</artifactId>
-                <version>${project.version}</version>
+                <version>3.6-SNAPSHOT</version>
             </dependency>
             <dependency>
                 <groupId>org.hps</groupId>
                 <artifactId>hps-monitoring-drivers</artifactId>
-                <version>${project.version}</version>
+                <version>3.6-SNAPSHOT</version>
             </dependency>
             <dependency>
                 <groupId>org.hps</groupId>
                 <artifactId>hps-monitoring-app</artifactId>
-                <version>${project.version}</version>
+                <version>3.6-SNAPSHOT</version>
             </dependency>
             <dependency>
                 <groupId>org.hps</groupId>
                 <artifactId>hps-users</artifactId>
-                <version>${project.version}</version>
+                <version>3.6-SNAPSHOT</version>
             </dependency>
             <dependency>
                 <groupId>org.hps</groupId>
                 <artifactId>hps-steering-files</artifactId>
-                <version>${project.version}</version>
+                <version>3.6-SNAPSHOT</version>
             </dependency>
             <dependency>
                 <groupId>org.hps</groupId>
                 <artifactId>hps-distribution</artifactId>
-                <version>${project.version}</version>
+                <version>3.6-SNAPSHOT</version>
             </dependency>
             <dependency>
                 <groupId>org.hps</groupId>
                 <artifactId>hps-ecal-event-display</artifactId>
-                <version>${project.version}</version>
+                <version>3.6-SNAPSHOT</version>
             </dependency>
             <dependency>
                 <groupId>org.hps</groupId>
                 <artifactId>hps-record-util</artifactId>
-                <version>${project.version}</version>
+                <version>3.6-SNAPSHOT</version>
             </dependency>
             <dependency>
                 <groupId>org.hps</groupId>
                 <artifactId>hps-monitoring-util</artifactId>
-                <version>${project.version}</version>
+                <version>3.6-SNAPSHOT</version>
             </dependency>
             <dependency>
                 <groupId>org.hps</groupId>
                 <artifactId>hps-run-database</artifactId>
-                <version>${project.version}</version>
+                <version>3.6-SNAPSHOT</version>
             </dependency>
             <dependency>
                 <groupId>org.hps</groupId>
                 <artifactId>hps-crawler</artifactId>
-                <version>${project.version}</version>
+                <version>3.6-SNAPSHOT</version>
             </dependency>
             <dependency>
                 <groupId>org.hps</groupId>
                 <artifactId>hps-datacat-client</artifactId>
-                <version>${project.version}</version>
+                <version>3.6-SNAPSHOT</version>
             </dependency>
             <dependency>
                 <groupId>org.hps</groupId>
                 <artifactId>hps-job</artifactId>
-                <version>${project.version}</version>
+                <version>3.6-SNAPSHOT</version>
             </dependency>
             <dependency>
                 <groupId>org.hps</groupId>
                 <artifactId>hps-logging</artifactId>
-                <version>${project.version}</version>
+                <version>3.6-SNAPSHOT</version>
             </dependency>
             <!-- Next are external dependencies used in multiple modules. -->
             <dependency>
@@ -283,7 +283,7 @@
             <dependency>
                 <groupId>jfreechart-aida-experimental</groupId>
                 <artifactId>jfreechart-aida-experimental</artifactId>
-                <version>1.8-SNAPSHOT</version>
+                <version>1.8</version>
                 <exclusions>
                     <exclusion>
                         <groupId>jdom</groupId>
@@ -346,7 +346,7 @@
                 <artifactId>maven-surefire-report-plugin</artifactId>
                 <version>2.17</version>
             </plugin>
-            <!--
+            <!--            
             <plugin>
                 <groupId>org.kuali.maven.plugins</groupId>
                 <artifactId>graph-maven-plugin</artifactId>
@@ -411,7 +411,7 @@
                         </lifecycleMappingMetadata>
                     </configuration>
                 </plugin>
-                <!--
+                <!--                
                 <plugin>
                     <groupId>org.kuali.maven.plugins</groupId>
                     <artifactId>graph-maven-plugin</artifactId>

Modified: java/branches/jeremy-dev/plugin/pom.xml
 =============================================================================
--- java/branches/jeremy-dev/plugin/pom.xml	(original)
+++ java/branches/jeremy-dev/plugin/pom.xml	Thu Feb 11 17:15:20 2016
@@ -7,7 +7,7 @@
         <groupId>org.hps</groupId>
         <artifactId>hps-parent</artifactId>
         <relativePath>../parent/pom.xml</relativePath>
-        <version>3.5-SNAPSHOT</version>
+        <version>3.6-SNAPSHOT</version>
     </parent>
     <scm>
         <url>http://java.freehep.org/svn/repos/hps/list/java/trunk/plugin/</url>

Modified: java/branches/jeremy-dev/pom.xml
 =============================================================================
--- java/branches/jeremy-dev/pom.xml	(original)
+++ java/branches/jeremy-dev/pom.xml	Thu Feb 11 17:15:20 2016
@@ -9,7 +9,7 @@
         <groupId>org.hps</groupId>
         <artifactId>hps-parent</artifactId>
         <relativePath>parent/pom.xml</relativePath>
-        <version>3.5-SNAPSHOT</version>
+        <version>3.6-SNAPSHOT</version>
     </parent>
     <scm>
         <url>svn://svn.freehep.org/hps/java/trunk/</url>

Modified: java/branches/jeremy-dev/recon/pom.xml
 =============================================================================
--- java/branches/jeremy-dev/recon/pom.xml	(original)
+++ java/branches/jeremy-dev/recon/pom.xml	Thu Feb 11 17:15:20 2016
@@ -8,7 +8,7 @@
         <groupId>org.hps</groupId>
         <artifactId>hps-parent</artifactId>
         <relativePath>../parent/pom.xml</relativePath>
-        <version>3.5-SNAPSHOT</version>
+        <version>3.6-SNAPSHOT</version>
     </parent>
     <scm>
         <url>http://java.freehep.org/svn/repos/hps/list/java/trunk/recon/</url>

Modified: java/branches/jeremy-dev/recon/src/main/java/org/hps/recon/utils/TrackClusterMatcher.java
 =============================================================================
--- java/branches/jeremy-dev/recon/src/main/java/org/hps/recon/utils/TrackClusterMatcher.java	(original)
+++ java/branches/jeremy-dev/recon/src/main/java/org/hps/recon/utils/TrackClusterMatcher.java	Thu Feb 11 17:15:20 2016
@@ -69,7 +69,7 @@
      * Rafo's parameterization of cluster-seed x/y position residuals as function of energy.
      * 
      * Derived using GBL/seed tracks, non-analytic extrapolation, uncorrected cluster positions,
-     * and EngRun2015-Nominal-v3-4-fieldmap detector.
+     * and EngRun2015-Nominal-v4-4-fieldmap detector.
      * 
      *  f = p0+e*(p1+e*(p2+e*(p3+e*(p4+e*p5))))
      */
@@ -83,14 +83,14 @@
     private static final double dxMeanBotElecGBL[] = {-6.63558, 83.7763,-460.451, 1275.63,-1702.83, 873.913 };
     private static final double dxSigmBotElecGBL[] = { 47.0029,-411.784, 1586.52,-3083.37, 2985.58,-1145.53 };
     
-    private static final double dyMeanTopPosiGBL[] = { 0.71245, 5.57585,-6.50267,-8.21688, 39.8607,-43.9661 };
+    private static final double dyMeanTopPosiGBL[] = { 0.31245, 5.57585,-6.50267,-8.21688, 39.8607,-43.9661 };
     private static final double dySigmTopPosiGBL[] = { 33.0213,-275.174, 1168.77,-2642.34, 3045.52,-1406.21 };
-    private static final double dyMeanBotPosiGBL[] = {-5.532,   74.9738,-383.972, 977.849,-1250.28, 637.75  };
+    private static final double dyMeanBotPosiGBL[] = {-7.032,   74.9738,-383.972, 977.849,-1250.28, 637.75  };
     private static final double dySigmBotPosiGBL[] = { 19.019, -83.9253, 133.813, 119.883,-546.951, 405.207 };
     
-    private static final double dyMeanTopElecGBL[] = { 2.88498,-20.4101, 62.9689, 25.6386,-259.957, 207.145 };
+    private static final double dyMeanTopElecGBL[] = { 2.48498,-20.4101, 62.9689, 25.6386,-259.957, 207.145 };
     private static final double dySigmTopElecGBL[] = { 8.65583, 120.676,-1166.43, 3811.72,-5383.19, 2787.42 };
-    private static final double dyMeanBotElecGBL[] = {-9.02276, 112.329,-489.761, 953.037,-829.96,  260.772 };
+    private static final double dyMeanBotElecGBL[] = {-10.5228, 112.329,-489.761, 953.037,-829.96,  260.772 };
     private static final double dySigmBotElecGBL[] = { 23.4856,-108.19,  158.7,   189.261,-682.034, 459.15  };
 
     private static final double dxMeanTopPosiSeed[] ={ 11.6245,-28.5061, 13.0332, 59.9465,-21.1014,-63.6126 };
@@ -103,17 +103,15 @@
     private static final double dxMeanBotElecSeed[] ={-3.44302, 12.4687, 4.09878,-30.0057,-13.3151, 40.2707 };
     private static final double dxSigmBotElecSeed[] ={ 48.4089,-385.494, 1341.37,-2271.52, 1814.02,-526.555 };
 
-    private static final double dyMeanTopPosiSeed[] ={-0.127741,10.4944, -18.242,-12.9155, 81.0116,-73.9773 };
+    private static final double dyMeanTopPosiSeed[] ={-0.527741,10.4944, -18.242,-12.9155, 81.0116,-73.9773 };
     private static final double dySigmTopPosiSeed[] ={ 37.3097, -357.55, 1607.03,-3709.55, 4282.36,-1957.91 };
-    private static final double dyMeanBotPosiSeed[] ={ 2.24392,-55.2003,  405.04,-1250.64, 1731.47,-887.262 };
+    private static final double dyMeanBotPosiSeed[] ={ 0.74392,-55.2003,  405.04,-1250.64, 1731.47,-887.262 };
     private static final double dySigmBotPosiSeed[] ={ 25.5776,-199.731,  754.59,-1408.72, 1240.36,-400.912 };
 
-    private static final double dyMeanTopElecSeed[] ={ 3.25429,-24.0858, 69.0145, 34.1213,-297.752, 239.939 };
+    private static final double dyMeanTopElecSeed[] ={ 2.85429,-24.0858, 69.0145, 34.1213,-297.752, 239.939 };
     private static final double dySigmTopElecSeed[] ={ 19.9111,-53.2699,-261.915,  1593.2,-2774.01, 1605.54 };
-    private static final double dyMeanBotElecSeed[] ={-7.72963, 98.1346, -427.91, 840.225,-751.188, 250.792 };
+    private static final double dyMeanBotElecSeed[] ={-9.22963, 98.1346, -427.91, 840.225,-751.188, 250.792 };
     private static final double dySigmBotElecSeed[] ={ 21.7909,-85.4757,-56.9423, 977.522,-1902.05, 1137.92 };
-
-
     /**
      * Z position to start extrapolation from
      */

Modified: java/branches/jeremy-dev/record-util/pom.xml
 =============================================================================
--- java/branches/jeremy-dev/record-util/pom.xml	(original)
+++ java/branches/jeremy-dev/record-util/pom.xml	Thu Feb 11 17:15:20 2016
@@ -7,7 +7,7 @@
         <groupId>org.hps</groupId>
         <artifactId>hps-parent</artifactId>
         <relativePath>../parent/pom.xml</relativePath>
-        <version>3.5-SNAPSHOT</version>
+        <version>3.6-SNAPSHOT</version>
     </parent>
     <scm>
         <url>http://java.freehep.org/svn/repos/hps/list/java/trunk/record-util/</url>

Modified: java/branches/jeremy-dev/run-database/pom.xml
 =============================================================================
--- java/branches/jeremy-dev/run-database/pom.xml	(original)
+++ java/branches/jeremy-dev/run-database/pom.xml	Thu Feb 11 17:15:20 2016
@@ -7,7 +7,7 @@
         <groupId>org.hps</groupId>
         <artifactId>hps-parent</artifactId>
         <relativePath>../parent/pom.xml</relativePath>
-        <version>3.5-SNAPSHOT</version>
+        <version>3.6-SNAPSHOT</version>
     </parent>
     <scm>
         <url>http://java.freehep.org/svn/repos/hps/list/java/trunk/run-database/</url>

Modified: java/branches/jeremy-dev/steering-files/pom.xml
 =============================================================================
--- java/branches/jeremy-dev/steering-files/pom.xml	(original)
+++ java/branches/jeremy-dev/steering-files/pom.xml	Thu Feb 11 17:15:20 2016
@@ -8,7 +8,7 @@
         <groupId>org.hps</groupId>
         <artifactId>hps-parent</artifactId>
         <relativePath>../parent/pom.xml</relativePath>
-        <version>3.5-SNAPSHOT</version>
+        <version>3.6-SNAPSHOT</version>
     </parent>
     <scm>
         <url>http://java.freehep.org/svn/repos/hps/list/java/trunk/steering-files/</url>

Modified: java/branches/jeremy-dev/steering-files/src/main/resources/org/hps/steering/monitoring/TriggerDiagnosticsMonitoring.lcsim
 =============================================================================
--- java/branches/jeremy-dev/steering-files/src/main/resources/org/hps/steering/monitoring/TriggerDiagnosticsMonitoring.lcsim	(original)
+++ java/branches/jeremy-dev/steering-files/src/main/resources/org/hps/steering/monitoring/TriggerDiagnosticsMonitoring.lcsim	Thu Feb 11 17:15:20 2016
@@ -19,7 +19,7 @@
         <driver name="ConditionsDriver" type="org.hps.conditions.ConditionsDriver">
             <tag>pass0</tag>
         </driver>        
-        <driver name="DAQConfig" type="org.hps.recon.ecal.daqconfig.DAQConfigDriver"/>        
+        <driver name="DAQConfig" type="org.hps.record.daqconfig.DAQConfigDriver"/>
         <driver name="EcalRawConverter" type="org.hps.recon.ecal.EcalRawConverterDriver">
             <ecalCollectionName>EcalCalHits</ecalCollectionName>
             <use2014Gain>false</use2014Gain>

Modified: java/branches/jeremy-dev/steering-files/src/main/resources/org/hps/steering/production/DataQualityRecon.lcsim
 =============================================================================
--- java/branches/jeremy-dev/steering-files/src/main/resources/org/hps/steering/production/DataQualityRecon.lcsim	(original)
+++ java/branches/jeremy-dev/steering-files/src/main/resources/org/hps/steering/production/DataQualityRecon.lcsim	Thu Feb 11 17:15:20 2016
@@ -59,6 +59,7 @@
         <driver name="TridentMonitoringGBLPairs1"/>     
         <!--           -->
         <driver name="AidaSaveDriver"/>
+        <driver name="AidaToRootSaveDriver"/>
         <driver name="CleanupDriver"/>
     </execute>    
     <drivers>    
@@ -68,7 +69,10 @@
         <driver name="RawTrackerHitSensorSetup" type="org.lcsim.recon.tracking.digitization.sisim.config.RawTrackerHitSensorSetup">
             <readoutCollections>SVTRawTrackerHits</readoutCollections>
         </driver>
-        <driver name="AidaSaveDriver" type="org.lcsim.job.AidaSaveDriver">
+         <driver name="AidaSaveDriver" type="org.lcsim.job.AidaSaveDriver">
+            <outputFileName>${outputFile}.aida</outputFileName>
+        </driver>
+        <driver name="AidaToRootSaveDriver" type="org.lcsim.job.AidaSaveDriver">
             <outputFileName>${outputFile}.root</outputFileName>
         </driver>
 

Modified: java/branches/jeremy-dev/tracking/pom.xml
 =============================================================================
--- java/branches/jeremy-dev/tracking/pom.xml	(original)
+++ java/branches/jeremy-dev/tracking/pom.xml	Thu Feb 11 17:15:20 2016
@@ -8,7 +8,7 @@
         <groupId>org.hps</groupId>
         <artifactId>hps-parent</artifactId>
         <relativePath>../parent/pom.xml</relativePath>
-        <version>3.5-SNAPSHOT</version>
+        <version>3.6-SNAPSHOT</version>
     </parent>
     <scm>
         <url>http://java.freehep.org/svn/repos/hps/list/java/trunk/tracking/</url>

Modified: java/branches/jeremy-dev/users/pom.xml
 =============================================================================
--- java/branches/jeremy-dev/users/pom.xml	(original)
+++ java/branches/jeremy-dev/users/pom.xml	Thu Feb 11 17:15:20 2016
@@ -7,7 +7,7 @@
         <groupId>org.hps</groupId>
         <artifactId>hps-parent</artifactId>
         <relativePath>../parent/pom.xml</relativePath>
-        <version>3.5-SNAPSHOT</version>
+        <version>3.6-SNAPSHOT</version>
     </parent>
     <scm>
         <url>http://java.freehep.org/svn/repos/hps/list/java/trunk/users/</url>

Modified: java/branches/jeremy-dev/users/src/main/java/org/hps/users/meeg/SvtChargeIntegrator.java
 =============================================================================
--- java/branches/jeremy-dev/users/src/main/java/org/hps/users/meeg/SvtChargeIntegrator.java	(original)
+++ java/branches/jeremy-dev/users/src/main/java/org/hps/users/meeg/SvtChargeIntegrator.java	Thu Feb 11 17:15:20 2016
@@ -129,6 +129,9 @@
                         if (tiTimeOffset == 0) {
                             continue;
                         }
+                        if (tiTimeOffset == 0) {
+                            continue;
+                        }
                     }
 
                     try {

Modified: java/branches/jeremy-dev/users/src/main/java/org/hps/users/spaul/StyleUtil.java
 =============================================================================
--- java/branches/jeremy-dev/users/src/main/java/org/hps/users/spaul/StyleUtil.java	(original)
+++ java/branches/jeremy-dev/users/src/main/java/org/hps/users/spaul/StyleUtil.java	Thu Feb 11 17:15:20 2016
@@ -1,9 +1,16 @@
 package org.hps.users.spaul;
 
+import java.awt.Component;
+import java.awt.Graphics2D;
+import java.awt.image.BufferedImage;
+import java.io.File;
 import java.util.Arrays;
 import java.util.Random;
 
+import javax.imageio.ImageIO;
+
 import hep.aida.*;
+import hep.aida.ref.plotter.PlotterUtilities;
 
 public class StyleUtil {
 	
@@ -27,14 +34,16 @@
 		r.style().yAxisStyle().labelStyle().setFontSize(16);
 		r.style().yAxisStyle().tickLabelStyle().setFontSize(14);
 		//	r.style().statisticsBoxStyle().set;
-		//System.out.println(Arrays.toString());
+		//debugPrint());
 		r.style().legendBoxStyle().textStyle().setFontSize(16);
+		r.style().statisticsBoxStyle().textStyle().setFontSize(16);
 		
 		//r.style().dataStyle().showInLegendBox(false);
+		
 		r.style().legendBoxStyle().boxStyle().foregroundStyle().setOpacity(1.0);
 		r.style().dataStyle().fillStyle().setParameter("colorMapScheme", "rainbow");
 		r.style().dataStyle().fillStyle().setParameter("showZeroHeightBins", "false");
-		System.out.println(Arrays.toString(r.style().statisticsBoxStyle().boxStyle().backgroundStyle().availableParameters()));
+		//debugPrint(r.style().dataStyle().availableParameters()));
 		//r.style().dataStyle().setParameter("showDataInStatisticsBox", "false");
 		r.style().setParameter("hist2DStyle", "colorMap");
 		//r.style().dataBoxStyle()
@@ -62,15 +71,38 @@
 		region.style().dataStyle().lineStyle().setParameter("colorRotateMethod", "regionOverlayIndex");
 		region.style().dataStyle().lineStyle().setParameter("colorRotate", "black, red, green, blue");
 		region.style().dataStyle().lineStyle().setParameter("thickness", "3");
+		region.style().dataStyle().outlineStyle().setParameter("colorRotateMethod", "regionOverlayIndex");
+		//debug = true;
+		debugPrint(region.style().dataStyle().outlineStyle().availableParameters());
+		region.style().dataStyle().outlineStyle().setParameter("colorRotate", "black, red, green, blue");
+		region.style().dataStyle().outlineStyle().setParameter("thickness", "3");
 		region.style().dataStyle().errorBarStyle().setVisible(false);
-		System.out.println(Arrays.toString(region.style().dataStyle().lineStyle().availableParameterOptions("colorRotateMethod")));
+		debugPrint(region.style().dataStyle().lineStyle().availableParameterOptions("colorRotateMethod"));
+	}
+	public static void setSize(IPlotter p, int width, int height){
+		p.setParameter("plotterWidth", width +"");
+		p.setParameter("plotterHeight", height +"");
 	}
 	
+	public static void setLog(IPlotterRegion r){
+
+		r.style().yAxisStyle().setParameter("scale", "log");
+		r.style().gridStyle().setUnits(100);
+		debugPrint(r.style().gridStyle().availableParameters()); 
+		
+	}
+	static boolean debug = false;
+	static void debugPrint(String[] stuff){
+		if(debug){
+			System.out.println(Arrays.toString(stuff));
+		}
+	}
 	public static void main(String arg[]){
 		IAnalysisFactory af = IAnalysisFactory.create();
 		IHistogramFactory hf = af.createHistogramFactory(af.createTreeFactory().create());
 		
 		IPlotter p = af.createPlotterFactory().create();
+		debugPrint(p.availableParameters());
 		p.createRegions(1, 2);
 		IHistogram1D h1 = hf.createHistogram1D("blah", 100, -5, 5);
 		IHistogram1D h2 = hf.createHistogram1D("bleh", 100, -5, 5);
@@ -99,9 +131,65 @@
 		
 		p.show();
 		
+		p = af.createPlotterFactory().create();
+		debugPrint(p.availableParameters());
+		p.createRegions(1, 2);
+		
+		p.region(0).plot(h1);
+		setLog(p.region(0));
+		
+		
+		
+		p.show();
 	}
 	public static void hideLegendAndStats(IPlotterRegion r){
 		r.style().statisticsBoxStyle().setVisible(false);
 		r.style().legendBoxStyle().setVisible(false);
 	}
+	public static IPlotterStyle smoothCurveStyle(IPlotterFactory pf) {
+		IPlotterStyle style = pf.createPlotterStyle();
+		debugPrint(style.dataStyle().availableParameters());
+		
+		style.dataStyle().markerStyle().setVisible(false);
+		
+		return style;
+	}
+	public static void writeToFile(IPlotter plotter, String filename, String filetype){
+		//JFrame frame = new JFrame()
+		//if(plotter.)
+		//plotter.hide();
+		//plotter.show();
+		//PlotterUtilities.writeToFile(plotter, filename, filetype, null);
+		try {
+			
+			
+			//PlotterUtilities.writeToFile(plotter, filename, filetype, null);
+			Thread.sleep(1000);
+			Component c = PlotterUtilities.componentForPlotter(plotter);
+			int width = Integer.parseInt(plotter.parameterValue("plotterWidth"));
+			int height = Integer.parseInt(plotter.parameterValue("plotterHeight"));
+			if(width <= 0){
+				width = 300;
+				plotter.setParameter("plotterWidth", Integer.toString(width));
+			}
+			if(height <= 0){
+				height = 300;
+
+				plotter.setParameter("plotterHeight", Integer.toString(height));
+			}
+			
+			c.setSize(width, height);
+			BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
+			Graphics2D graphics2D = image.createGraphics();
+			c.paint(graphics2D);
+			ImageIO.write(image,filetype, new File(filename));
+			Runtime.getRuntime().exec("open " + filename);
+			System.out.println("saved");
+			
+		} catch (Exception e) {
+			// TODO Auto-generated catch block
+			e.printStackTrace();
+		}
+		
+	}
 }

Modified: java/branches/jeremy-dev/users/src/main/java/org/hps/users/spaul/SumEverything.java
 =============================================================================
--- java/branches/jeremy-dev/users/src/main/java/org/hps/users/spaul/SumEverything.java	(original)
+++ java/branches/jeremy-dev/users/src/main/java/org/hps/users/spaul/SumEverything.java	Thu Feb 11 17:15:20 2016
@@ -3,6 +3,7 @@
 import java.io.File;
 import java.io.IOException;
 import java.util.ArrayList;
+import java.util.Arrays;
 
 import hep.aida.IAnalysisFactory;
 import hep.aida.IHistogram1D;
@@ -17,12 +18,14 @@
 // and put the sums in separate files in a folder called "sums"
 public class SumEverything {
 	public static void main(String arg[]) throws IllegalArgumentException, IOException{
-		if(arg.length > 1){
+		if(arg.length == 2){
 			twoArg(arg[0], arg[1]);
 		}
-		else{
+		else if(arg.length == 1){
 			oneArg(arg[0]);
 		}
+		else 
+			polyArg(arg);
 	}
 	static void oneArg(final String indir) throws IllegalArgumentException, IOException{
 		File outdir = new File(indir + "/sums");
@@ -64,53 +67,76 @@
 
 	}
 
+
+
 	static void twoArg(String indir, String out) throws IllegalArgumentException, IOException{
+
+		run(new File(indir).listFiles(), out);
+	}
+	static void run(File[] files, String out) throws IllegalArgumentException, IOException{
+		
+		long timeStart = System.currentTimeMillis();
 		IAnalysisFactory af = IAnalysisFactory.create();
 		ITreeFactory tf = af.createTreeFactory();
 		new File(out).delete();
-		ITree tree0 = tf.create(out, "xml", false, true);
-		IHistogramFactory hf = af.createHistogramFactory(tree0);
-
-
+		ITree outtree = tf.create(out, "xml", false, true);
+		//IHistogramFactory hf = af.createHistogramFactory(outtree);
 		int j = 0;
-		for(File s : new File(indir).listFiles()){
+		String names[] = null;
+		for(File s : files){
 			if(!s.getAbsolutePath().endsWith("aida"))
 				continue;
 			try{
-				ITree tree = af.createTreeFactory().create(s.getAbsolutePath(),"xml");
+				ITree tree = tf.create(s.getAbsolutePath(),"xml");
 
 
 				if(j == 0){
-					String [] names = tree.listObjectNames();
-					tree0.mount("/tmp", tree, "/");
+					names = tree.listObjectNames("/", true);
+					System.out.println(Arrays.toString(names));
+					outtree.mount("/tmp", tree, "/");
 					for(String name : names){
+						if(name.endsWith("/")){
+							outtree.mkdirs(name);
+							continue;
+						}
 						Object o = tree.find(name);
 						if(o instanceof IHistogram1D || o instanceof IHistogram2D)
-							tree0.cp("/tmp/" + name, name);
+							outtree.cp("/tmp" + name, name);
 					}
-					tree0.unmount("/tmp");
-					tree.close();
+					outtree.unmount("/tmp");
+					//tree.close();
 
 				}
 				else{
 					//tree.
-					String [] names = tree.listObjectNames();
-					tree0.mount("/tmp", tree, "/");
+					//String [] names = tree.listObjectNames("/", true);
+					//outtree.mount("/tmp", tree, "/");
+					//System.out.println(Arrays.toString(names));
 					for(String name : names){
-						Object o = tree.find(name);
-						if(o instanceof IHistogram1D)
-							((IHistogram1D)tree0.find(name)).add((IHistogram1D)o);
+						if(name.endsWith("/"))
+							continue;
+						Object o = null;
+						try{
+							o = tree.find(name);
+						} catch(IllegalArgumentException e){
+							System.err.println("couldn't find object called " + name +  " in file " + s);
+							throw e;
+						}
+						if(o instanceof IHistogram1D){
+							if(((IHistogram1D)o).allEntries() != 0)
+							((IHistogram1D)outtree.find(name)).add((IHistogram1D)o);
+						}
 						if(o instanceof IHistogram2D)
-							((IHistogram2D)tree0.find(name)).add((IHistogram2D)o);
+							if(((IHistogram2D)o).allEntries() != 0)
+							((IHistogram2D)outtree.find(name)).add((IHistogram2D)o);
 					}
-					tree0.unmount("/tmp");
-					tree.close();
+					//outtree.unmount("/tmp");
+					//tree.close();
 				}
 
 				tree.close();
 				j++;
-				System.out.println(j + " files have been read");
-
+				System.out.println(j + " files have been read (" +(System.currentTimeMillis()-timeStart)/j + " ms per event");
 
 			} catch(IllegalArgumentException e){
 				//print the filename
@@ -118,7 +144,28 @@
 
 				e.printStackTrace();
 			}
-			tree0.commit();
+
+			outtree.commit();
+			System.out.println("summed file " + out +" commited.  Total time = " + (System.currentTimeMillis()-timeStart)/1000 + " seconds");
+		}
+	}
+
+	static void polyArg(String[] arg) throws IllegalArgumentException, IOException{
+		ArrayList<File> files = new ArrayList<File>();
+		boolean nextIsOutput = false;
+		for(String a : arg){
+			if(a.equals("-o")){
+				nextIsOutput = true; 
+				continue;
+			}
+			if(nextIsOutput){
+				run(files.toArray(new File[0]), a);
+				nextIsOutput = false;
+				files.clear();
+				continue;
+			}
+			files.add(new File(a));
+
 		}
 	}
 }

Modified: java/branches/jeremy-dev/users/src/main/java/org/hps/users/spaul/feecc/ExtractFormFactors.java
 =============================================================================
--- java/branches/jeremy-dev/users/src/main/java/org/hps/users/spaul/feecc/ExtractFormFactors.java	(original)
+++ java/branches/jeremy-dev/users/src/main/java/org/hps/users/spaul/feecc/ExtractFormFactors.java	Thu Feb 11 17:15:20 2016
@@ -36,7 +36,8 @@
 
 			IDataPointSetFactory dpsf = af.createDataPointSetFactory(treeNew);
 
-			IPlotter p = af.createPlotterFactory().create(outpaths[config]);
+			IPlotterFactory pf = af.createPlotterFactory();
+			IPlotter p = pf.create(outpaths[config]);
 
 
 			int Nsets = arg.length/10;
@@ -152,7 +153,9 @@
 
 				//p.region(0).plot(dps_iso);
 			}
-			p.region(0).plot(dpsTheory);
+			
+			IPlotterStyle style = StyleUtil.smoothCurveStyle(pf);
+			p.region(0).plot(dpsTheory, style);
 			StyleUtil.stylize(p.region(0), "Form Factors", "Q^2 (GeV^2)", "|F(Q^2)|^2");
 			p.show();
 		}

Modified: java/branches/jeremy-dev/users/src/main/java/org/hps/users/spaul/feecc/FEESpectrumGenerator.java
 =============================================================================
--- java/branches/jeremy-dev/users/src/main/java/org/hps/users/spaul/feecc/FEESpectrumGenerator.java	(original)
+++ java/branches/jeremy-dev/users/src/main/java/org/hps/users/spaul/feecc/FEESpectrumGenerator.java	Thu Feb 11 17:15:20 2016
@@ -145,7 +145,7 @@
 			
 			thetaHist = hf.createHistogram1D("theta", "theta", thetaBins);
 			
-			EHist = hf.createHistogram1D("energy", 50, 0, 1.3);
+			EHist = hf.createHistogram1D("energy", 200, 0, 1.3);
 			IPlotter p = af.createPlotterFactory().create();
 			p.createRegions(2,1);
 			p.region(0).plot(thetaHist);
@@ -166,8 +166,9 @@
 			
 			if(phep[3] > .5*E){
 				StdhepEvent event = new StdhepEvent(nevhep, nhep, isthep, idhep, jmohep, jdahep, phep, vhep);
+				double smear = .02;
 				if(display)
-					EHist.fill(phep[3]*(1+random.nextGaussian()*.045));
+					EHist.fill(phep[3]*(1+random.nextGaussian()*smear));
 				writer.writeRecord(event);
 			}
 			else{ // if the event has enough energy loss,

Modified: java/branches/jeremy-dev/users/src/main/java/org/hps/users/spaul/feecc/MakeHistograms.java
 =============================================================================
--- java/branches/jeremy-dev/users/src/main/java/org/hps/users/spaul/feecc/MakeHistograms.java	(original)
+++ java/branches/jeremy-dev/users/src/main/java/org/hps/users/spaul/feecc/MakeHistograms.java	Thu Feb 11 17:15:20 2016
@@ -59,7 +59,7 @@
 			String input = arg[0];
 			String output = arg[1];
 			cb = new CustomBinning(new File(arg[2]));
-			if(arg.length == 5)
+			if(arg[arg.length -1].equals("display"))
 				display = true;
 			IAnalysisFactory af = IAnalysisFactory.create();
 			ITree tree = af.createTreeFactory().create(output,"xml",false,true);
@@ -73,7 +73,10 @@
 			hack.setDetectorName("HPS-EngRun2015-Nominal-v3");
 			hack.setFreeze(true);
 			hack.setRunNumber(Integer.parseInt(arg[3]));
+			
 			hack.initialize();
+			beamTiltY = Double.parseDouble(arg[4]);
+			beamTiltX = Double.parseDouble(arg[5]);
 			LCIOReader reader = new LCIOReader(new File(input));
 			//reader.open(input);
 			//reader.
@@ -98,13 +101,14 @@
 
 	static IHistogram2D h1, h2, h2a, h2b, h2c;
 	static IHistogram2D h4,h4a;
-	static IHistogram1D h3, h3a, h3_t, h3_b;
+	static IHistogram1D h3, /*h3a,*/ h3_t, h3_b;
 	static IHistogram1D h5, h5a; 
-	static IHistogram2D h6, h6a;
+	//static IHistogram2D h6, h6a;
 	static IHistogram1D h7, h7a;
 	static IHistogram1D h8;
 	static IHistogram1D h9_t, h9_b;
 	static IHistogram1D h10_t, h10_b;
+	private static IHistogram1D h4y;
 
 	private static void extractHistograms(ITree tree0) {
 		h1 = (IHistogram2D) tree0.find("theta vs energy");
@@ -115,7 +119,7 @@
 		h2c = (IHistogram2D) tree0.find("theta vs phi alt");
 
 		h3 = (IHistogram1D) tree0.find("theta");
-		h3a = (IHistogram1D) tree0.find("theta isolated ");
+		//h3a = (IHistogram1D) tree0.find("theta isolated ");
 		h3_t = (IHistogram1D) tree0.find("theta top");
 		h3_b = (IHistogram1D) tree0.find("theta bottom");
 		
@@ -125,8 +129,8 @@
 		h5 = (IHistogram1D) tree0.find("energy top");
 		h5 = (IHistogram1D) tree0.find("energy bottom");
 
-		h6 = (IHistogram2D) tree0.find("cluster");
-		h6a = (IHistogram2D) tree0.find("cluster matched");
+//		h6 = (IHistogram2D) tree0.find("cluster");
+//		h6a = (IHistogram2D) tree0.find("cluster matched");
 		h7 = (IHistogram1D) tree0.find("y top");
 		h7a = (IHistogram1D) tree0.find("y bottom");
 		h8 = (IHistogram1D) tree0.find("seed energy");
@@ -176,7 +180,7 @@
 		h2c = hf.createHistogram2D("theta vs phi alt", "theta vs phi alt", thetaBins, phiBins);
 
 		h3 = hf.createHistogram1D("theta", "theta", thetaBins);
-		h3a = hf.createHistogram1D("theta isolated ", "theta isolated", thetaBins);
+//		h3a = hf.createHistogram1D("theta isolated ", "theta isolated", thetaBins);
 
 		h3_t = hf.createHistogram1D("theta top", "theta top", thetaBins);
 		h3_b = hf.createHistogram1D("theta bottom", "theta bottom", thetaBins);
@@ -184,7 +188,8 @@
 		
 		h4 = hf.createHistogram2D("px\\/pz vs py\\/pz", 300, -.16, .24, 300, -.2, .2);
 		h4a = hf.createHistogram2D("px\\/pz vs py\\/pz cut", 300, -.16, .24, 300, -.2, .2);
-
+		h4y = hf.createHistogram1D("py\\pz", 1200, -.06, .06);
+		
 		h5 = hf.createHistogram1D("energy top", 75, 0, 1.5);
 		h5a = hf.createHistogram1D("energy bottom", 75, 0, 1.5);
 		
@@ -192,8 +197,8 @@
 		h9_t = hf.createHistogram1D("pz top", 75, 0, 1.5);
 		h9_b = hf.createHistogram1D("pz bottom", 75, 0, 1.5);
 		
-		h6 = hf.createHistogram2D("cluster", 47, -23.5, 23.5, 11, -5.5, 5.5);
-		h6a = hf.createHistogram2D("cluster matched", 47, -23.5, 23.5, 11, -5.5, 5.5);
+//		h6 = hf.createHistogram2D("cluster", 47, -23.5, 23.5, 11, -5.5, 5.5);
+//		h6a = hf.createHistogram2D("cluster matched", 47, -23.5, 23.5, 11, -5.5, 5.5);
 
 		h7 = hf.createHistogram1D("y top", 500, 0, 100);
 
@@ -210,12 +215,15 @@
 		p.createRegions(2,2);
 		p.region(0).plot(h2);
 		StyleUtil.stylize(p.region(0), "theta", "phi");
-		p.region(1).plot(h3a);
+//		p.region(1).plot(h3a);
 		StyleUtil.stylize(p.region(1), "theta", "# of particles");
-		p.region(2).plot(h3);
-		StyleUtil.stylize(p.region(2), "theta", "# of particles");
+		p.region(2).plot(h9_t);
+		p.region(2).plot(h9_b);
+		StyleUtil.noFillHistogramBars(p.region(2));
+		StyleUtil.stylize(p.region(2), "pztilt" ,"pztilt", "# of particles");
 		p.region(3).plot(h5);
 		p.region(3).plot(h5a);
+		StyleUtil.noFillHistogramBars(p.region(3));
 		StyleUtil.stylize(p.region(3), "energy", "# of particles");
 
 		p.show();
@@ -252,9 +260,9 @@
 
 		IPlotter p6 = pf.create("efficiency");
 		p6.createRegions(1,2);
-		p6.region(0).plot(h6);
+//		p6.region(0).plot(h6);
 		StyleUtil.stylize(p6.region(0), "ix", "iy");
-		p6.region(1).plot(h6a);
+//		p6.region(1).plot(h6a);
 		StyleUtil.stylize(p6.region(1), "ix", "iy");
 		p6.show();
 
@@ -279,15 +287,22 @@
 		p9.region(0).plot(h3_b);
 		StyleUtil.stylize(p9.region(0), "theta", "theta", "# of particles");
 		StyleUtil.noFillHistogramBars(p9.region(0));
-				StyleUtil.stylize(p6.region(1), "ix", "iy");
+				//StyleUtil.stylize(p6.region(1), "ix", "iy");
 		p9.show();
 		
 		IPlotter p10 = pf.create("seed energy");
 		//p6.createRegions(1,2);
+		p10.createRegions(2,1);
 		p10.region(0).plot(h8);
 		StyleUtil.stylize(p10.region(0), "seed energy", "seed energy (GeV)", "# of particles");
+		
+		p10.region(1).plot(h10_t);
+		p10.region(1).plot(h10_b);
+		StyleUtil.noFillHistogramBars(p10.region(1));
+		StyleUtil.stylize(p10.region(1), "clust size", "n ecal hits", "# of particles");
+		
 		//StyleUtil.noFillHistogramBars(p10.region(0));
-				StyleUtil.stylize(p6.region(1), "ix", "iy");
+				//StyleUtil.stylize(p6.region(1), "ix", "iy");
 		p10.show();
 
 	}
@@ -307,80 +322,37 @@
 		List<ReconstructedParticle> particles = event.get(ReconstructedParticle.class, "FinalStateParticles");
 		particles = RemoveDuplicateParticles.removeDuplicateParticles(particles);
 		outer : for(ReconstructedParticle p : particles){
-			//check if this is a duplicate particle (ie, different track same cluster)
-			/*for(ParticleInfo cand : candidates){
-				if(p.getEnergy() == cand.E && cand.isGood == true)
-					continue outer;
-			}*/
+			
 
 			boolean isGood = addParticle(p);
-			if(!isGood){
-				if(p.getClusters().size()!= 0)
-					candidates.add(new ParticleInfo(0, p.getEnergy(), p.getClusters().get(0).getCalorimeterHits().get(0).getTime(), false));
-
-			}
-
-		}
-		for(ParticleInfo c : candidates){
-			if(c.isGood){
-				boolean isIsolated = true;
-				for(ParticleInfo c2 :candidates){
-					//try to remove events that have possible mollers in them. 
-					//correct for this later.  
-					if(Math.abs(c2.t - c.t) < 2.5 && c2.E < .3 && c2 != c){
-						isIsolated = false;
-						break;
-					}
-				}
-				if(isIsolated){
-					h3a.fill(c.theta);
-				}
-			}
-		}
-		candidates.clear();
-		processEventEfficiency(particles);
-	}
-
-	private static void processEventEfficiency(List<ReconstructedParticle> parts) {
-		for(ReconstructedParticle p : parts){
-			if(p.getClusters().size() == 0)
-				continue;
-			if(!(p.getEnergy() > eMin && p.getEnergy() < eMax))
-				continue;
-			Cluster c = p.getClusters().get(0);
-			if(!EcalUtil.fid_ECal(c) || c.getCalorimeterHits().size() < 3)
-				continue;
-			//good cluster?  now continue
-			int ixiy[] = EcalUtil.getCrystalIndex(c); 
-
-			h6.fill(ixiy[0], ixiy[1]);
-			if(p.getTracks().size() == 0)
-				continue;
-			Track t = p.getTracks().get(0);
-			if(t.getChi2()> maxChi2)
-				continue;
-			h6a.fill(ixiy[0], ixiy[1]);
-
-		}
-	}
+			
+
+		}
+		
+	}
+
+	
 
 	static double eMin = .8;
 	static double eMax = 1.2;
 	static double beamEnergy = 1.057;
 
-	static double beamTilt = .03057;
+	static double beamTiltX = .03057;
+	static double beamTiltY;
 	static double maxChi2 = 50;
 	//maximum difference between the reconstructed energy and momentum
-	static double maxdE = .3;
+	static double maxdE = .5;
 
 	static double seedEnergyCut = .4;
 
 
-	static ArrayList<ParticleInfo> candidates = new ArrayList();
 	static boolean addParticle(ReconstructedParticle part){
-
-
-
+		if(part.getTracks().size() != 0){
+			if(part.getMomentum().magnitudeSquared() > .8
+					&& part.getTracks().get(0).getChi2() > maxChi2){
+				h4y.fill(part.getMomentum().y()/part.getMomentum().z());
+			}
+		}
 		if(part.getCharge() != -1)
 			return false;
 		if(part.getClusters().size() == 0)
@@ -422,6 +394,12 @@
 		
 		if(EcalUtil.fid_ECal(c)){
 			
+			if(c.getPosition()[1] > 0){
+				h5.fill(c.getEnergy());
+			}
+			else{ 
+				h5a.fill(c.getEnergy());
+			}
 			if(part.getTracks().size() == 0)
 				return false;
 			Track t = part.getTracks().get(0);
@@ -430,12 +408,7 @@
 			}
 			if(!TrackType.isGBL(t.getType()))
 				return false;
-			if(c.getPosition()[1] > 0){
-				h5.fill(c.getEnergy());
-			}
-			else{ 
-				h5a.fill(c.getEnergy());
-			}
+			
 			
 			
 			Hep3Vector p = part.getMomentum();
@@ -443,9 +416,12 @@
 
 
 			double px = p.x(), pz = p.z();
-			double pxtilt = px*Math.cos(beamTilt)-pz*Math.sin(beamTilt);
+			double pxtilt = px*Math.cos(beamTiltX)-pz*Math.sin(beamTiltX);
 			double py = p.y();
-			double pztilt = pz*Math.cos(beamTilt)+px*Math.sin(beamTilt);
+			double pztilt = pz*Math.cos(beamTiltX)+px*Math.sin(beamTiltX);
+			
+			double pytilt = py*Math.cos(beamTiltY)-pztilt*Math.sin(beamTiltY);
+			pztilt = pz*Math.cos(beamTiltY) + pytilt*Math.sin(beamTiltY);
 
 			if(Math.abs(pztilt - c.getEnergy()) > maxdE)
 				return false;
@@ -454,8 +430,8 @@
 			else
 				h9_b.fill(pztilt);
 
-			double theta = Math.atan(Math.hypot(pxtilt, py)/pztilt);
-			double phi =Math.atan2(py, pxtilt);
+			double theta = Math.atan(Math.hypot(pxtilt, pytilt)/pztilt);
+			double phi =Math.atan2(pytilt, pxtilt);
 			boolean inRange = cb.inRange(theta, phi);
 			if(inRange)
 				h1.fill(theta, c.getEnergy());
@@ -470,6 +446,7 @@
 				h2c.fill(theta, phi);
 
 				h4.fill(px/pz, py/pz);
+				//h4y.fill(py/pz);
 
 				if(inRange){
 
@@ -492,7 +469,6 @@
 					
 					
 					h4a.fill(px/pz, py/pz);
-					candidates.add(new ParticleInfo(theta, c.getEnergy(), c.getCalorimeterHits().get(0).getTime(), true));
 				}
 
 
@@ -502,16 +478,5 @@
 		}
 		return false;
 	}
-	static class ParticleInfo{
-		double theta;
-		double E;
-		double t;
-		boolean isGood;
-		ParticleInfo(double theta, double E, double t, boolean isGood){
-			this.theta = theta;
-			this.E = E;
-			this.t = t;
-			this.isGood = isGood;
-		}
-	}
+	
 }

Modified: java/branches/jeremy-dev/users/src/main/java/org/hps/users/spaul/feecc/RemoveDuplicateParticles.java
 =============================================================================
--- java/branches/jeremy-dev/users/src/main/java/org/hps/users/spaul/feecc/RemoveDuplicateParticles.java	(original)
+++ java/branches/jeremy-dev/users/src/main/java/org/hps/users/spaul/feecc/RemoveDuplicateParticles.java	Thu Feb 11 17:15:20 2016
@@ -56,7 +56,7 @@
 			return false;
 		if(p.getTracks().size() == 1 && p.getTracks().size() == 0)
 			return true;
-		if(TrackType.isGBL(p.getTracks().get(0).getType()) && !TrackType.isGBL(p.getTracks().get(0).getType()))
+		if(TrackType.isGBL(p.getTracks().get(0).getType()) && !TrackType.isGBL(p2.getTracks().get(0).getType()))
 				return true;
 		
 		if(p.getTracks().get(0).getChi2() < p2.getTracks().get(0).getChi2()){

Modified: java/branches/jeremy-dev/users/src/main/java/org/hps/users/spaul/feecc/ShowCustomBinningXY.java
 =============================================================================
--- java/branches/jeremy-dev/users/src/main/java/org/hps/users/spaul/feecc/ShowCustomBinningXY.java	(original)
+++ java/branches/jeremy-dev/users/src/main/java/org/hps/users/spaul/feecc/ShowCustomBinningXY.java	Thu Feb 11 17:15:20 2016
@@ -24,28 +24,29 @@
 
 				double nK = 10;
 				for(int sign = -1; sign <=1; sign +=2){
-					for(int k = 0; k< nK; k++){
-						drawLineFromPolar(theta1, sign*(phi1+(phi2-phi1)*k/nK), theta1, sign*(phi1+(phi2-phi1)*(k+1)/nK),g);
-					}
-					for(int k = 0; k< nK; k++){
-						drawLineFromPolar(theta1 + (theta2-theta1)*k/nK, sign*phi2, theta1 + (theta2-theta1)*(k+1)/nK, sign*phi2,g);
-					}
-					for(int k = 0; k< nK; k++){
-						drawLineFromPolar(theta2, sign*(phi2+(phi1-phi2)*k/nK), theta2, sign*(phi2+(phi1-phi2)*(k+1)/nK),g);
-					}
-					for(int k = 0; k< nK; k++){
-						drawLineFromPolar(theta2 + (theta1-theta2)*k/nK, sign*phi1, theta2 + (theta1-theta2)*(k+1)/nK, sign*phi1,g);
+
+					Polygon p = new Polygon();
+					for(int k = 0; k< nK; k++){
+						drawLineFromPolar(theta1, sign*(phi1+(phi2-phi1)*k/nK), theta1, sign*(phi1+(phi2-phi1)*(k+1)/nK),g,p);
+					}
+					for(int k = 0; k< nK; k++){
+						drawLineFromPolar(theta1 + (theta2-theta1)*k/nK, sign*phi2, theta1 + (theta2-theta1)*(k+1)/nK, sign*phi2,g,p);
+					}
+					for(int k = 0; k< nK; k++){
+						drawLineFromPolar(theta2, sign*(phi2+(phi1-phi2)*k/nK), theta2, sign*(phi2+(phi1-phi2)*(k+1)/nK),g, p);
+					}
+					for(int k = 0; k< nK; k++){
+						drawLineFromPolar(theta2 + (theta1-theta2)*k/nK, sign*phi1, theta2 + (theta1-theta2)*(k+1)/nK, sign*phi1,g, p);
 					}
 					
-					closePolarFigure(g, i%2 == 0 ? altBin1 : altBin2, i%2 == 0 ? fillBin1 : fillBin2);
+					closePolarFigure(g, i%2 == 0 ? altBin1 : altBin2, i%2 == 0 ? fillBin1 : fillBin2, p);
 				}
 
 			}
 		}
 	}
-	Polygon p = null;
 	private void drawLineFromPolar(double theta1, double phi1, double theta2,
-			double phi2, Graphics g) {
+			double phi2, Graphics g, Polygon p) {
 		double[] xy1 = toXY(theta1, phi1);
 		double[] xy2 = toXY(theta2, phi2);
 
@@ -57,19 +58,24 @@
 				getY(xy2[1]));*/
 		p.addPoint(getX(xy2[0]), getY(xy2[1]));
 	}
-	private void closePolarFigure(Graphics g, Color outlineColor, Color fillColor){
+	private void closePolarFigure(Graphics g, Color outlineColor, Color fillColor, Polygon p){
 		g.setColor(fillColor);
 		g.fillPolygon(p);
 		g.setColor(outlineColor);
 		g.drawPolygon(p);
-		p = null;
-		
-	}
-	double tilt = .03057;
+		
+	}
+	double xtilt =  .0294;
+	double ytilt = -.00082;
 	double[] toXY(double theta, double phi){
-		double ux = Math.cos(phi)*Math.sin(theta)*Math.cos(tilt)+Math.cos(theta)*Math.sin(tilt);
+		double ux = Math.cos(phi)*Math.sin(theta)*Math.cos(xtilt)+Math.cos(theta)*Math.sin(xtilt);
 		double uy = Math.sin(phi)*Math.sin(theta);
-		double uz = Math.cos(theta)*Math.cos(tilt)-Math.cos(phi)*Math.sin(theta)*Math.sin(tilt);
+		double uz = Math.cos(theta)*Math.cos(xtilt)-Math.cos(phi)*Math.sin(theta)*Math.sin(xtilt);
+		
+		double temp = Math.cos(ytilt)*uy+Math.sin(ytilt)*uz;
+		uz = Math.cos(ytilt)*uz-Math.sin(ytilt)*uy;
+		uy = temp;
+		
 		double pxpz = ux/uz;
 		double pypz = uy/uz;
 		return new double[]{pxpz, pypz};
@@ -224,4 +230,19 @@
 			g.drawLine(getX(0), getY(i/100.), getX(0) + 5, getY(i/100.));
 		}
 	}
+	public void paint(Graphics g){
+		super.paint(g);
+		drawBeamspot(g);
+	}
+	
+	void drawBeamspot(Graphics g){
+		g.setColor(Color.red);
+		int x = getX(xtilt), y = getY(ytilt);
+		g.drawLine(x+10, y, x-10, y);
+		g.drawLine(x+10, y+1, x-10, y+1);
+		g.drawLine(x+10, y-1, x-10, y-1);
+		g.drawLine(x, y-10, x, y+10);
+		g.drawLine(x+1, y-10, x+1, y+10);
+		g.drawLine(x-1, y-10, x-1, y+10);
+	}
 }

Modified: java/branches/jeremy-dev/util/pom.xml
 =============================================================================
--- java/branches/jeremy-dev/util/pom.xml	(original)
+++ java/branches/jeremy-dev/util/pom.xml	Thu Feb 11 17:15:20 2016
@@ -7,7 +7,7 @@
         <groupId>org.hps</groupId>
         <artifactId>hps-parent</artifactId>
         <relativePath>../parent/pom.xml</relativePath>
-        <version>3.5-SNAPSHOT</version>
+        <version>3.6-SNAPSHOT</version>
     </parent>
     <scm>
         <url>http://java.freehep.org/svn/repos/hps/list/java/trunk/util/</url>