LISTSERV mailing list manager LISTSERV 16.5

Help for HPS-SVN Archives


HPS-SVN Archives

HPS-SVN Archives


HPS-SVN@LISTSERV.SLAC.STANFORD.EDU


View:

Message:

[

First

|

Previous

|

Next

|

Last

]

By Topic:

[

First

|

Previous

|

Next

|

Last

]

By Author:

[

First

|

Previous

|

Next

|

Last

]

Font:

Proportional Font

LISTSERV Archives

LISTSERV Archives

HPS-SVN Home

HPS-SVN Home

HPS-SVN  March 2016

HPS-SVN March 2016

Subject:

r4272 - in /java/branches/jeremy-dev: ./ analysis/ analysis/src/main/java/org/hps/analysis/dataquality/ analysis/src/main/java/org/hps/analysis/plots/ conditions/ conditions/src/main/java/org/hps/conditions/api/ conditions/src/main/java/org/hps/conditions/beam/ conditions/src/main/java/org/hps/conditions/cli/ conditions/src/main/java/org/hps/conditions/database/ conditions/src/main/java/org/hps/conditions/svt/ conditions/src/test/java/org/hps/conditions/beam/ crawler/ crawler/src/main/java/org/hps/crawler/ datacat-client/ detector-data/ detector-model/ distribution/ ecal-event-display/ ecal-readout-sim/ ecal-recon/ ecal-recon/src/main/java/org/hps/recon/ecal/ evio/ evio/src/main/java/org/hps/evio/ integration-tests/ job/ job/src/main/java/org/hps/job/ logging/ monitoring-app/ monitoring-app/src/main/java/org/hps/monitoring/application/ monitoring-drivers/ monitoring-drivers/src/main/java/org/hps/monitoring/drivers/svt/ monitoring-drivers/src/main/java/org/hps/monitoring/drivers/trackrecon/ monitoring-util/ parent/ plugin/ recon/ record-util/ record-util/src/main/java/org/hps/record/evio/ run-database/ run-database/src/main/java/org/hps/run/database/ steering-files/ steering-files/src/main/resources/org/hps/steering/production/ steering-files/src/main/resources/org/hps/steering/users/holly/ tracking/ tracking/src/main/java/org/hps/recon/tracking/ tracking/src/main/java/org/hps/svt/alignment/ users/ users/src/main/java/org/hps/users/jeremym/ users/src/main/java/org/hps/users/meeg/ users/src/main/java/org/hps/users/omoreno/ users/src/main/java/org/hps/users/phansson/testrun/ users/src/main/java/org/hps/users/phansson/tools/ util/ util/src/main/java/org/hps/util/

From:

[log in to unmask]

Reply-To:

Notification of commits to the hps svn repository <[log in to unmask]>

Date:

Tue, 1 Mar 2016 19:15:46 -0000

Content-Type:

text/plain

Parts/Attachments:

Parts/Attachments

text/plain (3670 lines)

Author: [log in to unmask]
Date: Tue Mar  1 11:15:40 2016
New Revision: 4272

Log:
Merge trunk changes into dev branch.

Added:
    java/branches/jeremy-dev/conditions/src/main/java/org/hps/conditions/beam/
      - copied from r4271, java/trunk/conditions/src/main/java/org/hps/conditions/beam/
    java/branches/jeremy-dev/conditions/src/test/java/org/hps/conditions/beam/
      - copied from r4271, java/trunk/conditions/src/test/java/org/hps/conditions/beam/
    java/branches/jeremy-dev/steering-files/src/main/resources/org/hps/steering/users/holly/EngineeringRun2015EcalRecon_noTwalk.lcsim
      - copied unchanged from r4271, java/trunk/steering-files/src/main/resources/org/hps/steering/users/holly/EngineeringRun2015EcalRecon_noTwalk.lcsim
Removed:
    java/branches/jeremy-dev/datacat-client/
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/DataQualityMonitor.java
    java/branches/jeremy-dev/analysis/src/main/java/org/hps/analysis/dataquality/EcalMonitoring.java
    java/branches/jeremy-dev/analysis/src/main/java/org/hps/analysis/dataquality/FinalStateMonitoring.java
    java/branches/jeremy-dev/analysis/src/main/java/org/hps/analysis/dataquality/TridentMonitoring.java
    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/plots/AddPlots.java
    java/branches/jeremy-dev/conditions/   (props changed)
    java/branches/jeremy-dev/conditions/pom.xml
    java/branches/jeremy-dev/conditions/src/main/java/org/hps/conditions/api/ConditionsRecord.java
    java/branches/jeremy-dev/conditions/src/main/java/org/hps/conditions/cli/AbstractCommand.java
    java/branches/jeremy-dev/conditions/src/main/java/org/hps/conditions/cli/CommandLineTool.java
    java/branches/jeremy-dev/conditions/src/main/java/org/hps/conditions/database/ConnectionParameters.java
    java/branches/jeremy-dev/conditions/src/main/java/org/hps/conditions/database/DatabaseConditionsManager.java
    java/branches/jeremy-dev/conditions/src/main/java/org/hps/conditions/svt/MotorPositionLoader.java
    java/branches/jeremy-dev/conditions/src/main/java/org/hps/conditions/svt/SvtBiasConditionsLoader.java
    java/branches/jeremy-dev/conditions/src/main/java/org/hps/conditions/svt/SvtConditionsLoader.java
    java/branches/jeremy-dev/crawler/pom.xml
    java/branches/jeremy-dev/crawler/src/main/java/org/hps/crawler/DatacatAddFile.java
    java/branches/jeremy-dev/crawler/src/main/java/org/hps/crawler/DatacatCrawler.java
    java/branches/jeremy-dev/crawler/src/main/java/org/hps/crawler/MetadataWriter.java
    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/EcalRawConverterDriver.java
    java/branches/jeremy-dev/ecal-recon/src/main/java/org/hps/recon/ecal/EcalRunningPedestalDriver.java
    java/branches/jeremy-dev/evio/pom.xml
    java/branches/jeremy-dev/evio/src/main/java/org/hps/evio/BasicEvioFileReader.java
    java/branches/jeremy-dev/evio/src/main/java/org/hps/evio/EvioToLcio.java
    java/branches/jeremy-dev/evio/src/main/java/org/hps/evio/LCSimEngRunEventBuilder.java
    java/branches/jeremy-dev/integration-tests/   (props changed)
    java/branches/jeremy-dev/job/pom.xml
    java/branches/jeremy-dev/job/src/main/java/org/hps/job/DatabaseConditionsManagerSetup.java
    java/branches/jeremy-dev/logging/pom.xml
    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/Main.java
    java/branches/jeremy-dev/monitoring-drivers/pom.xml
    java/branches/jeremy-dev/monitoring-drivers/src/main/java/org/hps/monitoring/drivers/svt/SvtHitPlots.java
    java/branches/jeremy-dev/monitoring-drivers/src/main/java/org/hps/monitoring/drivers/trackrecon/PlotAndFitUtilities.java
    java/branches/jeremy-dev/monitoring-drivers/src/main/java/org/hps/monitoring/drivers/trackrecon/V0ReconPlots.java
    java/branches/jeremy-dev/monitoring-util/pom.xml
    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/record-util/pom.xml
    java/branches/jeremy-dev/record-util/src/main/java/org/hps/record/evio/EvioEventSkimmer.java
    java/branches/jeremy-dev/record-util/src/main/java/org/hps/record/evio/EvioFileProducer.java
    java/branches/jeremy-dev/run-database/pom.xml
    java/branches/jeremy-dev/run-database/src/main/java/org/hps/run/database/RunDatabaseCommandLine.java
    java/branches/jeremy-dev/steering-files/pom.xml
    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/tracking/src/main/java/org/hps/recon/tracking/HelicalTrackHitDriver.java
    java/branches/jeremy-dev/tracking/src/main/java/org/hps/svt/alignment/BuildCompact.java
    java/branches/jeremy-dev/tracking/src/main/java/org/hps/svt/alignment/BuildMillepedeCompact.java
    java/branches/jeremy-dev/tracking/src/main/java/org/hps/svt/alignment/MillepedeCompactDump.java
    java/branches/jeremy-dev/users/pom.xml
    java/branches/jeremy-dev/users/src/main/java/org/hps/users/jeremym/EvioFileScanner.java
    java/branches/jeremy-dev/users/src/main/java/org/hps/users/meeg/FilterMCBunches.java
    java/branches/jeremy-dev/users/src/main/java/org/hps/users/meeg/MergeMCBunches.java
    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/omoreno/LheToStdhep.java
    java/branches/jeremy-dev/users/src/main/java/org/hps/users/phansson/testrun/dataMCPlots.java
    java/branches/jeremy-dev/users/src/main/java/org/hps/users/phansson/testrun/ecalPlots.java
    java/branches/jeremy-dev/users/src/main/java/org/hps/users/phansson/testrun/trigRate.java
    java/branches/jeremy-dev/users/src/main/java/org/hps/users/phansson/tools/DumpAIDATextFiles.java
    java/branches/jeremy-dev/users/src/main/java/org/hps/users/phansson/tools/mergeSimpleAIDA.java
    java/branches/jeremy-dev/util/pom.xml
    java/branches/jeremy-dev/util/src/main/java/org/hps/util/CalculateAcceptanceFromMadGraph.java
    java/branches/jeremy-dev/util/src/main/java/org/hps/util/ConvertToStdhep.java
    java/branches/jeremy-dev/util/src/main/java/org/hps/util/DumpLHEEventsToASCII.java

Modified: java/branches/jeremy-dev/analysis/pom.xml
 =============================================================================
--- java/branches/jeremy-dev/analysis/pom.xml	(original)
+++ java/branches/jeremy-dev/analysis/pom.xml	Tue Mar  1 11:15:40 2016
@@ -8,7 +8,7 @@
         <groupId>org.hps</groupId>
         <artifactId>hps-parent</artifactId>
         <relativePath>../parent/pom.xml</relativePath>
-        <version>3.6-SNAPSHOT</version>
+        <version>3.7-SNAPSHOT</version>
     </parent>
     <scm>
         <url>http://java.freehep.org/svn/repos/hps/list/java/trunk/analysis/</url>

Modified: java/branches/jeremy-dev/analysis/src/main/java/org/hps/analysis/dataquality/DataQualityMonitor.java
 =============================================================================
--- java/branches/jeremy-dev/analysis/src/main/java/org/hps/analysis/dataquality/DataQualityMonitor.java	(original)
+++ java/branches/jeremy-dev/analysis/src/main/java/org/hps/analysis/dataquality/DataQualityMonitor.java	Tue Mar  1 11:15:40 2016
@@ -91,7 +91,7 @@
         printDQMData();
         if (printDQMStrings)
             printDQMStrings();
-        LOGGER.info("Should I write to the database?  " + connectToDB);
+        LOGGER.info("Write to database =  " + connectToDB);
         if (connectToDB) {
             LOGGER.info("Connecting To Database...getting DQMDBManager");
             manager = DQMDatabaseManager.getInstance();

Modified: java/branches/jeremy-dev/analysis/src/main/java/org/hps/analysis/dataquality/EcalMonitoring.java
 =============================================================================
--- java/branches/jeremy-dev/analysis/src/main/java/org/hps/analysis/dataquality/EcalMonitoring.java	(original)
+++ java/branches/jeremy-dev/analysis/src/main/java/org/hps/analysis/dataquality/EcalMonitoring.java	Tue Mar  1 11:15:40 2016
@@ -8,6 +8,7 @@
 import java.util.logging.Logger;
 
 import org.apache.commons.math.stat.StatUtils;
+import org.hps.conditions.beam.BeamEnergy.BeamEnergyCollection;
 import org.hps.recon.ecal.cluster.ClusterUtilities;
 import org.lcsim.event.CalorimeterHit;
 import org.lcsim.event.Cluster;
@@ -73,13 +74,10 @@
     boolean fillHitPlots = true;
     String[] ecalQuantNames = {"avg_N_hits", "avg_Hit_Energy",
         "avg_N_clusters", "avg_N_hitsPerCluster", "avg_Cluster_Energy", "avg_ClusterTime"};
-    double beamEnergy = 1.1;
     
     double maxFactor = 1.5;
     
-    public void setBeamEnergy(double e){
-    	beamEnergy = e;
-    }
+   
     
     private final String plotHitsDir = "EcalHits/";
     private final String plotClustersDir = "EcalClusters/";
@@ -104,6 +102,10 @@
 
     @Override
     protected void detectorChanged(Detector detector) {
+    	BeamEnergyCollection beamEnergyCollection = 
+			this.getConditionsManager().getCachedConditions(BeamEnergyCollection.class, "beam_energies").getCachedData();        
+		double beamEnergy = beamEnergyCollection.get(0).getBeamEnergy();
+    	//this.getConditionsManager().getCachedConditions(org.hps.conditions.EcalChannelCollection.class, "ecal_channels").
         LOGGER.info("EcalMonitoring::detectorChanged  Setting up the plotter");
         aida.tree().cd("/");
         if (fillHitPlots) {
@@ -273,5 +275,5 @@
     public void printDQMStrings() {
 
     }
-
+    
 }

Modified: java/branches/jeremy-dev/analysis/src/main/java/org/hps/analysis/dataquality/FinalStateMonitoring.java
 =============================================================================
--- java/branches/jeremy-dev/analysis/src/main/java/org/hps/analysis/dataquality/FinalStateMonitoring.java	(original)
+++ java/branches/jeremy-dev/analysis/src/main/java/org/hps/analysis/dataquality/FinalStateMonitoring.java	Tue Mar  1 11:15:40 2016
@@ -17,6 +17,7 @@
 import java.util.logging.Level;
 import java.util.logging.Logger;
 
+import org.hps.conditions.beam.BeamEnergy.BeamEnergyCollection;
 import org.hps.recon.ecal.cluster.ClusterUtilities;
 import org.hps.recon.tracking.TrackType;
 import org.hps.recon.tracking.TrackUtils;
@@ -60,7 +61,7 @@
     double sumdelY = 0.0;
     double sumEoverP = 0.0;
     private final String plotDir = "FinalStateParticles/";
-    double beamEnergy = 1.05; //GeV
+   // double beamEnergy = 1.05; //GeV
     double maxFactor = 1.5;
     double feeMomentumCut = 0.75; //this number, multiplied by the beam energy, is the actual cut
 
@@ -98,15 +99,18 @@
     IHistogram1D nUnAssTracksHisto;
     
     
-    public void setBeamEnergy(double e){
-    	this.beamEnergy = e;
-    }
+   
     public void setFinalStateParticlesColName(String fsp) {
         this.finalStateParticlesColName = fsp;
     }
 
     @Override
     protected void detectorChanged(Detector detector) {
+    	BeamEnergyCollection beamEnergyCollection = 
+			this.getConditionsManager().getCachedConditions(BeamEnergyCollection.class, "beam_energies").getCachedData();        
+		double beamEnergy = beamEnergyCollection.get(0).getBeamEnergy();
+    	
+    	
         LOGGER.info("Setting up the plotter");
         aida.tree().cd("/");
           String trkType="SeedTrack/";

Modified: java/branches/jeremy-dev/analysis/src/main/java/org/hps/analysis/dataquality/TridentMonitoring.java
 =============================================================================
--- java/branches/jeremy-dev/analysis/src/main/java/org/hps/analysis/dataquality/TridentMonitoring.java	(original)
+++ java/branches/jeremy-dev/analysis/src/main/java/org/hps/analysis/dataquality/TridentMonitoring.java	Tue Mar  1 11:15:40 2016
@@ -14,6 +14,8 @@
 import java.util.List;
 import java.util.Map.Entry;
 import java.util.logging.Logger;
+
+import org.hps.conditions.beam.BeamEnergy.BeamEnergyCollection;
 import org.hps.recon.ecal.cluster.ClusterUtilities;
 import org.hps.recon.particle.ReconParticleDriver;
 import org.hps.recon.tracking.TrackType;
@@ -73,37 +75,8 @@
 
     private final static Logger LOGGER = Logger.getLogger(TridentMonitoring.class.getPackage().getName());
 
-    private double ebeam = 1.05;
-    
-    public void setBeamEnergy(double ebeam){
-    	this.ebeam = ebeam;
-    	
-    	  plotsMinMass = 0.03 * ebeam;
-    	    plotsMaxMass = 0.04 * ebeam;
-
-
-    	    //v0 plot ranges
-    	    v0PzMax = 1.25 * ebeam;//GeV 
-    	    v0PzMin = 0.1;// GeV
-    	    v0PyMax = 0.04 * ebeam;//GeV absolute value
-    	    v0PxMax = 0.04 * ebeam;//GeV absolute value
-    	    
-    	    //v0 cuts
-    	    v0PzMaxCut = 1.25 * ebeam;//GeV 
-    	    v0PzMinCut = 0.1;// GeV
-    	    v0PyCut = 0.04 * ebeam;//GeV absolute value
-    	    v0PxCut = 0.04 * ebeam;//GeV absolute value
-    	    
-    	//  track quality cuts
-    	    beamPCut = 0.85 * ebeam;
-    	    minPCut = 0.05;
-//    	    private double trkPyMax = 0.2;
-//    	    private double trkPxMax = 0.2;
-    	    radCut = 0.8 * ebeam;
-    	    
-
-    }
-    
+   
+
     private final BasicHep3Matrix beamAxisRotation = new BasicHep3Matrix();
 //    private static final int nCuts = 9;
 //    private final String[] cutNames = {"Trk Quality",
@@ -246,45 +219,48 @@
     private final IHistogram1D[][] cutVertexZ = new IHistogram1D[Cut.nCuts][2];
     private final IHistogram2D[][] cutVertexZVsMass = new IHistogram2D[Cut.nCuts][2];
 
-    private  double plotsMinMass = 0.03 * ebeam;
-    private  double plotsMaxMass = 0.04 * ebeam;
+    private final double plotsMinMass = 0.03;
+    private final double plotsMaxMass = 0.04;
 
     //clean up event first
     private final int nTrkMax = 5;
     private final int nPosMax = 1;
 
     private final double maxChi2SeedTrack = 7.0;
-    private final double maxChi2GBLTrack = 15.0;
-    private final double maxVertChi2 = 7.0;
+    private double maxChi2GBLTrack = 15.0;
+    private double maxUnconVertChi2 = 7.0;
+    private double maxBsconVertChi2 = 1000.0; //disable by default
 
     //v0 plot ranges
-    private  double v0PzMax = 1.25 * ebeam;//GeV 
-    private  double v0PzMin = 0.1;// GeV
-    private  double v0PyMax = 0.04 * ebeam;//GeV absolute value
-    private  double v0PxMax = 0.04 * ebeam;//GeV absolute value
+    private final double v0PzMax = 1.25;//GeV 
+    private final double v0PzMin = 0.1;// GeV
+    private final double v0PyMax = 0.04;//GeV absolute value
+    private final double v0PxMax = 0.04;//GeV absolute value
     private final double v0VzMax = 50.0;// mm from target...someday make mass dependent
     private final double v0VyMax = 2.0;// mm from target...someday make mass dependent
     private final double v0VxMax = 2.0;// mm from target...someday make mass dependent
 
     //v0 cuts
-    private  double v0PzMaxCut = 1.25 * ebeam;//GeV 
-    private  double v0PzMinCut = 0.1;// GeV
-    private  double v0PyCut = 0.04 * ebeam;//GeV absolute value
-    private  double v0PxCut = 0.04 * ebeam;//GeV absolute value
-    private final double v0VzCut = 50.0;// mm from target...someday make mass dependent
-    private final double v0VyCut = 2.0;// mm from target...someday make mass dependent
-    private final double v0VxCut = 2.0;// mm from target...someday make mass dependent
-    
+    private final double v0PzMaxCut = 1.25;//GeV 
+    private final double v0PzMinCut = 0.1;// GeV
+    private final double v0PyCut = 0.04;//GeV absolute value
+    private final double v0PxCut = 0.04;//GeV absolute value
+    private final double v0UnconVzCut = 50.0;// mm from target...someday make mass dependent
+    private double v0UnconVyCut = 2.0;// mm from target...someday make mass dependent
+    private double v0UnconVxCut = 2.0;// mm from target...someday make mass dependent
+    private double v0BsconVyCut = 10.0; //disable by default
+    private double v0BsconVxCut = 10.0; //disable by default
+
 //  track quality cuts
-    private  double beamPCut = 0.85 * ebeam;
-    private  double minPCut = 0.05;
+    private final double beamPCut = 0.85;
+    private final double minPCut = 0.05;
 //    private double trkPyMax = 0.2;
 //    private double trkPxMax = 0.2;
-    private  double radCut = 0.8 * ebeam;
+    private final double radCut = 0.8;
     private final double trkTimeDiff = 5.0;
     private final double clusterTimeDiffCut = 2.5;
 
-    private final double l1IsoMin = 1.0;
+    private double l1IsoMin = 0.5;
 
     private double[] beamSize = {0.001, 0.130, 0.050}; //rough estimate from harp scans during engineering run production running
 
@@ -298,13 +274,56 @@
     private float nRecoV0 = 0;
     private final float[] nPassCut = new float[Cut.nCuts];
 
-   
-
+    public void setMaxChi2GBLTrack(double maxChi2GBLTrack) {
+        this.maxChi2GBLTrack = maxChi2GBLTrack;
+    }
+
+    public void setMaxUnconVertChi2(double maxUnconVertChi2) {
+        this.maxUnconVertChi2 = maxUnconVertChi2;
+    }
+
+    public void setMaxBsconVertChi2(double maxBsconVertChi2) {
+        this.maxBsconVertChi2 = maxBsconVertChi2;
+    }
+
+    public void setV0UnconVyCut(double v0UnconVyCut) {
+        this.v0UnconVyCut = v0UnconVyCut;
+    }
+
+    public void setV0UnconVxCut(double v0UnconVxCut) {
+        this.v0UnconVxCut = v0UnconVxCut;
+    }
+
+    public void setV0BsconVyCut(double v0BsconVyCut) {
+        this.v0BsconVyCut = v0BsconVyCut;
+    }
+
+    public void setV0BsconVxCut(double v0BsconVxCut) {
+        this.v0BsconVxCut = v0BsconVxCut;
+    }
+
+    public void setL1IsoMin(double l1IsoMin) {
+        this.l1IsoMin = l1IsoMin;
+    }
+
+    public void setBeamSizeX(double beamSizeX) {
+        this.beamSize[1] = beamSizeX;
+    }
+
+    public void setBeamSizeY(double beamSizeY) {
+        this.beamSize[2] = beamSizeY;
+    }
+
+    
+    double ebeam;
     @Override
     protected void detectorChanged(Detector detector) {
         LOGGER.info("TridendMonitoring::detectorChanged  Setting up the plotter");
         beamAxisRotation.setActiveEuler(Math.PI / 2, -0.0305, -Math.PI / 2);
 
+        BeamEnergyCollection beamEnergyCollection = 
+			this.getConditionsManager().getCachedConditions(BeamEnergyCollection.class, "beam_energies").getCachedData();        
+		ebeam = beamEnergyCollection.get(0).getBeamEnergy();
         aida.tree().cd("/");
         String trkType = "SeedTrack/";
         if (isGBL) {
@@ -329,15 +348,15 @@
 
 //        triTrackTimeDiff = aida.histogram1D(plotDir + trkType + triggerType + "/" + "Trident: Track time difference", 100, -10, 10);
 //        triTrackTime2D = aida.histogram2D(plotDir + trkType + triggerType + "/" + "Trident: Track time vs. track time", 100, -10, 10, 100, -10, 10);
-        triTrackMomentum2D = aida.histogram2D(plotDir + trkType + triggerType + "/" + "Trident: Positron vs. electron momentum", 100, 0, v0PzMax, 100, 0, v0PzMax);
+        triTrackMomentum2D = aida.histogram2D(plotDir + trkType + triggerType + "/" + "Trident: Positron vs. electron momentum", 100, 0, v0PzMax * ebeam, 100, 0, v0PzMax * ebeam);
         triDeltaP = aida.histogram1D(plotDir + trkType + triggerType + "/" + "Trident: Positron - electron momentum", 100, -1., 1.0);
-        triSumP = aida.histogram1D(plotDir + trkType + triggerType + "/" + "Trident: Positron + electron momentum", 100, v0PzMin, v0PzMax);
+        triSumP = aida.histogram1D(plotDir + trkType + triggerType + "/" + "Trident: Positron + electron momentum", 100, v0PzMin * ebeam, v0PzMax * ebeam);
         triPyEleVsPyPos = aida.histogram2D(plotDir + trkType + triggerType + "/" + "Trident: Py(e) vs Py(p)", 50, -0.04, 0.04, 50, -0.04, 0.04);
         triPxEleVsPxPos = aida.histogram2D(plotDir + trkType + triggerType + "/" + "Trident: Px(e) vs Px(p)", 50, -0.04, 0.04, 50, -0.04, 0.04);
 
-        triMassMomentum = aida.histogram2D(plotDir + trkType + triggerType + "/" + "Trident: Vertex mass vs. vertex momentum", 100, v0PzMin, v0PzMax, 100, 0, 0.1);
-        triZVsMomentum = aida.histogram2D(plotDir + trkType + triggerType + "/" + "Trident: Vertex Z vs. vertex momentum", 100, v0PzMin, v0PzMax, 100, -v0VzMax, v0VzMax);
-        triMass = aida.histogram1D(plotDir + trkType + triggerType + "/" + "Trident: Vertex mass", 100, 0, 0.11);
+        triMassMomentum = aida.histogram2D(plotDir + trkType + triggerType + "/" + "Trident: Vertex mass vs. vertex momentum", 100, v0PzMin * ebeam, v0PzMax * ebeam, 100, 0, 0.1);
+        triZVsMomentum = aida.histogram2D(plotDir + trkType + triggerType + "/" + "Trident: Vertex Z vs. vertex momentum", 100, v0PzMin * ebeam, v0PzMax * ebeam, 100, -v0VzMax, v0VzMax);
+        triMass = aida.histogram1D(plotDir + trkType + triggerType + "/" + "Trident: Vertex mass", 100, 0, 0.1 * ebeam);
         triZVsMass = aida.histogram2D(plotDir + trkType + triggerType + "/" + "Trident: Vertex Z vs. mass", 100, 0, 0.11, 100, -v0VzMax, v0VzMax);
 //        triX = aida.histogram1D(plotDir + trkType + triggerType + "/" + "Trident: Vertex X", 100, -v0VxMax, v0VxMax);
 //        triY = aida.histogram1D(plotDir + trkType + triggerType + "/" + "Trident: Vertex Y", 100, -v0VyMax, v0VyMax);
@@ -354,9 +373,9 @@
         triRadTrackTimeDiff = aida.histogram1D(plotDir + trkType + triggerType + "/" + "Radiative trident: Track time difference", 100, -10, 10);
         triRadTrackTime2D = aida.histogram2D(plotDir + trkType + triggerType + "/" + "Radiative trident: Track time vs. track time", 100, -10, 10, 100, -10, 10);
 
-        triRadTrackMomentum2D = aida.histogram2D(plotDir + trkType + triggerType + "/" + "Radiative trident: Positron vs. electron momentum", 100, 0, v0PzMax, 100, 0, v0PzMax);
+        triRadTrackMomentum2D = aida.histogram2D(plotDir + trkType + triggerType + "/" + "Radiative trident: Positron vs. electron momentum", 100, 0, v0PzMax * ebeam, 100, 0, v0PzMax * ebeam);
         triRadDeltaP = aida.histogram1D(plotDir + trkType + triggerType + "/" + "Radiative trident: Positron - electron momentum", 100, -1., 1.0);
-        triRadSumP = aida.histogram1D(plotDir + trkType + triggerType + "/" + "Radiative trident: Positron + electron momentum", 100, v0PzMin, v0PzMax);
+        triRadSumP = aida.histogram1D(plotDir + trkType + triggerType + "/" + "Radiative trident: Positron + electron momentum", 100, v0PzMin * ebeam, v0PzMax * ebeam);
         triRadPyEleVsPyPos = aida.histogram2D(plotDir + trkType + triggerType + "/" + "Radiative trident: Py(e) vs Py(p)", 50, -0.04, 0.04, 50, -0.04, 0.04);
         triRadPxEleVsPxPos = aida.histogram2D(plotDir + trkType + triggerType + "/" + "Radiative trident: Px(e) vs Px(p)", 50, -0.04, 0.04, 50, -0.04, 0.04);
 
@@ -369,23 +388,23 @@
 //        triRadZ = aida.histogram1D(plotDir + trkType + triggerType + "/" + "Radiative trident: Vertex Z", 100, -v0VzMax, v0VzMax);
 //        triRadXY = aida.histogram2D(plotDir + trkType + triggerType + "/" + "Radiative trident: Vertex Y vs. X", 100, -v0VxMax, v0VxMax, 100, -v0VyMax, v0VyMax);
 //        triRadZY = aida.histogram2D(plotDir + trkType + triggerType + "/" + "Radiative trident: Vertex Z vs. Y", 100, -v0VyMax, v0VyMax, 100, -v0VzMax, v0VzMax);
-        triRadPx = aida.histogram1D(plotDir + trkType + triggerType + "/" + "Radiative trident: Vertex Px", 100, -v0PxMax, v0PxMax);
-        triRadPy = aida.histogram1D(plotDir + trkType + triggerType + "/" + "Radiative trident: Vertex Py", 100, -v0PyMax, v0PyMax);
-        triRadPz = aida.histogram1D(plotDir + trkType + triggerType + "/" + "Radiative trident: Vertex Pz", 100, v0PzMin, v0PzMax);
-        triRadPxPy = aida.histogram2D(plotDir + trkType + triggerType + "/" + "Radiative trident: Vertex Py vs. Px", 100, -v0PxMax, v0PxMax, 100, -v0PyMax, v0PyMax);
+        triRadPx = aida.histogram1D(plotDir + trkType + triggerType + "/" + "Radiative trident: Vertex Px", 100, -v0PxMax * ebeam, v0PxMax * ebeam);
+        triRadPy = aida.histogram1D(plotDir + trkType + triggerType + "/" + "Radiative trident: Vertex Py", 100, -v0PyMax * ebeam, v0PyMax * ebeam);
+        triRadPz = aida.histogram1D(plotDir + trkType + triggerType + "/" + "Radiative trident: Vertex Pz", 100, v0PzMin * ebeam, v0PzMax * ebeam);
+        triRadPxPy = aida.histogram2D(plotDir + trkType + triggerType + "/" + "Radiative trident: Vertex Py vs. Px", 100, -v0PxMax * ebeam, v0PxMax * ebeam, 100, -v0PyMax * ebeam, v0PyMax * ebeam);
         triRadU = aida.histogram1D(plotDir + trkType + triggerType + "/" + "Radiative trident: Vertex Px over Ptot", 100, -0.1, 0.1);
         triRadV = aida.histogram1D(plotDir + trkType + triggerType + "/" + "Radiative trident: Vertex Py over Ptot", 100, -0.1, 0.1);
 
 //        vertTrackTimeDiff = aida.histogram1D(plotDir + trkType + triggerType + "/" + "Vertex: Track time difference", 100, -10, 10);
 //        vertTrackTime2D = aida.histogram2D(plotDir + trkType + triggerType + "/" + "Vertex: Track time vs. track time", 100, -10, 10, 100, -10, 10);
-        vertTrackMomentum2D = aida.histogram2D(plotDir + trkType + triggerType + "/" + "Vertex: Positron vs. electron momentum", 100, 0, v0PzMax, 100, 0, v0PzMax);
+        vertTrackMomentum2D = aida.histogram2D(plotDir + trkType + triggerType + "/" + "Vertex: Positron vs. electron momentum", 100, 0, v0PzMax * ebeam, 100, 0, v0PzMax * ebeam);
         vertDeltaP = aida.histogram1D(plotDir + trkType + triggerType + "/" + "Vertex: Positron - electron momentum", 100, -1., 1.0);
-        vertSumP = aida.histogram1D(plotDir + trkType + triggerType + "/" + "Vertex: Positron + electron momentum", 100, v0PzMin, v0PzMax);
+        vertSumP = aida.histogram1D(plotDir + trkType + triggerType + "/" + "Vertex: Positron + electron momentum", 100, v0PzMin * ebeam, v0PzMax * ebeam);
         vertPyEleVsPyPos = aida.histogram2D(plotDir + trkType + triggerType + "/" + "Vertex: Py(e) vs Py(p)", 50, -0.04, 0.04, 50, -0.04, 0.04);
         vertPxEleVsPxPos = aida.histogram2D(plotDir + trkType + triggerType + "/" + "Vertex: Px(e) vs Px(p)", 50, -0.04, 0.04, 50, -0.04, 0.04);
 
-        vertMassMomentum = aida.histogram2D(plotDir + trkType + triggerType + "/" + "Vertex: Vertex mass vs. vertex momentum", 100, v0PzMin, v0PzMax, 100, 0, 0.1);
-        vertZVsMomentum = aida.histogram2D(plotDir + trkType + triggerType + "/" + "Vertex: Vertex Z vs. vertex momentum", 100, v0PzMin, v0PzMax, 100, -v0VzMax, v0VzMax);
+        vertMassMomentum = aida.histogram2D(plotDir + trkType + triggerType + "/" + "Vertex: Vertex mass vs. vertex momentum", 100, v0PzMin * ebeam, v0PzMax * ebeam, 100, 0, 0.1);
+        vertZVsMomentum = aida.histogram2D(plotDir + trkType + triggerType + "/" + "Vertex: Vertex Z vs. vertex momentum", 100, v0PzMin * ebeam, v0PzMax * ebeam, 100, -v0VzMax, v0VzMax);
         vertMass = aida.histogram1D(plotDir + trkType + triggerType + "/" + "Vertex: Vertex mass", 100, 0, 0.11);
         vertZVsMass = aida.histogram2D(plotDir + trkType + triggerType + "/" + "Vertex: Vertex Z vs. mass", 100, 0, 0.11, 100, -v0VzMax, v0VzMax);
 //        vertX = aida.histogram1D(plotDir + trkType + triggerType + "/" + "Vertex: Vertex X", 100, -v0VxMax, v0VxMax);
@@ -403,14 +422,14 @@
         vertRadTrackTimeDiff = aida.histogram1D(plotDir + trkType + triggerType + "/" + "Radiative vertex: Track time difference", 100, -10, 10);
         vertRadTrackTime2D = aida.histogram2D(plotDir + trkType + triggerType + "/" + "Radiative vertex: Track time vs. track time", 100, -10, 10, 100, -10, 10);
 
-        vertRadTrackMomentum2D = aida.histogram2D(plotDir + trkType + triggerType + "/" + "Radiative vertex: Positron vs. electron momentum", 100, 0, v0PzMax, 100, 0, v0PzMax);
+        vertRadTrackMomentum2D = aida.histogram2D(plotDir + trkType + triggerType + "/" + "Radiative vertex: Positron vs. electron momentum", 100, 0, v0PzMax * ebeam, 100, 0, v0PzMax * ebeam);
         vertRadDeltaP = aida.histogram1D(plotDir + trkType + triggerType + "/" + "Radiative vertex: Positron - electron momentum", 100, -1., 1.0);
-        vertRadSumP = aida.histogram1D(plotDir + trkType + triggerType + "/" + "Radiative vertex: Positron + electron momentum", 100, v0PzMin, v0PzMax);
+        vertRadSumP = aida.histogram1D(plotDir + trkType + triggerType + "/" + "Radiative vertex: Positron + electron momentum", 100, v0PzMin * ebeam, v0PzMax * ebeam);
         vertRadPyEleVsPyPos = aida.histogram2D(plotDir + trkType + triggerType + "/" + "Radiative vertex: Py(e) vs Py(p)", 50, -0.04, 0.04, 50, -0.04, 0.04);
         vertRadPxEleVsPxPos = aida.histogram2D(plotDir + trkType + triggerType + "/" + "Radiative vertex: Px(e) vs Px(p)", 50, -0.04, 0.04, 50, -0.04, 0.04);
 
-        vertRadMassMomentum = aida.histogram2D(plotDir + trkType + triggerType + "/" + "Radiative vertex: Vertex mass vs. vertex momentum", 100, v0PzMin, v0PzMax, 100, 0, 0.1);
-        vertRadZVsMomentum = aida.histogram2D(plotDir + trkType + triggerType + "/" + "Radiative vertex: Vertex Z vs. vertex momentum", 100, v0PzMin, v0PzMax, 100, -v0VzMax, v0VzMax);
+        vertRadMassMomentum = aida.histogram2D(plotDir + trkType + triggerType + "/" + "Radiative vertex: Vertex mass vs. vertex momentum", 100, v0PzMin * ebeam, v0PzMax * ebeam, 100, 0, 0.1);
+        vertRadZVsMomentum = aida.histogram2D(plotDir + trkType + triggerType + "/" + "Radiative vertex: Vertex Z vs. vertex momentum", 100, v0PzMin * ebeam, v0PzMax * ebeam, 100, -v0VzMax, v0VzMax);
         vertRadMass = aida.histogram1D(plotDir + trkType + triggerType + "/" + "Radiative vertex: Vertex mass", 100, 0, 0.11);
         vertRadZVsMass = aida.histogram2D(plotDir + trkType + triggerType + "/" + "Radiative vertex: Vertex Z vs. mass", 100, 0, 0.11, 100, -v0VzMax, v0VzMax);
         vertRadX = aida.histogram1D(plotDir + trkType + triggerType + "/" + "Radiative vertex: Vertex X", 100, -v0VxMax, v0VxMax);
@@ -418,10 +437,10 @@
         vertRadZ = aida.histogram1D(plotDir + trkType + triggerType + "/" + "Radiative vertex: Vertex Z", 100, -v0VzMax, v0VzMax);
         vertRadXY = aida.histogram2D(plotDir + trkType + triggerType + "/" + "Radiative vertex: Vertex Y vs. X", 100, -v0VxMax, v0VxMax, 100, -v0VyMax, v0VyMax);
         vertRadZY = aida.histogram2D(plotDir + trkType + triggerType + "/" + "Radiative vertex: Vertex Z vs. Y", 100, -v0VyMax, v0VyMax, 100, -v0VzMax, v0VzMax);
-        vertRadPx = aida.histogram1D(plotDir + trkType + triggerType + "/" + "Radiative vertex: Vertex Px", 100, -v0PxMax, v0PxMax);
-        vertRadPy = aida.histogram1D(plotDir + trkType + triggerType + "/" + "Radiative vertex: Vertex Py", 100, -v0PyMax, v0PyMax);
-        vertRadPz = aida.histogram1D(plotDir + trkType + triggerType + "/" + "Radiative vertex: Vertex Pz", 100, v0PzMin, v0PzMax);
-        vertRadPxPy = aida.histogram2D(plotDir + trkType + triggerType + "/" + "Radiative vertex: Vertex Py vs. Px", 100, -v0PxMax, v0PxMax, 100, -v0PyMax, v0PyMax);
+        vertRadPx = aida.histogram1D(plotDir + trkType + triggerType + "/" + "Radiative vertex: Vertex Px", 100, -v0PxMax * ebeam, v0PxMax * ebeam);
+        vertRadPy = aida.histogram1D(plotDir + trkType + triggerType + "/" + "Radiative vertex: Vertex Py", 100, -v0PyMax * ebeam, v0PyMax * ebeam);
+        vertRadPz = aida.histogram1D(plotDir + trkType + triggerType + "/" + "Radiative vertex: Vertex Pz", 100, v0PzMin * ebeam, v0PzMax * ebeam);
+        vertRadPxPy = aida.histogram2D(plotDir + trkType + triggerType + "/" + "Radiative vertex: Vertex Py vs. Px", 100, -v0PxMax * ebeam, v0PxMax * ebeam, 100, -v0PyMax * ebeam, v0PyMax * ebeam);
         vertRadU = aida.histogram1D(plotDir + trkType + triggerType + "/" + "Radiative vertex: Vertex Px over Ptot", 100, -0.1, 0.1);
         vertRadV = aida.histogram1D(plotDir + trkType + triggerType + "/" + "Radiative vertex: Vertex Py over Ptot", 100, -0.1, 0.1);
 
@@ -559,6 +578,14 @@
                 minL1Iso = Math.min(eleL1Iso, posL1Iso);
             }
 
+            BilliorVertexer vtxFitter = new BilliorVertexer(TrackUtils.getBField(event.getDetector()).y());
+            vtxFitter.setBeamSize(beamSize);
+            List<BilliorTrack> billiorTracks = new ArrayList<BilliorTrack>();
+            billiorTracks.add(new BilliorTrack(electron.getTracks().get(0)));
+            billiorTracks.add(new BilliorTrack(positron.getTracks().get(0)));
+            vtxFitter.doBeamSpotConstraint(true);
+            BilliorVertex bsconVertex = vtxFitter.fitVertex(billiorTracks);
+
             //start applying cuts
             EnumSet<Cut> bits = EnumSet.noneOf(Cut.class);
 
@@ -567,13 +594,13 @@
                 bits.add(Cut.TRK_QUALITY);
             }
 
-            boolean v0QualityCut = uncVert.getChi2() < maxVertChi2;
+            boolean v0QualityCut = uncVert.getChi2() < maxUnconVertChi2 && bsconVertex.getChi2() < maxBsconVertChi2;
             if (v0QualityCut) {
                 bits.add(Cut.VTX_QUALITY);
             }
 
-            boolean vertexMomentumCut = v0MomRot.z() < v0PzMaxCut && v0MomRot.z() > v0PzMinCut && Math.abs(v0MomRot.x()) < v0PxCut && Math.abs(v0MomRot.y()) < v0PyCut;
-            boolean vertexPositionCut = Math.abs(v0Vtx.x()) < v0VxCut && Math.abs(v0Vtx.y()) < v0VyCut && Math.abs(v0Vtx.z()) < v0VzCut;
+            boolean vertexMomentumCut = v0MomRot.z() < v0PzMaxCut * ebeam && v0MomRot.z() > v0PzMinCut * ebeam && Math.abs(v0MomRot.x()) < v0PxCut * ebeam && Math.abs(v0MomRot.y()) < v0PyCut * ebeam;
+            boolean vertexPositionCut = Math.abs(v0Vtx.x()) < v0UnconVxCut && Math.abs(v0Vtx.y()) < v0UnconVyCut && Math.abs(v0Vtx.z()) < v0UnconVzCut && Math.abs(bsconVertex.getPosition().x()) < v0BsconVxCut && Math.abs(bsconVertex.getPosition().y()) < v0BsconVyCut;
             if (vertexMomentumCut && vertexPositionCut) {
                 bits.add(Cut.VERTEX_CUTS);
             }
@@ -584,8 +611,8 @@
             }
 
             boolean topBottomCut = electron.getMomentum().y() * positron.getMomentum().y() < 0;
-            boolean pMinCut = electron.getMomentum().magnitude() > minPCut && positron.getMomentum().magnitude() > minPCut;
-            boolean pMaxCut = electron.getMomentum().magnitude() < beamPCut && positron.getMomentum().magnitude() < beamPCut;
+            boolean pMinCut = electron.getMomentum().magnitude() > minPCut * ebeam && positron.getMomentum().magnitude() > minPCut * ebeam;
+            boolean pMaxCut = electron.getMomentum().magnitude() < beamPCut * ebeam && positron.getMomentum().magnitude() < beamPCut * ebeam;
             if (topBottomCut && pMaxCut && pMinCut) {
                 bits.add(Cut.TRACK_CUTS);
             }
@@ -628,7 +655,7 @@
                 EnumSet<Cut> allButThisCut = EnumSet.allOf(Cut.class);
                 allButThisCut.remove(cut);
                 if (bits.containsAll(allButThisCut)) {
-                    if (uncV0.getMass() > plotsMinMass && uncV0.getMass() < plotsMaxMass) {
+                    if (uncV0.getMass() > plotsMinMass * ebeam && uncV0.getMass() < plotsMaxMass * ebeam) {
                         switch (cut) {
                             case ISOLATION:
                                 l1Iso.fill(minL1Iso);
@@ -657,7 +684,7 @@
                         }
                     }
                     if (!bits.contains(cut)) {
-                        if (uncV0.getMass() > plotsMinMass && uncV0.getMass() < plotsMaxMass) {
+                        if (uncV0.getMass() > plotsMinMass * ebeam && uncV0.getMass() < plotsMaxMass * ebeam) {
                             cutVertexZ[cut.ordinal()][VERTEX].fill(v0Vtx.z());
                         }
                         cutVertexMass[cut.ordinal()][VERTEX].fill(uncV0.getMass());
@@ -669,7 +696,7 @@
                 allTriCutsButThisCut.remove(cut);
                 if (bits.containsAll(allTriCutsButThisCut)) {
                     if (!bits.contains(cut)) {
-                        if (uncV0.getMass() > plotsMinMass && uncV0.getMass() < plotsMaxMass) {
+                        if (uncV0.getMass() > plotsMinMass * ebeam && uncV0.getMass() < plotsMaxMass * ebeam) {
                             cutVertexZ[cut.ordinal()][TRIDENT].fill(v0Vtx.z());
                         }
                         cutVertexMass[cut.ordinal()][TRIDENT].fill(uncV0.getMass());
@@ -730,7 +757,7 @@
 //            triV.fill(pBestV0Rot.y() / pBestV0Rot.magnitude());
 //            triXY.fill(v0Vtx.x(), v0Vtx.y());
 //            triZY.fill(v0Vtx.y(), v0Vtx.z());
-            if (bestCandidate.getMomentum().magnitude() > radCut) {
+            if (bestCandidate.getMomentum().magnitude() > radCut * ebeam) {
                 triRadTrackTime2D.fill(tEle, tPos);
                 triRadTrackTimeDiff.fill(tEle - tPos);
 //                triRadZVsMomentum.fill(bestCandidate.getMomentum().magnitude(), v0Vtx.z());
@@ -799,7 +826,7 @@
 //            vertV.fill(pBestV0Rot.y() / pBestV0Rot.magnitude());
             vertXY.fill(v0Vtx.x(), v0Vtx.y());
             vertZY.fill(v0Vtx.y(), v0Vtx.z());
-            if (bestCandidate.getMomentum().magnitude() > radCut) {
+            if (bestCandidate.getMomentum().magnitude() > radCut * ebeam) {
 
                 BilliorVertexer vtxFitter = new BilliorVertexer(TrackUtils.getBField(event.getDetector()).y());
                 vtxFitter.setBeamSize(beamSize);
@@ -808,6 +835,8 @@
                 billiorTracks.add(new BilliorTrack(positron.getTracks().get(0)));
                 vtxFitter.doBeamSpotConstraint(true);
                 BilliorVertex bsconVertex = vtxFitter.fitVertex(billiorTracks);
+                vtxFitter.doTargetConstraint(true);
+                BilliorVertex tarconVertex = vtxFitter.fitVertex(billiorTracks);
                 vertRadUnconBsconChi2.fill(unconVertex.getChi2(), bsconVertex.getChi2());
 
                 vertRadTrackTime2D.fill(tEle, tPos);

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	Tue Mar  1 11:15:40 2016
@@ -18,7 +18,7 @@
 import java.util.Map.Entry;
 import java.util.logging.Level;
 import java.util.logging.Logger;
-
+import org.hps.conditions.beam.BeamEnergy.BeamEnergyCollection;
 import org.hps.recon.tracking.TrackType;
 import org.hps.recon.tracking.TrackUtils;
 import org.hps.recon.vertexing.BilliorTrack;
@@ -41,590 +41,624 @@
  */
 public class V0Monitoring extends DataQualityMonitor {
 
-    private static Logger LOGGER = Logger.getLogger(V0Monitoring.class.getPackage().getName());
-    
-    String finalStateParticlesColName = "FinalStateParticles";
-    String unconstrainedV0CandidatesColName = "UnconstrainedV0Candidates";
-    String beamConV0CandidatesColName = "BeamspotConstrainedV0Candidates";
-    String targetV0ConCandidatesColName = "TargetConstrainedV0Candidates";
-    String[] fpQuantNames = {"nV0_per_Event", "avg_BSCon_mass", "avg_BSCon_Vx", "avg_BSCon_Vy", "avg_BSCon_Vz", "sig_BSCon_Vx", "sig_BSCon_Vy", "sig_BSCon_Vz", "avg_BSCon_Chi2"};
-    //some counters
-    int nRecoEvents = 0;
-    int nTotV0 = 0;
-    int nTot2Ele = 0;
-    //some summers
-    double sumMass = 0.0;
-    double sumVx = 0.0;
-    double sumVy = 0.0;
-    double sumVz = 0.0;
-    double sumChi2 = 0.0;
-
-    /*  V0 Quantities   */
-    /*  Mass, vertex, chi^2 of fit */
-    /*  unconstrained */
-    IHistogram1D unconMass;
-    IHistogram1D unconVx;
-    IHistogram1D unconVy;
-    IHistogram1D unconVz;
-    IHistogram1D unconChi2;
-    IHistogram2D unconVzVsChi2;
-    IHistogram2D unconChi2VsTrkChi2;
-    /* beamspot constrained */
-
-    IHistogram1D nV0;
-
-    IHistogram1D v0Time;
-    IHistogram1D v0Dt;
-    IHistogram2D trigTimeV0Time;
-    IHistogram1D trigTime;
-
-    IHistogram1D bsconMass;
-    IHistogram1D bsconVx;
-    IHistogram1D bsconVy;
-    IHistogram1D bsconVz;
-    IHistogram1D bsconChi2;
-    IHistogram2D bsconVzVsChi2;
-    IHistogram2D bsconChi2VsTrkChi2;
-    /* target constrained */
-    IHistogram1D tarconMass;
-    IHistogram1D tarconVx;
-    IHistogram1D tarconVy;
-    IHistogram1D tarconVz;
-    IHistogram1D tarconChi2;
-    IHistogram2D tarconVzVsChi2;
-    IHistogram2D tarconChi2VsTrkChi2;
-
-    IHistogram2D pEleVspPos;
-    IHistogram2D pEleVspPosWithCut;
-    IHistogram2D pyEleVspyPos;
-    IHistogram2D pxEleVspxPos;
-
-    IHistogram2D VtxZVsMass;
-    IHistogram2D VtxYVsVtxZ;
-    IHistogram2D VtxXVsVtxZ;
-    IHistogram2D VtxXVsVtxY;
-    IHistogram2D VtxXVsVtxPx;
-    IHistogram2D VtxYVsVtxPy;
-    IHistogram2D VtxZVsVtxPx;
-    IHistogram2D VtxZVsVtxPy;
-    IHistogram2D VtxZVsVtxPz;
-
-    IHistogram2D VtxZVsL1Iso;
-    IHistogram2D VtxZVsTrkChi2;
-
-    IHistogram2D pEleVspEle;
-    IHistogram2D phiEleVsphiEle;
-    IHistogram2D pyEleVspyEle;
-    IHistogram2D pxEleVspxEle;
-    IHistogram2D pEleVspEleNoBeam;
-    IHistogram2D pyEleVspyEleNoBeam;
-    IHistogram2D pxEleVspxEleNoBeam;
-    IHistogram2D pEleVspEleMoller;
-    IHistogram2D pEleVsthetaMoller;
-    IHistogram2D thetaEleVsthetaMoller;
-    IHistogram2D pEleVspEleBeamBeam;
-    IHistogram2D pEleVsthetaBeamBeam;
-    IHistogram2D thetaEleVsthetaBeamBeam;
-
-    IHistogram1D mollerMass;
-    IHistogram1D mollerMassVtxCut;
-    IHistogram1D mollerVx;
-    IHistogram1D mollerVy;
-    IHistogram1D mollerVz;
-    IHistogram1D mollerVzVtxCut;
-    IHistogram2D mollerXVsVtxZ;
-    IHistogram2D mollerYVsVtxZ;
-    IHistogram2D mollerXVsVtxY;
-    
-    IHistogram1D mollerUx;
-    IHistogram1D mollerUy;
-    
-    
-
-    IHistogram1D sumChargeHisto;
-    IHistogram1D numChargeHisto;
-
-    private final String plotDir = "V0Monitoring/";
-
-    double beamEnergy = 1.05; //GeV
-    private final BasicHep3Matrix beamAxisRotation = new BasicHep3Matrix();
-
-    double maxFactor = 1.25;
-    
-    
-    double thetaMax = 0.06;
-    double thetaMin = 0.015;
-    
-    public void setBeamEnergy(double e){
-    	this.beamEnergy = e;
-    	feeMomentumCut = 0.75*beamEnergy; //GeV
-
-        v0ESumMinCut = 0.8 * beamEnergy;
-        v0ESumMaxCut = 1.25 * beamEnergy;
-        /*double v0MaxPCut = 1.1;//GeV
-        double molPSumMin = 0.85;
-        double molPSumMax = 1.3;
-        double beambeamCut = 0.85;
-        */
-        v0MaxPCut = 1.05*beamEnergy;//GeV
-        molPSumMin = 0.80*beamEnergy;
-        molPSumMax = 1.25*beamEnergy;
-        beambeamCut = 0.80*beamEnergy;
-    	
-    }
-    
-    double feeMomentumCut, v0ESumMinCut, v0MaxPCut, v0ESumMaxCut,
-    	molPSumMin, molPSumMax, beambeamCut;
-    
-    
-
-    @Override
-    protected void detectorChanged(Detector detector) {
-    	setBeamEnergy(beamEnergy);
-    	
-    	
-    	
-        beamAxisRotation.setActiveEuler(Math.PI / 2, -0.0305, -Math.PI / 2);
-
-        LOGGER.info("Setting up the plotter");
-        aida.tree().cd("/");
-        String xtra = "Extras";
-        String trkType = "SeedTrack/";
-        if (isGBL)
-            trkType = "GBLTrack/";
-        
-        double maxMass = .2*beamEnergy;
-        double maxMassMoller = .1*Math.sqrt(beamEnergy);
-        /*  V0 Quantities   */
-        /*  Mass, vertex, chi^2 of fit */
-        /*  unconstrained */
-        unconMass = aida.histogram1D(plotDir + trkType + triggerType + "/" + unconstrainedV0CandidatesColName + "/" + "Invariant Mass (GeV)", 100, 0, maxMass);
-        unconVx = aida.histogram1D(plotDir + trkType + triggerType + "/" + unconstrainedV0CandidatesColName + "/" + "Vx (mm)", 50, -10, 10);
-        unconVy = aida.histogram1D(plotDir + trkType + triggerType + "/" + unconstrainedV0CandidatesColName + "/" + "Vy (mm)", 50, -10, 10);
-        unconVz = aida.histogram1D(plotDir + trkType + triggerType + "/" + unconstrainedV0CandidatesColName + "/" + "Vz (mm)", 50, -50, 50);
-        unconChi2 = aida.histogram1D(plotDir + trkType + triggerType + "/" + unconstrainedV0CandidatesColName + "/" + "Chi2", 25, 0, 25);
-        unconVzVsChi2 = aida.histogram2D(plotDir + trkType + triggerType + "/" + unconstrainedV0CandidatesColName + "/" + "Vz vs. Chi2", 25, 0, 25, 50, -50, 50);
-        unconChi2VsTrkChi2 = aida.histogram2D(plotDir + trkType + triggerType + "/" + unconstrainedV0CandidatesColName + "/" + "Chi2 vs. total track chi2", 50, 0, 50, 50, 0, 25);
-        /* beamspot constrained */
-        bsconMass = aida.histogram1D(plotDir + trkType + triggerType + "/" + beamConV0CandidatesColName + "/" + "Mass (GeV)", 100, 0, maxMass);
-        bsconVx = aida.histogram1D(plotDir + trkType + triggerType + "/" + beamConV0CandidatesColName + "/" + "Vx (mm)", 50, -10, 10);
-        bsconVy = aida.histogram1D(plotDir + trkType + triggerType + "/" + beamConV0CandidatesColName + "/" + "Vy (mm)", 50, -10, 10);
-        bsconVz = aida.histogram1D(plotDir + trkType + triggerType + "/" + beamConV0CandidatesColName + "/" + "Vz (mm)", 50, -50, 50);
-        bsconChi2 = aida.histogram1D(plotDir + trkType + triggerType + "/" + beamConV0CandidatesColName + "/" + "Chi2", 25, 0, 25);
-        bsconVzVsChi2 = aida.histogram2D(plotDir + trkType + triggerType + "/" + beamConV0CandidatesColName + "/" + "Vz vs. Chi2", 25, 0, 25, 50, -50, 50);
-        bsconChi2VsTrkChi2 = aida.histogram2D(plotDir + trkType + triggerType + "/" + beamConV0CandidatesColName + "/" + "Chi2 vs. total track chi2", 50, 0, 50, 50, 0, 25);
-        /* target constrained */
-        tarconMass = aida.histogram1D(plotDir + trkType + triggerType + "/" + targetV0ConCandidatesColName + "/" + "Mass (GeV)", 100, 0, maxMass);
-        tarconVx = aida.histogram1D(plotDir + trkType + triggerType + "/" + targetV0ConCandidatesColName + "/" + "Vx (mm)", 50, -1, 1);
-        tarconVy = aida.histogram1D(plotDir + trkType + triggerType + "/" + targetV0ConCandidatesColName + "/" + "Vy (mm)", 50, -1, 1);
-        tarconVz = aida.histogram1D(plotDir + trkType + triggerType + "/" + targetV0ConCandidatesColName + "/" + "Vz (mm)", 50, -10, 10);
-        tarconChi2 = aida.histogram1D(plotDir + trkType + triggerType + "/" + targetV0ConCandidatesColName + "/" + "Chi2", 25, 0, 25);
-        tarconVzVsChi2 = aida.histogram2D(plotDir + trkType + triggerType + "/" + targetV0ConCandidatesColName + "/" + "Vz vs. Chi2", 25, 0, 25, 50, -50, 50);
-        tarconChi2VsTrkChi2 = aida.histogram2D(plotDir + trkType + triggerType + "/" + targetV0ConCandidatesColName + "/" + "Chi2 vs. total track chi2", 50, 0, 50, 50, 0, 25);
-
-        nV0 = aida.histogram1D(plotDir + trkType + triggerType + "/" + xtra + "/" + "Number of V0 per event", 10, 0, 10);
-        v0Time = aida.histogram1D(plotDir + trkType + triggerType + "/" + xtra + "/" + "V0 mean time", 100, -25, 25);
-        v0Dt = aida.histogram1D(plotDir + trkType + triggerType + "/" + xtra + "/" + "V0 time difference", 100, -25, 25);
-        trigTimeV0Time = aida.histogram2D(plotDir + trkType + triggerType + "/" + xtra + "/" + "Trigger phase vs. V0 mean time", 100, -25, 25, 6, 0, 24);
-        trigTime = aida.histogram1D(plotDir + trkType + triggerType + "/" + xtra + "/" + "Trigger phase", 6, 0, 24);
-
-        pEleVspPos = aida.histogram2D(plotDir + trkType + triggerType + "/" + xtra + "/" + "P(e) vs P(p)", 50, 0, beamEnergy * maxFactor, 50, 0, beamEnergy * maxFactor);
-        pEleVspPosWithCut = aida.histogram2D(plotDir + trkType + triggerType + "/" + xtra + "/" + "P(e) vs P(p): Radiative", 50, 0, beamEnergy * maxFactor, 50, 0, beamEnergy * maxFactor);
-        pyEleVspyPos = aida.histogram2D(plotDir + trkType + triggerType + "/" + xtra + "/" + "Py(e) vs Py(p)", 50, -0.04*beamEnergy, 0.04*beamEnergy, 50, -0.04*beamEnergy, 0.04*beamEnergy);
-        pxEleVspxPos = aida.histogram2D(plotDir + trkType + triggerType + "/" + xtra + "/" + "Px(e) vs Px(p)", 50, -0.04*beamEnergy, 0.04*beamEnergy, 50, -0.04*beamEnergy, 0.04*beamEnergy);
-        VtxZVsMass = aida.histogram2D(plotDir + trkType + triggerType + "/" + xtra + "/" + "Vz vs Mass", 50, 0, maxMass, 50, -50, 80);
-        VtxXVsVtxZ = aida.histogram2D(plotDir + trkType + triggerType + "/" + xtra + "/" + "Vx vs Vz", 100, -10, 10, 100, -50, 80);
-        VtxYVsVtxZ = aida.histogram2D(plotDir + trkType + triggerType + "/" + xtra + "/" + "Vy vs Vz", 100, -5, 5, 100, -50, 80);
-        VtxXVsVtxY = aida.histogram2D(plotDir + trkType + triggerType + "/" + xtra + "/" + "Vx vs Vy", 100, -10, 10, 100, -5, 5);
-        VtxXVsVtxPx = aida.histogram2D(plotDir + trkType + triggerType + "/" + xtra + "/" + "Vx vs Px", 100, -0.1, 0.1, 100, -10, 10);
-        VtxYVsVtxPy = aida.histogram2D(plotDir + trkType + triggerType + "/" + xtra + "/" + "Vy vs Py", 100, -0.1, 0.1, 100, -5, 5);
-        VtxZVsVtxPx = aida.histogram2D(plotDir + trkType + triggerType + "/" + xtra + "/" + "Vz vs Px", 100, -0.1, 0.1, 100, -50, 80);
-        VtxZVsVtxPy = aida.histogram2D(plotDir + trkType + triggerType + "/" + xtra + "/" + "Vz vs Py", 100, -0.1, 0.1, 100, -50, 80);
-        VtxZVsVtxPz = aida.histogram2D(plotDir + trkType + triggerType + "/" + xtra + "/" + "Vz vs Pz", 100, 0.0, beamEnergy * maxFactor, 100, -50, 80);
-        VtxZVsL1Iso = aida.histogram2D(plotDir + trkType + triggerType + "/" + xtra + "/" + "Vz vs L1 Isolation", 100, 0.0, 5.0, 50, -50, 80);
-        VtxZVsTrkChi2 = aida.histogram2D(plotDir + trkType + triggerType + "/" + xtra + "/" + "Vz vs Track Chi2", 50, 0, 50, 50, -50, 80);
-        pEleVspEle = aida.histogram2D(plotDir + trkType + triggerType + "/" + xtra + "/" + "2 Electron/P(e) vs P(e)", 50, 0, beamEnergy * maxFactor, 50, 0, beamEnergy * maxFactor);
-        phiEleVsphiEle = aida.histogram2D(plotDir + trkType + triggerType + "/" + xtra + "/" + "2 Electron/phi(e) vs phi(e)", 50, -Math.PI, Math.PI, 50, -Math.PI, Math.PI);
-        pyEleVspyEle = aida.histogram2D(plotDir + trkType + triggerType + "/" + xtra + "/" + "2 Electron/Py(e) vs Py(e)", 50, -0.04*beamEnergy, 0.04*beamEnergy, 50, -0.04*beamEnergy, 0.04*beamEnergy);
-        pxEleVspxEle = aida.histogram2D(plotDir + trkType + triggerType + "/" + xtra + "/" + "2 Electron/Px(e) vs Px(e)", 50, -0.02*beamEnergy, 0.06*beamEnergy, 50, -0.02*beamEnergy, 0.06*beamEnergy);
-        pEleVspEleNoBeam = aida.histogram2D(plotDir + trkType + triggerType + "/" + xtra + "/" + "2 Electron/P(e) vs P(e) NoBeam", 50, 0, beambeamCut, 50, 0, beambeamCut);
-        pEleVspEleMoller = aida.histogram2D(plotDir + trkType + triggerType + "/" + xtra + "/" + "2 Electron/P(e) vs P(e) Moller", 50, 0, beambeamCut, 50, 0, beambeamCut);
-        pEleVspEleBeamBeam = aida.histogram2D(plotDir + trkType + triggerType + "/" + xtra + "/" + "2 Electron/P(e) vs P(e) BeamBeam", 50, beambeamCut, beamEnergy * maxFactor, 50, beambeamCut, beamEnergy * maxFactor);
-        pyEleVspyEleNoBeam = aida.histogram2D(plotDir + trkType + triggerType + "/" + xtra + "/" + "2 Electron/Py(e) vs Py(e) NoBeam", 50, -0.04*beamEnergy, 0.04*beamEnergy, 50, -0.04*beamEnergy, 0.04*beamEnergy);
-        pxEleVspxEleNoBeam = aida.histogram2D(plotDir + trkType + triggerType + "/" + xtra + "/" + "2 Electron/Px(e) vs Px(e) NoBeam", 50, -0.02*beamEnergy, 0.06*beamEnergy, 50, -0.02*beamEnergy, 0.06*beamEnergy);
-        sumChargeHisto = aida.histogram1D(plotDir + trkType + triggerType + "/" + xtra + "/" + "Total Charge of  Event", 5, -2, 3);
-        numChargeHisto = aida.histogram1D(plotDir + trkType + triggerType + "/" + xtra + "/" + "Number of Charged Particles", 6, 0, 6);
-
-        pEleVsthetaMoller = aida.histogram2D(plotDir + trkType + triggerType + "/" + xtra + "/" + "2 Electron/P(e) vs Theta Moller", 50, 0, beambeamCut, 50, thetaMin, thetaMax);
-        thetaEleVsthetaMoller = aida.histogram2D(plotDir + trkType + triggerType + "/" + xtra + "/" + "2 Electron/Theta vs Theta Moller", 50, thetaMin, thetaMax, 50, thetaMin, thetaMax);
-        pEleVsthetaBeamBeam = aida.histogram2D(plotDir + trkType + triggerType + "/" + xtra + "/" + "2 Electron/P(e) vs Theta BeamBeam", 50, beambeamCut, beamEnergy * maxFactor, 50, thetaMin, thetaMax);
-        thetaEleVsthetaBeamBeam = aida.histogram2D(plotDir + trkType + triggerType + "/" + xtra + "/" + "2 Electron/Theta vs Theta BeamBeam", 50, thetaMin, thetaMax, 50, thetaMin, thetaMax);
-
-        mollerMass = aida.histogram1D(plotDir + trkType + triggerType + "/" + xtra + "/" + "2 Electron/Moller Mass (GeV)", 100, 0, maxMassMoller);
-        mollerMassVtxCut = aida.histogram1D(plotDir + trkType + triggerType + "/" + xtra + "/" + "2 Electron/Moller Mass (GeV): VtxCut", 100, 0, maxMassMoller);
-        mollerVx = aida.histogram1D(plotDir + trkType + triggerType + "/" + xtra + "/" + "2 Electron/Moller Vx (mm)", 50, -10, 10);
-        mollerVy = aida.histogram1D(plotDir + trkType + triggerType + "/" + xtra + "/" + "2 Electron/Moller Vy (mm)", 50, -2, 2);
-        mollerVz = aida.histogram1D(plotDir + trkType + triggerType + "/" + xtra + "/" + "2 Electron/Moller Vz (mm)", 50, -50, 50);
-        mollerVzVtxCut = aida.histogram1D(plotDir + trkType + triggerType + "/" + xtra + "/" + "2 Electron/Moller Vz (mm): VtxCut", 50, -50, 50);
-        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, .015, .045);
-        mollerUy = aida.histogram1D(plotDir + trkType + triggerType + "/" + xtra + "/" + "2 Electron/Moller Pair Momentum Direction Uy", 100, -.01, .01);
-    
-        
-        
-    }
-
-    @Override
-    public void process(EventHeader event) {
-        /*  make sure everything is there */
-        if (!event.hasCollection(ReconstructedParticle.class, finalStateParticlesColName))
-            return;
-        if (!event.hasCollection(ReconstructedParticle.class, unconstrainedV0CandidatesColName))
-            return;
-        if (!event.hasCollection(ReconstructedParticle.class, beamConV0CandidatesColName))
-            return;
-        if (!event.hasCollection(ReconstructedParticle.class, targetV0ConCandidatesColName))
-            return;
-
-        //check to see if this event is from the correct trigger (or "all");
-        if (!matchTrigger(event))
-            return;
-
-        nRecoEvents++;
-
-        RelationalTable hitToStrips = TrackUtils.getHitToStripsTable(event);
-        RelationalTable hitToRotated = TrackUtils.getHitToRotatedTable(event);
-
-        List<ReconstructedParticle> unonstrainedV0List = event.get(ReconstructedParticle.class, unconstrainedV0CandidatesColName);
-        for (ReconstructedParticle uncV0 : unonstrainedV0List) {
-            if (isGBL != TrackType.isGBL(uncV0.getType()))
-                continue;
-            Vertex uncVert = uncV0.getStartVertex();
-            Hep3Vector pVtxRot = VecOp.mult(beamAxisRotation, uncV0.getMomentum());
-            Hep3Vector vtxPosRot = VecOp.mult(beamAxisRotation, uncVert.getPosition());
-            double theta = Math.acos(pVtxRot.z() / pVtxRot.magnitude());
-            double phi = Math.atan2(pVtxRot.y(), pVtxRot.x());
-            unconVx.fill(vtxPosRot.x());
-            unconVy.fill(vtxPosRot.y());
-            unconVz.fill(vtxPosRot.z());
-            unconMass.fill(uncV0.getMass());
-            unconChi2.fill(uncVert.getChi2());
-            unconVzVsChi2.fill(uncVert.getChi2(), vtxPosRot.z());
-            unconChi2VsTrkChi2.fill(Math.max(uncV0.getParticles().get(0).getTracks().get(0).getChi2(), uncV0.getParticles().get(1).getTracks().get(0).getChi2()), uncVert.getChi2());
-
-            VtxZVsMass.fill(uncV0.getMass(), vtxPosRot.z());
-            VtxXVsVtxZ.fill(vtxPosRot.x(), vtxPosRot.z());
-            VtxYVsVtxZ.fill(vtxPosRot.y(), vtxPosRot.z());
-            VtxXVsVtxY.fill(vtxPosRot.x(), vtxPosRot.y());
-            VtxXVsVtxPx.fill(pVtxRot.x(), vtxPosRot.x());
-            VtxYVsVtxPy.fill(pVtxRot.y(), vtxPosRot.y());
-            VtxZVsVtxPx.fill(pVtxRot.x(), vtxPosRot.z());
-            VtxZVsVtxPy.fill(pVtxRot.y(), vtxPosRot.z());
-            VtxZVsVtxPz.fill(pVtxRot.z(), vtxPosRot.z());
-
-            //this always has 2 tracks. 
-            List<ReconstructedParticle> trks = uncV0.getParticles();
-//            Track ele = trks.get(0).getTracks().get(0);
-//            Track pos = trks.get(1).getTracks().get(0);
-//            //if track #0 has charge>0 it's the electron!  This seems mixed up, but remember the track 
-//            //charge is assigned assuming a positive B-field, while ours is negative
-//            if (trks.get(0).getCharge() > 0) {
-//                pos = trks.get(0).getTracks().get(0);
-//                ele = trks.get(1).getTracks().get(0);
-//            }
-//            aida.histogram2D(plotDir + trkType + triggerType + "/" + "P(e) vs P(p)").fill(getMomentum(ele), getMomentum(pos));
-//            aida.histogram2D(plotDir + trkType + triggerType + "/" + "Px(e) vs Px(p)").fill(ele.getTrackStates().get(0).getMomentum()[1], pos.getTrackStates().get(0).getMomentum()[1]);
-//            aida.histogram2D(plotDir + trkType + triggerType + "/" + "Py(e) vs Py(p)").fill(ele.getTrackStates().get(0).getMomentum()[2], pos.getTrackStates().get(0).getMomentum()[2]);
-            ReconstructedParticle ele = trks.get(0);
-            ReconstructedParticle pos = trks.get(1);
-            //ReconParticles have the charge correct. 
-            if (trks.get(0).getCharge() > 0) {
-                pos = trks.get(0);
-                ele = trks.get(1);
-            }
-            if (ele.getCharge() < 0 && pos.getCharge() > 0) {
-                VtxZVsTrkChi2.fill(Math.max(uncV0.getParticles().get(0).getTracks().get(0).getChi2(), uncV0.getParticles().get(1).getTracks().get(0).getChi2()), uncVert.getPosition().z());
-
-                Double[] eleIso = TrackUtils.getIsolations(ele.getTracks().get(0), hitToStrips, hitToRotated);
-                Double[] posIso = TrackUtils.getIsolations(pos.getTracks().get(0), hitToStrips, hitToRotated);
-                if (eleIso[0] != null && posIso[0] != null) {
-                    double eleL1Iso = Math.min(Math.abs(eleIso[0]), Math.abs(eleIso[1]));
-                    double posL1Iso = Math.min(Math.abs(posIso[0]), Math.abs(posIso[1]));
-                    double minL1Iso = Math.min(eleL1Iso, posL1Iso);
-                    VtxZVsL1Iso.fill(minL1Iso, uncVert.getPosition().z());
-                }
-
-                double pe = ele.getMomentum().magnitude();
-                double pp = pos.getMomentum().magnitude();
-                Hep3Vector pEleRot = VecOp.mult(beamAxisRotation, ele.getMomentum());
-                Hep3Vector pPosRot = VecOp.mult(beamAxisRotation, pos.getMomentum());
-
-                pEleVspPos.fill(pe, pp);
-                pxEleVspxPos.fill(pEleRot.x(), pPosRot.x());
-                pyEleVspyPos.fill(pEleRot.y(), pPosRot.y());
-                if (pe < v0MaxPCut && pp < v0MaxPCut && (pe + pp) > v0ESumMinCut && (pe + pp) < v0ESumMaxCut)//enrich radiative-like events
-                
-                    pEleVspPosWithCut.fill(pe, pp);
-            }
-
-            double eleT = TrackUtils.getTrackTime(ele.getTracks().get(0), hitToStrips, hitToRotated);
-            double posT = TrackUtils.getTrackTime(pos.getTracks().get(0), hitToStrips, hitToRotated);
-            double meanT = (eleT + posT) / 2.0;
-            v0Time.fill(meanT);
-            v0Dt.fill(eleT - posT);
-            trigTimeV0Time.fill(meanT, event.getTimeStamp() % 24);
-            trigTime.fill(event.getTimeStamp() % 24);
-        }
-
-        List<ReconstructedParticle> beamConstrainedV0List = event.get(ReconstructedParticle.class, beamConV0CandidatesColName);
-        nV0.fill(beamConstrainedV0List.size());
-        for (ReconstructedParticle bsV0 : beamConstrainedV0List) {
-
-            if (isGBL != TrackType.isGBL(bsV0.getType()))
-                continue;
-            nTotV0++;
-            Vertex bsVert = bsV0.getStartVertex();
-            Hep3Vector vtxPosRot = VecOp.mult(beamAxisRotation, bsVert.getPosition());
-            bsconVx.fill(vtxPosRot.x());
-            bsconVy.fill(vtxPosRot.y());
-            bsconVz.fill(vtxPosRot.z());
-            bsconMass.fill(bsV0.getMass());
-            bsconChi2.fill(bsVert.getChi2());
-            bsconVzVsChi2.fill(bsVert.getChi2(), vtxPosRot.z());
-            bsconChi2VsTrkChi2.fill(Math.max(bsV0.getParticles().get(0).getTracks().get(0).getChi2(), bsV0.getParticles().get(1).getTracks().get(0).getChi2()), bsVert.getChi2());
-            sumMass += bsV0.getMass();
-            sumVx += vtxPosRot.x();
-            sumVy += vtxPosRot.y();
-            sumVz += vtxPosRot.z();
-            sumChi2 += bsVert.getChi2();
-        }
-
-        List<ReconstructedParticle> targetConstrainedV0List = event.get(ReconstructedParticle.class, targetV0ConCandidatesColName);
-        for (ReconstructedParticle tarV0 : targetConstrainedV0List) {
-
-            if (isGBL != TrackType.isGBL(tarV0.getType()))
-                continue;
-
-            Vertex tarVert = tarV0.getStartVertex();
-            Hep3Vector vtxPosRot = VecOp.mult(beamAxisRotation, tarVert.getPosition());
-            tarconVx.fill(vtxPosRot.x());
-            tarconVy.fill(vtxPosRot.y());
-            tarconVz.fill(vtxPosRot.z());
-            tarconMass.fill(tarV0.getMass());
-            tarconChi2.fill(tarVert.getChi2());
-            tarconVzVsChi2.fill(tarVert.getChi2(), vtxPosRot.z());
-            tarconChi2VsTrkChi2.fill(Math.max(tarV0.getParticles().get(0).getTracks().get(0).getChi2(), tarV0.getParticles().get(1).getTracks().get(0).getChi2()), tarVert.getChi2());
-        }
-        List<ReconstructedParticle> finalStateParticles = event.get(ReconstructedParticle.class, finalStateParticlesColName);
-        if (debug)
-            LOGGER.info("This events has " + finalStateParticles.size() + " final state particles");
-
-        ReconstructedParticle ele1 = null;
-        ReconstructedParticle ele2 = null;
-        int sumCharge = 0;
-        int numChargedParticles = 0;
-        for (ReconstructedParticle fsPart : finalStateParticles) {
-            if (isGBL != TrackType.isGBL(fsPart.getType()))
-                continue;
-            if (debug)
-                LOGGER.info("PDGID = " + fsPart.getParticleIDUsed() + "; charge = " + fsPart.getCharge() + "; pz = " + fsPart.getMomentum().x());
-            double charge = fsPart.getCharge();
-            sumCharge += charge;
-            if (charge != 0) {
-                numChargedParticles++;
-                if (charge < 1)
-                    if (ele1 == null)
-                        ele1 = fsPart;
-                    else if (!hasSharedStrips(ele1, fsPart, hitToStrips, hitToRotated))
-                        ele2 = fsPart;
-            }
-        }
-        sumChargeHisto.fill(sumCharge);
-        numChargeHisto.fill(numChargedParticles);
-
-        if (ele1 != null && ele2 != null) {
-            Hep3Vector p1 = VecOp.mult(beamAxisRotation, ele1.getMomentum());
-            Hep3Vector p2 = VecOp.mult(beamAxisRotation, ele2.getMomentum());
-//            Hep3Vector beamAxis = new BasicHep3Vector(Math.sin(0.0305), 0, Math.cos(0.0305));
-//            LOGGER.info(p1);
-//            LOGGER.info(VecOp.mult(rot, p1));
-
-            double theta1 = Math.acos(p1.z() / p1.magnitude());
-            double theta2 = Math.acos(p2.z() / p2.magnitude());
-            double phi1 = Math.atan2(p1.y(), p1.x());
-            double phi2 = Math.atan2(p2.y(), p2.x());
-            phiEleVsphiEle.fill(phi1, phi2);
-            pEleVspEle.fill(ele1.getMomentum().magnitude(), ele2.getMomentum().magnitude());
-            pyEleVspyEle.fill(ele1.getMomentum().y(), ele2.getMomentum().y());
-            pxEleVspxEle.fill(ele1.getMomentum().x(), ele2.getMomentum().x());
-            //remove beam electrons
-            if (ele1.getMomentum().magnitude() < beambeamCut && ele2.getMomentum().magnitude() < beambeamCut) {
-                pEleVspEleNoBeam.fill(ele1.getMomentum().magnitude(), ele2.getMomentum().magnitude());
-                pyEleVspyEleNoBeam.fill(ele1.getMomentum().y(), ele2.getMomentum().y());
-                pxEleVspxEleNoBeam.fill(ele1.getMomentum().x(), ele2.getMomentum().x());
-            }
-            //look at beam-beam events
-            if (ele1.getMomentum().magnitude() > beambeamCut && ele2.getMomentum().magnitude() > beambeamCut) {
-                pEleVspEleBeamBeam.fill(ele1.getMomentum().magnitude(), ele2.getMomentum().magnitude());
-                pEleVsthetaBeamBeam.fill(p1.magnitude(), theta1);
-                pEleVsthetaBeamBeam.fill(p2.magnitude(), theta2);
-                thetaEleVsthetaBeamBeam.fill(theta1, theta2);
-            }
-
-            //look at "Moller" events (if that's what they really are
-            if (ele1.getMomentum().magnitude() + ele2.getMomentum().magnitude() > molPSumMin
-                    && ele1.getMomentum().magnitude() + ele2.getMomentum().magnitude() < molPSumMax
-                    && (p1.magnitude() < beambeamCut && p2.magnitude() < beambeamCut)) {
-
-                Track ele1trk = ele1.getTracks().get(0);
-                Track ele2trk = ele2.getTracks().get(0);
-                SeedTrack stEle1 = TrackUtils.makeSeedTrackFromBaseTrack(ele1trk);
-                SeedTrack stEle2 = TrackUtils.makeSeedTrackFromBaseTrack(ele2trk);
-                BilliorTrack btEle1 = new BilliorTrack(stEle1.getSeedCandidate().getHelix());
-                BilliorTrack btEle2 = new BilliorTrack(stEle2.getSeedCandidate().getHelix());
-                BilliorVertex bv = fitVertex(btEle1, btEle2);
-//                LOGGER.info("ee vertex: "+bv.toString());
-                mollerMass.fill(bv.getParameters().get("invMass"));
-                mollerVx.fill(bv.getPosition().x());
-                mollerVy.fill(bv.getPosition().y());
-                mollerVz.fill(bv.getPosition().z());
-                mollerXVsVtxZ.fill(bv.getPosition().x(), bv.getPosition().z());
-                mollerYVsVtxZ.fill(bv.getPosition().y(), bv.getPosition().z());
-                mollerXVsVtxY.fill(bv.getPosition().x(), bv.getPosition().y());
-                
-                double ux = (ele1.getMomentum().x()+ele2.getMomentum().x())/(ele1.getMomentum().z()+ele2.getMomentum().z());
-                double uy = (ele1.getMomentum().y()+ele2.getMomentum().y())/(ele1.getMomentum().z()+ele2.getMomentum().z());
-                mollerUx.fill(ux);
-                mollerUy.fill(uy);
-                
-                if (Math.abs(bv.getPosition().x()) < 2
-                        && Math.abs(bv.getPosition().y()) < 0.5) {
-                    mollerMassVtxCut.fill(bv.getParameters().get("invMass"));
-                    mollerVzVtxCut.fill(bv.getPosition().z());
-                }
-                pEleVspEleMoller.fill(p1.magnitude(), p2.magnitude());
-                pEleVsthetaMoller.fill(p1.magnitude(), theta1);
-                pEleVsthetaMoller.fill(p2.magnitude(), theta2);
-                thetaEleVsthetaMoller.fill(theta1, theta2);
-            }
-        }
-    }
-
-    @Override
-    public void printDQMData() {
-        LOGGER.info("V0Monitoring::printDQMData");
-        for (Entry<String, Double> entry : monitoredQuantityMap.entrySet())
-            LOGGER.info(entry.getKey() + " = " + entry.getValue());
-        LOGGER.info("*******************************");
-    }
-
-    /**
-     * Calculate the averages here and fill the map
-     */
-    @Override
-    public void calculateEndOfRunQuantities() {
-
-        IAnalysisFactory analysisFactory = IAnalysisFactory.create();
-        IFitFactory fitFactory = analysisFactory.createFitFactory();
-        IFitter fitter = fitFactory.createFitter("chi2");
-        double[] init = {50.0, 0.0, 0.2, 1.0, 0.0};
-        IFitResult resVx = fitVertexPosition(bsconVx, fitter, init, "range=\"(-0.5,0.5)\"");
-        double[] init2 = {50.0, 0.0, 0.04, 1.0, 0.0};
-        IFitResult resVy = fitVertexPosition(bsconVy, fitter, init2, "range=\"(-0.2,0.2)\"");
-        double[] init3 = {50.0, 0.0, 3.0, 1.0, 0.0};
-        IFitResult resVz = fitVertexPosition(bsconVz, fitter, init3, "range=\"(-6,6)\"");
-
-        if (resVx != null && resVy != null & resVz != null) {
-            double[] parsVx = resVx.fittedParameters();
-            double[] parsVy = resVy.fittedParameters();
-            double[] parsVz = resVz.fittedParameters();
-
-            for (int i = 0; i < 5; i++)
-                LOGGER.info("Vertex Fit Parameters:  " + resVx.fittedParameterNames()[i] + " = " + parsVx[i] + "; " + parsVy[i] + "; " + parsVz[i]);
-
-            IPlotter plotter = analysisFactory.createPlotterFactory().create("Vertex Position");
-            plotter.createRegions(1, 3);
-            IPlotterStyle pstyle = plotter.style();
-            pstyle.legendBoxStyle().setVisible(false);
-            pstyle.dataStyle().fillStyle().setColor("green");
-            pstyle.dataStyle().lineStyle().setColor("black");
-            plotter.region(0).plot(bsconVx);
-            plotter.region(0).plot(resVx.fittedFunction());
-            plotter.region(1).plot(bsconVy);
-            plotter.region(1).plot(resVy.fittedFunction());
-            plotter.region(2).plot(bsconVz);
-            plotter.region(2).plot(resVz.fittedFunction());
-            if (outputPlots)
-                try {
-                    plotter.writeToFile(outputPlotDir + "vertex.png");
-                } catch (IOException ex) {
-                    Logger.getLogger(V0Monitoring.class.getName()).log(Level.SEVERE, null, ex);
-                }
-
-//        monitoredQuantityMap.put(fpQuantNames[2], sumVx / nTotV0);
-//        monitoredQuantityMap.put(fpQuantNames[3], sumVy / nTotV0);
-//        monitoredQuantityMap.put(fpQuantNames[4], sumVz / nTotV0);
-            monitoredQuantityMap.put(beamConV0CandidatesColName + " " + triggerType + " " + fpQuantNames[2], parsVx[1]);
-            monitoredQuantityMap.put(beamConV0CandidatesColName + " " + triggerType + " " + fpQuantNames[3], parsVy[1]);
-            monitoredQuantityMap.put(beamConV0CandidatesColName + " " + triggerType + " " + fpQuantNames[4], parsVz[1]);
-            monitoredQuantityMap.put(beamConV0CandidatesColName + " " + triggerType + " " + fpQuantNames[5], parsVx[2]);
-            monitoredQuantityMap.put(beamConV0CandidatesColName + " " + triggerType + " " + fpQuantNames[6], parsVy[2]);
-            monitoredQuantityMap.put(beamConV0CandidatesColName + " " + triggerType + " " + fpQuantNames[7], parsVz[2]);
-        }
-        monitoredQuantityMap.put(beamConV0CandidatesColName + " " + triggerType + " " + fpQuantNames[0], (double) nTotV0 / nRecoEvents);
-        monitoredQuantityMap.put(beamConV0CandidatesColName + " " + triggerType + " " + fpQuantNames[1], sumMass / nTotV0);
-        monitoredQuantityMap.put(beamConV0CandidatesColName + " " + triggerType + " " + fpQuantNames[8], sumChi2 / nTotV0);
-
-    }
-
-    @Override
-    public void printDQMStrings() {
-        for (int i = 0; i < 9; i++)//TODO:  do this in a smarter way...loop over the map
-            LOGGER.info("ALTER TABLE dqm ADD " + fpQuantNames[i] + " double;");
-    }
-
-    IFitResult fitVertexPosition(IHistogram1D h1d, IFitter fitter, double[] init, String range
-    ) {
-        IFitResult ifr = null;
-        try {
-            ifr = fitter.fit(h1d, "g+p1", init, range);
-        } catch (RuntimeException ex) {
-            LOGGER.info(this.getClass().getSimpleName() + ":  caught exception in fitGaussian");
-        }
-        return ifr;
-    }
-
-    private BilliorVertex fitVertex(BilliorTrack electron, BilliorTrack positron) {
-        // Create a vertex fitter from the magnetic field.
-        double bField = 0.24;
-        double[] beamSize = {0.001, 0.2, 0.02};
-        BilliorVertexer vtxFitter = new BilliorVertexer(bField);
-        // TODO: The beam size should come from the conditions database.
-        vtxFitter.setBeamSize(beamSize);
-
-        // Perform the vertexing based on the specified constraint.
-        vtxFitter.doBeamSpotConstraint(false);
-
-        // Add the electron and positron tracks to a track list for
-        // the vertex fitter.
-        List<BilliorTrack> billiorTracks = new ArrayList<BilliorTrack>();
-
-        billiorTracks.add(electron);
-
-        billiorTracks.add(positron);
-
-        // Find and return a vertex based on the tracks.
-        return vtxFitter.fitVertex(billiorTracks);
-    }
-
-    private static boolean hasSharedStrips(ReconstructedParticle vertex, RelationalTable hittostrip, RelationalTable hittorotated) {
-        return hasSharedStrips(vertex.getParticles().get(0), vertex.getParticles().get(1), hittostrip, hittorotated);
-    }
-
-    private static boolean hasSharedStrips(ReconstructedParticle fs1, ReconstructedParticle fs2, RelationalTable hittostrip, RelationalTable hittorotated) {
-        return TrackUtils.hasSharedStrips(fs1.getTracks().get(0), fs2.getTracks().get(0), hittostrip, hittorotated);
-    }
+	private static Logger LOGGER = Logger.getLogger(V0Monitoring.class.getPackage().getName());
+
+	String finalStateParticlesColName = "FinalStateParticles";
+	String unconstrainedV0CandidatesColName = "UnconstrainedV0Candidates";
+	String beamConV0CandidatesColName = "BeamspotConstrainedV0Candidates";
+	String targetV0ConCandidatesColName = "TargetConstrainedV0Candidates";
+	String[] fpQuantNames = {"nV0_per_Event", "avg_BSCon_mass", "avg_BSCon_Vx", "avg_BSCon_Vy", "avg_BSCon_Vz", "sig_BSCon_Vx", "sig_BSCon_Vy", "sig_BSCon_Vz", "avg_BSCon_Chi2"};
+	//some counters
+	int nRecoEvents = 0;
+	int nTotV0 = 0;
+	int nTot2Ele = 0;
+	//some summers
+	double sumMass = 0.0;
+	double sumVx = 0.0;
+	double sumVy = 0.0;
+	double sumVz = 0.0;
+	double sumChi2 = 0.0;
+
+	/*  V0 Quantities   */
+	/*  Mass, vertex, chi^2 of fit */
+	/*  unconstrained */
+	IHistogram1D unconMass;
+	IHistogram1D unconVx;
+	IHistogram1D unconVy;
+	IHistogram1D unconVz;
+	IHistogram1D unconChi2;
+	IHistogram2D unconVzVsChi2;
+	IHistogram2D unconChi2VsTrkChi2;
+	/* beamspot constrained */
+
+	IHistogram1D nV0;
+
+	IHistogram1D v0Time;
+	IHistogram1D v0Dt;
+	IHistogram2D trigTimeV0Time;
+	IHistogram1D trigTime;
+
+	IHistogram1D bsconMass;
+	IHistogram1D bsconVx;
+	IHistogram1D bsconVy;
+	IHistogram1D bsconVz;
+	IHistogram1D bsconChi2;
+	IHistogram2D bsconVzVsChi2;
+	IHistogram2D bsconChi2VsTrkChi2;
+	/* target constrained */
+	IHistogram1D tarconMass;
+	IHistogram1D tarconVx;
+	IHistogram1D tarconVy;
+	IHistogram1D tarconVz;
+	IHistogram1D tarconChi2;
+	IHistogram2D tarconVzVsChi2;
+	IHistogram2D tarconChi2VsTrkChi2;
+
+	IHistogram2D pEleVspPos;
+	IHistogram1D pEle;
+	IHistogram1D pPos;
+
+	IHistogram2D pEleVspPosWithCut;
+	IHistogram2D pyEleVspyPos;
+	IHistogram2D pxEleVspxPos;
+
+	IHistogram2D VtxZVsMass;
+	IHistogram2D VtxYVsVtxZ;
+	IHistogram2D VtxXVsVtxZ;
+	IHistogram2D VtxXVsVtxY;
+	IHistogram2D VtxXVsVtxPx;
+	IHistogram2D VtxYVsVtxPy;
+	IHistogram2D VtxZVsVtxPx;
+	IHistogram2D VtxZVsVtxPy;
+	IHistogram2D VtxZVsVtxPz;
+
+	IHistogram2D VtxZVsL1Iso;
+	IHistogram2D VtxZVsTrkChi2;
+
+	IHistogram2D pEleVspEle;
+	IHistogram2D phiEleVsphiEle;
+	IHistogram2D pyEleVspyEle;
+	IHistogram2D pxEleVspxEle;
+	IHistogram2D pEleVspEleNoBeam;
+	IHistogram2D pyEleVspyEleNoBeam;
+	IHistogram2D pxEleVspxEleNoBeam;
+	IHistogram2D pEleVspEleMoller;
+	IHistogram2D pEleVsthetaMoller;
+	IHistogram2D thetaEleVsthetaMoller;
+	IHistogram2D pEleVspEleBeamBeam;
+	IHistogram2D pEleVsthetaBeamBeam;
+	IHistogram2D thetaEleVsthetaBeamBeam;
+
+	IHistogram1D mollerMass;
+	IHistogram1D mollerMassVtxCut;
+	IHistogram1D mollerVx;
+	IHistogram1D mollerVy;
+	IHistogram1D mollerVz;
+	IHistogram1D mollerVzVtxCut;
+	IHistogram2D mollerXVsVtxZ;
+	IHistogram2D mollerYVsVtxZ;
+	IHistogram2D mollerXVsVtxY;
+
+	IHistogram1D mollerUx;
+	IHistogram1D mollerUy;
+
+
+
+	IHistogram1D sumChargeHisto;
+	IHistogram1D numChargeHisto;
+
+	private final String plotDir = "V0Monitoring/";
+
+	private final BasicHep3Matrix beamAxisRotation = new BasicHep3Matrix();
+
+	double maxFactor = 1.25;
+
+
+	double thetaMax = 0.06;
+	double thetaMin = 0.015;
+
+
+
+	double feeMomentumCut, v0ESumMinCut, v0MaxPCut, v0ESumMaxCut,
+	molPSumMin, molPSumMax, beambeamCut;
+
+
+
+	@Override
+	protected void detectorChanged(Detector detector) {
+
+		BeamEnergyCollection beamEnergyCollection = 
+			this.getConditionsManager().getCachedConditions(BeamEnergyCollection.class, "beam_energies").getCachedData();        
+		double beamEnergy = beamEnergyCollection.get(0).getBeamEnergy();
+		feeMomentumCut = 0.75*beamEnergy; //GeV
+
+		v0ESumMinCut = 0.8 * beamEnergy;
+		v0ESumMaxCut = 1.25 * beamEnergy;
+		
+		v0MaxPCut = 1.05*beamEnergy;//GeV
+		molPSumMin = 0.80*beamEnergy;
+		molPSumMax = 1.25*beamEnergy;
+		beambeamCut = 0.80*beamEnergy;
+
+
+
+		beamAxisRotation.setActiveEuler(Math.PI / 2, -0.0305, -Math.PI / 2);
+
+		LOGGER.info("Setting up the plotter");
+		aida.tree().cd("/");
+		String xtra = "Extras";
+		String trkType = "SeedTrack/";
+		if (isGBL)
+			trkType = "GBLTrack/";
+
+		double maxMass = .2*beamEnergy;
+		double maxMassMoller = .1*Math.sqrt(beamEnergy);
+		/*  V0 Quantities   */
+		/*  Mass, vertex, chi^2 of fit */
+		/*  unconstrained */
+		unconMass = aida.histogram1D(plotDir + trkType + triggerType + "/" + unconstrainedV0CandidatesColName + "/" + "Invariant Mass (GeV)", 100, 0, maxMass);
+		unconVx = aida.histogram1D(plotDir + trkType + triggerType + "/" + unconstrainedV0CandidatesColName + "/" + "Vx (mm)", 50, -10, 10);
+		unconVy = aida.histogram1D(plotDir + trkType + triggerType + "/" + unconstrainedV0CandidatesColName + "/" + "Vy (mm)", 50, -10, 10);
+		unconVz = aida.histogram1D(plotDir + trkType + triggerType + "/" + unconstrainedV0CandidatesColName + "/" + "Vz (mm)", 50, -50, 50);
+		unconChi2 = aida.histogram1D(plotDir + trkType + triggerType + "/" + unconstrainedV0CandidatesColName + "/" + "Chi2", 25, 0, 25);
+		unconVzVsChi2 = aida.histogram2D(plotDir + trkType + triggerType + "/" + unconstrainedV0CandidatesColName + "/" + "Vz vs. Chi2", 25, 0, 25, 50, -50, 50);
+		unconChi2VsTrkChi2 = aida.histogram2D(plotDir + trkType + triggerType + "/" + unconstrainedV0CandidatesColName + "/" + "Chi2 vs. total track chi2", 50, 0, 50, 50, 0, 25);
+		/* beamspot constrained */
+		bsconMass = aida.histogram1D(plotDir + trkType + triggerType + "/" + beamConV0CandidatesColName + "/" + "Mass (GeV)", 100, 0, maxMass);
+		bsconVx = aida.histogram1D(plotDir + trkType + triggerType + "/" + beamConV0CandidatesColName + "/" + "Vx (mm)", 50, -10, 10);
+		bsconVy = aida.histogram1D(plotDir + trkType + triggerType + "/" + beamConV0CandidatesColName + "/" + "Vy (mm)", 50, -10, 10);
+		bsconVz = aida.histogram1D(plotDir + trkType + triggerType + "/" + beamConV0CandidatesColName + "/" + "Vz (mm)", 50, -50, 50);
+		bsconChi2 = aida.histogram1D(plotDir + trkType + triggerType + "/" + beamConV0CandidatesColName + "/" + "Chi2", 25, 0, 25);
+		bsconVzVsChi2 = aida.histogram2D(plotDir + trkType + triggerType + "/" + beamConV0CandidatesColName + "/" + "Vz vs. Chi2", 25, 0, 25, 50, -50, 50);
+		bsconChi2VsTrkChi2 = aida.histogram2D(plotDir + trkType + triggerType + "/" + beamConV0CandidatesColName + "/" + "Chi2 vs. total track chi2", 50, 0, 50, 50, 0, 25);
+		/* target constrained */
+		tarconMass = aida.histogram1D(plotDir + trkType + triggerType + "/" + targetV0ConCandidatesColName + "/" + "Mass (GeV)", 100, 0, maxMass);
+		tarconVx = aida.histogram1D(plotDir + trkType + triggerType + "/" + targetV0ConCandidatesColName + "/" + "Vx (mm)", 50, -1, 1);
+		tarconVy = aida.histogram1D(plotDir + trkType + triggerType + "/" + targetV0ConCandidatesColName + "/" + "Vy (mm)", 50, -1, 1);
+		tarconVz = aida.histogram1D(plotDir + trkType + triggerType + "/" + targetV0ConCandidatesColName + "/" + "Vz (mm)", 50, -10, 10);
+		tarconChi2 = aida.histogram1D(plotDir + trkType + triggerType + "/" + targetV0ConCandidatesColName + "/" + "Chi2", 25, 0, 25);
+		tarconVzVsChi2 = aida.histogram2D(plotDir + trkType + triggerType + "/" + targetV0ConCandidatesColName + "/" + "Vz vs. Chi2", 25, 0, 25, 50, -50, 50);
+		tarconChi2VsTrkChi2 = aida.histogram2D(plotDir + trkType + triggerType + "/" + targetV0ConCandidatesColName + "/" + "Chi2 vs. total track chi2", 50, 0, 50, 50, 0, 25);
+
+		nV0 = aida.histogram1D(plotDir + trkType + triggerType + "/" + xtra + "/" + "Number of V0 per event", 10, 0, 10);
+		v0Time = aida.histogram1D(plotDir + trkType + triggerType + "/" + xtra + "/" + "V0 mean time", 100, -25, 25);
+		v0Dt = aida.histogram1D(plotDir + trkType + triggerType + "/" + xtra + "/" + "V0 time difference", 100, -25, 25);
+		trigTimeV0Time = aida.histogram2D(plotDir + trkType + triggerType + "/" + xtra + "/" + "Trigger phase vs. V0 mean time", 100, -25, 25, 6, 0, 24);
+		trigTime = aida.histogram1D(plotDir + trkType + triggerType + "/" + xtra + "/" + "Trigger phase", 6, 0, 24);
+
+		pEleVspPos = aida.histogram2D(plotDir + trkType + triggerType + "/" + xtra + "/" + "P(e) vs P(p)", 50, 0, beamEnergy * maxFactor, 50, 0, beamEnergy * maxFactor);
+
+
+		pEle = aida.histogram1D(plotDir + trkType + triggerType + "/" + xtra + "/" + "P(e)", 50, 0, beamEnergy * maxFactor);
+		pPos = aida.histogram1D(plotDir + trkType + triggerType + "/" + xtra + "/" + "P(p)", 50, 0, beamEnergy * maxFactor);
+
+		pEleVspPosWithCut = aida.histogram2D(plotDir + trkType + triggerType + "/" + xtra + "/" + "P(e) vs P(p): Radiative", 50, 0, beamEnergy * maxFactor, 50, 0, beamEnergy * maxFactor);
+		pyEleVspyPos = aida.histogram2D(plotDir + trkType + triggerType + "/" + xtra + "/" + "Py(e) vs Py(p)", 50, -0.04*beamEnergy, 0.04*beamEnergy, 50, -0.04*beamEnergy, 0.04*beamEnergy);
+		pxEleVspxPos = aida.histogram2D(plotDir + trkType + triggerType + "/" + xtra + "/" + "Px(e) vs Px(p)", 50, -0.04*beamEnergy, 0.04*beamEnergy, 50, -0.04*beamEnergy, 0.04*beamEnergy);
+		VtxZVsMass = aida.histogram2D(plotDir + trkType + triggerType + "/" + xtra + "/" + "Vz vs Mass", 50, 0, maxMass, 50, -50, 80);
+		VtxXVsVtxZ = aida.histogram2D(plotDir + trkType + triggerType + "/" + xtra + "/" + "Vx vs Vz", 100, -10, 10, 100, -50, 80);
+		VtxYVsVtxZ = aida.histogram2D(plotDir + trkType + triggerType + "/" + xtra + "/" + "Vy vs Vz", 100, -5, 5, 100, -50, 80);
+		VtxXVsVtxY = aida.histogram2D(plotDir + trkType + triggerType + "/" + xtra + "/" + "Vx vs Vy", 100, -10, 10, 100, -5, 5);
+		VtxXVsVtxPx = aida.histogram2D(plotDir + trkType + triggerType + "/" + xtra + "/" + "Vx vs Px", 100, -0.1, 0.1, 100, -10, 10);
+		VtxYVsVtxPy = aida.histogram2D(plotDir + trkType + triggerType + "/" + xtra + "/" + "Vy vs Py", 100, -0.1, 0.1, 100, -5, 5);
+		VtxZVsVtxPx = aida.histogram2D(plotDir + trkType + triggerType + "/" + xtra + "/" + "Vz vs Px", 100, -0.1, 0.1, 100, -50, 80);
+		VtxZVsVtxPy = aida.histogram2D(plotDir + trkType + triggerType + "/" + xtra + "/" + "Vz vs Py", 100, -0.1, 0.1, 100, -50, 80);
+		VtxZVsVtxPz = aida.histogram2D(plotDir + trkType + triggerType + "/" + xtra + "/" + "Vz vs Pz", 100, 0.0, beamEnergy * maxFactor, 100, -50, 80);
+		VtxZVsL1Iso = aida.histogram2D(plotDir + trkType + triggerType + "/" + xtra + "/" + "Vz vs L1 Isolation", 100, 0.0, 5.0, 50, -50, 80);
+		VtxZVsTrkChi2 = aida.histogram2D(plotDir + trkType + triggerType + "/" + xtra + "/" + "Vz vs Track Chi2", 50, 0, 50, 50, -50, 80);
+		phiEleVsphiEle = aida.histogram2D(plotDir + trkType + triggerType + "/" + xtra + "/" + "2 Electron/phi(e) vs phi(e)", 50, -Math.PI, Math.PI, 50, -Math.PI, Math.PI);
+		pyEleVspyEle = aida.histogram2D(plotDir + trkType + triggerType + "/" + xtra + "/" + "2 Electron/Py(e) vs Py(e)", 50, -0.04*beamEnergy, 0.04*beamEnergy, 50, -0.04*beamEnergy, 0.04*beamEnergy);
+		pxEleVspxEle = aida.histogram2D(plotDir + trkType + triggerType + "/" + xtra + "/" + "2 Electron/Px(e) vs Px(e)", 50, -0.02*beamEnergy, 0.06*beamEnergy, 50, -0.02*beamEnergy, 0.06*beamEnergy);
+		
+		// electron vs electron momentum with different cuts
+		// 1) no cut
+		// 2) cut out FEE 
+		// 3) cut out FEE and also cut on momentum sum
+		// 4) cut out everything except FEE coincidentals
+		pEleVspEle = aida.histogram2D(plotDir + trkType + triggerType + "/" + xtra + "/" + "2 Electron/P(e) vs P(e)", 50, 0, beamEnergy * maxFactor, 50, 0, beamEnergy * maxFactor);
+		pEleVspEleNoBeam = aida.histogram2D(plotDir + trkType + triggerType + "/" + xtra + "/" + "2 Electron/P(e) vs P(e) NoBeam", 50, 0, beambeamCut, 50, 0, beambeamCut);
+		pEleVspEleMoller = aida.histogram2D(plotDir + trkType + triggerType + "/" + xtra + "/" + "2 Electron/P(e) vs P(e) Moller", 50, 0, beambeamCut, 50, 0, beambeamCut);
+		pEleVspEleBeamBeam = aida.histogram2D(plotDir + trkType + triggerType + "/" + xtra + "/" + "2 Electron/P(e) vs P(e) BeamBeam", 50, beambeamCut, beamEnergy * maxFactor, 50, beambeamCut, beamEnergy * maxFactor);
+		
+		pyEleVspyEleNoBeam = aida.histogram2D(plotDir + trkType + triggerType + "/" + xtra + "/" + "2 Electron/Py(e) vs Py(e) NoBeam", 50, -0.04*beamEnergy, 0.04*beamEnergy, 50, -0.04*beamEnergy, 0.04*beamEnergy);
+		pxEleVspxEleNoBeam = aida.histogram2D(plotDir + trkType + triggerType + "/" + xtra + "/" + "2 Electron/Px(e) vs Px(e) NoBeam", 50, -0.02*beamEnergy, 0.06*beamEnergy, 50, -0.02*beamEnergy, 0.06*beamEnergy);
+		sumChargeHisto = aida.histogram1D(plotDir + trkType + triggerType + "/" + xtra + "/" + "Total Charge of  Event", 5, -2, 3);
+		numChargeHisto = aida.histogram1D(plotDir + trkType + triggerType + "/" + xtra + "/" + "Number of Charged Particles", 6, 0, 6);
+
+		pEleVsthetaMoller = aida.histogram2D(plotDir + trkType + triggerType + "/" + xtra + "/" + "2 Electron/P(e) vs Theta Moller", 50, 0, beambeamCut, 50, thetaMin, thetaMax);
+		thetaEleVsthetaMoller = aida.histogram2D(plotDir + trkType + triggerType + "/" + xtra + "/" + "2 Electron/Theta vs Theta Moller", 50, thetaMin, thetaMax, 50, thetaMin, thetaMax);
+		pEleVsthetaBeamBeam = aida.histogram2D(plotDir + trkType + triggerType + "/" + xtra + "/" + "2 Electron/P(e) vs Theta BeamBeam", 50, beambeamCut, beamEnergy * maxFactor, 50, thetaMin, thetaMax);
+		thetaEleVsthetaBeamBeam = aida.histogram2D(plotDir + trkType + triggerType + "/" + xtra + "/" + "2 Electron/Theta vs Theta BeamBeam", 50, thetaMin, thetaMax, 50, thetaMin, thetaMax);
+
+		mollerMass = aida.histogram1D(plotDir + trkType + triggerType + "/" + xtra + "/" + "2 Electron/Moller Mass (GeV)", 100, 0, maxMassMoller);
+		mollerMassVtxCut = aida.histogram1D(plotDir + trkType + triggerType + "/" + xtra + "/" + "2 Electron/Moller Mass (GeV): VtxCut", 100, 0, maxMassMoller);
+		mollerVx = aida.histogram1D(plotDir + trkType + triggerType + "/" + xtra + "/" + "2 Electron/Moller Vx (mm)", 50, -10, 10);
+		mollerVy = aida.histogram1D(plotDir + trkType + triggerType + "/" + xtra + "/" + "2 Electron/Moller Vy (mm)", 50, -2, 2);
+		mollerVz = aida.histogram1D(plotDir + trkType + triggerType + "/" + xtra + "/" + "2 Electron/Moller Vz (mm)", 50, -50, 50);
+		mollerVzVtxCut = aida.histogram1D(plotDir + trkType + triggerType + "/" + xtra + "/" + "2 Electron/Moller Vz (mm): VtxCut", 50, -50, 50);
+		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, .015, .045);
+		mollerUy = aida.histogram1D(plotDir + trkType + triggerType + "/" + xtra + "/" + "2 Electron/Moller Pair Momentum Direction Uy", 100, -.01, .01);
+
+		mollerHiP = aida.histogram1D(plotDir + trkType + triggerType + "/" + xtra + "/" + "2 Electron/P(high)", 100, 0, beamEnergy*maxFactor);
+		mollerLoP = aida.histogram1D(plotDir + trkType + triggerType + "/" + xtra + "/" + "2 Electron/P(low)", 100, 0, beamEnergy*maxFactor);
+
+		mollerEitherP = aida.histogram1D(plotDir + trkType + triggerType + "/" + xtra + "/" + "2 Electron/P(either)", 100, 0, beamEnergy*maxFactor);
+		mollerPsum = aida.histogram1D(plotDir + trkType + triggerType + "/" + xtra + "/" + "2 Electron/Psum", 100, 0, beamEnergy*maxFactor);
+
+	}
+
+	IHistogram1D mollerHiP, mollerLoP, mollerEitherP, mollerPsum;
+
+	@Override
+	public void process(EventHeader event) {
+		/*  make sure everything is there */
+		if (!event.hasCollection(ReconstructedParticle.class, finalStateParticlesColName))
+			return;
+		if (!event.hasCollection(ReconstructedParticle.class, unconstrainedV0CandidatesColName))
+			return;
+		if (!event.hasCollection(ReconstructedParticle.class, beamConV0CandidatesColName))
+			return;
+		if (!event.hasCollection(ReconstructedParticle.class, targetV0ConCandidatesColName))
+			return;
+
+		//check to see if this event is from the correct trigger (or "all");
+		if (!matchTrigger(event))
+			return;
+
+		nRecoEvents++;
+
+		RelationalTable hitToStrips = TrackUtils.getHitToStripsTable(event);
+		RelationalTable hitToRotated = TrackUtils.getHitToRotatedTable(event);
+
+		List<ReconstructedParticle> unonstrainedV0List = event.get(ReconstructedParticle.class, unconstrainedV0CandidatesColName);
+		for (ReconstructedParticle uncV0 : unonstrainedV0List) {
+			if (isGBL != TrackType.isGBL(uncV0.getType()))
+				continue;
+			Vertex uncVert = uncV0.getStartVertex();
+			Hep3Vector pVtxRot = VecOp.mult(beamAxisRotation, uncV0.getMomentum());
+			Hep3Vector vtxPosRot = VecOp.mult(beamAxisRotation, uncVert.getPosition());
+			double theta = Math.acos(pVtxRot.z() / pVtxRot.magnitude());
+			double phi = Math.atan2(pVtxRot.y(), pVtxRot.x());
+			unconVx.fill(vtxPosRot.x());
+			unconVy.fill(vtxPosRot.y());
+			unconVz.fill(vtxPosRot.z());
+			unconMass.fill(uncV0.getMass());
+			unconChi2.fill(uncVert.getChi2());
+			unconVzVsChi2.fill(uncVert.getChi2(), vtxPosRot.z());
+			unconChi2VsTrkChi2.fill(Math.max(uncV0.getParticles().get(0).getTracks().get(0).getChi2(), uncV0.getParticles().get(1).getTracks().get(0).getChi2()), uncVert.getChi2());
+
+			VtxZVsMass.fill(uncV0.getMass(), vtxPosRot.z());
+			VtxXVsVtxZ.fill(vtxPosRot.x(), vtxPosRot.z());
+			VtxYVsVtxZ.fill(vtxPosRot.y(), vtxPosRot.z());
+			VtxXVsVtxY.fill(vtxPosRot.x(), vtxPosRot.y());
+			VtxXVsVtxPx.fill(pVtxRot.x(), vtxPosRot.x());
+			VtxYVsVtxPy.fill(pVtxRot.y(), vtxPosRot.y());
+			VtxZVsVtxPx.fill(pVtxRot.x(), vtxPosRot.z());
+			VtxZVsVtxPy.fill(pVtxRot.y(), vtxPosRot.z());
+			VtxZVsVtxPz.fill(pVtxRot.z(), vtxPosRot.z());
+
+			//this always has 2 tracks. 
+			List<ReconstructedParticle> trks = uncV0.getParticles();
+			//            Track ele = trks.get(0).getTracks().get(0);
+			//            Track pos = trks.get(1).getTracks().get(0);
+			//            //if track #0 has charge>0 it's the electron!  This seems mixed up, but remember the track 
+			//            //charge is assigned assuming a positive B-field, while ours is negative
+			//            if (trks.get(0).getCharge() > 0) {
+			//                pos = trks.get(0).getTracks().get(0);
+			//                ele = trks.get(1).getTracks().get(0);
+			//            }
+			//            aida.histogram2D(plotDir + trkType + triggerType + "/" + "P(e) vs P(p)").fill(getMomentum(ele), getMomentum(pos));
+			//            aida.histogram2D(plotDir + trkType + triggerType + "/" + "Px(e) vs Px(p)").fill(ele.getTrackStates().get(0).getMomentum()[1], pos.getTrackStates().get(0).getMomentum()[1]);
+			//            aida.histogram2D(plotDir + trkType + triggerType + "/" + "Py(e) vs Py(p)").fill(ele.getTrackStates().get(0).getMomentum()[2], pos.getTrackStates().get(0).getMomentum()[2]);
+			ReconstructedParticle ele = trks.get(0);
+			ReconstructedParticle pos = trks.get(1);
+			//ReconParticles have the charge correct. 
+			if (trks.get(0).getCharge() > 0) {
+				pos = trks.get(0);
+				ele = trks.get(1);
+			}
+			if (ele.getCharge() < 0 && pos.getCharge() > 0) {
+				VtxZVsTrkChi2.fill(Math.max(uncV0.getParticles().get(0).getTracks().get(0).getChi2(), uncV0.getParticles().get(1).getTracks().get(0).getChi2()), uncVert.getPosition().z());
+
+				Double[] eleIso = TrackUtils.getIsolations(ele.getTracks().get(0), hitToStrips, hitToRotated);
+				Double[] posIso = TrackUtils.getIsolations(pos.getTracks().get(0), hitToStrips, hitToRotated);
+				if (eleIso[0] != null && posIso[0] != null) {
+					double eleL1Iso = Math.min(Math.abs(eleIso[0]), Math.abs(eleIso[1]));
+					double posL1Iso = Math.min(Math.abs(posIso[0]), Math.abs(posIso[1]));
+					double minL1Iso = Math.min(eleL1Iso, posL1Iso);
+					VtxZVsL1Iso.fill(minL1Iso, uncVert.getPosition().z());
+				}
+
+				double pe = ele.getMomentum().magnitude();
+				double pp = pos.getMomentum().magnitude();
+				Hep3Vector pEleRot = VecOp.mult(beamAxisRotation, ele.getMomentum());
+				Hep3Vector pPosRot = VecOp.mult(beamAxisRotation, pos.getMomentum());
+
+				pEleVspPos.fill(pe, pp);
+				pEle.fill(pe);
+				pPos.fill(pp);
+
+
+				pxEleVspxPos.fill(pEleRot.x(), pPosRot.x());
+				pyEleVspyPos.fill(pEleRot.y(), pPosRot.y());
+				if (pe < v0MaxPCut && pp < v0MaxPCut && (pe + pp) > v0ESumMinCut && (pe + pp) < v0ESumMaxCut)//enrich radiative-like events
+
+				pEleVspPosWithCut.fill(pe, pp);
+			}
+
+			double eleT = TrackUtils.getTrackTime(ele.getTracks().get(0), hitToStrips, hitToRotated);
+			double posT = TrackUtils.getTrackTime(pos.getTracks().get(0), hitToStrips, hitToRotated);
+			double meanT = (eleT + posT) / 2.0;
+			v0Time.fill(meanT);
+			v0Dt.fill(eleT - posT);
+			trigTimeV0Time.fill(meanT, event.getTimeStamp() % 24);
+			trigTime.fill(event.getTimeStamp() % 24);
+		}
+
+		List<ReconstructedParticle> beamConstrainedV0List = event.get(ReconstructedParticle.class, beamConV0CandidatesColName);
+		nV0.fill(beamConstrainedV0List.size());
+		for (ReconstructedParticle bsV0 : beamConstrainedV0List) {
+
+			if (isGBL != TrackType.isGBL(bsV0.getType()))
+				continue;
+			nTotV0++;
+			Vertex bsVert = bsV0.getStartVertex();
+			Hep3Vector vtxPosRot = VecOp.mult(beamAxisRotation, bsVert.getPosition());
+			bsconVx.fill(vtxPosRot.x());
+			bsconVy.fill(vtxPosRot.y());
+			bsconVz.fill(vtxPosRot.z());
+			bsconMass.fill(bsV0.getMass());
+			bsconChi2.fill(bsVert.getChi2());
+			bsconVzVsChi2.fill(bsVert.getChi2(), vtxPosRot.z());
+			bsconChi2VsTrkChi2.fill(Math.max(bsV0.getParticles().get(0).getTracks().get(0).getChi2(), bsV0.getParticles().get(1).getTracks().get(0).getChi2()), bsVert.getChi2());
+			sumMass += bsV0.getMass();
+			sumVx += vtxPosRot.x();
+			sumVy += vtxPosRot.y();
+			sumVz += vtxPosRot.z();
+			sumChi2 += bsVert.getChi2();
+		}
+
+		List<ReconstructedParticle> targetConstrainedV0List = event.get(ReconstructedParticle.class, targetV0ConCandidatesColName);
+		for (ReconstructedParticle tarV0 : targetConstrainedV0List) {
+
+			if (isGBL != TrackType.isGBL(tarV0.getType()))
+				continue;
+
+			Vertex tarVert = tarV0.getStartVertex();
+			Hep3Vector vtxPosRot = VecOp.mult(beamAxisRotation, tarVert.getPosition());
+			tarconVx.fill(vtxPosRot.x());
+			tarconVy.fill(vtxPosRot.y());
+			tarconVz.fill(vtxPosRot.z());
+			tarconMass.fill(tarV0.getMass());
+			tarconChi2.fill(tarVert.getChi2());
+			tarconVzVsChi2.fill(tarVert.getChi2(), vtxPosRot.z());
+			tarconChi2VsTrkChi2.fill(Math.max(tarV0.getParticles().get(0).getTracks().get(0).getChi2(), tarV0.getParticles().get(1).getTracks().get(0).getChi2()), tarVert.getChi2());
+		}
+		List<ReconstructedParticle> finalStateParticles = event.get(ReconstructedParticle.class, finalStateParticlesColName);
+		if (debug)
+			LOGGER.info("This events has " + finalStateParticles.size() + " final state particles");
+
+		ReconstructedParticle ele1 = null;
+		ReconstructedParticle ele2 = null;
+		int sumCharge = 0;
+		int numChargedParticles = 0;
+		for (ReconstructedParticle fsPart : finalStateParticles) {
+			if (isGBL != TrackType.isGBL(fsPart.getType()))
+				continue;
+			if (debug)
+				LOGGER.info("PDGID = " + fsPart.getParticleIDUsed() + "; charge = " + fsPart.getCharge() + "; pz = " + fsPart.getMomentum().x());
+			double charge = fsPart.getCharge();
+			sumCharge += charge;
+			if (charge != 0) {
+				numChargedParticles++;
+				if (charge < 1)
+					if (ele1 == null)
+						ele1 = fsPart;
+					else if (!hasSharedStrips(ele1, fsPart, hitToStrips, hitToRotated))
+						ele2 = fsPart;
+			}
+		}
+		sumChargeHisto.fill(sumCharge);
+		numChargeHisto.fill(numChargedParticles);
+
+		if (ele1 != null && ele2 != null) {
+			Hep3Vector p1 = VecOp.mult(beamAxisRotation, ele1.getMomentum());
+			Hep3Vector p2 = VecOp.mult(beamAxisRotation, ele2.getMomentum());
+			//            Hep3Vector beamAxis = new BasicHep3Vector(Math.sin(0.0305), 0, Math.cos(0.0305));
+			//            LOGGER.info(p1);
+			//            LOGGER.info(VecOp.mult(rot, p1));
+
+			double theta1 = Math.acos(p1.z() / p1.magnitude());
+			double theta2 = Math.acos(p2.z() / p2.magnitude());
+			double phi1 = Math.atan2(p1.y(), p1.x());
+			double phi2 = Math.atan2(p2.y(), p2.x());
+			phiEleVsphiEle.fill(phi1, phi2);
+			pEleVspEle.fill(ele1.getMomentum().magnitude(), ele2.getMomentum().magnitude());
+			pyEleVspyEle.fill(ele1.getMomentum().y(), ele2.getMomentum().y());
+			pxEleVspxEle.fill(ele1.getMomentum().x(), ele2.getMomentum().x());
+			//remove beam electrons
+			if (ele1.getMomentum().magnitude() < beambeamCut && ele2.getMomentum().magnitude() < beambeamCut) {
+				pEleVspEleNoBeam.fill(ele1.getMomentum().magnitude(), ele2.getMomentum().magnitude());
+				pyEleVspyEleNoBeam.fill(ele1.getMomentum().y(), ele2.getMomentum().y());
+				pxEleVspxEleNoBeam.fill(ele1.getMomentum().x(), ele2.getMomentum().x());
+			}
+			//look at beam-beam events
+			if (ele1.getMomentum().magnitude() > beambeamCut && ele2.getMomentum().magnitude() > beambeamCut) {
+				pEleVspEleBeamBeam.fill(ele1.getMomentum().magnitude(), ele2.getMomentum().magnitude());
+				pEleVsthetaBeamBeam.fill(p1.magnitude(), theta1);
+				pEleVsthetaBeamBeam.fill(p2.magnitude(), theta2);
+				thetaEleVsthetaBeamBeam.fill(theta1, theta2);
+			}
+
+			//look at "Moller" events (if that's what they really are
+			if (ele1.getMomentum().magnitude() + ele2.getMomentum().magnitude() > molPSumMin
+					&& ele1.getMomentum().magnitude() + ele2.getMomentum().magnitude() < molPSumMax
+					&& (p1.magnitude() < beambeamCut && p2.magnitude() < beambeamCut)) {
+
+				Track ele1trk = ele1.getTracks().get(0);
+				Track ele2trk = ele2.getTracks().get(0);
+				SeedTrack stEle1 = TrackUtils.makeSeedTrackFromBaseTrack(ele1trk);
+				SeedTrack stEle2 = TrackUtils.makeSeedTrackFromBaseTrack(ele2trk);
+				BilliorTrack btEle1 = new BilliorTrack(stEle1.getSeedCandidate().getHelix());
+				BilliorTrack btEle2 = new BilliorTrack(stEle2.getSeedCandidate().getHelix());
+				BilliorVertex bv = fitVertex(btEle1, btEle2, TrackUtils.getBField(event.getDetector()).magnitude());
+				//                LOGGER.info("ee vertex: "+bv.toString());
+				double invMass = bv.getParameters().get("invMass");
+				mollerMass.fill(invMass);
+				mollerVx.fill(bv.getPosition().x());
+				mollerVy.fill(bv.getPosition().y());
+				mollerVz.fill(bv.getPosition().z());
+				mollerXVsVtxZ.fill(bv.getPosition().x(), bv.getPosition().z());
+				mollerYVsVtxZ.fill(bv.getPosition().y(), bv.getPosition().z());
+				mollerXVsVtxY.fill(bv.getPosition().x(), bv.getPosition().y());
+
+				double ux = (ele1.getMomentum().x()+ele2.getMomentum().x())/(ele1.getMomentum().z()+ele2.getMomentum().z());
+				double uy = (ele1.getMomentum().y()+ele2.getMomentum().y())/(ele1.getMomentum().z()+ele2.getMomentum().z());
+				mollerUx.fill(ux);
+				mollerUy.fill(uy);
+
+				//higher and lower energy electrons in moller pair
+				double pt1 = ele1.getMomentum().magnitude();
+				double pt2 = ele2.getMomentum().magnitude();
+				double ph = (pt1>pt2) ? pt1 : pt2;
+				double pl = (pt1>pt2) ? pt2 : pt1;
+
+				mollerHiP.fill(ph);
+				mollerLoP.fill(pl);
+
+				mollerEitherP.fill(ph);
+				mollerEitherP.fill(pl);
+				mollerPsum.fill(pt1+pt2);
+
+
+				if (Math.abs(bv.getPosition().x()) < 2
+						&& Math.abs(bv.getPosition().y()) < 0.5) {
+					mollerMassVtxCut.fill(invMass);
+					mollerVzVtxCut.fill(bv.getPosition().z());
+				}
+				pEleVspEleMoller.fill(p1.magnitude(), p2.magnitude());
+				pEleVsthetaMoller.fill(p1.magnitude(), theta1);
+				pEleVsthetaMoller.fill(p2.magnitude(), theta2);
+				thetaEleVsthetaMoller.fill(theta1, theta2);
+			}
+		}
+	}
+
+	@Override
+	public void printDQMData() {
+		LOGGER.info("V0Monitoring::printDQMData");
+		for (Entry<String, Double> entry : monitoredQuantityMap.entrySet())
+			LOGGER.info(entry.getKey() + " = " + entry.getValue());
+		LOGGER.info("*******************************");
+	}
+
+	/**
+	 * Calculate the averages here and fill the map
+	 */
+	@Override
+	public void calculateEndOfRunQuantities() {
+
+		IAnalysisFactory analysisFactory = IAnalysisFactory.create();
+		IFitFactory fitFactory = analysisFactory.createFitFactory();
+		IFitter fitter = fitFactory.createFitter("chi2");
+		double[] init = {50.0, 0.0, 0.2, 1.0, 0.0};
+		IFitResult resVx = fitVertexPosition(bsconVx, fitter, init, "range=\"(-0.5,0.5)\"");
+		double[] init2 = {50.0, 0.0, 0.04, 1.0, 0.0};
+		IFitResult resVy = fitVertexPosition(bsconVy, fitter, init2, "range=\"(-0.2,0.2)\"");
+		double[] init3 = {50.0, 0.0, 3.0, 1.0, 0.0};
+		IFitResult resVz = fitVertexPosition(bsconVz, fitter, init3, "range=\"(-6,6)\"");
+
+		if (resVx != null && resVy != null & resVz != null) {
+			double[] parsVx = resVx.fittedParameters();
+			double[] parsVy = resVy.fittedParameters();
+			double[] parsVz = resVz.fittedParameters();
+
+			for (int i = 0; i < 5; i++)
+				LOGGER.info("Vertex Fit Parameters:  " + resVx.fittedParameterNames()[i] + " = " + parsVx[i] + "; " + parsVy[i] + "; " + parsVz[i]);
+
+			IPlotter plotter = analysisFactory.createPlotterFactory().create("Vertex Position");
+			plotter.createRegions(1, 3);
+			IPlotterStyle pstyle = plotter.style();
+			pstyle.legendBoxStyle().setVisible(false);
+			pstyle.dataStyle().fillStyle().setColor("green");
+			pstyle.dataStyle().lineStyle().setColor("black");
+			plotter.region(0).plot(bsconVx);
+			plotter.region(0).plot(resVx.fittedFunction());
+			plotter.region(1).plot(bsconVy);
+			plotter.region(1).plot(resVy.fittedFunction());
+			plotter.region(2).plot(bsconVz);
+			plotter.region(2).plot(resVz.fittedFunction());
+			if (outputPlots)
+				try {
+					plotter.writeToFile(outputPlotDir + "vertex.png");
+				} catch (IOException ex) {
+					Logger.getLogger(V0Monitoring.class.getName()).log(Level.SEVERE, null, ex);
+				}
+
+				//        monitoredQuantityMap.put(fpQuantNames[2], sumVx / nTotV0);
+				//        monitoredQuantityMap.put(fpQuantNames[3], sumVy / nTotV0);
+				//        monitoredQuantityMap.put(fpQuantNames[4], sumVz / nTotV0);
+				monitoredQuantityMap.put(beamConV0CandidatesColName + " " + triggerType + " " + fpQuantNames[2], parsVx[1]);
+				monitoredQuantityMap.put(beamConV0CandidatesColName + " " + triggerType + " " + fpQuantNames[3], parsVy[1]);
+				monitoredQuantityMap.put(beamConV0CandidatesColName + " " + triggerType + " " + fpQuantNames[4], parsVz[1]);
+				monitoredQuantityMap.put(beamConV0CandidatesColName + " " + triggerType + " " + fpQuantNames[5], parsVx[2]);
+				monitoredQuantityMap.put(beamConV0CandidatesColName + " " + triggerType + " " + fpQuantNames[6], parsVy[2]);
+				monitoredQuantityMap.put(beamConV0CandidatesColName + " " + triggerType + " " + fpQuantNames[7], parsVz[2]);
+		}
+		monitoredQuantityMap.put(beamConV0CandidatesColName + " " + triggerType + " " + fpQuantNames[0], (double) nTotV0 / nRecoEvents);
+		monitoredQuantityMap.put(beamConV0CandidatesColName + " " + triggerType + " " + fpQuantNames[1], sumMass / nTotV0);
+		monitoredQuantityMap.put(beamConV0CandidatesColName + " " + triggerType + " " + fpQuantNames[8], sumChi2 / nTotV0);
+
+	}
+
+	@Override
+	public void printDQMStrings() {
+		for (int i = 0; i < 9; i++)//TODO:  do this in a smarter way...loop over the map
+			LOGGER.info("ALTER TABLE dqm ADD " + fpQuantNames[i] + " double;");
+	}
+
+	IFitResult fitVertexPosition(IHistogram1D h1d, IFitter fitter, double[] init, String range
+	) {
+		IFitResult ifr = null;
+		try {
+			ifr = fitter.fit(h1d, "g+p1", init, range);
+		} catch (RuntimeException ex) {
+			LOGGER.info(this.getClass().getSimpleName() + ":  caught exception in fitGaussian");
+		}
+		return ifr;
+	}
+
+	private BilliorVertex fitVertex(BilliorTrack electron, BilliorTrack positron, double bField) {
+		// Create a vertex fitter from the magnetic field.
+		double[] beamSize = {0.001, 0.2, 0.02};
+		BilliorVertexer vtxFitter = new BilliorVertexer(bField);
+		// TODO: The beam size should come from the conditions database.
+		vtxFitter.setBeamSize(beamSize);
+
+		// Perform the vertexing based on the specified constraint.
+		vtxFitter.doBeamSpotConstraint(false);
+
+		// Add the electron and positron tracks to a track list for
+		// the vertex fitter.
+		List<BilliorTrack> billiorTracks = new ArrayList<BilliorTrack>();
+
+		billiorTracks.add(electron);
+
+		billiorTracks.add(positron);
+
+		// Find and return a vertex based on the tracks.
+		return vtxFitter.fitVertex(billiorTracks);
+	}
+
+	private static boolean hasSharedStrips(ReconstructedParticle vertex, RelationalTable hittostrip, RelationalTable hittorotated) {
+		return hasSharedStrips(vertex.getParticles().get(0), vertex.getParticles().get(1), hittostrip, hittorotated);
+	}
+
+	private static boolean hasSharedStrips(ReconstructedParticle fs1, ReconstructedParticle fs2, RelationalTable hittostrip, RelationalTable hittorotated) {
+		return TrackUtils.hasSharedStrips(fs1.getTracks().get(0), fs2.getTracks().get(0), hittostrip, hittorotated);
+	}
 }

Modified: java/branches/jeremy-dev/analysis/src/main/java/org/hps/analysis/plots/AddPlots.java
 =============================================================================
--- java/branches/jeremy-dev/analysis/src/main/java/org/hps/analysis/plots/AddPlots.java	(original)
+++ java/branches/jeremy-dev/analysis/src/main/java/org/hps/analysis/plots/AddPlots.java	Tue Mar  1 11:15:40 2016
@@ -15,7 +15,7 @@
 import java.util.logging.Logger;
 
 import org.apache.commons.cli.CommandLine;
-import org.apache.commons.cli.DefaultParser;
+import org.apache.commons.cli.PosixParser;
 import org.apache.commons.cli.HelpFormatter;
 import org.apache.commons.cli.Options;
 import org.lcsim.util.aida.AIDA;
@@ -43,7 +43,7 @@
     }
     
     public static void main(String[] args) throws Exception {
-        CommandLine cl = new DefaultParser().parse(OPTIONS, args);        
+        CommandLine cl = new PosixParser().parse(OPTIONS, args);        
         if (cl.getArgList().isEmpty()) {
             throw new RuntimeException("No input AIDA files to add.");
         }        

Modified: java/branches/jeremy-dev/conditions/pom.xml
 =============================================================================
--- java/branches/jeremy-dev/conditions/pom.xml	(original)
+++ java/branches/jeremy-dev/conditions/pom.xml	Tue Mar  1 11:15:40 2016
@@ -8,7 +8,7 @@
         <groupId>org.hps</groupId>
         <artifactId>hps-parent</artifactId>
         <relativePath>../parent/pom.xml</relativePath>
-        <version>3.6-SNAPSHOT</version>
+        <version>3.7-SNAPSHOT</version>
     </parent>
     <scm>
         <url>http://java.freehep.org/svn/repos/hps/list/java/trunk/conditions/</url>
@@ -37,6 +37,7 @@
                         <exclude>org/hps/conditions/api/ConditionsTagTest.java</exclude>
                         <exclude>org/hps/conditions/HPSJAVA_529_Test.java</exclude>
                         <exclude>org/hps/conditions/dummy/**.java</exclude>
+                        <exclude>org/hps/conditions/beam/BeamEnergyTest.java</exclude>
                     </excludes>
                 </configuration>
             </plugin>

Modified: java/branches/jeremy-dev/conditions/src/main/java/org/hps/conditions/api/ConditionsRecord.java
 =============================================================================
--- java/branches/jeremy-dev/conditions/src/main/java/org/hps/conditions/api/ConditionsRecord.java	(original)
+++ java/branches/jeremy-dev/conditions/src/main/java/org/hps/conditions/api/ConditionsRecord.java	Tue Mar  1 11:15:40 2016
@@ -249,11 +249,11 @@
                     record = keyRecords.get(0);
                 } else {
                     if (action.equals(MultipleCollectionsAction.LAST_UPDATED)) {
-                        record = sortedByUpdated().get(this.size() - 1);
+                        record = keyRecords.sortedByUpdated().get(keyRecords.size() - 1);
                     } else if (action.equals(MultipleCollectionsAction.LAST_CREATED)) {
-                        record = sortedByCreated().get(this.size() - 1);
+                        record = keyRecords.sortedByCreated().get(keyRecords.size() - 1);
                     } else if (action.equals(MultipleCollectionsAction.LATEST_RUN_START)) {
-                        record = sortedByRunStart().get(this.size() - 1);
+                        record = keyRecords.sortedByRunStart().get(keyRecords.size() - 1);
                     } else if (action.equals(MultipleCollectionsAction.ERROR)) {
                         throw new RuntimeException("Multiple ConditionsRecord object found for conditions key " + key + ".");
                     }

Modified: java/branches/jeremy-dev/conditions/src/main/java/org/hps/conditions/cli/AbstractCommand.java
 =============================================================================
--- java/branches/jeremy-dev/conditions/src/main/java/org/hps/conditions/cli/AbstractCommand.java	(original)
+++ java/branches/jeremy-dev/conditions/src/main/java/org/hps/conditions/cli/AbstractCommand.java	Tue Mar  1 11:15:40 2016
@@ -1,7 +1,7 @@
 package org.hps.conditions.cli;
 
 import org.apache.commons.cli.CommandLine;
-import org.apache.commons.cli.DefaultParser;
+import org.apache.commons.cli.PosixParser;
 import org.apache.commons.cli.HelpFormatter;
 import org.apache.commons.cli.Options;
 import org.apache.commons.cli.ParseException;
@@ -32,7 +32,7 @@
     /**
      * The parser for the options.
      */
-    private final DefaultParser parser = new DefaultParser();
+    private final PosixParser parser = new PosixParser();
 
     /**
      * Class constructor.

Modified: java/branches/jeremy-dev/conditions/src/main/java/org/hps/conditions/cli/CommandLineTool.java
 =============================================================================
--- java/branches/jeremy-dev/conditions/src/main/java/org/hps/conditions/cli/CommandLineTool.java	(original)
+++ java/branches/jeremy-dev/conditions/src/main/java/org/hps/conditions/cli/CommandLineTool.java	Tue Mar  1 11:15:40 2016
@@ -11,7 +11,7 @@
 import org.apache.commons.cli.Option;
 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.hps.conditions.database.DatabaseConditionsManager;
 import org.lcsim.conditions.ConditionsManager.ConditionsNotFoundException;
 
@@ -79,7 +79,7 @@
     /**
      * The options parser.
      */
-    private final DefaultParser parser = new DefaultParser();
+    private final PosixParser parser = new PosixParser();
 
     /**
      * Exit with the given status.

Modified: java/branches/jeremy-dev/conditions/src/main/java/org/hps/conditions/database/ConnectionParameters.java
 =============================================================================
--- java/branches/jeremy-dev/conditions/src/main/java/org/hps/conditions/database/ConnectionParameters.java	(original)
+++ java/branches/jeremy-dev/conditions/src/main/java/org/hps/conditions/database/ConnectionParameters.java	Tue Mar  1 11:15:40 2016
@@ -13,7 +13,8 @@
 import java.util.logging.Logger;
 
 /**
- * This class encapsulates the parameters for connecting to a database, including host name, port, user and password.
+ * This class encapsulates the parameters for connecting to a database,
+ * including host name, port, user and password.
  *
  * @author Jeremy McCormick, SLAC
  */
@@ -28,6 +29,12 @@
      * Number of connection retries allowed.
      */
     private static final int MAX_ATTEMPTS = 10;
+    
+    /**
+     * Wait time (in millis) for the first retry. The nth retry waits for
+     * n*RETRY_WAIT millis.
+     */
+    private static final int RETRY_WAIT = 5000;
 
     /**
      * Configure the connection parameters from a properties file.
@@ -46,7 +53,8 @@
     }
 
     /**
-     * Configure the connection parameters from an <code>InputStream</code> of properties.
+     * Configure the connection parameters from an <code>InputStream</code> of
+     * properties.
      *
      * @param in the InputStream of the properties
      * @return the connection parameters
@@ -71,7 +79,8 @@
     }
 
     /**
-     * Configure the connection parameters from an embedded classpath resource which should be a properties file.
+     * Configure the connection parameters from an embedded classpath resource
+     * which should be a properties file.
      *
      * @param resource the resource path
      * @return the connection parameters
@@ -146,8 +155,8 @@
     }
 
     /**
-     * Create a database connection from these parameters. The caller becomes the "owner" and is responsible for closing
-     * it when finished.
+     * Create a database connection from these parameters. The caller becomes
+     * the "owner" and is responsible for closing it when finished.
      *
      * @return the new <code>Connection</code> object
      */
@@ -166,7 +175,7 @@
                     throw new RuntimeException("Failed to connect to database after " + attempt + " attempts: " + this.getConnectionString(), x);
                 }
                 try {
-                    Thread.sleep(attempt * 1000);
+                    Thread.sleep(attempt * RETRY_WAIT);
                 } catch (InterruptedException ex) {
                     Logger.getLogger(ConnectionParameters.class.getName()).log(Level.SEVERE, null, ex);
                 }
@@ -247,13 +256,13 @@
     String getUser() {
         return this.user;
     }
-    
+
     /**
      * Convert to human readable string.
-     * 
+     *
      * @return this object converted to a string
      */
-    public String toString() {                        
+    public String toString() {
         return "ConnectionParameters { database: " + database + ", hostname: " + hostname + ", password: " + password
                 + ", port: " + port + ", user: " + user + " }";
     }

Modified: java/branches/jeremy-dev/conditions/src/main/java/org/hps/conditions/database/DatabaseConditionsManager.java
 =============================================================================
--- java/branches/jeremy-dev/conditions/src/main/java/org/hps/conditions/database/DatabaseConditionsManager.java	(original)
+++ java/branches/jeremy-dev/conditions/src/main/java/org/hps/conditions/database/DatabaseConditionsManager.java	Tue Mar  1 11:15:40 2016
@@ -348,7 +348,7 @@
      * Close the database connection.
      */
     public synchronized void closeConnection() {
-        //LOGGER.finer("closing connection");
+        LOGGER.fine("closing connection");
         if (this.connection != null) {
             try {
                 if (!this.connection.isClosed()) {
@@ -360,7 +360,7 @@
         }
         this.connection = null;
         this.isConnected = false;
-        //LOGGER.finer("connection closed");
+        LOGGER.fine("connection closed");
     }
 
     /**

Modified: java/branches/jeremy-dev/conditions/src/main/java/org/hps/conditions/svt/MotorPositionLoader.java
 =============================================================================
--- java/branches/jeremy-dev/conditions/src/main/java/org/hps/conditions/svt/MotorPositionLoader.java	(original)
+++ java/branches/jeremy-dev/conditions/src/main/java/org/hps/conditions/svt/MotorPositionLoader.java	Tue Mar  1 11:15:40 2016
@@ -16,7 +16,7 @@
 import org.apache.commons.cli.CommandLine;
 import org.apache.commons.cli.HelpFormatter;
 import org.apache.commons.cli.Options;
-import org.apache.commons.cli.DefaultParser;
+import org.apache.commons.cli.PosixParser;
 
 /**
  * Load SVT motor positions from a MYA dump, figure out time ranges (same position for > 10 seconds), and then convert
@@ -195,7 +195,7 @@
      */
     void run(final String args[]) {
 
-        final DefaultParser parser = new DefaultParser();
+        final PosixParser parser = new PosixParser();
 
         CommandLine cl = null;
         try {

Modified: java/branches/jeremy-dev/conditions/src/main/java/org/hps/conditions/svt/SvtBiasConditionsLoader.java
 =============================================================================
--- java/branches/jeremy-dev/conditions/src/main/java/org/hps/conditions/svt/SvtBiasConditionsLoader.java	(original)
+++ java/branches/jeremy-dev/conditions/src/main/java/org/hps/conditions/svt/SvtBiasConditionsLoader.java	Tue Mar  1 11:15:40 2016
@@ -23,7 +23,7 @@
 import org.apache.commons.cli.Option;
 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.hps.conditions.api.ConditionsRecord;
 import org.hps.conditions.database.DatabaseConditionsManager;
 import org.hps.conditions.run.RunRange;
@@ -176,7 +176,7 @@
 //        options.addOption(new Option("b", true, "beam current file"));
         options.addOption(new Option("s", false, "Show plots"));
 
-        final CommandLineParser parser = new DefaultParser();
+        final CommandLineParser parser = new PosixParser();
         CommandLine cl = null;
         try {
             cl = parser.parse(options, args);

Modified: java/branches/jeremy-dev/conditions/src/main/java/org/hps/conditions/svt/SvtConditionsLoader.java
 =============================================================================
--- java/branches/jeremy-dev/conditions/src/main/java/org/hps/conditions/svt/SvtConditionsLoader.java	(original)
+++ java/branches/jeremy-dev/conditions/src/main/java/org/hps/conditions/svt/SvtConditionsLoader.java	Tue Mar  1 11:15:40 2016
@@ -8,7 +8,7 @@
 import org.apache.commons.cli.Option;
 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.hps.conditions.api.ConditionsRecord;
 import org.hps.conditions.api.TableMetaData;
 import org.hps.conditions.database.DatabaseConditionsManager;
@@ -60,7 +60,7 @@
         final Options options = setupCommandLineOptions();
 
         // Parse the command line arguments
-        final CommandLineParser parser = new DefaultParser();
+        final CommandLineParser parser = new PosixParser();
         final CommandLine commandLine;
         try {
             commandLine = parser.parse(options, args);

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

Modified: java/branches/jeremy-dev/crawler/src/main/java/org/hps/crawler/DatacatAddFile.java
 =============================================================================
--- java/branches/jeremy-dev/crawler/src/main/java/org/hps/crawler/DatacatAddFile.java	(original)
+++ java/branches/jeremy-dev/crawler/src/main/java/org/hps/crawler/DatacatAddFile.java	Tue Mar  1 11:15:40 2016
@@ -6,7 +6,7 @@
 import java.util.logging.Logger;
 
 import org.apache.commons.cli.CommandLine;
-import org.apache.commons.cli.DefaultParser;
+import org.apache.commons.cli.PosixParser;
 import org.apache.commons.cli.HelpFormatter;
 import org.apache.commons.cli.Options;
 import org.apache.commons.cli.ParseException;
@@ -55,7 +55,7 @@
     /**
      * The options parser.
      */
-    private final DefaultParser parser = new DefaultParser();
+    private final PosixParser parser = new PosixParser();
     
     /**
      * Parse command line options.

Modified: java/branches/jeremy-dev/crawler/src/main/java/org/hps/crawler/DatacatCrawler.java
 =============================================================================
--- java/branches/jeremy-dev/crawler/src/main/java/org/hps/crawler/DatacatCrawler.java	(original)
+++ java/branches/jeremy-dev/crawler/src/main/java/org/hps/crawler/DatacatCrawler.java	Tue Mar  1 11:15:40 2016
@@ -13,7 +13,7 @@
 import java.util.logging.Logger;
 
 import org.apache.commons.cli.CommandLine;
-import org.apache.commons.cli.DefaultParser;
+import org.apache.commons.cli.PosixParser;
 import org.apache.commons.cli.HelpFormatter;
 import org.apache.commons.cli.Options;
 import org.apache.commons.cli.ParseException;
@@ -83,7 +83,7 @@
     /**
      * The options parser.
      */
-    private final DefaultParser parser = new DefaultParser();
+    private final PosixParser parser = new PosixParser();
     
     /**
      * Parse command line options.

Modified: java/branches/jeremy-dev/crawler/src/main/java/org/hps/crawler/MetadataWriter.java
 =============================================================================
--- java/branches/jeremy-dev/crawler/src/main/java/org/hps/crawler/MetadataWriter.java	(original)
+++ java/branches/jeremy-dev/crawler/src/main/java/org/hps/crawler/MetadataWriter.java	Tue Mar  1 11:15:40 2016
@@ -9,7 +9,7 @@
 import java.util.logging.Logger;
 
 import org.apache.commons.cli.CommandLine;
-import org.apache.commons.cli.DefaultParser;
+import org.apache.commons.cli.PosixParser;
 import org.apache.commons.cli.HelpFormatter;
 import org.apache.commons.cli.Options;
 import org.apache.commons.cli.ParseException;
@@ -39,7 +39,7 @@
     private MetadataWriter parse(final String[] args) {
         
         try { 
-            final CommandLine cl = new DefaultParser().parse(OPTIONS, args);
+            final CommandLine cl = new PosixParser().parse(OPTIONS, args);
 
             // Print help.
             if (cl.hasOption("h") || args.length == 0) {

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	Tue Mar  1 11:15:40 2016
@@ -8,7 +8,7 @@
         <groupId>org.hps</groupId>
         <artifactId>hps-parent</artifactId>
         <relativePath>../parent/pom.xml</relativePath>
-        <version>3.6-SNAPSHOT</version>
+        <version>3.7-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	Tue Mar  1 11:15:40 2016
@@ -8,7 +8,7 @@
         <groupId>org.hps</groupId>
         <artifactId>hps-parent</artifactId>
         <relativePath>../parent/pom.xml</relativePath>
-        <version>3.6-SNAPSHOT</version>
+        <version>3.7-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	Tue Mar  1 11:15:40 2016
@@ -13,7 +13,7 @@
         <groupId>org.hps</groupId>
         <artifactId>hps-parent</artifactId>
         <relativePath>../parent/pom.xml</relativePath>
-        <version>3.6-SNAPSHOT</version>
+        <version>3.7-SNAPSHOT</version>
     </parent>    
     <scm>
         <url>http://java.freehep.org/svn/repos/hps/list/java/trunk/distribution/</url>

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	Tue Mar  1 11:15:40 2016
@@ -7,7 +7,7 @@
         <groupId>org.hps</groupId>
         <artifactId>hps-parent</artifactId>
         <relativePath>../parent/pom.xml</relativePath>
-        <version>3.6-SNAPSHOT</version>
+        <version>3.7-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	Tue Mar  1 11:15:40 2016
@@ -8,7 +8,7 @@
         <groupId>org.hps</groupId>
         <artifactId>hps-parent</artifactId>
         <relativePath>../parent/pom.xml</relativePath>
-        <version>3.6-SNAPSHOT</version>
+        <version>3.7-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	Tue Mar  1 11:15:40 2016
@@ -8,7 +8,7 @@
         <groupId>org.hps</groupId>
         <artifactId>hps-parent</artifactId>
         <relativePath>../parent/pom.xml</relativePath>
-        <version>3.6-SNAPSHOT</version>
+        <version>3.7-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/EcalRawConverterDriver.java
 =============================================================================
--- java/branches/jeremy-dev/ecal-recon/src/main/java/org/hps/recon/ecal/EcalRawConverterDriver.java	(original)
+++ java/branches/jeremy-dev/ecal-recon/src/main/java/org/hps/recon/ecal/EcalRawConverterDriver.java	Tue Mar  1 11:15:40 2016
@@ -18,14 +18,18 @@
 import org.lcsim.util.Driver;
 
 /**
- * This class is used to convert between collections of {@link org.lcsim.event.RawCalorimeterHit}
- * and {@link org.lcsim.event.RawTrackerHit}, objects with ADC/sample information, and
- * collections of {@link org.lcsim.event.CalorimeterHit}, objects with energy/time information.
- * 
- * org.hps.recon.ecal.EcalRawConverter is called to do most of the lower level work.
- *
- *
-*/
+ * This <code>Driver</code> converts raw ECal data collections to {@link org.lcsim.event.CalorimeterHit} collections 
+ * with energy and time information.  The {@link EcalRawConverter} does most of the low-level work.
+ * <p>
+ * The following input collections are used:
+ * <ul>
+ * <li>EcalReadoutHits<li>
+ * <li>EcalReadoutExtraDataRelations</li>
+ * <li>EcalRunningPedestals</li>
+ * </ul>
+ * <p>
+ * The results are by default written to the <b>EcalCalHits</b> output collection.
+ */
 public class EcalRawConverterDriver extends Driver {
 
     // To import database conditions

Modified: java/branches/jeremy-dev/ecal-recon/src/main/java/org/hps/recon/ecal/EcalRunningPedestalDriver.java
 =============================================================================
--- java/branches/jeremy-dev/ecal-recon/src/main/java/org/hps/recon/ecal/EcalRunningPedestalDriver.java	(original)
+++ java/branches/jeremy-dev/ecal-recon/src/main/java/org/hps/recon/ecal/EcalRunningPedestalDriver.java	Tue Mar  1 11:15:40 2016
@@ -18,18 +18,21 @@
 import org.lcsim.util.Driver;
 
 /**
- * Calculate a running pedestal average for every channel from Mode7 FADCs. Uses
- * pedestals from the database if not available from the data.
- * 
- * May 2015:  Updated to also work on Mode1 data.
- * 
- * TODO: Use Logger.
+ * This <code>Driver</code> takes Mode-1 or Mode-7 ECal data and computes a running pedestal 
+ * average for every channel.  Pedestals from the database will be used if this is not available.
+ * <p>
+ * The following input collections are used:
+ * <ul>
+ * <li>EcalReadoutHits</li>
+ * <li>EcalReadoutExtraDataRelations</li>
+ * </ul>
+ * <p>
+ * Results are by default written to the <b>EcalRunningPedestals</b> output collection.
  * 
  * TODO: Timestamps from EVIO for some runs appear to not be monotonically increasing.
  *       This interferes with minLookbackTime, so it defaults to disabled and its setter
- *       is left private for now.
+ *       is left private for now. (Should be a JIRA item??? --JM)
  * 
- * @version $Id: ECalRunningPedestalDriver.java,v 1.0 2015/02/10 00:00:00
  * @author <[log in to unmask]>
  */
 public class EcalRunningPedestalDriver extends Driver {

Modified: java/branches/jeremy-dev/evio/pom.xml
 =============================================================================
--- java/branches/jeremy-dev/evio/pom.xml	(original)
+++ java/branches/jeremy-dev/evio/pom.xml	Tue Mar  1 11:15:40 2016
@@ -8,7 +8,7 @@
         <groupId>org.hps</groupId>
         <artifactId>hps-parent</artifactId>
         <relativePath>../parent/pom.xml</relativePath>
-        <version>3.6-SNAPSHOT</version>
+        <version>3.7-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/BasicEvioFileReader.java
 =============================================================================
--- java/branches/jeremy-dev/evio/src/main/java/org/hps/evio/BasicEvioFileReader.java	(original)
+++ java/branches/jeremy-dev/evio/src/main/java/org/hps/evio/BasicEvioFileReader.java	Tue Mar  1 11:15:40 2016
@@ -8,7 +8,7 @@
 import org.apache.commons.cli.Option;
 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.hps.record.evio.EvioEventUtilities;
 import org.hps.record.triggerbank.AbstractIntData.IntBankDefinition;
 import org.hps.record.triggerbank.HeadBankData;
@@ -33,7 +33,7 @@
         if (args.length == 0) {
             printUsage(options);
         }
-        final CommandLineParser parser = new DefaultParser();
+        final CommandLineParser parser = new PosixParser();
         CommandLine cl = null;
         try {
             cl = parser.parse(options, args);

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	Tue Mar  1 11:15:40 2016
@@ -21,7 +21,6 @@
 import org.apache.commons.cli.Option;
 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;

Modified: java/branches/jeremy-dev/evio/src/main/java/org/hps/evio/LCSimEngRunEventBuilder.java
 =============================================================================
--- java/branches/jeremy-dev/evio/src/main/java/org/hps/evio/LCSimEngRunEventBuilder.java	(original)
+++ java/branches/jeremy-dev/evio/src/main/java/org/hps/evio/LCSimEngRunEventBuilder.java	Tue Mar  1 11:15:40 2016
@@ -107,7 +107,7 @@
      * @param run the run number
      */
     private void setTiTimeOffsetForRun(int run) {
-        currentTiTimeOffset = null; /* Reset TI offset to null indicating it is not available for the run. */
+        currentTiTimeOffset = null;
         RunManager runManager = RunManager.getRunManager();
         if (runManager.getRun() != null) {
             if (runManager.runExists()) {
@@ -121,6 +121,10 @@
         } else {
             LOGGER.info("Run manager is not initialized; TI time offset not available.");
         }
+        try {
+            RunManager.getRunManager().closeConnection();
+        } catch (Exception e) {
+        }
     }
 
     /**

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

Modified: java/branches/jeremy-dev/job/src/main/java/org/hps/job/DatabaseConditionsManagerSetup.java
 =============================================================================
--- java/branches/jeremy-dev/job/src/main/java/org/hps/job/DatabaseConditionsManagerSetup.java	(original)
+++ java/branches/jeremy-dev/job/src/main/java/org/hps/job/DatabaseConditionsManagerSetup.java	Tue Mar  1 11:15:40 2016
@@ -59,10 +59,13 @@
      */
     @Override
     public void configure() {
-            
+
+        LOGGER.info("configuring conditions system");
+
         // Initialize the db conditions manager.
+        DatabaseConditionsManager.resetInstance();
         DatabaseConditionsManager conditionsManager = DatabaseConditionsManager.getInstance();
-        
+
         if (enableRunManager) {
             LOGGER.config("adding run manager conditions listener");
             conditionsManager.addConditionsListener(RunManager.getRunManager());
@@ -82,6 +85,8 @@
         for (ConditionsListener listener : listeners) {
             conditionsManager.addConditionsListener(listener);
         }
+
+        LOGGER.info("done configuring conditions system");
     }
      
     /**
@@ -91,10 +96,12 @@
      */
     @Override
     public void postInitialize() {
+        LOGGER.config("conditions setup post init");
         if (DatabaseConditionsManager.getInstance().isInitialized() || this.freeze) {
             LOGGER.config("Job manager is freezing the conditions system.");
             DatabaseConditionsManager.getInstance().freeze();
         }
+        LOGGER.config("done with post init");
     }
     
     /**
@@ -104,7 +111,9 @@
      */
     @Override
     public void cleanup() {
-        
+ 
+        LOGGER.config("conditions cleanup");
+
         // Close the conditions database connection.
         Connection connection = DatabaseConditionsManager.getInstance().getConnection();
         try {
@@ -119,5 +128,7 @@
         if (enableRunManager) {
             RunManager.getRunManager().closeConnection();
         }
+
+        LOGGER.config("done cleaning up");
     }
 }

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

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	Tue Mar  1 11:15:40 2016
@@ -7,7 +7,7 @@
         <groupId>org.hps</groupId>
         <artifactId>hps-parent</artifactId>
         <relativePath>../parent/pom.xml</relativePath>
-        <version>3.6-SNAPSHOT</version>
+        <version>3.7-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/Main.java
 =============================================================================
--- java/branches/jeremy-dev/monitoring-app/src/main/java/org/hps/monitoring/application/Main.java	(original)
+++ java/branches/jeremy-dev/monitoring-app/src/main/java/org/hps/monitoring/application/Main.java	Tue Mar  1 11:15:40 2016
@@ -8,7 +8,7 @@
 import org.apache.commons.cli.Option;
 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.hps.monitoring.application.model.Configuration;
 
 /**
@@ -29,7 +29,7 @@
         final Options options = new Options();
         options.addOption(new Option("h", false, "Print help."));
         options.addOption(new Option("c", true, "Load a properties file with configuration parameters."));
-        final CommandLineParser parser = new DefaultParser();
+        final CommandLineParser parser = new PosixParser();
 
         // Parse command line arguments.
         final CommandLine cl;

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	Tue Mar  1 11:15:40 2016
@@ -7,7 +7,7 @@
         <groupId>org.hps</groupId>
         <artifactId>hps-parent</artifactId>
         <relativePath>../parent/pom.xml</relativePath>
-        <version>3.6-SNAPSHOT</version>
+        <version>3.7-SNAPSHOT</version>
     </parent>
     <scm>
         <url>http://java.freehep.org/svn/repos/hps/list/java/trunk/monitoring-drivers/</url>

Modified: java/branches/jeremy-dev/monitoring-drivers/src/main/java/org/hps/monitoring/drivers/svt/SvtHitPlots.java
 =============================================================================
--- java/branches/jeremy-dev/monitoring-drivers/src/main/java/org/hps/monitoring/drivers/svt/SvtHitPlots.java	(original)
+++ java/branches/jeremy-dev/monitoring-drivers/src/main/java/org/hps/monitoring/drivers/svt/SvtHitPlots.java	Tue Mar  1 11:15:40 2016
@@ -216,13 +216,13 @@
         plotters.get("Raw hit counts/Event").createRegions(2, 2);
 
         hitCountPlots.put("Raw hit counts/Event",
-                histogramFactory.createHistogram1D("Raw hit counts", 100, 0, 100));
+                histogramFactory.createHistogram1D("Raw hit counts", 100, 0, 500));
         plotters.get("Raw hit counts/Event").region(0).plot(hitCountPlots.get("Raw hit counts/Event"), SvtPlotUtils.createStyle(plotterFactory, "Number of Raw Hits", ""));
         hitCountPlots.put("SVT top raw hit counts/Event",
-                histogramFactory.createHistogram1D("SVT top raw hit counts", 100, 0, 100));
+                histogramFactory.createHistogram1D("SVT top raw hit counts", 100, 0, 300));
         plotters.get("Raw hit counts/Event").region(2).plot(hitCountPlots.get("SVT top raw hit counts/Event"), SvtPlotUtils.createStyle(plotterFactory, "Number of Raw Hits in Top Volume", ""));
         hitCountPlots.put("SVT bottom raw hit counts/Event",
-                histogramFactory.createHistogram1D("SVT bottom raw hit counts", 100, 0, 100));
+                histogramFactory.createHistogram1D("SVT bottom raw hit counts", 100, 0, 300));
         plotters.get("Raw hit counts/Event").region(3).plot(hitCountPlots.get("SVT bottom raw hit counts/Event"), SvtPlotUtils.createStyle(plotterFactory, "Number of Raw Bits in the Bottom Volume", ""));
 
         plotters.put("First sample distributions (pedestal shifts)", plotterFactory.create("First sample distributions (pedestal shifts)"));

Modified: java/branches/jeremy-dev/monitoring-drivers/src/main/java/org/hps/monitoring/drivers/trackrecon/PlotAndFitUtilities.java
 =============================================================================
--- java/branches/jeremy-dev/monitoring-drivers/src/main/java/org/hps/monitoring/drivers/trackrecon/PlotAndFitUtilities.java	(original)
+++ java/branches/jeremy-dev/monitoring-drivers/src/main/java/org/hps/monitoring/drivers/trackrecon/PlotAndFitUtilities.java	Tue Mar  1 11:15:40 2016
@@ -50,7 +50,7 @@
     static void plot(IPlotter plotter, IBaseHistogram histogram, IPlotterStyle style, int region) {
         if (style == null)
             style = getPlotterStyle(histogram);
-        System.out.println("Putting plot in region " + region);
+        //System.out.println("Putting plot in region " + region);
         plotter.region(region).plot(histogram, style);
 
     }

Modified: java/branches/jeremy-dev/monitoring-drivers/src/main/java/org/hps/monitoring/drivers/trackrecon/V0ReconPlots.java
 =============================================================================
--- java/branches/jeremy-dev/monitoring-drivers/src/main/java/org/hps/monitoring/drivers/trackrecon/V0ReconPlots.java	(original)
+++ java/branches/jeremy-dev/monitoring-drivers/src/main/java/org/hps/monitoring/drivers/trackrecon/V0ReconPlots.java	Tue Mar  1 11:15:40 2016
@@ -58,7 +58,7 @@
 
     @Override
     protected void detectorChanged(Detector detector) {
-        System.out.println("V0Monitoring::detectorChanged  Setting up the plotter");
+        //System.out.println("V0Monitoring::detectorChanged  Setting up the plotter");
 
         IAnalysisFactory fac = aida.analysisFactory();
         IPlotterFactory pfac = fac.createPlotterFactory("V0 Recon");

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	Tue Mar  1 11:15:40 2016
@@ -7,7 +7,7 @@
         <groupId>org.hps</groupId>
         <artifactId>hps-parent</artifactId>
         <relativePath>../parent/pom.xml</relativePath>
-        <version>3.6-SNAPSHOT</version>
+        <version>3.7-SNAPSHOT</version>
     </parent>
     <scm>
         <url>http://java.freehep.org/svn/repos/hps/list/java/trunk/monitoring-util/</url>

Modified: java/branches/jeremy-dev/parent/pom.xml
 =============================================================================
--- java/branches/jeremy-dev/parent/pom.xml	(original)
+++ java/branches/jeremy-dev/parent/pom.xml	Tue Mar  1 11:15:40 2016
@@ -6,13 +6,14 @@
     <groupId>org.hps</groupId>
     <artifactId>hps-parent</artifactId>
     <packaging>pom</packaging>
-    <version>3.6-SNAPSHOT</version>
+    <version>3.7-SNAPSHOT</version>
     <name>parent</name>
     <description>HPS Java parent POM</description>
     <properties>
         <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
         <org.lcsim.cacheDir>${user.home}</org.lcsim.cacheDir>
-        <lcsimVersion>3.2-SNAPSHOT</lcsimVersion>
+        <lcsimVersion>3.2</lcsimVersion>
         <skipSite>false</skipSite>
         <skipPlugin>false</skipPlugin>
     </properties>
@@ -142,117 +143,112 @@
             <dependency>
                 <groupId>org.hps</groupId>
                 <artifactId>hps-util</artifactId>
-                <version>3.6-SNAPSHOT</version>
+                <version>3.7-SNAPSHOT</version>
             </dependency>
             <dependency>
                 <groupId>org.hps</groupId>
                 <artifactId>hps-detector-data</artifactId>
-                <version>3.6-SNAPSHOT</version>
+                <version>3.7-SNAPSHOT</version>
             </dependency>
             <dependency>
                 <groupId>org.hps</groupId>
                 <artifactId>hps-detector-model</artifactId>
-                <version>3.6-SNAPSHOT</version>
+                <version>3.7-SNAPSHOT</version>
             </dependency>
             <dependency>
                 <groupId>org.hps</groupId>
                 <artifactId>hps-conditions</artifactId>
-                <version>3.6-SNAPSHOT</version>
+                <version>3.7-SNAPSHOT</version>
             </dependency>
             <dependency>
                 <groupId>org.hps</groupId>
                 <artifactId>hps-ecal-recon</artifactId>
-                <version>3.6-SNAPSHOT</version>
+                <version>3.7-SNAPSHOT</version>
             </dependency>
             <dependency>
                 <groupId>org.hps</groupId>
                 <artifactId>hps-ecal-readout-sim</artifactId>
-                <version>3.6-SNAPSHOT</version>
+                <version>3.7-SNAPSHOT</version>
             </dependency>
             <dependency>
                 <groupId>org.hps</groupId>
                 <artifactId>hps-tracking</artifactId>
-                <version>3.6-SNAPSHOT</version>
+                <version>3.7-SNAPSHOT</version>
             </dependency>
             <dependency>
                 <groupId>org.hps</groupId>
                 <artifactId>hps-evio</artifactId>
-                <version>3.6-SNAPSHOT</version>
+                <version>3.7-SNAPSHOT</version>
             </dependency>
             <dependency>
                 <groupId>org.hps</groupId>
                 <artifactId>hps-recon</artifactId>
-                <version>3.6-SNAPSHOT</version>
+                <version>3.7-SNAPSHOT</version>
             </dependency>
             <dependency>
                 <groupId>org.hps</groupId>
                 <artifactId>hps-analysis</artifactId>
-                <version>3.6-SNAPSHOT</version>
+                <version>3.7-SNAPSHOT</version>
             </dependency>
             <dependency>
                 <groupId>org.hps</groupId>
                 <artifactId>hps-monitoring-drivers</artifactId>
-                <version>3.6-SNAPSHOT</version>
+                <version>3.7-SNAPSHOT</version>
             </dependency>
             <dependency>
                 <groupId>org.hps</groupId>
                 <artifactId>hps-monitoring-app</artifactId>
-                <version>3.6-SNAPSHOT</version>
+                <version>3.7-SNAPSHOT</version>
             </dependency>
             <dependency>
                 <groupId>org.hps</groupId>
                 <artifactId>hps-users</artifactId>
-                <version>3.6-SNAPSHOT</version>
+                <version>3.7-SNAPSHOT</version>
             </dependency>
             <dependency>
                 <groupId>org.hps</groupId>
                 <artifactId>hps-steering-files</artifactId>
-                <version>3.6-SNAPSHOT</version>
+                <version>3.7-SNAPSHOT</version>
             </dependency>
             <dependency>
                 <groupId>org.hps</groupId>
                 <artifactId>hps-distribution</artifactId>
-                <version>3.6-SNAPSHOT</version>
+                <version>3.7-SNAPSHOT</version>
             </dependency>
             <dependency>
                 <groupId>org.hps</groupId>
                 <artifactId>hps-ecal-event-display</artifactId>
-                <version>3.6-SNAPSHOT</version>
+                <version>3.7-SNAPSHOT</version>
             </dependency>
             <dependency>
                 <groupId>org.hps</groupId>
                 <artifactId>hps-record-util</artifactId>
-                <version>3.6-SNAPSHOT</version>
+                <version>3.7-SNAPSHOT</version>
             </dependency>
             <dependency>
                 <groupId>org.hps</groupId>
                 <artifactId>hps-monitoring-util</artifactId>
-                <version>3.6-SNAPSHOT</version>
+                <version>3.7-SNAPSHOT</version>
             </dependency>
             <dependency>
                 <groupId>org.hps</groupId>
                 <artifactId>hps-run-database</artifactId>
-                <version>3.6-SNAPSHOT</version>
+                <version>3.7-SNAPSHOT</version>
             </dependency>
             <dependency>
                 <groupId>org.hps</groupId>
                 <artifactId>hps-crawler</artifactId>
-                <version>3.6-SNAPSHOT</version>
-            </dependency>
-            <dependency>
-                <groupId>org.hps</groupId>
-                <artifactId>hps-datacat-client</artifactId>
-                <version>3.6-SNAPSHOT</version>
+                <version>3.7-SNAPSHOT</version>
             </dependency>
             <dependency>
                 <groupId>org.hps</groupId>
                 <artifactId>hps-job</artifactId>
-                <version>3.6-SNAPSHOT</version>
+                <version>3.7-SNAPSHOT</version>
             </dependency>
             <dependency>
                 <groupId>org.hps</groupId>
                 <artifactId>hps-logging</artifactId>
-                <version>3.6-SNAPSHOT</version>
+                <version>3.7-SNAPSHOT</version>
             </dependency>
             <!-- Next are external dependencies used in multiple modules. -->
             <dependency>
@@ -298,7 +294,7 @@
             <dependency>
                 <groupId>srs</groupId>
                 <artifactId>org-srs-datacat-client</artifactId>
-                <version>0.5-SNAPSHOT</version>
+                <version>0.5-TEST3</version>
             </dependency>
         </dependencies>
     </dependencyManagement>
@@ -504,9 +500,6 @@
                 <role>release manager</role>
             </roles>
             <timezone>-8</timezone>
-            <properties>
-                <aim>jeremyslac</aim>
-            </properties>
         </developer>
         <developer>
             <name>Norman Graf</name>
@@ -517,9 +510,6 @@
                 <role>developer</role>
             </roles>
             <timezone>-8</timezone>
-            <properties>
-                <aim>ngraf137</aim>
-            </properties>
         </developer>
         <developer>
             <name>Maurik Holtrop</name>

Modified: java/branches/jeremy-dev/plugin/pom.xml
 =============================================================================
--- java/branches/jeremy-dev/plugin/pom.xml	(original)
+++ java/branches/jeremy-dev/plugin/pom.xml	Tue Mar  1 11:15:40 2016
@@ -7,7 +7,7 @@
         <groupId>org.hps</groupId>
         <artifactId>hps-parent</artifactId>
         <relativePath>../parent/pom.xml</relativePath>
-        <version>3.6-SNAPSHOT</version>
+        <version>3.7-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	Tue Mar  1 11:15:40 2016
@@ -9,7 +9,7 @@
         <groupId>org.hps</groupId>
         <artifactId>hps-parent</artifactId>
         <relativePath>parent/pom.xml</relativePath>
-        <version>3.6-SNAPSHOT</version>
+        <version>3.7-SNAPSHOT</version>
     </parent>
     <scm>
         <url>svn://svn.freehep.org/hps/java/trunk/</url>
@@ -107,7 +107,6 @@
         <module>analysis</module>
         <module>conditions</module>
         <module>crawler</module>
-        <module>datacat-client</module>
         <module>detector-data</module>
         <module>detector-model</module>
         <module>distribution</module>

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

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	Tue Mar  1 11:15:40 2016
@@ -7,7 +7,7 @@
         <groupId>org.hps</groupId>
         <artifactId>hps-parent</artifactId>
         <relativePath>../parent/pom.xml</relativePath>
-        <version>3.6-SNAPSHOT</version>
+        <version>3.7-SNAPSHOT</version>
     </parent>
     <scm>
         <url>http://java.freehep.org/svn/repos/hps/list/java/trunk/record-util/</url>

Modified: java/branches/jeremy-dev/record-util/src/main/java/org/hps/record/evio/EvioEventSkimmer.java
 =============================================================================
--- java/branches/jeremy-dev/record-util/src/main/java/org/hps/record/evio/EvioEventSkimmer.java	(original)
+++ java/branches/jeremy-dev/record-util/src/main/java/org/hps/record/evio/EvioEventSkimmer.java	Tue Mar  1 11:15:40 2016
@@ -14,7 +14,7 @@
 import org.apache.commons.cli.CommandLine;
 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.jlab.coda.jevio.EventWriter;
 import org.jlab.coda.jevio.EvioEvent;
 import org.jlab.coda.jevio.EvioReader;
@@ -51,7 +51,7 @@
      */
     public static void main(String[] args) {
 
-        DefaultParser parser = new DefaultParser();
+        PosixParser parser = new PosixParser();
 
         CommandLine commandLine = null;
         try {

Modified: java/branches/jeremy-dev/record-util/src/main/java/org/hps/record/evio/EvioFileProducer.java
 =============================================================================
--- java/branches/jeremy-dev/record-util/src/main/java/org/hps/record/evio/EvioFileProducer.java	(original)
+++ java/branches/jeremy-dev/record-util/src/main/java/org/hps/record/evio/EvioFileProducer.java	Tue Mar  1 11:15:40 2016
@@ -16,7 +16,7 @@
 import org.apache.commons.cli.CommandLine;
 import org.apache.commons.cli.HelpFormatter;
 import org.apache.commons.cli.Options;
-import org.apache.commons.cli.DefaultParser;
+import org.apache.commons.cli.PosixParser;
 import org.jlab.coda.et.EtAttachment;
 import org.jlab.coda.et.EtConstants;
 import org.jlab.coda.et.EtEvent;
@@ -195,7 +195,7 @@
     public void run(final String[] args) {
 
         // Command line parser.
-        final DefaultParser parser = new DefaultParser();
+        final PosixParser parser = new PosixParser();
 
         try {
 

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	Tue Mar  1 11:15:40 2016
@@ -7,7 +7,7 @@
         <groupId>org.hps</groupId>
         <artifactId>hps-parent</artifactId>
         <relativePath>../parent/pom.xml</relativePath>
-        <version>3.6-SNAPSHOT</version>
+        <version>3.7-SNAPSHOT</version>
     </parent>
     <scm>
         <url>http://java.freehep.org/svn/repos/hps/list/java/trunk/run-database/</url>
@@ -24,4 +24,17 @@
             <artifactId>org-srs-datacat-client</artifactId>
         </dependency>
     </dependencies>
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-surefire-plugin</artifactId>
+                <configuration>
+                    <excludes>
+                        <exclude>org/hps/run/database/RunBuilderTest.java</exclude>
+                    </excludes>
+                </configuration>
+            </plugin>
+        </plugins>
+    </build>
 </project>

Modified: java/branches/jeremy-dev/run-database/src/main/java/org/hps/run/database/RunDatabaseCommandLine.java
 =============================================================================
--- java/branches/jeremy-dev/run-database/src/main/java/org/hps/run/database/RunDatabaseCommandLine.java	(original)
+++ java/branches/jeremy-dev/run-database/src/main/java/org/hps/run/database/RunDatabaseCommandLine.java	Tue Mar  1 11:15:40 2016
@@ -4,7 +4,7 @@
 import java.net.URISyntaxException;
 
 import org.apache.commons.cli.CommandLine;
-import org.apache.commons.cli.DefaultParser;
+import org.apache.commons.cli.PosixParser;
 import org.apache.commons.cli.HelpFormatter;
 import org.apache.commons.cli.Options;
 import org.apache.commons.cli.ParseException;
@@ -119,7 +119,7 @@
      */
     private RunDatabaseCommandLine parse(final String args[]) {
         try {
-            final CommandLine cl = new DefaultParser().parse(OPTIONS, args);
+            final CommandLine cl = new PosixParser().parse(OPTIONS, args);
 
             // Print help and exit.
             if (cl.hasOption("h") || args.length == 0) {

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	Tue Mar  1 11:15:40 2016
@@ -8,7 +8,7 @@
         <groupId>org.hps</groupId>
         <artifactId>hps-parent</artifactId>
         <relativePath>../parent/pom.xml</relativePath>
-        <version>3.6-SNAPSHOT</version>
+        <version>3.7-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/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	Tue Mar  1 11:15:40 2016
@@ -27,7 +27,8 @@
         <driver name="TrackingMonitoringGBLSingles0"/>  
         <driver name="TrackingResidualsSingles0"/>
         <driver name="FinalStateMonitoringSingles0"/>          
-        <driver name="V0MonitoringSingles0"/>          
+        <driver name="V0MonitoringSingles0"/>              
+        <driver name="V0MonitoringGBLSingles0"/>         
         <driver name="TridentMonitoringSingles0"/>
         <!-- Singles1 -->
         <driver name="EcalMonitoringSingles1"/>  
@@ -48,7 +49,8 @@
         <driver name="TrackingMonitoringGBLPairs0"/>  
         <driver name="TrackingResidualsPairs0"/>
         <driver name="FinalStateMonitoringPairs0"/>          
-        <driver name="V0MonitoringPairs0"/>          
+        <driver name="V0MonitoringPairs0"/>                
+        <driver name="V0MonitoringGBLPairs0"/>         
         <driver name="TridentMonitoringPairs0"/>
         <!-- Pairs1 -->
         <driver name="EcalMonitoringPairs1"/> 
@@ -84,11 +86,9 @@
         <!-- all triggers  -->
         <driver name="EcalMonitoring" type="org.hps.analysis.dataquality.EcalMonitoring">         
             <triggerType>all</triggerType>
-            <beamEnergy>${beamEnergy}</beamEnergy>
         </driver>
         <driver name="EcalMonitoringCorr" type="org.hps.analysis.dataquality.EcalMonitoring">         
             <triggerType>all</triggerType>
-            <beamEnergy>${beamEnergy}</beamEnergy>
             <clusterCollectionName>EcalClustersCorr</clusterCollectionName>
             <fillHitPlots>false</fillHitPlots>
         </driver>
@@ -104,15 +104,12 @@
         </driver>
         <driver name="FinalStateMonitoring" type="org.hps.analysis.dataquality.FinalStateMonitoring">
             <triggerType>all</triggerType>
-            <beamEnergy>${beamEnergy}</beamEnergy>
         </driver>
         <driver name="V0Monitoring" type="org.hps.analysis.dataquality.V0Monitoring">
             <triggerType>all</triggerType>
-            <beamEnergy>${beamEnergy}</beamEnergy>
         </driver>
         <driver name="TridentMonitoring" type="org.hps.analysis.dataquality.TridentMonitoring">
             <triggerType>all</triggerType>
-            <beamEnergy>${beamEnergy}</beamEnergy>
         </driver>
        <driver name="TrackingMonitoringGBL" type="org.hps.analysis.dataquality.TrackingMonitoring">
             <trackCollectionName>GBLTracks</trackCollectionName>
@@ -120,28 +117,23 @@
         </driver>    
         <driver name="FinalStateMonitoringGBL" type="org.hps.analysis.dataquality.FinalStateMonitoring">
             <triggerType>all</triggerType>
-            <beamEnergy>${beamEnergy}</beamEnergy>
             <isGBL>true</isGBL>
         </driver>
         <driver name="V0MonitoringGBL" type="org.hps.analysis.dataquality.V0Monitoring">
             <triggerType>all</triggerType>
             <isGBL>true</isGBL>
-            <beamEnergy>${beamEnergy}</beamEnergy>
         </driver>
         <driver name="TridentMonitoringGBL" type="org.hps.analysis.dataquality.TridentMonitoring">
             <triggerType>all</triggerType>
             <isGBL>true</isGBL>
-            <beamEnergy>${beamEnergy}</beamEnergy>
         </driver>
 
         <!-- singles0 triggers  -->
         <driver name="EcalMonitoringSingles0" type="org.hps.analysis.dataquality.EcalMonitoring">         
             <triggerType>singles0</triggerType>
-            <beamEnergy>${beamEnergy}</beamEnergy>
         </driver>
         <driver name="EcalMonitoringCorrSingles0" type="org.hps.analysis.dataquality.EcalMonitoring">         
             <triggerType>singles0</triggerType>
-            <beamEnergy>${beamEnergy}</beamEnergy>
             <clusterCollectionName>EcalClustersCorr</clusterCollectionName>
             <fillHitPlots>false</fillHitPlots>
         </driver>
@@ -160,25 +152,24 @@
         </driver>
         <driver name="FinalStateMonitoringSingles0" type="org.hps.analysis.dataquality.FinalStateMonitoring">
             <triggerType>singles0</triggerType>
-            <beamEnergy>${beamEnergy}</beamEnergy>
         </driver>
         <driver name="V0MonitoringSingles0" type="org.hps.analysis.dataquality.V0Monitoring">
             <triggerType>singles0</triggerType>
-            <beamEnergy>${beamEnergy}</beamEnergy>
+        </driver>
+         <driver name="V0MonitoringGBLSingles0" type="org.hps.analysis.dataquality.V0Monitoring">
+            <triggerType>singles0</triggerType>
+            <isGBL>true</isGBL>
         </driver>
         <driver name="TridentMonitoringSingles0" type="org.hps.analysis.dataquality.TridentMonitoring">
             <triggerType>singles0</triggerType>
-            <beamEnergy>${beamEnergy}</beamEnergy>
         </driver>
 
         <!-- singles1 triggers  -->
         <driver name="EcalMonitoringSingles1" type="org.hps.analysis.dataquality.EcalMonitoring">         
             <triggerType>singles1</triggerType>
-            <beamEnergy>${beamEnergy}</beamEnergy>
         </driver>
         <driver name="EcalMonitoringCorrSingles1" type="org.hps.analysis.dataquality.EcalMonitoring">         
             <triggerType>singles1</triggerType>
-            <beamEnergy>${beamEnergy}</beamEnergy>
             <clusterCollectionName>EcalClustersCorr</clusterCollectionName>
             <fillHitPlots>false</fillHitPlots>
         </driver>
@@ -197,40 +188,32 @@
         </driver>
         <driver name="FinalStateMonitoringSingles1" type="org.hps.analysis.dataquality.FinalStateMonitoring">
             <triggerType>singles1</triggerType>
-            <beamEnergy>${beamEnergy}</beamEnergy>
         </driver>
          <driver name="V0MonitoringSingles1" type="org.hps.analysis.dataquality.V0Monitoring">
             <triggerType>singles1</triggerType>
-            <beamEnergy>${beamEnergy}</beamEnergy>
         </driver>
         <driver name="TridentMonitoringSingles1" type="org.hps.analysis.dataquality.TridentMonitoring">
-            <triggerType>singles1</triggerType> 
-            <beamEnergy>${beamEnergy}</beamEnergy>           
+            <triggerType>singles1</triggerType>            
         </driver>
        <driver name="FinalStateMonitoringGBLSingles1" type="org.hps.analysis.dataquality.FinalStateMonitoring">
                <triggerType>singles1</triggerType>
             <isGBL>true</isGBL>
-            <beamEnergy>${beamEnergy}</beamEnergy>
         </driver>
         <driver name="V0MonitoringGBLSingles1" type="org.hps.analysis.dataquality.V0Monitoring">
             <triggerType>singles1</triggerType>
-            <beamEnergy>${beamEnergy}</beamEnergy>
             <isGBL>true</isGBL>
         </driver>
         <driver name="TridentMonitoringGBLSingles1" type="org.hps.analysis.dataquality.TridentMonitoring">
             <triggerType>singles1</triggerType>
             <isGBL>true</isGBL>
-            <beamEnergy>${beamEnergy}</beamEnergy>
         </driver>
  
         <!-- pairs0 triggers  -->
         <driver name="EcalMonitoringPairs0" type="org.hps.analysis.dataquality.EcalMonitoring">         
             <triggerType>pairs0</triggerType>
-            <beamEnergy>${beamEnergy}</beamEnergy>
         </driver>
         <driver name="EcalMonitoringCorrPairs0" type="org.hps.analysis.dataquality.EcalMonitoring">         
             <triggerType>pairs0</triggerType>
-            <beamEnergy>${beamEnergy}</beamEnergy>
             <clusterCollectionName>EcalClustersCorr</clusterCollectionName>
             <fillHitPlots>false</fillHitPlots>
         </driver>
@@ -249,26 +232,25 @@
         </driver>
         <driver name="FinalStateMonitoringPairs0" type="org.hps.analysis.dataquality.FinalStateMonitoring">
             <triggerType>pairs0</triggerType>
-            <beamEnergy>${beamEnergy}</beamEnergy>
         </driver>
         <driver name="V0MonitoringPairs0" type="org.hps.analysis.dataquality.V0Monitoring">
             <triggerType>pairs0</triggerType>
-            <beamEnergy>${beamEnergy}</beamEnergy>
+        </driver>
+        <driver name="V0MonitoringGBLPairs0" type="org.hps.analysis.dataquality.V0Monitoring">
+            <triggerType>pairs0</triggerType>
+            <isGBL>true</isGBL>
         </driver>
         <driver name="TridentMonitoringPairs0" type="org.hps.analysis.dataquality.TridentMonitoring">
             <triggerType>pairs0</triggerType>
-            <beamEnergy>${beamEnergy}</beamEnergy>
         </driver>
 
 
         <!-- pairs1 triggers  -->
         <driver name="EcalMonitoringPairs1" type="org.hps.analysis.dataquality.EcalMonitoring">         
             <triggerType>pairs1</triggerType>
-            <beamEnergy>${beamEnergy}</beamEnergy>
         </driver>
         <driver name="EcalMonitoringCorrPairs1" type="org.hps.analysis.dataquality.EcalMonitoring">         
             <triggerType>pairs1</triggerType>
-            <beamEnergy>${beamEnergy}</beamEnergy>
             <clusterCollectionName>EcalClustersCorr</clusterCollectionName>
             <fillHitPlots>false</fillHitPlots>
         </driver>
@@ -287,30 +269,24 @@
         </driver>
         <driver name="FinalStateMonitoringPairs1" type="org.hps.analysis.dataquality.FinalStateMonitoring">
             <triggerType>pairs1</triggerType>
-            <beamEnergy>${beamEnergy}</beamEnergy>
         </driver>
         <driver name="V0MonitoringPairs1" type="org.hps.analysis.dataquality.V0Monitoring">
             <triggerType>pairs1</triggerType>
-            <beamEnergy>${beamEnergy}</beamEnergy>
         </driver>
         <driver name="TridentMonitoringPairs1" type="org.hps.analysis.dataquality.TridentMonitoring">
             <triggerType>pairs1</triggerType>
-            <beamEnergy>${beamEnergy}</beamEnergy>
         </driver>
     <driver name="FinalStateMonitoringGBLPairs1" type="org.hps.analysis.dataquality.FinalStateMonitoring">
             <triggerType>pairs1</triggerType>
             <isGBL>true</isGBL>
-            <beamEnergy>${beamEnergy}</beamEnergy>
         </driver>
         <driver name="V0MonitoringGBLPairs1" type="org.hps.analysis.dataquality.V0Monitoring">
             <triggerType>pairs1</triggerType>
-            <beamEnergy>${beamEnergy}</beamEnergy>
             <isGBL>true</isGBL>
         </driver>
         <driver name="TridentMonitoringGBLPairs1" type="org.hps.analysis.dataquality.TridentMonitoring">
             <triggerType>pairs1</triggerType>
             <isGBL>true</isGBL>
-            <beamEnergy>${beamEnergy}</beamEnergy>
         </driver>
 
         <driver name="CleanupDriver" type="org.lcsim.recon.tracking.digitization.sisim.config.ReadoutCleanupDriver"/>

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

Modified: java/branches/jeremy-dev/tracking/src/main/java/org/hps/recon/tracking/HelicalTrackHitDriver.java
 =============================================================================
--- java/branches/jeremy-dev/tracking/src/main/java/org/hps/recon/tracking/HelicalTrackHitDriver.java	(original)
+++ java/branches/jeremy-dev/tracking/src/main/java/org/hps/recon/tracking/HelicalTrackHitDriver.java	Tue Mar  1 11:15:40 2016
@@ -41,15 +41,39 @@
 import org.lcsim.recon.tracking.digitization.sisim.TrackerHitType;
 
 /**
- * Driver used to create stereo hits from clusters.
- *
+ * This <code>Driver</code> creates 3D hits from SVT strip clusters of stereo pairs, which by default
+ * are read from the <b>StripClusterer_SiTrackerHitStrip1D</b> input collection.
+ * <p>
+ * The following collections will be added to the output event:
+ * <ul>
+ * <li>HelicalTrackHits</li>
+ * <li>RotatedHelicalTrackHits</li>
+ * <li>HelicalTrackHitRelations</li>
+ * <li>RotatedHelicalTrackHitRelations</li>
+ * <li>HelicalTrackMCRelations</li>
+ * <li>RotatedHelicalTrackMCRelations<li>
+ * </ul>
+ * <p>
+ * Class has the following default parameters values in the code (or from <code>EngineeringRun2015FullRecon.lcsim</code>):
+ * <ul>
+ * <li>{@link #setClusterTimeCut(double)} - 12.0 (ns)</li>
+ * <li>{@link #setMaxDt(double)} - 16.0 (ns)</li>
+ * <li>{@link #setClusterAmplitudeCut(double)} - 400.0</li>
+ * <li>{@link #setRejectGhostHits(boolean)} - <code>false</code></li>
+ * <li>{@link #setDebug(boolean)} - <code>false</code></li>
+ * <li>{@link #setEpsParallel(double)} - 0.013</li>
+ * <li>{@link #setEpsStereo(double)} - 0.01</li>
+ * <li>{@link #setSaveAxialHits(boolean)} - <code>false</code></li>
+ * <li>{@link #setStripHitsCollectionName(String)} - StripClusterer_SiTrackerHitStrip1D</li>
+ * <li>{@link #setHelicalTrackHitRelationsCollectionName(String)} - HelicalTrackHitRelations</li>
+ * <li>{@link #setHelicalTrackMCRelationsCollectionName(String)} -  HelicalTrackMCRelations</li>
+ * <li>{@link #setOutputHitCollectionName(String)} - HelicalTrackHits</li>
+ * </ul>
  *
  * @author Mathew Graham <[log in to unmask]>
  * @author Per Hansson <[log in to unmask]>
  * @author Omar Moreno <[log in to unmask]>
- *
  */
-// TODO: Add class documentation.
 // FIXME: The option to run using the Common geometry should be removed
 public class HelicalTrackHitDriver extends org.lcsim.fit.helicaltrack.HelicalTrackHitDriver {
 

Modified: java/branches/jeremy-dev/tracking/src/main/java/org/hps/svt/alignment/BuildCompact.java
 =============================================================================
--- java/branches/jeremy-dev/tracking/src/main/java/org/hps/svt/alignment/BuildCompact.java	(original)
+++ java/branches/jeremy-dev/tracking/src/main/java/org/hps/svt/alignment/BuildCompact.java	Tue Mar  1 11:15:40 2016
@@ -23,7 +23,7 @@
 import org.apache.commons.cli.Option;
 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.jdom.Document;
 import org.jdom.Element;
@@ -156,7 +156,7 @@
 			printHelpAndExit(options);
 		}
 
-		CommandLineParser parser = new DefaultParser();
+		CommandLineParser parser = new PosixParser();
 		CommandLine cl = null;
 		try {
 			cl = parser.parse(options, args);

Modified: java/branches/jeremy-dev/tracking/src/main/java/org/hps/svt/alignment/BuildMillepedeCompact.java
 =============================================================================
--- java/branches/jeremy-dev/tracking/src/main/java/org/hps/svt/alignment/BuildMillepedeCompact.java	(original)
+++ java/branches/jeremy-dev/tracking/src/main/java/org/hps/svt/alignment/BuildMillepedeCompact.java	Tue Mar  1 11:15:40 2016
@@ -29,7 +29,7 @@
 import org.apache.commons.cli.Option;
 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.hps.recon.tracking.CoordinateTransformations;
 import org.jdom.Attribute;
 import org.jdom.DataConversionException;
@@ -85,7 +85,7 @@
 			printHelpAndExit(options);
 		}
 
-		CommandLineParser parser = new DefaultParser();
+		CommandLineParser parser = new PosixParser();
 		CommandLine cl = null;
 		try {
 			cl = parser.parse(options, args);

Modified: java/branches/jeremy-dev/tracking/src/main/java/org/hps/svt/alignment/MillepedeCompactDump.java
 =============================================================================
--- java/branches/jeremy-dev/tracking/src/main/java/org/hps/svt/alignment/MillepedeCompactDump.java	(original)
+++ java/branches/jeremy-dev/tracking/src/main/java/org/hps/svt/alignment/MillepedeCompactDump.java	Tue Mar  1 11:15:40 2016
@@ -15,7 +15,7 @@
 
 import org.apache.commons.cli.CommandLine;
 import org.apache.commons.cli.CommandLineParser;
-import org.apache.commons.cli.DefaultParser;
+import org.apache.commons.cli.PosixParser;
 import org.apache.commons.cli.HelpFormatter;
 import org.apache.commons.cli.Option;
 import org.apache.commons.cli.Options;
@@ -54,7 +54,7 @@
 			printHelpAndExit(options);
 		}
 
-		CommandLineParser parser = new DefaultParser();
+		CommandLineParser parser = new PosixParser();
 		CommandLine cl = null;
 		try {
 			cl = parser.parse(options, args);

Modified: java/branches/jeremy-dev/users/pom.xml
 =============================================================================
--- java/branches/jeremy-dev/users/pom.xml	(original)
+++ java/branches/jeremy-dev/users/pom.xml	Tue Mar  1 11:15:40 2016
@@ -7,7 +7,7 @@
         <groupId>org.hps</groupId>
         <artifactId>hps-parent</artifactId>
         <relativePath>../parent/pom.xml</relativePath>
-        <version>3.6-SNAPSHOT</version>
+        <version>3.7-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/jeremym/EvioFileScanner.java
 =============================================================================
--- java/branches/jeremy-dev/users/src/main/java/org/hps/users/jeremym/EvioFileScanner.java	(original)
+++ java/branches/jeremy-dev/users/src/main/java/org/hps/users/jeremym/EvioFileScanner.java	Tue Mar  1 11:15:40 2016
@@ -28,7 +28,7 @@
 import org.apache.commons.cli.CommandLine;
 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.hps.conditions.database.ConnectionParameters;
 import org.hps.record.evio.EvioEventConstants;
 import org.hps.record.evio.EvioEventUtilities;
@@ -484,7 +484,7 @@
 
     final Set<Integer> acceptRuns = new HashSet<Integer>();
 
-    final DefaultParser parser = new DefaultParser();
+    final PosixParser parser = new PosixParser();
 
     boolean printSummary = false;
 

Modified: java/branches/jeremy-dev/users/src/main/java/org/hps/users/meeg/FilterMCBunches.java
 =============================================================================
--- java/branches/jeremy-dev/users/src/main/java/org/hps/users/meeg/FilterMCBunches.java	(original)
+++ java/branches/jeremy-dev/users/src/main/java/org/hps/users/meeg/FilterMCBunches.java	Tue Mar  1 11:15:40 2016
@@ -17,7 +17,7 @@
 import org.apache.commons.cli.Option;
 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.lcsim.event.EventHeader;
 import org.lcsim.event.MCParticle;
 import org.lcsim.event.RawCalorimeterHit;
@@ -70,7 +70,7 @@
     public static void main(String[] args) {
         // Set up command line parsing.
         Options options = createCommandLineOptions();
-        CommandLineParser parser = new DefaultParser();
+        CommandLineParser parser = new PosixParser();
 
         // Parse command line arguments.
         CommandLine cl = null;

Modified: java/branches/jeremy-dev/users/src/main/java/org/hps/users/meeg/MergeMCBunches.java
 =============================================================================
--- java/branches/jeremy-dev/users/src/main/java/org/hps/users/meeg/MergeMCBunches.java	(original)
+++ java/branches/jeremy-dev/users/src/main/java/org/hps/users/meeg/MergeMCBunches.java	Tue Mar  1 11:15:40 2016
@@ -13,7 +13,7 @@
 import org.apache.commons.cli.Option;
 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.lcsim.event.EventHeader;
 import org.lcsim.event.MCParticle;
 import org.lcsim.event.SimCalorimeterHit;
@@ -49,7 +49,7 @@
     public static void main(String[] args) {
         // Set up command line parsing.
         Options options = createCommandLineOptions();
-        CommandLineParser parser = new DefaultParser();
+        CommandLineParser parser = new PosixParser();
 
         // Parse command line arguments.
         CommandLine cl = null;
@@ -191,4 +191,4 @@
             throw new RuntimeException(e);
         }
     }
-}
+}

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	Tue Mar  1 11:15:40 2016
@@ -12,7 +12,7 @@
 import java.util.logging.Logger;
 import org.apache.commons.cli.CommandLine;
 import org.apache.commons.cli.CommandLineParser;
-import org.apache.commons.cli.DefaultParser;
+import org.apache.commons.cli.PosixParser;
 import org.apache.commons.cli.HelpFormatter;
 import org.apache.commons.cli.Option;
 import org.apache.commons.cli.Options;
@@ -50,7 +50,7 @@
         options.addOption(new Option("t", false, "use TI timestamp instead of Unix time (higher precision, but requires TI time offset in run DB)"));
         options.addOption(new Option("c", false, "get TI time offset from CSV log file instead of run DB"));
 
-        final CommandLineParser parser = new DefaultParser();
+        final CommandLineParser parser = new PosixParser();
         CommandLine cl = null;
         try {
             cl = parser.parse(options, args);

Modified: java/branches/jeremy-dev/users/src/main/java/org/hps/users/omoreno/LheToStdhep.java
 =============================================================================
--- java/branches/jeremy-dev/users/src/main/java/org/hps/users/omoreno/LheToStdhep.java	(original)
+++ java/branches/jeremy-dev/users/src/main/java/org/hps/users/omoreno/LheToStdhep.java	Tue Mar  1 11:15:40 2016
@@ -15,7 +15,7 @@
 import org.apache.commons.cli.CommandLineParser;
 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.jdom.Document;
 import org.jdom.Element;
 import org.jdom.JDOMException;
@@ -58,7 +58,7 @@
 		String stdhepFileName = "output.stdhep";
 		
 		// Instantiate te command line parser
-		CommandLineParser parser = new DefaultParser(); 
+		CommandLineParser parser = new PosixParser(); 
 
 		// Create the Options
 		// TODO: Add ability to parse list of files.

Modified: java/branches/jeremy-dev/users/src/main/java/org/hps/users/phansson/testrun/dataMCPlots.java
 =============================================================================
--- java/branches/jeremy-dev/users/src/main/java/org/hps/users/phansson/testrun/dataMCPlots.java	(original)
+++ java/branches/jeremy-dev/users/src/main/java/org/hps/users/phansson/testrun/dataMCPlots.java	Tue Mar  1 11:15:40 2016
@@ -25,7 +25,7 @@
 import org.apache.commons.cli.HelpFormatter;
 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.lcsim.util.aida.AIDA;
 
 /**
@@ -93,7 +93,7 @@
             help.printHelp(" ", opts);
             System.exit(1);
         }
-        CommandLineParser parser = new DefaultParser();
+        CommandLineParser parser = new PosixParser();
         CommandLine cmd=null;
         try {
             cmd = parser.parse(opts, args);

Modified: java/branches/jeremy-dev/users/src/main/java/org/hps/users/phansson/testrun/ecalPlots.java
 =============================================================================
--- java/branches/jeremy-dev/users/src/main/java/org/hps/users/phansson/testrun/ecalPlots.java	(original)
+++ java/branches/jeremy-dev/users/src/main/java/org/hps/users/phansson/testrun/ecalPlots.java	Tue Mar  1 11:15:40 2016
@@ -19,7 +19,7 @@
 import org.apache.commons.cli.HelpFormatter;
 import org.apache.commons.cli.Options;
 import org.apache.commons.cli.ParseException;
-import org.apache.commons.cli.DefaultParser;
+import org.apache.commons.cli.PosixParser;
 
 /**
  *
@@ -72,7 +72,7 @@
             help.printHelp(" ", opts);
             System.exit(1);
         }
-        CommandLineParser parser = new DefaultParser();
+        CommandLineParser parser = new PosixParser();
         CommandLine cmd=null;
         try {
             cmd = parser.parse(opts, args);

Modified: java/branches/jeremy-dev/users/src/main/java/org/hps/users/phansson/testrun/trigRate.java
 =============================================================================
--- java/branches/jeremy-dev/users/src/main/java/org/hps/users/phansson/testrun/trigRate.java	(original)
+++ java/branches/jeremy-dev/users/src/main/java/org/hps/users/phansson/testrun/trigRate.java	Tue Mar  1 11:15:40 2016
@@ -17,7 +17,7 @@
 import org.apache.commons.cli.Option;
 import org.apache.commons.cli.Options;
 import org.apache.commons.cli.ParseException;
-import org.apache.commons.cli.DefaultParser;
+import org.apache.commons.cli.PosixParser;
 
 /**
  *
@@ -73,7 +73,7 @@
             help.printHelp(" ", options);
             System.exit(1);
         }
-        CommandLineParser parser = new DefaultParser();
+        CommandLineParser parser = new PosixParser();
         
         CommandLine cl = null;
         try {

Modified: java/branches/jeremy-dev/users/src/main/java/org/hps/users/phansson/tools/DumpAIDATextFiles.java
 =============================================================================
--- java/branches/jeremy-dev/users/src/main/java/org/hps/users/phansson/tools/DumpAIDATextFiles.java	(original)
+++ java/branches/jeremy-dev/users/src/main/java/org/hps/users/phansson/tools/DumpAIDATextFiles.java	Tue Mar  1 11:15:40 2016
@@ -21,7 +21,7 @@
 import org.apache.commons.cli.Option;
 import org.apache.commons.cli.Options;
 import org.apache.commons.cli.ParseException;
-import org.apache.commons.cli.DefaultParser;
+import org.apache.commons.cli.PosixParser;
 
 /**
  *
@@ -116,7 +116,7 @@
             help.printHelp(" ", options);
             System.exit(1);
         }
-        CommandLineParser parser = new DefaultParser();
+        CommandLineParser parser = new PosixParser();
         CommandLine cl = null;
         try {
             cl = parser.parse(options, args);

Modified: java/branches/jeremy-dev/users/src/main/java/org/hps/users/phansson/tools/mergeSimpleAIDA.java
 =============================================================================
--- java/branches/jeremy-dev/users/src/main/java/org/hps/users/phansson/tools/mergeSimpleAIDA.java	(original)
+++ java/branches/jeremy-dev/users/src/main/java/org/hps/users/phansson/tools/mergeSimpleAIDA.java	Tue Mar  1 11:15:40 2016
@@ -20,7 +20,7 @@
 import org.apache.commons.cli.HelpFormatter;
 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.lcsim.util.aida.AIDA;
 
 /**
@@ -52,7 +52,7 @@
             help.printHelp(" ", opts);
             System.exit(1);
         }
-        CommandLineParser parser = new DefaultParser();
+        CommandLineParser parser = new PosixParser();
         CommandLine cmd = null;
         try {
             cmd = parser.parse(opts, args);

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

Modified: java/branches/jeremy-dev/util/src/main/java/org/hps/util/CalculateAcceptanceFromMadGraph.java
 =============================================================================
--- java/branches/jeremy-dev/util/src/main/java/org/hps/util/CalculateAcceptanceFromMadGraph.java	(original)
+++ java/branches/jeremy-dev/util/src/main/java/org/hps/util/CalculateAcceptanceFromMadGraph.java	Tue Mar  1 11:15:40 2016
@@ -21,7 +21,7 @@
 import org.apache.commons.cli.Option;
 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.lcsim.fit.helicaltrack.HelixParamCalculator;
 
 public class CalculateAcceptanceFromMadGraph {
@@ -165,7 +165,7 @@
         // Set up command line parsing.
         Options options = createCommandLineOptions();
 
-        CommandLineParser parser = new DefaultParser();
+        CommandLineParser parser = new PosixParser();
 
         // Parse command line arguments.
         CommandLine cl = null;

Modified: java/branches/jeremy-dev/util/src/main/java/org/hps/util/ConvertToStdhep.java
 =============================================================================
--- java/branches/jeremy-dev/util/src/main/java/org/hps/util/ConvertToStdhep.java	(original)
+++ java/branches/jeremy-dev/util/src/main/java/org/hps/util/ConvertToStdhep.java	Tue Mar  1 11:15:40 2016
@@ -31,7 +31,7 @@
 import org.apache.commons.cli.Option;
 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.lcsim.detector.IRotation3D;
 import org.lcsim.detector.RotationGeant;
 
@@ -95,7 +95,7 @@
         // Set up command line parsing.
         Options options = createCommandLineOptions();
 
-        CommandLineParser parser = new DefaultParser();
+        CommandLineParser parser = new PosixParser();
 
         // Parse command line arguments.
         CommandLine cl = null;

Modified: java/branches/jeremy-dev/util/src/main/java/org/hps/util/DumpLHEEventsToASCII.java
 =============================================================================
--- java/branches/jeremy-dev/util/src/main/java/org/hps/util/DumpLHEEventsToASCII.java	(original)
+++ java/branches/jeremy-dev/util/src/main/java/org/hps/util/DumpLHEEventsToASCII.java	Tue Mar  1 11:15:40 2016
@@ -26,7 +26,7 @@
 import org.apache.commons.cli.Option;
 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.lcsim.detector.IRotation3D;
 import org.lcsim.detector.RotationGeant;
 
@@ -89,7 +89,7 @@
         // Set up command line parsing.
         Options options = createCommandLineOptions();
 
-        CommandLineParser parser = new DefaultParser();
+        CommandLineParser parser = new PosixParser();
 
         // Parse command line arguments.
         CommandLine cl = null;

Top of Message | Previous Page | Permalink

Advanced Options


Options

Log In

Log In

Get Password

Get Password


Search Archives

Search Archives


Subscribe or Unsubscribe

Subscribe or Unsubscribe


Archives

November 2017
August 2017
July 2017
January 2017
December 2016
November 2016
October 2016
September 2016
August 2016
July 2016
June 2016
May 2016
April 2016
March 2016
February 2016
January 2016
December 2015
November 2015
October 2015
September 2015
August 2015
July 2015
June 2015
May 2015
April 2015
March 2015
February 2015
January 2015
December 2014
November 2014
October 2014
September 2014
August 2014
July 2014
June 2014
May 2014
April 2014
March 2014
February 2014
January 2014
December 2013
November 2013

ATOM RSS1 RSS2



LISTSERV.SLAC.STANFORD.EDU

Secured by F-Secure Anti-Virus CataList Email List Search Powered by the LISTSERV Email List Manager

Privacy Notice, Security Notice and Terms of Use