Print

Print


Commit in java/branches/hps-java_HPSJAVA-88 on MAIN
analysis/src/main/java/org/hps/analysis/examples/TrackAnalysis.java+40-671244 -> 1245
conditions/src/test/java/org/hps/conditions/ConditionsDriverTest.java+1-11244 -> 1245
conditions/src/test/java/org/hps/conditions/beam/BeamCurrentTest.java+1-11244 -> 1245
conditions/src/test/java/org/hps/conditions/ecal/PhysicalToGainTest.java+4-11244 -> 1245
ecal-recon/src/main/java/org/hps/recon/ecal/EcalClusterIC.java+1-21244 -> 1245
integration-tests/pom.xml+27-21244 -> 1245
integration-tests/src/test/java/org/hps/EcalReadoutSimTest.java-21244 -> 1245
                                       /MCReconTest.java-1031244 removed
                                       /ReadoutNoPileupTest.java+4-11244 -> 1245
                                       /ReadoutToEvioTest.java+31244 -> 1245
                                       /ReadoutToLcioTest.java+4-11244 -> 1245
                                       /SimpleMCReconTest.java+8-61244 -> 1245
                                       /TestRunReadoutToEvioTest.java+4-11244 -> 1245
integration-tests/src/test/resources/org/hps/steering/test/MCReconTest.lcsim-601244 removed
recon/src/main/java/org/hps/recon/particle/HpsReconParticleDriver.java+7-71244 -> 1245
                                          /ReconParticleDriver.java+90-511244 -> 1245
                                          /ReconParticleDriverIC.java+3-11244 -> 1245
steering-files/src/main/resources/org/hps/steering/recon/HPS2014OfflineNoPileupRecon.lcsim+4-21244 -> 1245
                                                        /HPS2014OfflineRecon.lcsim+3-21244 -> 1245
                                                        /HPS2014OfflineTruthRecon.lcsim+4-21244 -> 1245
                                                        /SimpleMCRecon.lcsim+24-341244 -> 1245
steering-files/src/main/resources/org/hps/steering/users/mgraham/DataQualityMonitor.lcsim+33-121244 -> 1245
                                                                /DataQualityMonitorOnRecon.lcsim+7-11244 -> 1245
tracking/pom.xml+11244 -> 1245
tracking/src/main/java/org/hps/recon/tracking/gbl/HpsGblFitter.java+11-51244 -> 1245
                                                 /HpsGblRefitter.java+4-41244 -> 1245
tracking/src/main/java/org/hps/recon/tracking/nobfield/StraightTrack.java+26-231244 -> 1245
                                                      /StraightTrackFinder.java+129-611244 -> 1245
                                                      /TrackChecker.java+51244 -> 1245
+448-453
2 removed + 27 modified, total 29 files
Merge trunk changes through r1244 into hps-java_HPSJAVA-88.

java/branches/hps-java_HPSJAVA-88/analysis/src/main/java/org/hps/analysis/examples
TrackAnalysis.java 1244 -> 1245
--- java/branches/hps-java_HPSJAVA-88/analysis/src/main/java/org/hps/analysis/examples/TrackAnalysis.java	2014-10-19 06:41:14 UTC (rev 1244)
+++ java/branches/hps-java_HPSJAVA-88/analysis/src/main/java/org/hps/analysis/examples/TrackAnalysis.java	2014-10-19 06:58:06 UTC (rev 1245)
@@ -30,6 +30,7 @@
 import org.lcsim.event.Track;
 import org.lcsim.event.TrackerHit;
 import org.lcsim.fit.helicaltrack.HelicalTrack2DHit;
+import org.lcsim.fit.helicaltrack.HelicalTrack3DHit;
 import org.lcsim.fit.helicaltrack.HelicalTrackCross;
 import org.lcsim.fit.helicaltrack.HelicalTrackHit;
 import org.lcsim.fit.helicaltrack.HelicalTrackStrip;
@@ -96,25 +97,26 @@
         _hasLayerOne = false;
         //  Loop over the hits on the track and make sure we have HelicalTrackHits (which contain the MC particle)
         for (TrackerHit hit : trk.getTrackerHits()) {
+            HelicalTrackHit htc = (HelicalTrackHit) hit;
+            if (htc.Detector().equals("BeamSpot"))
+                continue;
+
             //  get the set of MCParticles associated with this hit and update the hit count for each MCParticle
             Set<MCParticle> mclist = hittomc.allFrom(hit);
             for (MCParticle mcp : mclist) {
                 Integer mchits = 0;
-                if (mcmap.containsKey(mcp)) {
+                if (mcmap.containsKey(mcp))
                     mchits = mcmap.get(mcp);
-                }
                 mchits++;
                 mcmap.put(mcp, mchits);
             }
 
-//            HelicalTrackHit htc = (HelicalTrackHit) hit;
-            if (hit instanceof HelicalTrackCross) {
+            if (hit instanceof HelicalTrackCross)
                 countHit((HelicalTrackCross) hit);
-            } else if (hit instanceof HelicalTrack2DHit) {
+            else if (hit instanceof HelicalTrack2DHit)
                 countHit((HelicalTrack2DHit) hit);
-            } else {
+            else
                 countHit(hit, rthtosimhit, hittostrip, hittorotated);
-            }
         }
 
         //  Find the MCParticle that has the most hits on the track
@@ -128,9 +130,8 @@
             }
         }
 
-        if (nbest > 0) {
+        if (nbest > 0)
             _mcp = mcbest;
-        }
         _purity = (double) nbest / (double) _nhits;
         _nbadhits = _nhits - nbest;
 
@@ -145,32 +146,25 @@
             }
         }
 
-        if (nbestAll > 0) {
+        if (nbestAll > 0)
             _mcpNew = mcbestAll;
-        }
         _purityNew = (double) nbestAll / (double) _nhitsNew;
         _nbadhitsNew = _nhitsNew - nbestAll;
 
-        for (TrackerHit hit : trk.getTrackerHits()) {
-            if (hit instanceof HelicalTrackCross) {
+        for (TrackerHit hit : trk.getTrackerHits())
+            if (hit instanceof HelicalTrackCross)
                 checkForBadHit((HelicalTrackCross) hit);
-            }
-        }
 
-        if (_nAxialhits > 0) {
-            if (mcmapAxial.containsKey(_mcpNew)) {
+        if (_nAxialhits > 0)
+            if (mcmapAxial.containsKey(_mcpNew))
                 _nbadAxialhits = _nAxialhits - mcmapAxial.get(_mcpNew);
-            } else {
+            else
                 _nbadAxialhits = _nAxialhits;
-            }
-        }
-        if (_nZhits > 0) {
-            if (mcmapZ.containsKey(_mcpNew)) {
+        if (_nZhits > 0)
+            if (mcmapZ.containsKey(_mcpNew))
                 _nbadZhits = _nZhits - mcmapZ.get(_mcpNew);
-            } else {
+            else
                 _nbadZhits = _nZhits;
-            }
-        }
     }
 
     private void countHit(HelicalTrackCross cross) {
@@ -178,9 +172,8 @@
 
         for (HelicalTrackStrip cl : clusterlist) {
             int layer = cl.layer();
-            if (layer == 1) {
+            if (layer == 1)
                 _hasLayerOne = true;
-            }
 
             _nStripHitsPerLayer[layer - 1] = cl.rawhits().size();
             _hitLocationPerLayer.put(layer, clusterPosition(cl));
@@ -191,30 +184,26 @@
             if (axdotu > 0.5) {
                 isAxial = true;
                 _nAxialhits++;
-            } else {
+            } else
                 _nZhits++;
-            }
             List<MCParticle> mcPartList = cl.MCParticles();
             _nMCHitsPerLayer[layer - 1] = mcPartList.size();
             for (MCParticle mcp : mcPartList) {
                 Integer mchits = 0;
-                if (mcmapAll.containsKey(mcp)) {
+                if (mcmapAll.containsKey(mcp))
                     mchits = mcmapAll.get(mcp);
-                }
                 mchits++;
                 mcmapAll.put(mcp, mchits);
                 if (isAxial) {
                     Integer mchitsAxial = 0;
-                    if (mcmapAxial.containsKey(mcp)) {
+                    if (mcmapAxial.containsKey(mcp))
                         mchitsAxial = mcmapAxial.get(mcp);
-                    }
                     mchitsAxial++;
                     mcmapAxial.put(mcp, mchitsAxial);
                 } else {
                     Integer mchitsZ = 0;
-                    if (mcmapZ.containsKey(mcp)) {
+                    if (mcmapZ.containsKey(mcp))
                         mchitsZ = mcmapZ.get(mcp);
-                    }
                     mchitsZ++;
                     mcmapZ.put(mcp, mchitsZ);
                 }
@@ -237,22 +226,19 @@
                 IIdentifier id = new Identifier(rawHit.getCellID());
                 //===> int newLayer = SvtUtils.getInstance().getHelper().getValue(id, "layer");
                 int newLayer = ((HpsSiSensor) rawHit.getDetectorElement()).getLayerNumber();
-                if (layer != -1 && layer != newLayer) {
+                if (layer != -1 && layer != newLayer)
                     System.out.format("TrackerHit has hits from multiple layers: %d and %d\n", layer, newLayer);
-                }
                 layer = newLayer;
                 //===> int newModule = SvtUtils.getInstance().getHelper().getValue(id, "module");
                 int newModule = ((HpsSiSensor) rawHit.getDetectorElement()).getModuleNumber();
-                if (module != -1 && module != newModule) {
+                if (module != -1 && module != newModule)
                     System.out.format("TrackerHit has hits from multiple modules: %d and %d\n", module, newModule);
-                }
                 module = newModule;
 //                    System.out.println(SvtUtils.getInstance().getHelper().getValue(id, "strip"));
             }
 
-            if (layer == 1) {
+            if (layer == 1)
                 _hasLayerOne = true;
-            }
             DiagonalizedCovarianceMatrix covariance = new DiagonalizedCovarianceMatrix(cl);
             _nStripHitsPerLayer[layer - 1] = cl.getRawHits().size();
             _hitLocationPerLayer.put(layer, new BasicHep3Vector(hit.getPosition()));
@@ -264,41 +250,35 @@
             if (axdotu > 0.5) {
                 isAxial = true;
                 _nAxialhits++;
-            } else {
+            } else
                 _nZhits++;
-            }
             //  get the set of MCParticles associated with this hit and update the hit count for each MCParticle
 
             Set<MCParticle> mcPartList = new HashSet<MCParticle>();
             for (RawTrackerHit rawHit : rawHits) {
                 Set<SimTrackerHit> simhits = (Set<SimTrackerHit>) rthtosimhit.allFrom(rawHit);
-                for (SimTrackerHit simhit : simhits) {
-                    if (simhit != null && simhit.getMCParticle() != null) {
+                for (SimTrackerHit simhit : simhits)
+                    if (simhit != null && simhit.getMCParticle() != null)
                         mcPartList.add(simhit.getMCParticle());
-                    }
-                }
             }
 //            System.out.println("MCParticle count: " + mcPartList.size());
             _nMCHitsPerLayer[layer - 1] = mcPartList.size();
             for (MCParticle mcp : mcPartList) {
                 Integer mchits = 0;
-                if (mcmapAll.containsKey(mcp)) {
+                if (mcmapAll.containsKey(mcp))
                     mchits = mcmapAll.get(mcp);
-                }
                 mchits++;
                 mcmapAll.put(mcp, mchits);
                 if (isAxial) {
                     Integer mchitsAxial = 0;
-                    if (mcmapAxial.containsKey(mcp)) {
+                    if (mcmapAxial.containsKey(mcp))
                         mchitsAxial = mcmapAxial.get(mcp);
-                    }
                     mchitsAxial++;
                     mcmapAxial.put(mcp, mchitsAxial);
                 } else {
                     Integer mchitsZ = 0;
-                    if (mcmapZ.containsKey(mcp)) {
+                    if (mcmapZ.containsKey(mcp))
                         mchitsZ = mcmapZ.get(mcp);
-                    }
                     mchitsZ++;
                     mcmapZ.put(mcp, mchitsZ);
                 }
@@ -314,15 +294,13 @@
         boolean isAxial = true;
         for (MCParticle mcp : mcPartList) {
             Integer mchits = 0;
-            if (mcmapAll.containsKey(mcp)) {
+            if (mcmapAll.containsKey(mcp))
                 mchits = mcmapAll.get(mcp);
-            }
             mchits++;
             mcmapAll.put(mcp, mchits);
             Integer mchitsAxial = 0;
-            if (mcmapAxial.containsKey(mcp)) {
+            if (mcmapAxial.containsKey(mcp))
                 mchitsAxial = mcmapAxial.get(mcp);
-            }
             mchitsAxial++;
             mcmapAxial.put(mcp, mchitsAxial);
         }
@@ -336,9 +314,8 @@
                 badHitList.add(cl.layer());
                 badhits.put(_mcpNew, cross);
             }
-            if (cl.MCParticles().size() > 1) {
+            if (cl.MCParticles().size() > 1)
                 sharedHitList.add(cl.layer());
-            }
         }
     }
 
@@ -439,18 +416,14 @@
         public DiagonalizedCovarianceMatrix(TrackerHit hit) {
             SymmetricMatrix cov = new SymmetricMatrix(3, hit.getCovMatrix(), true);
             RealMatrix covMatrix = new Array2DRowRealMatrix(3, 3);
-            for (int i = 0; i < 3; i++) {
-                for (int j = 0; j < 3; j++) {
+            for (int i = 0; i < 3; i++)
+                for (int j = 0; j < 3; j++)
                     covMatrix.setEntry(i, j, cov.e(i, j));
-                }
-            }
             EigenDecomposition decomposed = new EigenDecomposition(covMatrix);
             BasicHep3Matrix localToGlobal = new BasicHep3Matrix();
-            for (int i = 0; i < 3; i++) {
-                for (int j = 0; j < 3; j++) {
+            for (int i = 0; i < 3; i++)
+                for (int j = 0; j < 3; j++)
                     localToGlobal.setElement(i, j, decomposed.getV().getEntry(i, j));
-                }
-            }
 //            SymmetricMatrix localToGlobal = decomposed.getV().operate(new ArrayRealVector(3))
             {
                 double eigenvalue = decomposed.getRealEigenvalue(0);

java/branches/hps-java_HPSJAVA-88/conditions/src/test/java/org/hps/conditions
ConditionsDriverTest.java 1244 -> 1245
--- java/branches/hps-java_HPSJAVA-88/conditions/src/test/java/org/hps/conditions/ConditionsDriverTest.java	2014-10-19 06:41:14 UTC (rev 1244)
+++ java/branches/hps-java_HPSJAVA-88/conditions/src/test/java/org/hps/conditions/ConditionsDriverTest.java	2014-10-19 06:58:06 UTC (rev 1245)
@@ -22,7 +22,7 @@
 public class ConditionsDriverTest extends TestCase {
 
     // This test file has a few events from each of the "good runs" of the 2012 Test Run.
-    private static final String fileLocation = "ftp://ftp-hps.slac.stanford.edu/hps/hps_data/hps_java_test_case_data/ConditionsTest.slcio";
+    private static final String fileLocation = "http://www.lcsim.org/test/hps-java/ConditionsTest.slcio";
 
     // Number of runs that should be processed in the job.
     static final int NRUNS = 9;

java/branches/hps-java_HPSJAVA-88/conditions/src/test/java/org/hps/conditions/beam
BeamCurrentTest.java 1244 -> 1245
--- java/branches/hps-java_HPSJAVA-88/conditions/src/test/java/org/hps/conditions/beam/BeamCurrentTest.java	2014-10-19 06:41:14 UTC (rev 1244)
+++ java/branches/hps-java_HPSJAVA-88/conditions/src/test/java/org/hps/conditions/beam/BeamCurrentTest.java	2014-10-19 06:58:06 UTC (rev 1245)
@@ -24,7 +24,7 @@
 public class BeamCurrentTest extends TestCase {
 
     /** This test file has a few events from the "good runs" of the Test Run. */
-    private static final String fileLocation = "ftp://ftp-hps.slac.stanford.edu/hps/hps_data/hps_java_test_case_data/ConditionsTest.slcio";
+    private static final String fileLocation = "http://www.lcsim.org/test/hps-java/ConditionsTest.slcio";
 
     /** Answer key for beam current by run. */
     static Map<Integer, Double> beamCurrentAnswerKey = new HashMap<Integer, Double>();

java/branches/hps-java_HPSJAVA-88/conditions/src/test/java/org/hps/conditions/ecal
PhysicalToGainTest.java 1244 -> 1245
--- java/branches/hps-java_HPSJAVA-88/conditions/src/test/java/org/hps/conditions/ecal/PhysicalToGainTest.java	2014-10-19 06:41:14 UTC (rev 1244)
+++ java/branches/hps-java_HPSJAVA-88/conditions/src/test/java/org/hps/conditions/ecal/PhysicalToGainTest.java	2014-10-19 06:58:06 UTC (rev 1245)
@@ -25,11 +25,14 @@
  * This is a simple example of how to retrieve the gain and noise by physical ID (X,Y) in
  * the ECAL.
  * @author Jeremy McCormick <[log in to unmask]>
+ * 
+ * @version $Id$
+ * 
  */
 public class PhysicalToGainTest extends TestCase {
 
     // This test file has a few events from each of the "good runs" of the 2012 Test Run.
-    private static final String fileLocation = "ftp://ftp-hps.slac.stanford.edu/hps/hps_data/hps_java_test_case_data/ConditionsTest.slcio";
+    private static final String fileLocation = "http://www.lcsim.org/test/hps-java/ConditionsTest.slcio";
 
     // Run the test.
     public void test() throws Exception {

java/branches/hps-java_HPSJAVA-88/ecal-recon/src/main/java/org/hps/recon/ecal
EcalClusterIC.java 1244 -> 1245
--- java/branches/hps-java_HPSJAVA-88/ecal-recon/src/main/java/org/hps/recon/ecal/EcalClusterIC.java	2014-10-19 06:41:14 UTC (rev 1244)
+++ java/branches/hps-java_HPSJAVA-88/ecal-recon/src/main/java/org/hps/recon/ecal/EcalClusterIC.java	2014-10-19 06:58:06 UTC (rev 1245)
@@ -626,8 +626,7 @@
             // Loop over seeds
             for (Map.Entry<CalorimeterHit, CalorimeterHit> entry2 : hitSeedMap.entrySet()) {
                 if (entry2.getKey() == entry2.getValue()){
-                	if((entry2.getKey().getCorrectedEnergy()<seedEnergyThreshold)
-                		||(seedEnergyTot.get(entry2.getKey())<clusterEnergyThreshold)) 
+                	if(seedEnergyCorr.get(entry2.getKey())<clusterEnergyThreshold) 
                 	{	
                 		//Not clustered for not passing cuts
                 		rejectedHitList.add(entry2.getKey()); 

java/branches/hps-java_HPSJAVA-88/integration-tests
pom.xml 1244 -> 1245
--- java/branches/hps-java_HPSJAVA-88/integration-tests/pom.xml	2014-10-19 06:41:14 UTC (rev 1244)
+++ java/branches/hps-java_HPSJAVA-88/integration-tests/pom.xml	2014-10-19 06:58:06 UTC (rev 1245)
@@ -28,7 +28,6 @@
                 <configuration>
                     <excludes>
                         <exclude>org/hps/EtSystemTest.java</exclude>
-                        <exclude>org/hps/TestRunReconTest.java</exclude>
                     </excludes>
                     <redirectTestOutputToFile>true</redirectTestOutputToFile>
                     <trimStackTrace>true</trimStackTrace>
@@ -54,7 +53,33 @@
                     </plugin>
                 </plugins>
             </build>
-        </profile>  
+        </profile> 
+        <profile>
+            <id>fast-integration-tests</id>
+            <activation>
+                <activeByDefault>false</activeByDefault>
+            </activation>
+            <build>
+                <plugins>
+                    <plugin>
+                        <groupId>org.apache.maven.plugins</groupId>
+                        <artifactId>maven-surefire-plugin</artifactId>
+                        <configuration>
+                            <excludes>
+                                <exclude>org/hps/EcalReadoutSimTest.java</exclude>
+                                <exclude>org/hps/EtSystemTest.java</exclude>
+                                <exclude>org/hps/HPSTestRunTracker2014GeometryTrackReconTest.java</exclude>
+                                <exclude>org/hps/MCFilteredReconTest.java</exclude>
+                                <exclude>org/hps/MockDataReconTest.java</exclude>
+                                <exclude>org/hps/ReadoutNoPileupTest.java</exclude>
+                                <exclude>org/hps/ReconClusterICTest.java</exclude>
+                                <exclude>org/hps/TestRunReconTest.java</exclude>
+                            </excludes>
+                        </configuration>
+                    </plugin>
+                </plugins>
+            </build>
+        </profile>                 
         <!-- This profile activates automatically when not running tests on a SLAC Unix system with NFS access. -->
         <profile>
             <id>no-slac-nfs</id>

java/branches/hps-java_HPSJAVA-88/integration-tests/src/test/java/org/hps
EcalReadoutSimTest.java 1244 -> 1245
--- java/branches/hps-java_HPSJAVA-88/integration-tests/src/test/java/org/hps/EcalReadoutSimTest.java	2014-10-19 06:41:14 UTC (rev 1244)
+++ java/branches/hps-java_HPSJAVA-88/integration-tests/src/test/java/org/hps/EcalReadoutSimTest.java	2014-10-19 06:58:06 UTC (rev 1245)
@@ -7,7 +7,6 @@
 import java.io.IOException;
 import java.io.InputStream;
 import java.io.InputStreamReader;
-import java.net.URL;
 import java.util.ArrayList;
 import java.util.Collections;
 import java.util.List;
@@ -24,7 +23,6 @@
 import org.lcsim.job.JobControlManager;
 import org.lcsim.util.Driver;
 import org.lcsim.util.aida.AIDA;
-import org.lcsim.util.cache.FileCache;
 import org.lcsim.util.loop.LCSimLoop;
 
 /**

java/branches/hps-java_HPSJAVA-88/integration-tests/src/test/java/org/hps
MCReconTest.java removed after 1244
--- java/branches/hps-java_HPSJAVA-88/integration-tests/src/test/java/org/hps/MCReconTest.java	2014-10-19 06:41:14 UTC (rev 1244)
+++ java/branches/hps-java_HPSJAVA-88/integration-tests/src/test/java/org/hps/MCReconTest.java	2014-10-19 06:58:06 UTC (rev 1245)
@@ -1,103 +0,0 @@
-package org.hps;
-
-import java.io.File;
-import java.net.URL;
-import java.util.logging.Level;
-import java.util.logging.Logger;
-
-import junit.framework.TestCase;
-
-import org.hps.recon.tracking.RawTrackerHitFitterDriver;
-import org.lcsim.event.CalorimeterHit;
-import org.lcsim.event.Cluster;
-import org.lcsim.event.EventHeader;
-import org.lcsim.event.ReconstructedParticle;
-import org.lcsim.event.Track;
-import org.lcsim.event.TrackerHit;
-import org.lcsim.job.JobControlManager;
-import org.lcsim.util.Driver;
-import org.lcsim.util.cache.FileCache;
-import org.lcsim.util.test.TestUtil.TestOutputFile;
-
-/**
- * Run the reconstruction on output from the readout simulation.
- * 
- * @author Jeremy McCormick <[log in to unmask]>
- */
-public class MCReconTest extends TestCase {
-        
-    static final String fileLocation = "http://www.lcsim.org/test/hps-java/MCReconTest.slcio";
-            
-    public void testMCRecon() throws Exception {
-        
-        new TestOutputFile(this.getClass().getSimpleName()).mkdirs();
-        
-        File reconOutputFile = new TestOutputFile(this.getClass().getSimpleName() 
-                + File.separator + this.getClass().getSimpleName() + "_recon");
-        
-        FileCache cache = new FileCache();
-        File inputFile = cache.getCachedFile(new URL(fileLocation));
-        
-        System.out.println("Running MC recon on " + inputFile.getPath() + " ...");
-        JobControlManager job = new JobControlManager();
-        job.addVariableDefinition("outputFile", reconOutputFile.getPath());
-        job.addInputFile(inputFile);
-        job.setup("/org/hps/steering/test/MCReconTest.lcsim");
-        ReconCheckDriver reconCheckDriver = new ReconCheckDriver();
-        job.getLCSimLoop().add(reconCheckDriver);
-        for (Driver driver : job.getDriverAdapter().getDriver().drivers()) {
-            System.out.println(driver.getClass().getCanonicalName());
-            if (driver instanceof RawTrackerHitFitterDriver) {
-                ((RawTrackerHitFitterDriver)driver).setDebug(false);
-            }
-        }
-        Logger.getLogger("org.freehep.math.minuit").setLevel(Level.OFF);
-        long startMillis = System.currentTimeMillis();
-        job.run();
-        long elapsedMillis = System.currentTimeMillis() - startMillis;
-        long nevents = job.getLCSimLoop().getTotalSupplied();
-        System.out.println("MC recon processed " + job.getLCSimLoop().getTotalSupplied() + " events.");
-        System.out.print("MC recon took " + ((double)elapsedMillis/1000L) + " seconds");
-        System.out.println(" which is " + ((double)elapsedMillis / (double)nevents) + " ms per event.");
-        job.getLCSimLoop().dispose();
-    }          
-    
-    static class ReconCheckDriver extends Driver {
-        
-        int nTracks;
-        int nClusters;        
-        int nTrackerHits;
-        int nCalorimeterHits;
-        int nReconstructedParticles;
-        int nEvents;
-        
-        public void process(EventHeader event) {
-            ++nEvents;
-            if (event.hasCollection(Track.class, "MatchedTracks")) {
-                nTracks += event.get(Track.class, "MatchedTracks").size();
-            }
-            if (event.hasCollection(Cluster.class, "EcalClusters")) {
-                nClusters += event.get(Cluster.class, "EcalClusters").size();
-            }
-            if (event.hasCollection(TrackerHit.class, "RotatedHelicalTrackHits")) {
-                nTrackerHits += event.get(TrackerHit.class, "RotatedHelicalTrackHits").size();
-            }
-            if (event.hasCollection(CalorimeterHit.class, "EcalCalHits")) {
-                nCalorimeterHits += event.get(CalorimeterHit.class, "EcalCalHits").size();
-            }
-            if (event.hasCollection(ReconstructedParticle.class, "FinalStateParticles")) {
-                nReconstructedParticles += event.get(ReconstructedParticle.class, "FinalStateParticles").size();
-            }
-        }        
-        
-        public void endOfData() {
-            System.out.println("ReconCheckDriver results ...");
-            System.out.println("  nEvents: " + nEvents);
-            System.out.println("  nTracks: " + nTracks);
-            System.out.println("  nClusters: " + nClusters);
-            System.out.println("  nTrackerHits: " + nTrackerHits);
-            System.out.println("  nCalorimeterHits: " + nCalorimeterHits);
-            System.out.println("  nReconstructedParticles: " + nReconstructedParticles);
-        }
-    }              
-}

java/branches/hps-java_HPSJAVA-88/integration-tests/src/test/java/org/hps
ReadoutNoPileupTest.java 1244 -> 1245
--- java/branches/hps-java_HPSJAVA-88/integration-tests/src/test/java/org/hps/ReadoutNoPileupTest.java	2014-10-19 06:41:14 UTC (rev 1244)
+++ java/branches/hps-java_HPSJAVA-88/integration-tests/src/test/java/org/hps/ReadoutNoPileupTest.java	2014-10-19 06:58:06 UTC (rev 1245)
@@ -25,7 +25,9 @@
  * @author Jeremy McCormick <[log in to unmask]>
  */
 public class ReadoutNoPileupTest extends TestCase {
-        
+    
+    static final int nEvents = 100;
+    
     public void testReadoutNoPileup() throws Exception {
         new TestOutputFile(this.getClass().getSimpleName()).mkdir();
         
@@ -37,6 +39,7 @@
         File outputFile = new TestOutputFile(this.getClass().getSimpleName() + File.separator + this.getClass().getSimpleName() + "_readout");
         job.addVariableDefinition("outputFile", outputFile.getPath());
         job.setup("/org/hps/steering/readout/HPS2014ReadoutNoPileup.lcsim");
+        job.setNumberOfEvents(nEvents);
         job.run();
     }
 }

java/branches/hps-java_HPSJAVA-88/integration-tests/src/test/java/org/hps
ReadoutToEvioTest.java 1244 -> 1245
--- java/branches/hps-java_HPSJAVA-88/integration-tests/src/test/java/org/hps/ReadoutToEvioTest.java	2014-10-19 06:41:14 UTC (rev 1244)
+++ java/branches/hps-java_HPSJAVA-88/integration-tests/src/test/java/org/hps/ReadoutToEvioTest.java	2014-10-19 06:58:06 UTC (rev 1245)
@@ -23,6 +23,8 @@
  */
 public class ReadoutToEvioTest extends TestCase {
     
+    static final int nEvents = 100;
+    
     public void testReadoutToEvio() throws Exception {
         new TestOutputFile(this.getClass().getSimpleName()).mkdir();
         
@@ -34,6 +36,7 @@
         File outputFile = new TestOutputFile(this.getClass().getSimpleName() + File.separator + this.getClass().getSimpleName() + "_readout");
         job.addVariableDefinition("outputFile", outputFile.getPath());
         job.setup("/org/hps/steering/readout/HPS2014ReadoutToEvio.lcsim");
+        job.setNumberOfEvents(nEvents);
         job.run();
     }
 }

java/branches/hps-java_HPSJAVA-88/integration-tests/src/test/java/org/hps
ReadoutToLcioTest.java 1244 -> 1245
--- java/branches/hps-java_HPSJAVA-88/integration-tests/src/test/java/org/hps/ReadoutToLcioTest.java	2014-10-19 06:41:14 UTC (rev 1244)
+++ java/branches/hps-java_HPSJAVA-88/integration-tests/src/test/java/org/hps/ReadoutToLcioTest.java	2014-10-19 06:58:06 UTC (rev 1245)
@@ -22,7 +22,9 @@
  * @author Jeremy McCormick <[log in to unmask]>
  */
 public class ReadoutToLcioTest extends TestCase {
-        
+    
+    static final int nEvents = 100;
+    
     public void testReadoutToLcio() throws Exception {
         
         new TestOutputFile(this.getClass().getSimpleName()).mkdir();
@@ -35,6 +37,7 @@
         File outputFile = new TestOutputFile(this.getClass().getSimpleName() + File.separator + this.getClass().getSimpleName());
         job.addVariableDefinition("outputFile", outputFile.getPath());
         job.setup("/org/hps/steering/readout/HPS2014ReadoutToLcio.lcsim");
+        job.setNumberOfEvents(nEvents);
         job.run();
     }
 

java/branches/hps-java_HPSJAVA-88/integration-tests/src/test/java/org/hps
SimpleMCReconTest.java 1244 -> 1245
--- java/branches/hps-java_HPSJAVA-88/integration-tests/src/test/java/org/hps/SimpleMCReconTest.java	2014-10-19 06:41:14 UTC (rev 1244)
+++ java/branches/hps-java_HPSJAVA-88/integration-tests/src/test/java/org/hps/SimpleMCReconTest.java	2014-10-19 06:58:06 UTC (rev 1245)
@@ -21,6 +21,8 @@
 
 public class SimpleMCReconTest extends TestCase {
 
+    static final int nEvents = 100;
+    
 	public void testSimpleMCReconTest() throws Exception {
 		
         new TestOutputFile(this.getClass().getSimpleName()).mkdir();
@@ -34,6 +36,7 @@
         job.addVariableDefinition("outputFile", outputFile.getPath());
         job.addInputFile(inputFile);
         job.setup("/org/hps/steering/recon/SimpleMCRecon.lcsim");
+        job.setNumberOfEvents(nEvents);
         job.run();
         
         // Read in the LCIO event file and print out summary information.
@@ -86,14 +89,13 @@
         public void endOfData() {
             System.out.println("ReconCheckDriver results ...");
             System.out.println("  nEvents: " + nEvents);
-            System.out.println("  nTracks: " + nTracks);
+            System.out.println("  nSimCalorimeterHits: " + nSimCalorimeterHits);
             System.out.println("  nClusters: " + nClusters);
-            System.out.println("  nTrackerHits: " + nTrackerHits);
-            System.out.println("  nSimCalorimeterHits: " + nSimCalorimeterHits);
-            System.out.println("  nCalorimeterHits: " + nCalorimeterHits);
+            System.out.println("  nTrackerHits: " + nTrackerHits);            
+            System.out.println("  nTracks: " + nTracks);                                    
             System.out.println("  nReconstructedParticles: " + nReconstructedParticles);
-            System.out.println("  nTracks / nEvents = " + (double)nTracks / (double)nEvents);
-            System.out.println("  nClusters / nEvents = " + (double)nClusters / (double)nEvents);
+            System.out.println("  < nTracks / nEvents > = " + (double)nTracks / (double)nEvents);
+            System.out.println("  < nClusters / nEvents > = " + (double)nClusters / (double)nEvents);
         }
     }              
 }
\ No newline at end of file

java/branches/hps-java_HPSJAVA-88/integration-tests/src/test/java/org/hps
TestRunReadoutToEvioTest.java 1244 -> 1245
--- java/branches/hps-java_HPSJAVA-88/integration-tests/src/test/java/org/hps/TestRunReadoutToEvioTest.java	2014-10-19 06:41:14 UTC (rev 1244)
+++ java/branches/hps-java_HPSJAVA-88/integration-tests/src/test/java/org/hps/TestRunReadoutToEvioTest.java	2014-10-19 06:58:06 UTC (rev 1245)
@@ -17,7 +17,9 @@
  * @author Jeremy McCormick <[log in to unmask]>
  */
 public class TestRunReadoutToEvioTest extends TestCase {
-        
+    
+    static final int nEvents = 100;
+    
     public void testTestRunReadoutToEvio() throws Exception {
         
         new TestOutputFile(this.getClass().getSimpleName()).mkdir();
@@ -31,6 +33,7 @@
         job.addVariableDefinition("outputFile", outputFile.getPath());
         job.addVariableDefinition("runNumber", "1351");
         job.setup("/org/hps/steering/readout/TestRunReadoutToEvio.lcsim");
+        job.setNumberOfEvents(nEvents);
         job.run();       
     }
 }

java/branches/hps-java_HPSJAVA-88/integration-tests/src/test/resources/org/hps/steering/test
MCReconTest.lcsim removed after 1244
--- java/branches/hps-java_HPSJAVA-88/integration-tests/src/test/resources/org/hps/steering/test/MCReconTest.lcsim	2014-10-19 06:41:14 UTC (rev 1244)
+++ java/branches/hps-java_HPSJAVA-88/integration-tests/src/test/resources/org/hps/steering/test/MCReconTest.lcsim	2014-10-19 06:58:06 UTC (rev 1245)
@@ -1,60 +0,0 @@
-<lcsim xmlns:xs="http://www.w3.org/2001/XMLSchema-instance"
-       xs:noNamespaceSchemaLocation="http://www.lcsim.org/schemas/lcsim/1.0/lcsim.xsd">
-    <control>
-        <printInputFiles>true</printInputFiles>
-        <printDriversDetailed>true</printDriversDetailed>
-    </control>
-    <execute>
-        <driver name="EventMarkerDriver"/>
-        <driver name="CalibrationDriver"/>
-        <driver name="TrackerDigiDriver"/>
-        <driver name="HelicalTrackHitDriver"/>
-        <driver name="TrackerReconDriver"/>
-        <driver name="EcalRawConverter" />
-        <driver name="EcalClusterer" />
-        <driver name="ReconParticle" />
-        <driver name="TrackDataDriver" />
-        <driver name="GBLDriver"/>
-        <driver name="LCIOWriter"/>
-    </execute>
-    <drivers>
-        <driver name="CalibrationDriver" type="org.hps.conditions.deprecated.CalibrationDriver"/>
-        <driver name="EventMarkerDriver" type="org.lcsim.job.EventMarkerDriver">
-            <eventInterval>10</eventInterval>
-        </driver>
-        <driver name="TrackerDigiDriver" type="org.hps.recon.tracking.SimpleTrackerDigiDriver">
-            <debug>false</debug>
-        </driver>
-        <driver name="HelicalTrackHitDriver" type="org.hps.recon.tracking.HelicalTrackHitDriver">
-            <debug>false</debug>
-            <maxSeperation>20.0</maxSeperation>
-            <tolerance>1.0</tolerance>
-        </driver>
-        <driver name="TrackerReconDriver" type="org.hps.recon.tracking.TrackerReconDriver">
-            <debug>false</debug>
-            <strategyResource>/org/hps/recon/tracking/strategies/HPS-Full.xml</strategyResource>
-        </driver>
-        <driver name="GBLDriver" type="org.hps.recon.tracking.gbl.GBLOutputDriver">
-            <debug>1</debug>
-            <isMC>false</isMC>
-            <gblFileName></gblFileName>
-        </driver>
-       <driver name="EcalRawConverter" type="org.hps.recon.ecal.EcalRawConverterDriver">
-            <ecalCollectionName>EcalCalHits</ecalCollectionName>
-            <use2014Gain>false</use2014Gain>
-            <useTimestamps>false</useTimestamps>
-            <useTruthTime>true</useTruthTime>
-        </driver>
-        <driver name="EcalClusterer" type="org.hps.recon.ecal.EcalClusterICBasic">
-            <ecalName>Ecal</ecalName>
-            <ecalCollectionName>EcalCalHits</ecalCollectionName>
-            <timeCut>false</timeCut>
-        </driver>
-        <driver name="ReconParticle" type="org.hps.recon.particle.HpsReconParticleDriver"/>
-        <driver name="TrackDataDriver" type="org.hps.recon.tracking.TrackDataDriver" />
-        <driver name="LCIOWriter" type="org.lcsim.util.loop.LCIODriver">
-            <outputFilePath>${outputFile}</outputFilePath>
-        </driver>
-    </drivers>
-</lcsim>
-

java/branches/hps-java_HPSJAVA-88/recon/src/main/java/org/hps/recon/particle
HpsReconParticleDriver.java 1244 -> 1245
--- java/branches/hps-java_HPSJAVA-88/recon/src/main/java/org/hps/recon/particle/HpsReconParticleDriver.java	2014-10-19 06:41:14 UTC (rev 1244)
+++ java/branches/hps-java_HPSJAVA-88/recon/src/main/java/org/hps/recon/particle/HpsReconParticleDriver.java	2014-10-19 06:58:06 UTC (rev 1245)
@@ -22,7 +22,7 @@
 
 
 /**
- * 
+ * The Main HPS implementation of ReconParticleDriver...makes V0 candidates and does vertex fits
  * @author Omar Moreno <[log in to unmask]>
  * @version $Id$
  */
@@ -39,12 +39,12 @@
 	@Override
 	protected void startOfData(){
 		
-		unconstrainedV0CandidatesColName    = "UnconstrainedV0Candidates";
-		beamConV0CandidatesColName   		= "BeamspotConstrainedV0Candidates";
-		targetConV0CandidatesColName 		= "TargetConstrainedV0Candidates";	
-		unconstrainedV0VerticesColName 		= "UnconstrainedV0Vertices";
-		beamConV0VerticesColName 			= "BeamspotConstrainedV0Vertices";
-		targetConV0VerticesColName			= "TargetConstrainedV0Vertices";
+//		unconstrainedV0CandidatesColName    = "UnconstrainedV0Candidates";
+//		beamConV0CandidatesColName   		= "BeamspotConstrainedV0Candidates";
+//		targetConV0CandidatesColName 		= "TargetConstrainedV0Candidates";	
+//		unconstrainedV0VerticesColName 		= "UnconstrainedV0Vertices";
+//		beamConV0VerticesColName 			= "BeamspotConstrainedV0Vertices";
+//		targetConV0VerticesColName			= "TargetConstrainedV0Vertices";
 	}
 
 	/**

java/branches/hps-java_HPSJAVA-88/recon/src/main/java/org/hps/recon/particle
ReconParticleDriver.java 1244 -> 1245
--- java/branches/hps-java_HPSJAVA-88/recon/src/main/java/org/hps/recon/particle/ReconParticleDriver.java	2014-10-19 06:41:14 UTC (rev 1244)
+++ java/branches/hps-java_HPSJAVA-88/recon/src/main/java/org/hps/recon/particle/ReconParticleDriver.java	2014-10-19 06:58:06 UTC (rev 1245)
@@ -41,22 +41,28 @@
     List<ReconstructedParticle> electrons;
     List<ReconstructedParticle> positrons;
     List<Vertex> unconstrainedV0Vertices;
-    List<Vertex> beamConV0Vertices; 
+    List<Vertex> beamConV0Vertices;
     List<Vertex> targetConV0Vertices;
 
     // Collections
     String ecalClustersCollectionName = "EcalClusters";
     String tracksCollectionName = "MatchedTracks";
     String finalStateParticlesColName = "FinalStateParticles";
-    String unconstrainedV0CandidatesColName = null;
-    String beamConV0CandidatesColName = null;
-    String targetConV0CandidatesColName = null;
-    String vertexCandidatesColName = null;
-    String vertexBeamConsCandidatesName = null;
-	String unconstrainedV0VerticesColName = null;
-	String beamConV0VerticesColName = null;
-	String targetConV0VerticesColName = null;
-	
+    String unconstrainedV0CandidatesColName = "UnconstrainedV0Candidates";
+    String beamConV0CandidatesColName = "BeamspotConstrainedV0Candidates";
+    String targetConV0CandidatesColName = "TargetConstrainedV0Candidates";
+    String unconstrainedV0VerticesColName = "UnconstrainedV0Vertices";
+    String beamConV0VerticesColName = "BeamspotConstrainedV0Vertices";
+    String targetConV0VerticesColName = "TargetConstrainedV0Vertices";
+//    String unconstrainedV0CandidatesColName = null;
+//    String beamConV0CandidatesColName = null;
+//    String targetConV0CandidatesColName = null;
+//    String vertexCandidatesColName = null;
+//    String vertexBeamConsCandidatesName = null;
+//	String unconstrainedV0VerticesColName = null;
+//	String beamConV0VerticesColName = null;
+//	String targetConV0VerticesColName = null;
+
     // The beamsize array is in the tracking frame
     /* TODO  mg-May 14, 2014:  the the beam size from the conditions db...also beam position!  */
     double[] beamsize = {0.001, 0.2, 0.02};
@@ -94,9 +100,43 @@
         this.ecalClustersCollectionName = ecalClustersCollectionName;
     }
 
-    public void setTrackCollectoinName(String tracksCollectionName) {
+    public void setTracksCollectionName(String tracksCollectionName) {
         this.tracksCollectionName = tracksCollectionName;
     }
+    
+    public void setFinalStateParticlesColName(String finalStateParticlesColName) {
+        this.finalStateParticlesColName = finalStateParticlesColName;
+    }
+    
+     
+    public void setUnconstrainedV0CandidatesColName(String unconstrainedV0CandidatesColName) {
+        this.unconstrainedV0CandidatesColName = unconstrainedV0CandidatesColName;
+    }
+    
+    
+    public void setBeamConV0CandidatesColName(String beamConV0CandidatesColName) {
+        this.beamConV0CandidatesColName = beamConV0CandidatesColName;
+    }
+    
+     
+    public void setTargetConV0CandidatesColName(String targetV0CandidatesColName) {
+        this.targetConV0CandidatesColName = targetConV0CandidatesColName;
+    }
+    
+    
+    public void setUnconstrainedV0VerticesColName(String unconstrainedV0VerticesColName) {
+        this.unconstrainedV0VerticesColName = unconstrainedV0VerticesColName;
+    }
+    
+    
+    public void setBeamConV0VerticesColName(String beamConV0VerticesColName) {
+        this.beamConV0VerticesColName = beamConV0VerticesColName;
+    }
+    
+     
+    public void setTargetConV0VerticesColName(String targetV0VerticesColName) {
+        this.targetConV0VerticesColName = targetConV0VerticesColName;
+    }
 
     @Override
     protected void detectorChanged(Detector detector) {
@@ -112,8 +152,8 @@
 
         // All events should have a collection of Ecal clusters.  If the event 
         // doesn't have one, skip the event.
-        if (!event.hasCollection(Cluster.class, ecalClustersCollectionName)) 
-        	return;
+        if (!event.hasCollection(Cluster.class, ecalClustersCollectionName))
+            return;
 
         // Get the collection of Ecal clusters from the event. A triggered 
         // event should have Ecal clusters.  If it doesn't, skip the event.
@@ -123,7 +163,7 @@
 
         // Get the collection of tracks from the event
         List<Track> tracks = event.get(Track.class, tracksCollectionName);
-        this.printDebug("Number of Tracks: " + tracks.size());
+        this.printDebug("Number of Tracks in "+tracksCollectionName+" : " + tracks.size());
 
         finalStateParticles = new ArrayList<ReconstructedParticle>();
         electrons = new ArrayList<ReconstructedParticle>();
@@ -145,40 +185,41 @@
         // Loop through the list of final state particles and separate the
         // charged particles to either electrons or positrons.  These lists
         // will be used for vertexing purposes.
-        for (ReconstructedParticle finalStateParticle : finalStateParticles) {
-            if (finalStateParticle.getCharge() > 0) positrons.add(finalStateParticle);
-            else if (finalStateParticle.getCharge() < 0) electrons.add(finalStateParticle);
-        }
+        for (ReconstructedParticle finalStateParticle : finalStateParticles)
+            if (finalStateParticle.getCharge() > 0)
+                positrons.add(finalStateParticle);
+            else if (finalStateParticle.getCharge() < 0)
+                electrons.add(finalStateParticle);
         this.printDebug("Number of Electrons: " + electrons.size());
         this.printDebug("Number of Positrons: " + positrons.size());
-        
+
         // Vertex electron and positron candidates 
         findVertices(electrons, positrons);
 
         // If the list exist, put the vertexed candidates and vertices into the event
-        if (unconstrainedV0CandidatesColName != null){
+        if (unconstrainedV0CandidatesColName != null) {
             this.printDebug("Total number of unconstrained V0 candidates: " + unconstrainedV0Candidates.size());
             event.put(unconstrainedV0CandidatesColName, unconstrainedV0Candidates, ReconstructedParticle.class, 0);
         }
-        if (beamConV0CandidatesColName != null){
+        if (beamConV0CandidatesColName != null) {
             this.printDebug("Total number of beam constrained V0 candidates: " + unconstrainedV0Candidates.size());
             event.put(beamConV0CandidatesColName, beamConV0Candidates, ReconstructedParticle.class, 0);
         }
-        if (targetConV0CandidatesColName != null){
+        if (targetConV0CandidatesColName != null) {
             this.printDebug("Total number of target constrained V0 candidates: " + unconstrainedV0Candidates.size());
             event.put(targetConV0CandidatesColName, targetConV0Candidates, ReconstructedParticle.class, 0);
         }
-        if(unconstrainedV0VerticesColName != null){
-        	this.printDebug("Total number of unconstrained V0 vertices: " + unconstrainedV0Vertices.size());
-        	event.put(unconstrainedV0VerticesColName, unconstrainedV0Vertices, Vertex.class, 0);
+        if (unconstrainedV0VerticesColName != null) {
+            this.printDebug("Total number of unconstrained V0 vertices: " + unconstrainedV0Vertices.size());
+            event.put(unconstrainedV0VerticesColName, unconstrainedV0Vertices, Vertex.class, 0);
         }
-        if(beamConV0VerticesColName != null){
-        	this.printDebug("Total number of beam constrained V0 vertices: " + beamConV0Vertices.size());
-        	event.put(beamConV0VerticesColName, beamConV0Vertices, Vertex.class, 0);
+        if (beamConV0VerticesColName != null) {
+            this.printDebug("Total number of beam constrained V0 vertices: " + beamConV0Vertices.size());
+            event.put(beamConV0VerticesColName, beamConV0Vertices, Vertex.class, 0);
         }
-        if(targetConV0VerticesColName != null){
-        	this.printDebug("Total number of target constrained V0 vertices: " + beamConV0Vertices.size());
-        	event.put(targetConV0VerticesColName, targetConV0Vertices, Vertex.class, 0);
+        if (targetConV0VerticesColName != null) {
+            this.printDebug("Total number of target constrained V0 vertices: " + beamConV0Vertices.size());
+            event.put(targetConV0VerticesColName, targetConV0Vertices, Vertex.class, 0);
         }
     }
 
@@ -198,19 +239,17 @@
 
         // Instantiate the list of unmatched  clusters.  Remove if we find track match
         List<Cluster> unmatchedClusters = new ArrayList<Cluster>(clusters);
-       
 
         for (Track track : tracks) {
-            
+
             ReconstructedParticle particle = new BaseReconstructedParticle();
             HepLorentzVector fourVector = new BasicHepLorentzVector(0, 0, 0, 0);
-            
+
             //
             // Add all track information to the ReconstructedParticle
             //
-            
             particle.addTrack(track);
-            
+
             // Set the momentum of the ReconstructedParticle
             Hep3Vector momentum = new BasicHep3Vector(track.getTrackStates().get(0).getMomentum());
             momentum = CoordinateTransformations.transformVectorToDetector(momentum);
@@ -230,7 +269,7 @@
 
                 // Get the position of the Ecal cluster
                 Hep3Vector clusterPosition = new BasicHep3Vector(cluster.getPosition());
-                
+
                 // Extrapolate the track to the Ecal cluster position
                 Hep3Vector trackPosAtEcal = TrackUtils.extrapolateTrack(track, clusterPosition.z());
                 this.printDebug("Ecal cluster position: " + clusterPosition.toString());
@@ -257,17 +296,17 @@
                     this.printDebug("Track and Ecal cluster are in opposite volumes. Track Y @ ECAL = " + trackPosAtEcal.z());
                     continue;
                 }
-                
+
                 // TODO: Checking whether r < rMax should be occuring within isMatch.  isMatch 
                 // 		 is basically repeating a lot of the same code as above.
-                if (r < rMax && isMatch(cluster,track)) {
-                	rMax = r;
-                	matchedCluster = cluster;
+                if (r < rMax && isMatch(cluster, track)) {
+                    rMax = r;
+                    matchedCluster = cluster;
                 }
             }
-            
+
             if (matchedCluster != null) {
-            	particle.addCluster(matchedCluster);
+                particle.addCluster(matchedCluster);
                 ((BasicHepLorentzVector) fourVector).setT(matchedCluster.getEnergy());
                 unmatchedClusters.remove(matchedCluster);
             }
@@ -303,14 +342,14 @@
     }
 
     /**
-     * 
+     *
      */
     boolean isMatch(Cluster cluster, Track track) {
-     
-    	// Get the position of the Ecal cluster
-    	Hep3Vector clusterPosition = new BasicHep3Vector(cluster.getPosition());
-        
-    	// Extrapolate the track to the Ecal cluster position
+
+        // Get the position of the Ecal cluster
+        Hep3Vector clusterPosition = new BasicHep3Vector(cluster.getPosition());
+
+        // Extrapolate the track to the Ecal cluster position
         Hep3Vector trackPosAtEcal = TrackUtils.extrapolateTrack(track, clusterPosition.z());
 
         double dxCut = 20.0;
@@ -318,10 +357,10 @@
 
         if (Math.abs(trackPosAtEcal.x() - clusterPosition.x()) > dxCut)
             return false;
-        
+
         if (Math.abs(trackPosAtEcal.y() - clusterPosition.y()) > dyCut)
             return false;
-        
+
         return true;
     }
 }

java/branches/hps-java_HPSJAVA-88/recon/src/main/java/org/hps/recon/particle
ReconParticleDriverIC.java 1244 -> 1245
--- java/branches/hps-java_HPSJAVA-88/recon/src/main/java/org/hps/recon/particle/ReconParticleDriverIC.java	2014-10-19 06:41:14 UTC (rev 1244)
+++ java/branches/hps-java_HPSJAVA-88/recon/src/main/java/org/hps/recon/particle/ReconParticleDriverIC.java	2014-10-19 06:58:06 UTC (rev 1245)
@@ -232,7 +232,7 @@
             for (HPSEcalClusterIC cluster : unmatchedClusters) {
 
                 // Get the position of the Ecal cluster
-                Hep3Vector clusterPosition = new BasicHep3Vector(cluster.getPosition());
+                Hep3Vector clusterPosition = new BasicHep3Vector(cluster.getCorrPosition());
                 
                 // Extrapolate the track to the Ecal cluster position
                 Hep3Vector trackPosAtEcal = TrackUtils.extrapolateTrack(track, clusterPosition.z());
@@ -283,6 +283,7 @@
                     double[] corrPosition = new double[3];
                     corrPosition[0] = corrP;
                     corrPosition[1] = rawP[1];
+                    corrPosition[2] = rawP[2];
                     matchedCluster.setCorrPosition(corrPosition);           	
             	}// End of cluster position/energy corrections. 
             	            	
@@ -317,6 +318,7 @@
                     double[] corrPosition = new double[3];
                     corrPosition[0] = corrP;
                     corrPosition[1] = rawP[1];
+                    corrPosition[2] = rawP[2];
                     unmatchedCluster.setCorrPosition(corrPosition);           	
             	}// End of cluster position/energy corrections. 
 

java/branches/hps-java_HPSJAVA-88/steering-files/src/main/resources/org/hps/steering/recon
HPS2014OfflineNoPileupRecon.lcsim 1244 -> 1245
--- java/branches/hps-java_HPSJAVA-88/steering-files/src/main/resources/org/hps/steering/recon/HPS2014OfflineNoPileupRecon.lcsim	2014-10-19 06:41:14 UTC (rev 1244)
+++ java/branches/hps-java_HPSJAVA-88/steering-files/src/main/resources/org/hps/steering/recon/HPS2014OfflineNoPileupRecon.lcsim	2014-10-19 06:58:06 UTC (rev 1245)
@@ -1,5 +1,7 @@
 <!-- 
   Offline reconstruction for 2014 (electron run) data.
+    Updated on 16Oct to include new clustering with corrections. -HS <[log in to unmask]>
+  
   @author Sho Uemura <[log in to unmask]>
   @version $Id: HPS2014OfflineRecon.lcsim,v 1.7 2013/10/30 16:23:32 phansson Exp $
 -->
@@ -58,12 +60,12 @@
             <useTimestamps>true</useTimestamps>
             <useTruthTime>false</useTruthTime>
         </driver>
-        <driver name="EcalClusterer" type="org.hps.recon.ecal.EcalClusterICBasic">
+        <driver name="EcalClusterer" type="org.hps.recon.ecal.EcalClusterIC">
             <ecalName>Ecal</ecalName>
             <ecalCollectionName>EcalCalHits</ecalCollectionName>
             <timeCut>true</timeCut>
         </driver>
-        <driver name="ReconParticle" type="org.hps.recon.particle.HpsReconParticleDriver">          
+        <driver name="ReconParticle" type="org.hps.recon.particle.HpsReconParticleDriverIC">          
         </driver>
         <driver name="TrackDataDriver" type="org.hps.recon.tracking.TrackDataDriver" />
         <driver name="LCIOWriter" type="org.lcsim.util.loop.LCIODriver">

java/branches/hps-java_HPSJAVA-88/steering-files/src/main/resources/org/hps/steering/recon
HPS2014OfflineRecon.lcsim 1244 -> 1245
--- java/branches/hps-java_HPSJAVA-88/steering-files/src/main/resources/org/hps/steering/recon/HPS2014OfflineRecon.lcsim	2014-10-19 06:41:14 UTC (rev 1244)
+++ java/branches/hps-java_HPSJAVA-88/steering-files/src/main/resources/org/hps/steering/recon/HPS2014OfflineRecon.lcsim	2014-10-19 06:58:06 UTC (rev 1245)
@@ -1,5 +1,6 @@
 <!-- 
   Offline reconstruction for 2014 (electron run) data.
+  Updated on 16Oct to include new clustering with corrections. -HS <[log in to unmask]>
   @author Sho Uemura <[log in to unmask]>
   @version $Id: HPS2014OfflineRecon.lcsim,v 1.7 2013/10/30 16:23:32 phansson Exp $
 -->
@@ -62,12 +63,12 @@
             <useTimestamps>true</useTimestamps>
             <useTruthTime>false</useTruthTime>
         </driver>
-        <driver name="EcalClusterer" type="org.hps.recon.ecal.EcalClusterICBasic">
+        <driver name="EcalClusterer" type="org.hps.recon.ecal.EcalClusterIC">
             <ecalName>Ecal</ecalName>
             <ecalCollectionName>EcalCalHits</ecalCollectionName>
             <timeCut>true</timeCut>
         </driver>
-        <driver name="ReconParticle" type="org.hps.recon.particle.HpsReconParticleDriver">          
+        <driver name="ReconParticle" type="org.hps.recon.particle.HpsReconParticleDriverIC">          
         </driver>
         <driver name="TrackDataDriver" type="org.hps.recon.tracking.TrackDataDriver" />
         <driver name="LCIOWriter" type="org.lcsim.util.loop.LCIODriver">

java/branches/hps-java_HPSJAVA-88/steering-files/src/main/resources/org/hps/steering/recon
HPS2014OfflineTruthRecon.lcsim 1244 -> 1245
--- java/branches/hps-java_HPSJAVA-88/steering-files/src/main/resources/org/hps/steering/recon/HPS2014OfflineTruthRecon.lcsim	2014-10-19 06:41:14 UTC (rev 1244)
+++ java/branches/hps-java_HPSJAVA-88/steering-files/src/main/resources/org/hps/steering/recon/HPS2014OfflineTruthRecon.lcsim	2014-10-19 06:58:06 UTC (rev 1245)
@@ -1,5 +1,7 @@
 <!-- 
   Offline reconstruction for 2014 (electron run) data.
+    Updated on 16Oct to include new clustering with corrections. -HS <[log in to unmask]>
+  
   @author Sho Uemura <[log in to unmask]>
   @version $Id: HPS2014OfflineRecon.lcsim,v 1.7 2013/10/30 16:23:32 phansson Exp $
 -->
@@ -61,12 +63,12 @@
             <useTimestamps>false</useTimestamps>
             <useTruthTime>true</useTruthTime>
         </driver>
-        <driver name="EcalClusterer" type="org.hps.recon.ecal.EcalClusterICBasic">
+        <driver name="EcalClusterer" type="org.hps.recon.ecal.EcalClusterIC">
             <ecalName>Ecal</ecalName>
             <ecalCollectionName>EcalCalHits</ecalCollectionName>
             <timeCut>true</timeCut>
         </driver>
-        <driver name="ReconParticle" type="org.hps.recon.particle.HpsReconParticleDriver">          
+        <driver name="ReconParticle" type="org.hps.recon.particle.HpsReconParticleDriverIC">          
         </driver>
         <driver name="TrackDataDriver" type="org.hps.recon.tracking.TrackDataDriver" />
         <driver name="LCIOWriter" type="org.lcsim.util.loop.LCIODriver">

java/branches/hps-java_HPSJAVA-88/steering-files/src/main/resources/org/hps/steering/recon
SimpleMCRecon.lcsim 1244 -> 1245
--- java/branches/hps-java_HPSJAVA-88/steering-files/src/main/resources/org/hps/steering/recon/SimpleMCRecon.lcsim	2014-10-19 06:41:14 UTC (rev 1244)
+++ java/branches/hps-java_HPSJAVA-88/steering-files/src/main/resources/org/hps/steering/recon/SimpleMCRecon.lcsim	2014-10-19 06:58:06 UTC (rev 1245)
@@ -1,3 +1,11 @@
+<!--
+    This is a steering file for running a simplified version of the reconstruction directly
+    on LCIO files generated with SLIC, which only contain MCParticle, SimCalorimeterHit,
+    and SimTrackerHit collections.
+    
+    It should NOT be used for production purposes and is primarily intended for testing,
+    or for performing a quick analysis on MC data without running the trigger simulation.      
+-->
 <lcsim xmlns:xs="http://www.w3.org/2001/XMLSchema-instance"
        xs:noNamespaceSchemaLocation="http://www.lcsim.org/schemas/lcsim/1.0/lcsim.xsd">
     <control>
@@ -5,32 +13,30 @@
         <printDriversDetailed>true</printDriversDetailed>
     </control>
     <execute>
+        <!-- Print out event numbers. -->
         <driver name="EventMarkerDriver"/>
+        <!-- Load the text based conditions. -->
         <driver name="CalibrationDriver"/>
+        <!-- Simple tracker hit digi. -->
         <driver name="TrackerDigiDriver"/>
+        <!-- Create tracker hits. -->
         <driver name="HelicalTrackHitDriver"/>
+        <!-- Find tracks. -->
         <driver name="TrackerReconDriver"/>
-        <!-- FIXME: This should be changed to use the current ECAL clustering algorithm. -->
-        <driver name="SimpleEcalClusterer"/>
-<!--        
-        <driver name="EcalRawConverter" />
-        <driver name="EcalClusterer" />
--->        
+        <!-- Create ecal clusters. -->
+        <driver name="EcalClusterer"/>
+        <!-- Create recon particles. -->       
         <driver name="ReconParticle" />
-<!--        
-        <driver name="TrackDataDriver" />
--->        
-        <driver name="GBLDriver"/>
+        <!-- Write out a recon LCIO file. -->
         <driver name="LCIOWriter"/>
+        <!-- Cleanup the readout collections on the detector after each event. -->
+        <driver name="CleanupDriver" />
     </execute>
     <drivers>
-        <driver name="SimpleEcalClusterer" type="org.hps.recon.ecal.EcalClusterer">
-            <ecalCollectionName>EcalHits</ecalCollectionName>
-        </driver>
-        <driver name="CalibrationDriver" type="org.hps.conditions.deprecated.CalibrationDriver"/>
         <driver name="EventMarkerDriver" type="org.lcsim.job.EventMarkerDriver">
             <eventInterval>10</eventInterval>
         </driver>
+        <driver name="CalibrationDriver" type="org.hps.conditions.deprecated.CalibrationDriver"/>
         <driver name="TrackerDigiDriver" type="org.hps.recon.tracking.SimpleTrackerDigiDriver">
             <debug>false</debug>
         </driver>
@@ -43,31 +49,15 @@
             <debug>false</debug>
             <strategyResource>/org/hps/recon/tracking/strategies/HPS-Full.xml</strategyResource>
         </driver>
-        <driver name="GBLDriver" type="org.hps.recon.tracking.gbl.GBLOutputDriver">
-            <debug>1</debug>
-            <isMC>false</isMC>
-            <gblFileName></gblFileName>
-        </driver>
-<!--        
-       <driver name="EcalRawConverter" type="org.hps.recon.ecal.EcalRawConverterDriver">
-            <ecalCollectionName>EcalCalHits</ecalCollectionName>
-            <use2014Gain>false</use2014Gain>
-            <useTimestamps>false</useTimestamps>
-            <useTruthTime>true</useTruthTime>
-        </driver>
         <driver name="EcalClusterer" type="org.hps.recon.ecal.EcalClusterICBasic">
             <ecalName>Ecal</ecalName>
-            <ecalCollectionName>EcalCalHits</ecalCollectionName>
+            <ecalCollectionName>EcalHits</ecalCollectionName>
             <timeCut>false</timeCut>
-        </driver>
--->        
+        </driver>              
         <driver name="ReconParticle" type="org.hps.recon.particle.HpsReconParticleDriver"/>
-<!--        
-        <driver name="TrackDataDriver" type="org.hps.recon.tracking.TrackDataDriver" />
--->        
         <driver name="LCIOWriter" type="org.lcsim.util.loop.LCIODriver">
             <outputFilePath>${outputFile}</outputFilePath>
         </driver>
+        <driver name="CleanupDriver" type="org.lcsim.recon.tracking.digitization.sisim.config.ReadoutCleanupDriver"/>
     </drivers>
-</lcsim>
-
+</lcsim>
\ No newline at end of file

java/branches/hps-java_HPSJAVA-88/steering-files/src/main/resources/org/hps/steering/users/mgraham
DataQualityMonitor.lcsim 1244 -> 1245
--- java/branches/hps-java_HPSJAVA-88/steering-files/src/main/resources/org/hps/steering/users/mgraham/DataQualityMonitor.lcsim	2014-10-19 06:41:14 UTC (rev 1244)
+++ java/branches/hps-java_HPSJAVA-88/steering-files/src/main/resources/org/hps/steering/users/mgraham/DataQualityMonitor.lcsim	2014-10-19 06:58:06 UTC (rev 1245)
@@ -6,26 +6,30 @@
        xs:noNamespaceSchemaLocation="http://www.lcsim.org/schemas/lcsim/1.0/lcsim.xsd">
     <execute>
         <driver name="EventMarkerDriver"/>
-        <driver name="DQMDatabaseDriver"/>  
+<!--        <driver name="DQMDatabaseDriver"/>   -->
         <driver name="CalibrationDriver"/> 
          <driver name="RawTrackerHitSensorSetup"/>
-        <driver name="BadChannelFilter" /> 
+<!--        <driver name="BadChannelFilter" />  -->
          <driver name="RawTrackerHitFitterDriver" />
          <driver name="TrackerHitDriver"/>
          <driver name="HelicalTrackHitDriver"/>
          <driver name="TrackerReconDriver"/>
-          <driver name="TrackDataDriver"/>
+          <driver name="TrackDataDriver"/>         
         <driver name="EcalRawConverter" />
-         <driver name="EcalClusterer" />
-          <driver name="ReconParticle" />      
-        <driver name="SVTMonitoring"/>  
+         <driver name="EcalClusterer" /> 
+          <driver name="ReconParticle" />     
+<!--        <driver name="SVTMonitoring"/>  
        <driver name="SVTHitMCEfficiency"/>  
         <driver name="TrackingMonitoring"/> 
         <driver name="TrackingResiduals"/> 
         <driver name="TrackMCEfficiency"/>
         <driver name="FinalStateMonitoring"/>  
-        <driver name="V0Monitoring"/>         
-        <driver name="AidaSaveDriver"/>
+        <driver name="V0Monitoring"/>         -->
+        <driver name="AddBeamSpotToTrack"/>
+       <driver name="BSTrackReconParticle" />     
+        <driver name="BeamSpotTrackAnalysis"/> 
+        <driver name="AidaSaveDriver"/> 
+        <driver name="LCIOWriter"/> 
         <driver name="CleanupDriver"/>
     </execute>    
     <drivers>    
@@ -68,12 +72,26 @@
             <ecalName>Ecal</ecalName>
             <ecalCollectionName>EcalCalHits</ecalCollectionName>
         </driver>
+        <driver name="AddBeamSpotToTrack" type="org.hps.users.mgraham.AddBeamSpotToTrack">            
+        </driver>
+     <driver name="BeamSpotTrackAnalysis" type="org.hps.users.mgraham.BeamSpotTrackAnalysis">            
+        </driver>
         <driver name="ReconParticle" type="org.hps.recon.particle.HpsReconParticleDriver">  
-            <debug>false</debug>
+            <debug>true</debug>
         </driver>
-        <driver name="LCIOWriter" type="org.lcsim.util.loop.LCIODriver">
-            <outputFilePath>${outputFile}.slcio</outputFilePath>
+
+    <driver name="BSTrackReconParticle" type="org.hps.recon.particle.HpsReconParticleDriver">  
+            <debug>true</debug>
+            <tracksCollectionName>BeamSpotTracks</tracksCollectionName>
+            <finalStateParticlesColName>BSFinalStateParticles</finalStateParticlesColName>
+            <unconstrainedV0CandidatesColName>BSUnconstrainedV0Candidates</unconstrainedV0CandidatesColName>
+            <beamConV0CandidatesColName>BSBeamspotConstrainedV0Candidates</beamConV0CandidatesColName>
+            <targetConV0CandidatesColName>BSTargetConstrainedV0Candidates</targetConV0CandidatesColName>
+            <unconstrainedV0VerticesColName>BSUnconstrainedV0Vertices</unconstrainedV0VerticesColName>
+            <beamConV0VerticesColName>BSBeamspotConstrainedV0Vertices</beamConV0VerticesColName>
+            <targetConV0VerticesColName>BSTargetConstrainedV0Vertices</targetConV0VerticesColName>
         </driver>
+       
         <driver name="AidaSaveDriver" type="org.lcsim.job.AidaSaveDriver">
                  <outputFileName>./conditions_test_plots.root</outputFileName>
         </driver>
@@ -105,6 +123,9 @@
             <overwriteDB>false</overwriteDB>
        </driver>
         <driver name="CleanupDriver" type="org.lcsim.recon.tracking.digitization.sisim.config.ReadoutCleanupDriver"/>
-
+   <driver name="LCIOWriter"
+                type="org.lcsim.util.loop.LCIODriver">
+            <outputFilePath>blah.slcio</outputFilePath>
+        </driver>
     </drivers>
 </lcsim>

java/branches/hps-java_HPSJAVA-88/steering-files/src/main/resources/org/hps/steering/users/mgraham
DataQualityMonitorOnRecon.lcsim 1244 -> 1245
--- java/branches/hps-java_HPSJAVA-88/steering-files/src/main/resources/org/hps/steering/users/mgraham/DataQualityMonitorOnRecon.lcsim	2014-10-19 06:41:14 UTC (rev 1244)
+++ java/branches/hps-java_HPSJAVA-88/steering-files/src/main/resources/org/hps/steering/users/mgraham/DataQualityMonitorOnRecon.lcsim	2014-10-19 06:58:06 UTC (rev 1245)
@@ -80,28 +80,34 @@
         <driver name="SVTMonitoring" type="org.hps.analysis.dataquality.SvtMonitoring">
              <runNumber>${runNumber}</runNumber>
             <overwriteDB>false</overwriteDB>
+            <printDQMStrings>true</printDQMStrings>
         </driver>
        <driver name="TrackingMonitoring" type="org.hps.analysis.dataquality.TrackingMonitoring">
              <runNumber>${runNumber}</runNumber>
             <overwriteDB>false</overwriteDB>
+             <printDQMStrings>true</printDQMStrings>
        </driver>
   <driver name="TrackingResiduals" type="org.hps.analysis.dataquality.TrackingResiduals">
              <runNumber>${runNumber}</runNumber>
             <overwriteDB>false</overwriteDB>
+            <printDQMStrings>true</printDQMStrings>
        </driver>
        <driver name="FinalStateMonitoring" type="org.hps.analysis.dataquality.FinalStateMonitoring">
              <runNumber>${runNumber}</runNumber>
             <overwriteDB>false</overwriteDB>
+             <printDQMStrings>true</printDQMStrings>
        </driver>
       <driver name="TrackMCEfficiency" type="org.hps.analysis.dataquality.TrackMCEfficiency">
             <overwriteDB>false</overwriteDB>
+             <printDQMStrings>true</printDQMStrings>
        </driver> 
         <driver name="SVTHitMCEfficiency" type="org.hps.analysis.dataquality.SVTHitMCEfficiency">
             <overwriteDB>false</overwriteDB>
-            <printDQMStrings>false</printDQMStrings>
+            <printDQMStrings>true</printDQMStrings>
        </driver> 
        <driver name="V0Monitoring" type="org.hps.analysis.dataquality.V0Monitoring">
              <runNumber>${runNumber}</runNumber>
+              <printDQMStrings>true</printDQMStrings>
             <overwriteDB>false</overwriteDB>
        </driver>
         <driver name="CleanupDriver" type="org.lcsim.recon.tracking.digitization.sisim.config.ReadoutCleanupDriver"/>

java/branches/hps-java_HPSJAVA-88/tracking
pom.xml 1244 -> 1245
--- java/branches/hps-java_HPSJAVA-88/tracking/pom.xml	2014-10-19 06:41:14 UTC (rev 1244)
+++ java/branches/hps-java_HPSJAVA-88/tracking/pom.xml	2014-10-19 06:58:06 UTC (rev 1245)
@@ -23,6 +23,7 @@
                 <configuration>
                     <excludes>
                         <exclude>org/hps/recon/tracking/TruthResidualTest.java</exclude>
+                        <exclude>org/hps/recon/tracking/TrackRecoFromScratchTest.java</exclude>
                         <!-- Test input LCIO file is missing for next two. -->
                         <exclude>org/hps/recon/tracking/TestRunTrackReconTest.java</exclude>
                         <exclude>org/hps/recon/tracking/HelicalTrackHitDriverTest.java</exclude>

java/branches/hps-java_HPSJAVA-88/tracking/src/main/java/org/hps/recon/tracking/gbl
HpsGblFitter.java 1244 -> 1245
--- java/branches/hps-java_HPSJAVA-88/tracking/src/main/java/org/hps/recon/tracking/gbl/HpsGblFitter.java	2014-10-19 06:41:14 UTC (rev 1244)
+++ java/branches/hps-java_HPSJAVA-88/tracking/src/main/java/org/hps/recon/tracking/gbl/HpsGblFitter.java	2014-10-19 06:58:06 UTC (rev 1245)
@@ -192,8 +192,8 @@
 
             Matrix mDirT = MatrixOp.transposed(mDir); //new BasicMatrix(MatrixOp.transposed(mDir));
             if (_debug) {
-                System.out.printf(" mDir \n%s\n", this.getClass().getSimpleName(), mDir.toString());
-                System.out.printf(" mDirT \n%s\n", this.getClass().getSimpleName(), mDirT.toString());
+                System.out.printf(" mDir \n%s\n%s\n", this.getClass().getSimpleName(), mDir.toString());
+                System.out.printf(" mDirT \n%s\n%s\n", this.getClass().getSimpleName(), mDirT.toString());
             }
 
             // Track direction 
@@ -213,7 +213,7 @@
             uvDir.setElement(1, 2, cosLambda);
 
             if (_debug) {
-                System.out.printf(" uvDir \n%s\n", this.getClass().getSimpleName(), uvDir.toString());
+                System.out.printf(" uvDir \n%s\n%s\n", this.getClass().getSimpleName(), uvDir.toString());
             }
 
             // projection from  measurement to local (curvilinear uv) directions (duv/dm)
@@ -224,8 +224,8 @@
 
             //proL2m_list[strip->GetId()] = new TMatrixD(proL2m);
             if (_debug) {
-                System.out.printf(" proM2l \n%s\n", this.getClass().getSimpleName(), proM2l.toString());
-                System.out.printf(" proL2m \n%s\n", this.getClass().getSimpleName(), proL2m.toString());
+                System.out.printf(" proM2l \n%s\n%s\n", this.getClass().getSimpleName(), proM2l.toString());
+                System.out.printf(" proL2m \n%s\n%s\n", this.getClass().getSimpleName(), proL2m.toString());
             }
 
             // measurement/residual in the measurement system
@@ -404,6 +404,12 @@
             return -3;
         }
 
+        // print the trajectory
+        if(_debug)
+        {
+            System.out.println(" Gbl Trajectory ");
+            _traj.printPoints(4);
+        }
         // fit trajectory
         _traj.fit(m_chi2, m_ndf, m_lost_weight);
         

java/branches/hps-java_HPSJAVA-88/tracking/src/main/java/org/hps/recon/tracking/gbl
HpsGblRefitter.java 1244 -> 1245
--- java/branches/hps-java_HPSJAVA-88/tracking/src/main/java/org/hps/recon/tracking/gbl/HpsGblRefitter.java	2014-10-19 06:41:14 UTC (rev 1244)
+++ java/branches/hps-java_HPSJAVA-88/tracking/src/main/java/org/hps/recon/tracking/gbl/HpsGblRefitter.java	2014-10-19 06:58:06 UTC (rev 1245)
@@ -23,13 +23,13 @@
 import org.hps.recon.tracking.gbl.matrix.Vector;
 
 /**
- * A Driver which refits tracks using GBL Modeled on the hps-dst code written by
- * Per Hansson and Omar Moreno Requires the GBL Collections and Relations to be
- * present in the event.
+ * A Driver which refits tracks using GBL. 
+ * Modeled on the hps-dst code written by Per Hansson and Omar Moreno. 
+ * Requires the GBL Collections and Relations to be present in the event.
  *
  * @author Norman A Graf
  *
- * @version $Id:
+ * @version $Id$
  */
 public class HpsGblRefitter extends Driver
 {

java/branches/hps-java_HPSJAVA-88/tracking/src/main/java/org/hps/recon/tracking/nobfield
StraightTrack.java 1244 -> 1245
--- java/branches/hps-java_HPSJAVA-88/tracking/src/main/java/org/hps/recon/tracking/nobfield/StraightTrack.java	2014-10-19 06:41:14 UTC (rev 1244)
+++ java/branches/hps-java_HPSJAVA-88/tracking/src/main/java/org/hps/recon/tracking/nobfield/StraightTrack.java	2014-10-19 06:58:06 UTC (rev 1245)
@@ -1,20 +1,12 @@
 package org.hps.recon.tracking.nobfield;
 
 import hep.physics.matrix.SymmetricMatrix;
-import static java.lang.Math.abs;
-import static java.lang.Math.signum;
 import java.util.ArrayList;
 import java.util.List;
-import org.lcsim.constants.Constants;
 import org.lcsim.event.LCIOParameters;
 import org.lcsim.event.Track;
 import org.lcsim.event.TrackState;
 import org.lcsim.event.TrackerHit;
-import static org.lcsim.event.base.BaseTrack.D0;
-import static org.lcsim.event.base.BaseTrack.OMEGA;
-import static org.lcsim.event.base.BaseTrack.PHI;
-import static org.lcsim.event.base.BaseTrack.TANLAMBDA;
-import static org.lcsim.event.base.BaseTrack.Z0;
 import org.lcsim.event.base.BaseTrackState;
 
 /**
@@ -31,6 +23,9 @@
     protected List<TrackState> _trackStates;
     protected double[] _chi2 = new double[2];
     protected double[] _parameters = new double[5];
+     protected double[] _momentum = new double[3];
+      protected double[] _ref = new double[3];
+    protected int _ndf;
     // Parameter ordering.
     public static final int x0 = LCIOParameters.ParameterName.d0.ordinal();
     public static final int slopeXZ = LCIOParameters.ParameterName.phi0.ordinal();
@@ -139,59 +134,59 @@
 
     @Override
     public int getCharge() {
-        throw new UnsupportedOperationException("StraightTrack...no momentum measured."); //To change body of generated methods, choose Tools | Templates.
+        return -999;
     }
 
     @Override
     public double[] getReferencePoint() {
-        throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
+        return _ref;
     }
 
     @Override
     public double getReferencePointX() {
-        throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
+        return _ref[0];
     }
 
     @Override
     public double getReferencePointY() {
-        throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
+    return _ref[1];
     }
 
     @Override
     public double getReferencePointZ() {
-        throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
+         return _ref[2];
     }
 
     @Override
     public boolean isReferencePointPCA() {
-        throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
+        return false;
     }
 
     @Override
     public double[] getMomentum() {
-        throw new UnsupportedOperationException("StraightTrack...no momentum measured."); //To change body of generated methods, choose Tools | Templates.
+        return _momentum;
     }
 
     @Override
     public double getPX() {
-        throw new UnsupportedOperationException("StraightTrack...no momentum measured."); //To change body of generated methods, choose Tools | Templates.
+        return -999;
     }
 
     @Override
     public double getPY() {
-        throw new UnsupportedOperationException("StraightTrack...no momentum measured."); //To change body of generated methods, choose Tools | Templates.
+        return -999;
     }
 
     @Override
     public double getPZ() {
-        throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
+        return -999;
     }
 
     @Override
     public boolean fitSuccess() {
         throw new UnsupportedOperationException("StraightTrack...no momentum measured."); //To change body of generated methods, choose Tools | Templates.
     }
-
+    
     @Override
     public double getTrackParameter(int i) {
         return _parameters[i];
@@ -227,24 +222,32 @@
 
     @Override
     public int getNDF() {
-        throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
+        return _ndf;
     }
 
+    public void setNDF(int ndf) {
+        _ndf = ndf;
+    }
+
     @Override
     public double getdEdx() {
-        throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
+        return -999;
     }
 
     @Override
     public double getdEdxError() {
-        throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
+        return -999;
     }
 
     @Override
     public double getRadiusOfInnermostHit() {
-        throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
+        return -999;
     }
 
+//    public TrackDirection getTrackDirection(){
+        
+ //   }
+    
     public String toString() {
         String className = getClass().getName();
         int lastDot = className.lastIndexOf('.');

java/branches/hps-java_HPSJAVA-88/tracking/src/main/java/org/hps/recon/tracking/nobfield
StraightTrackFinder.java 1244 -> 1245
--- java/branches/hps-java_HPSJAVA-88/tracking/src/main/java/org/hps/recon/tracking/nobfield/StraightTrackFinder.java	2014-10-19 06:41:14 UTC (rev 1244)
+++ java/branches/hps-java_HPSJAVA-88/tracking/src/main/java/org/hps/recon/tracking/nobfield/StraightTrackFinder.java	2014-10-19 06:58:06 UTC (rev 1245)
@@ -3,7 +3,10 @@
 import java.util.ArrayList;
 import java.util.List;
 import org.hps.recon.tracking.HitCollectionUtilites;
+import org.hps.recon.tracking.nobfield.TrackCollectionUtilities;
 import org.lcsim.event.EventHeader;
+import org.lcsim.event.Track;
+import org.lcsim.event.TrackerHit;
 import org.lcsim.fit.helicaltrack.HelicalTrackHit;
 import org.lcsim.fit.line.SlopeInterceptLineFit;
 import org.lcsim.fit.line.SlopeInterceptLineFitter;
@@ -17,7 +20,7 @@
 public class StraightTrackFinder extends Driver {
 
     // Debug flag.
-    private boolean debug = false;
+    private boolean debug = true;
     // Tracks found across all events.
     int ntracks = 0;
     // Number of events processed.
@@ -36,9 +39,10 @@
     private int _iterativeConfirmed = 3;
     // use HPS implementation of material manager
     private boolean _useHPSMaterialManager = true;
-    // enable the use of sectoring using sector binning in SeedTracker
-    private boolean _applySectorBinning = true;
 
+    private TrackChecker checkerTrack = new TrackChecker();
+    private HitOnTrackChecker checkerHOT = new HitOnTrackChecker();
+
     private SlopeInterceptLineFitter _lfitter = new SlopeInterceptLineFitter();
 
     public void setDebug(boolean debug) {
@@ -76,9 +80,6 @@
         this._useHPSMaterialManager = useHPSMaterialManager;
     }
 
-    /**
-     * This is used to setup the Drivers after XML config.
-     */
     @Override
     public void detectorChanged(Detector detector) {
         // Cache Detector object.
@@ -93,68 +94,44 @@
             return;
 
         List<HelicalTrackHit> allHits = event.get(HelicalTrackHit.class, stInputCollectionName);
-        if (allHits.size() == 0)
-            return;
+
         List<List<HelicalTrackHit>> splitTopBot = HitCollectionUtilites.SplitTopBottomHits(allHits);
         // will always have top(=0) and bottom(=1) lists (though they may be empty)
         List<HelicalTrackHit> topHits = splitTopBot.get(0);
         List<HelicalTrackHit> bottomHits = splitTopBot.get(1);
-        //a simple strategy...eventually implement SeedTracker strategies
+        //a simple strategy...eventually implement SeedTracker strategies?
         int nTotLayers = 6;
-        int[] layerStrategy = {1, 3, 5, 7, 9, 11};
+        int nSeed = 3;
+        int nExtra = nTotLayers - nSeed;
+        int[] seedStrategy = {1, 3, 5};
+        int[] extendStrategy = {7, 9, 11};
         int minHits = 4;
 
-        List<StraightTrack> trackList = new ArrayList<>();
-//sort the hits for some reason
-//        List<List<HelicalTrackHit>> sortedTopHits=new ArrayList<>();
-//         List<List<HelicalTrackHit>> sortedBottomHits=new ArrayList<>();
-//        for(int i = 0;i<nTotLayers;i++){
-//            List<HelicalTrackHit> sortedTop=HitCollectionUtilites.GetSortedHits(topHits,layerStrategy[i]);
-//            sortedTopHits.add(sortedTop);
-//            List<HelicalTrackHit> sortedBot=HitCollectionUtilites.GetSortedHits(bottomHits,layerStrategy[i]);
-//            sortedBottomHits.add(sortedBot);                      
-//        }
-//        
-        if (topHits.size() < 4)
-            return;
-        //first do top...
-        for (HelicalTrackHit h1 : HitCollectionUtilites.GetSortedHits(topHits, layerStrategy[0])) {
-            if (debug)
-                System.out.println(h1.toString());
-            for (HelicalTrackHit h2 : HitCollectionUtilites.GetSortedHits(topHits, layerStrategy[1])) {
-                if (debug)
-                    System.out.println(h2.toString());
-                for (HelicalTrackHit h3 : HitCollectionUtilites.GetSortedHits(topHits, layerStrategy[2])) {
-                    if (debug)
-                        System.out.println(h3.toString());
-                    for (HelicalTrackHit h4 : HitCollectionUtilites.GetSortedHits(topHits, layerStrategy[3])) {
-                        if (debug)
-                            System.out.println(h4.toString());
-                        for (HelicalTrackHit h5 : HitCollectionUtilites.GetSortedHits(topHits, layerStrategy[4])) {
-                            if (debug)
-                                System.out.println(h5.toString());
-                            //  Setup for the line fit
-                            List<HelicalTrackHit> testTrack = new ArrayList<HelicalTrackHit>();
-                            testTrack.add(h1);
-                            testTrack.add(h2);
-                            testTrack.add(h3);
-                            testTrack.add(h4);
-                            testTrack.add(h5);
-                            SlopeInterceptLineFit xfit = FitToLine(testTrack, 0);
-                            SlopeInterceptLineFit yfit = FitToLine(testTrack, 1);
-                            if (debug)
-                                System.out.println("xfit = " + xfit.toString());
-                            if (debug)
-                                System.out.println("yfit = " + yfit.toString());
-                            StraightTrack trk = makeTrack(xfit, yfit);
-                            trackList.add(trk);
-                        }
-                    }
-                }
-            }
+        TrackChecker checkerTrack = new TrackChecker();
+        HitOnTrackChecker checkerHOT = new HitOnTrackChecker();
+
+//        List<StraightTrack> seeds = getSeeds(seedStrategy, topHits);
+        List<StraightTrack> seeds = getSeeds(seedStrategy, allHits);
+        System.out.println("Found " + seeds.size() + " seeds");
+
+        List<StraightTrack> extendedSeeds = new ArrayList<>();
+        for (StraightTrack seed : seeds)
+            extendTrack(extendStrategy, 0, seed, allHits, extendedSeeds);
+//            extendTrack(extendStrategy, 0, seed, topHits, extendedSeeds);
+
+        System.out.println("Prepruning  :Found " + extendedSeeds.size() + " extended seeds");
+
+        //remove tracks with more than m overlaping hits...pick best chi2
+        //...
+        List<StraightTrack> finalTracks = new ArrayList<>();
+        for (StraightTrack track : extendedSeeds) {
+            boolean isbest = TrackCollectionUtilities.pruneTrackList((ArrayList<Track>) (ArrayList) extendedSeeds, track, 1);
+            if (isbest)
+                finalTracks.add(track);
         }
 
-        event.put(trackCollectionName, trackList);
+        System.out.println("Postpruning  :Found " + finalTracks.size() + " extended seeds");
+        event.put(trackCollectionName, finalTracks);
     }
 
     public SlopeInterceptLineFit FitToLine(List<HelicalTrackHit> hits, int projection) {
@@ -188,17 +165,108 @@
 
     }
 
-    private StraightTrack makeTrack(SlopeInterceptLineFit xfit, SlopeInterceptLineFit yfit) {
+    private StraightTrack makeTrack(List<HelicalTrackHit> hits, SlopeInterceptLineFit xfit, SlopeInterceptLineFit yfit) {
         StraightTrack track = new StraightTrack();
-        double[] pars = {-99, -99, -99, -99};
+        double[] pars = {-99, -99, -99, -99, -99};//this needs to have 5 fields to implement Track
         pars[0] = xfit.intercept();
         pars[1] = xfit.slope();
         pars[2] = yfit.intercept();
         pars[3] = yfit.slope();
         track.setTrackParameters(pars);
         track.setChi2(xfit.chisquared(), yfit.chisquared());
+        track.setNDF(xfit.ndf()+yfit.ndf());
+        for (TrackerHit hit : hits)
+            track.addHit(hit);        
         // TODO:  set convariance, 
         return track;
     }
 
+    private StraightTrack makeTrack(List<HelicalTrackHit> hits) {
+        SlopeInterceptLineFit xfit = FitToLine(hits, 0);
+        SlopeInterceptLineFit yfit = FitToLine(hits, 1);
+        if (debug)
+            System.out.println("xfit = " + xfit.toString());
+        if (debug)
+            System.out.println("yfit = " + yfit.toString());        
+        return makeTrack(hits, xfit, yfit);
+    }
+
+    /*
+     *   Get all seed combinations that make sense (pass checkSeed)
+     *   currently, just assume there are 3 seed layers (don't have to be first 3 though.  
+     */
+    private List<StraightTrack> getSeeds(int[] seedLayers, List<HelicalTrackHit> hits) {
+        List<StraightTrack> seeds = new ArrayList<>();
+        int nseeds = seedLayers.length;
+        if (nseeds == 3)//TODO ... set this up so that this works for arbitrary nseeds...use recursion
+            for (HelicalTrackHit h1 : HitCollectionUtilites.GetSortedHits(hits, seedLayers[0])) {
+                if (debug)
+                    System.out.println(h1.toString());
+                for (HelicalTrackHit h2 : HitCollectionUtilites.GetSortedHits(hits, seedLayers[1])) {
+                    if (debug)
+                        System.out.println(h2.toString());
+                    for (HelicalTrackHit h3 : HitCollectionUtilites.GetSortedHits(hits, seedLayers[2])) {
+                        if (debug)
+                            System.out.println(h3.toString());
+                        //make a 3-hit test track...see if it passes CheckTrack 
+                        List<HelicalTrackHit> testTrack = new ArrayList<HelicalTrackHit>();
+                        testTrack.add(h1);
+                        testTrack.add(h2);
+                        testTrack.add(h3);                       
+                        StraightTrack trk = makeTrack(testTrack);
+                        if (!checkerTrack.checkSeed(trk))
+                            break;
+                        seeds.add(trk);
+                    }
+                }
+            }
+        return seeds;
+    }
+
+    /*
+     * recursively extend the seeds through all of the extend layers..
+     * ...I think this should work...
+     */
+    private void extendTrack(int[] extendLayers, int n, StraightTrack origTrack, List<HelicalTrackHit> hits, List<StraightTrack> trackList) {
+        if (n >= extendLayers.length) {
+            if (debug)
+                System.out.println("Done finding this track through all " + n + " extra layers");
+            trackList.add(origTrack);
+            return;
+        }
+
+        boolean cannotExtendThisLayer = true;
+        if (debug)
+            System.out.println("Extending to layer " + extendLayers[n]);
+        for (HelicalTrackHit h : HitCollectionUtilites.GetSortedHits(hits, extendLayers[n])) {
+            //let's see if this hit makes sense to add to original track
+            if (!checkerHOT.checkNewHit(origTrack, h))
+                continue;
+
+            List<TrackerHit> origHits = origTrack.getTrackerHits();
+            //make a new list and cast them as HelicalTrackHits (Track only stores TrackerHits)
+            List<HelicalTrackHit> newHits = new ArrayList<>();
+            for (TrackerHit oh : origHits) {
+                HelicalTrackHit hoh = (HelicalTrackHit) oh;
+                System.out.println(hoh.getPosition()[0]);
+                newHits.add(hoh);
+            }
+            //add the new hit to the list & make new track
+            newHits.add(h);
+            StraightTrack newTrack = makeTrack(newHits);
+            //check the new track after we've added this hit
+            if (!checkerTrack.checkTrack(newTrack))
+                continue;
+            cannotExtendThisLayer = false;
+            //extend again to the next layer
+            extendTrack(extendLayers, n + 1, newTrack, hits, trackList);
+        }
+
+        //didn't find any hits in this layer that match the track...but let's try the next one
+        if (cannotExtendThisLayer)
+            extendTrack(extendLayers, n + 1, origTrack, hits, trackList);
+
+        return;
+    }
+
 }

java/branches/hps-java_HPSJAVA-88/tracking/src/main/java/org/hps/recon/tracking/nobfield
TrackChecker.java 1244 -> 1245
--- java/branches/hps-java_HPSJAVA-88/tracking/src/main/java/org/hps/recon/tracking/nobfield/TrackChecker.java	2014-10-19 06:41:14 UTC (rev 1244)
+++ java/branches/hps-java_HPSJAVA-88/tracking/src/main/java/org/hps/recon/tracking/nobfield/TrackChecker.java	2014-10-19 06:58:06 UTC (rev 1245)
@@ -19,4 +19,9 @@
         return true;
     }
 
+    public boolean checkSeed(StraightTrack trk) {
+
+        return true;
+    }
+
 }
SVNspam 0.1