Print

Print


Author: [log in to unmask]
Date: Mon Feb 15 14:49:25 2016
New Revision: 4227

Log:
made modifications to DQM:  increase window sizes for higher beam energies; removed creation of .aida files (now root only), pass in beamEnergy as an argument for DataQualityRecon.lcsim

Modified:
    java/trunk/analysis/src/main/java/org/hps/analysis/dataquality/EcalMonitoring.java
    java/trunk/analysis/src/main/java/org/hps/analysis/dataquality/FinalStateMonitoring.java
    java/trunk/analysis/src/main/java/org/hps/analysis/dataquality/TridentMonitoring.java
    java/trunk/analysis/src/main/java/org/hps/analysis/dataquality/V0Monitoring.java
    java/trunk/steering-files/src/main/resources/org/hps/steering/production/DataQualityRecon.lcsim

Modified: java/trunk/analysis/src/main/java/org/hps/analysis/dataquality/EcalMonitoring.java
 =============================================================================
--- java/trunk/analysis/src/main/java/org/hps/analysis/dataquality/EcalMonitoring.java	(original)
+++ java/trunk/analysis/src/main/java/org/hps/analysis/dataquality/EcalMonitoring.java	Mon Feb 15 14:49:25 2016
@@ -73,7 +73,14 @@
     boolean fillHitPlots = true;
     String[] ecalQuantNames = {"avg_N_hits", "avg_Hit_Energy",
         "avg_N_clusters", "avg_N_hitsPerCluster", "avg_Cluster_Energy", "avg_ClusterTime"};
-    double maxE = 1.1;
+    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/";
     private final String plotFidCutDir = "FiducialCut/";
@@ -90,6 +97,7 @@
         this.clusterCollectionName = clusterCollectionName;
     }
 
+    
     public void setFillHitPlots(boolean fill) {
         this.fillHitPlots = fill;
     }
@@ -102,32 +110,32 @@
             // Setup hit plots.
             hitCountPlot = aida.histogram1D(plotHitsDir + triggerType + "/"+ calibratedHitCollectionName + " Hit Count In Event", 40, -0.5, 39.5);
             hitTimePlot = aida.histogram1D(plotHitsDir + triggerType + "/"+calibratedHitCollectionName + " Hit Time", 50, 0 * 4.0, 50 * 4.0);
-            hitEnergyPlot = aida.histogram1D(plotHitsDir + triggerType + "/"+calibratedHitCollectionName + " Hit Energy", 100, -0.1, maxE);
+            hitEnergyPlot = aida.histogram1D(plotHitsDir + triggerType + "/"+calibratedHitCollectionName + " Hit Energy", 100, -0.1, beamEnergy*maxFactor);
             fiducialHitCountPlot = aida.histogram1D(plotHitsDir + triggerType + "/"+calibratedHitCollectionName + " Hit Count with Fiducial Cut", 10, -0.5, 9.5);
-            fiducialEnergyPlot = aida.histogram1D(plotHitsDir + triggerType + "/"+calibratedHitCollectionName + " Hit Energy with Fiducial Cut", 100, -0.1, maxE);
+            fiducialEnergyPlot = aida.histogram1D(plotHitsDir + triggerType + "/"+calibratedHitCollectionName + " Hit Energy with Fiducial Cut", 100, -0.1, beamEnergy*maxFactor);
         }
         // Setup cluster plots
         clusterCountPlot = aida.histogram1D(plotClustersDir +  triggerType + "/"+clusterCollectionName + " Cluster Count per Event", 10, -0.5, 9.5);
         clusterSizePlot = aida.histogram1D(plotClustersDir +  triggerType + "/"+clusterCollectionName + " Cluster Size", 10, -0.5, 9.5);
-        clusterEnergyPlot = aida.histogram1D(plotClustersDir +  triggerType + "/"+clusterCollectionName + " Cluster Energy", 100, -0.1, maxE);
+        clusterEnergyPlot = aida.histogram1D(plotClustersDir +  triggerType + "/"+clusterCollectionName + " Cluster Energy", 100, -0.1, beamEnergy*maxFactor);
         clusterTimes = aida.histogram1D(plotClustersDir +  triggerType + "/"+clusterCollectionName + " Cluster Seed Times", 400, 0, 4.0 * 50);
         clusterTimeMean = aida.histogram1D(plotClustersDir +  triggerType + "/"+clusterCollectionName + " Cluster Time Mean", 400, 0, 4.0 * 50);
         clusterTimeSigma = aida.histogram1D(plotClustersDir +  triggerType + "/"+clusterCollectionName + " Cluster Time Sigma", 100, 0, 10);
-        twoclusterTotEnergy = aida.histogram1D(plotClustersDir +  triggerType + "/"+clusterCollectionName + " Two Cluster Energy Sum", 100, 0, maxE);
-        twoclusterEnergyAsymmetry = aida.histogram1D(plotClustersDir +  triggerType + "/"+clusterCollectionName + " Two Cluster Energy Asymmetry", 100, 0, 1.0);
-        energyVsT = aida.histogram2D(plotClustersDir +  triggerType + "/"+clusterCollectionName + " Energy vs time", 400, 0.0, 200.0, 100, -0.1, maxE);
+        twoclusterTotEnergy = aida.histogram1D(plotClustersDir +  triggerType + "/"+clusterCollectionName + " Two Cluster Energy Sum", 100, 0, beamEnergy*maxFactor);
+        twoclusterEnergyAsymmetry = aida.histogram1D(plotClustersDir +  triggerType + "/"+clusterCollectionName + " Two Cluster Energy Asymmetry", 100, 0, beamEnergy*maxFactor);
+        energyVsT = aida.histogram2D(plotClustersDir +  triggerType + "/"+clusterCollectionName + " Energy vs time", 400, 0.0, 200.0, 100, -0.1, beamEnergy*maxFactor);
         xVsY = aida.histogram2D(plotClustersDir +  triggerType + "/"+clusterCollectionName + " X vs Y (NHits >1)", 200, -200.0, 200.0, 85, -85.0, 85.0);
-        energyVsX = aida.histogram2D(plotClustersDir +  triggerType + "/"+clusterCollectionName + " Energy vs X", 50, 0, 1.6, 50, .0, 200.0);
-        energyVsY = aida.histogram2D(plotClustersDir +  triggerType + "/"+clusterCollectionName + " Energy vs Y", 50, 0, 1.6, 50, 20.0, 85.0);
-        pairsE1vsE2 = aida.histogram2D(plotClustersDir +  triggerType + "/"+clusterCollectionName + "Pair E1 vs E2", 50, 0, 2, 50, 0, 2);
+        energyVsX = aida.histogram2D(plotClustersDir +  triggerType + "/"+clusterCollectionName + " Energy vs X", 50, 0, maxFactor*beamEnergy, 50, .0, 200.0);
+        energyVsY = aida.histogram2D(plotClustersDir +  triggerType + "/"+clusterCollectionName + " Energy vs Y", 50, 0, maxFactor*beamEnergy, 50, 20.0, 85.0);
+        pairsE1vsE2 = aida.histogram2D(plotClustersDir +  triggerType + "/"+clusterCollectionName + "Pair E1 vs E2", 50, 0, beamEnergy*maxFactor, 50, 0, beamEnergy*maxFactor);
         pairsT1vsT2 = aida.histogram2D(plotClustersDir +  triggerType + "/"+clusterCollectionName + "Pair T1 vs T2", 200, 0, 100, 200, 0, 100);
         pairsDeltaT = aida.histogram1D(plotClustersDir + triggerType + "/" + clusterCollectionName + " Pair Time Difference", 100, -20.0, 20.0);
 
         fiducialClusterCountPlot = aida.histogram1D(plotClustersDir +  triggerType + "/"+plotFidCutDir + clusterCollectionName + " Cluster Count with Fiducal Cut", 10, -0.5, 9.5);
         fiducialClusterSizePlot = aida.histogram1D(plotClustersDir+  triggerType + "/" +plotFidCutDir + clusterCollectionName + " Cluster Size with Fiducal Cut", 10, -0.5, 9.5);
-        fiducialClusterEnergyPlot = aida.histogram1D(plotClustersDir +  triggerType + "/"+plotFidCutDir  + clusterCollectionName + " Cluster Energy with Fiducal Cut", 100, -0.1, maxE);
-        fiducialenergyVsY = aida.histogram2D(plotClustersDir +  triggerType + "/"+plotFidCutDir + clusterCollectionName + " Energy vs Y with Fiducial Cuts", 50, 0, 1.6, 50, 45.0, 85.0);
-        fiducialenergyVsX = aida.histogram2D(plotClustersDir+  triggerType + "/" +plotFidCutDir + clusterCollectionName + " Energy vs X with Fiducial Cuts", 50, 0, 1.6, 50, 0.0, 200.0);
+        fiducialClusterEnergyPlot = aida.histogram1D(plotClustersDir +  triggerType + "/"+plotFidCutDir  + clusterCollectionName + " Cluster Energy with Fiducal Cut", 100, -0.1, beamEnergy*maxFactor);
+        fiducialenergyVsY = aida.histogram2D(plotClustersDir +  triggerType + "/"+plotFidCutDir + clusterCollectionName + " Energy vs Y with Fiducial Cuts", 50, 0, beamEnergy*maxFactor, 50, 45.0, 85.0);
+        fiducialenergyVsX = aida.histogram2D(plotClustersDir+  triggerType + "/" +plotFidCutDir + clusterCollectionName + " Energy vs X with Fiducial Cuts", 50, 0, beamEnergy*maxFactor, 50, 0.0, 200.0);
 
     }
 

Modified: java/trunk/analysis/src/main/java/org/hps/analysis/dataquality/FinalStateMonitoring.java
 =============================================================================
--- java/trunk/analysis/src/main/java/org/hps/analysis/dataquality/FinalStateMonitoring.java	(original)
+++ java/trunk/analysis/src/main/java/org/hps/analysis/dataquality/FinalStateMonitoring.java	Mon Feb 15 14:49:25 2016
@@ -62,7 +62,7 @@
     private final String plotDir = "FinalStateParticles/";
     double beamEnergy = 1.05; //GeV
     double maxFactor = 1.5;
-    double feeMomentumCut = 0.8; //GeV
+    double feeMomentumCut = 0.75; //this number, multiplied by the beam energy, is the actual cut
 
     IHistogram1D elePx;
     IHistogram1D elePy;
@@ -97,6 +97,10 @@
     /* number of unassocaited tracks/event */
     IHistogram1D nUnAssTracksHisto;
     
+    
+    public void setBeamEnergy(double e){
+    	this.beamEnergy = e;
+    }
     public void setFinalStateParticlesColName(String fsp) {
         this.finalStateParticlesColName = fsp;
     }
@@ -111,24 +115,24 @@
        
         /*  Final State Particle Quantities   */
         /*  plot electron & positron momentum separately  */
-        elePx = aida.histogram1D(plotDir +trkType+ triggerType + "/" + "Electron Px (GeV)", 100, -0.1, 0.200);
-        elePy = aida.histogram1D(plotDir +trkType+ triggerType + "/" + "Electron Py (GeV)", 100, -0.1, 0.1);
+        elePx = aida.histogram1D(plotDir +trkType+ triggerType + "/" + "Electron Px (GeV)", 100, -0.1*beamEnergy, 0.200*beamEnergy);
+        elePy = aida.histogram1D(plotDir +trkType+ triggerType + "/" + "Electron Py (GeV)", 100, -0.1*beamEnergy, 0.1*beamEnergy);
         elePz = aida.histogram1D(plotDir +trkType+ triggerType + "/" + "Electron Pz (GeV)", 100, 0, beamEnergy * maxFactor);
-        elePzBeam = aida.histogram1D(plotDir +trkType+ triggerType + "/" + "Beam Electrons Total P (GeV)", 100, feeMomentumCut, beamEnergy * maxFactor);
-        elePzBeamTop = aida.histogram1D(plotDir +trkType+ triggerType + "/" + "Beam Electrons Total P (GeV):  Top", 100, feeMomentumCut, beamEnergy * maxFactor);
-        elePzBeamBottom = aida.histogram1D(plotDir +trkType+ triggerType + "/" + "Beam Electrons Total P (GeV):  Bottom", 100, feeMomentumCut, beamEnergy * maxFactor);
+        elePzBeam = aida.histogram1D(plotDir +trkType+ triggerType + "/" + "Beam Electrons Total P (GeV)", 100, feeMomentumCut*beamEnergy, beamEnergy * maxFactor);
+        elePzBeamTop = aida.histogram1D(plotDir +trkType+ triggerType + "/" + "Beam Electrons Total P (GeV):  Top", 100, feeMomentumCut*beamEnergy, beamEnergy * maxFactor);
+        elePzBeamBottom = aida.histogram1D(plotDir +trkType+ triggerType + "/" + "Beam Electrons Total P (GeV):  Bottom", 100, feeMomentumCut*beamEnergy, beamEnergy * maxFactor);
         elePTop = aida.histogram1D(plotDir +trkType+ triggerType + "/" + "Electron Total P (GeV):  Top", 100, 0, beamEnergy * maxFactor);
         elePBottom = aida.histogram1D(plotDir +trkType+ triggerType + "/" + "Electron Total P (GeV):  Bottom", 100, 0, beamEnergy * maxFactor);
 
-        posPx = aida.histogram1D(plotDir +trkType+ triggerType + "/" + "Positron Px (GeV)", 50, -0.1, 0.200);
-        posPy = aida.histogram1D(plotDir +trkType+ triggerType + "/" + "Positron Py (GeV)", 50, -0.1, 0.1);
+        posPx = aida.histogram1D(plotDir +trkType+ triggerType + "/" + "Positron Px (GeV)", 50, -0.1*beamEnergy, 0.200*beamEnergy);
+        posPy = aida.histogram1D(plotDir +trkType+ triggerType + "/" + "Positron Py (GeV)", 50, -0.1*beamEnergy, 0.1*beamEnergy);
         posPz = aida.histogram1D(plotDir +trkType+ triggerType + "/" + "Positron Pz (GeV)", 50, 0, beamEnergy * maxFactor);
         posPTop = aida.histogram1D(plotDir +trkType+ triggerType + "/" + "Positron Total P (GeV):  Top", 100, 0, beamEnergy * maxFactor);
         posPBottom = aida.histogram1D(plotDir +trkType+ triggerType + "/" + "Positron Total P (GeV):  Bottom", 100, 0, beamEnergy * maxFactor);
 
         /*  photon quanties (...right now, just unassociated clusters) */
         nPhotonsHisto = aida.histogram1D(plotDir +trkType+ triggerType + "/" + "Number of photons per event", 15, 0, 15);
-        enePhoton = aida.histogram1D(plotDir +trkType+ triggerType + "/" + "Photon Energy (GeV)", 50, 0, 2.4);
+        enePhoton = aida.histogram1D(plotDir +trkType+ triggerType + "/" + "Photon Energy (GeV)", 50, 0, 2.4*beamEnergy);
         xPhoton = aida.histogram1D(plotDir +trkType+ triggerType + "/" + "Photon X position (mm)", 50, -200, 200);
         yPhoton = aida.histogram1D(plotDir +trkType+ triggerType + "/" + "Photon Y position (mm)", 50, -100, 100);
 

Modified: java/trunk/analysis/src/main/java/org/hps/analysis/dataquality/TridentMonitoring.java
 =============================================================================
--- java/trunk/analysis/src/main/java/org/hps/analysis/dataquality/TridentMonitoring.java	(original)
+++ java/trunk/analysis/src/main/java/org/hps/analysis/dataquality/TridentMonitoring.java	Mon Feb 15 14:49:25 2016
@@ -74,6 +74,36 @@
     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",
@@ -216,8 +246,8 @@
     private final IHistogram1D[][] cutVertexZ = new IHistogram1D[Cut.nCuts][2];
     private final IHistogram2D[][] cutVertexZVsMass = new IHistogram2D[Cut.nCuts][2];
 
-    private final double plotsMinMass = 0.03 * ebeam;
-    private final double plotsMaxMass = 0.04 * ebeam;
+    private  double plotsMinMass = 0.03 * ebeam;
+    private  double plotsMaxMass = 0.04 * ebeam;
 
     //clean up event first
     private final int nTrkMax = 5;
@@ -228,29 +258,29 @@
     private final double maxVertChi2 = 7.0;
 
     //v0 plot ranges
-    private final double v0PzMax = 1.25 * ebeam;//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  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 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 final double v0PzMaxCut = 1.25 * ebeam;//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  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
     
 //  track quality cuts
-    private final double beamPCut = 0.85;
-    private final double minPCut = 0.05;
+    private  double beamPCut = 0.85 * ebeam;
+    private  double minPCut = 0.05;
 //    private double trkPyMax = 0.2;
 //    private double trkPxMax = 0.2;
-    private final double radCut = 0.8 * ebeam;
+    private  double radCut = 0.8 * ebeam;
     private final double trkTimeDiff = 5.0;
     private final double clusterTimeDiffCut = 2.5;
 
@@ -268,9 +298,7 @@
     private float nRecoV0 = 0;
     private final float[] nPassCut = new float[Cut.nCuts];
 
-    public void setEbeam(double ebeam) {
-        this.ebeam = ebeam;
-    }
+   
 
     @Override
     protected void detectorChanged(Detector detector) {

Modified: java/trunk/analysis/src/main/java/org/hps/analysis/dataquality/V0Monitoring.java
 =============================================================================
--- java/trunk/analysis/src/main/java/org/hps/analysis/dataquality/V0Monitoring.java	(original)
+++ java/trunk/analysis/src/main/java/org/hps/analysis/dataquality/V0Monitoring.java	Mon Feb 15 14:49:25 2016
@@ -150,19 +150,40 @@
     private final BasicHep3Matrix beamAxisRotation = new BasicHep3Matrix();
 
     double maxFactor = 1.25;
-    double feeMomentumCut = 0.8; //GeV
-
-    double v0ESumMinCut = 0.8 * beamEnergy;
-    double v0ESumMaxCut = 1.25 * beamEnergy;
-    double v0MaxPCut = 1.1;//GeV
-    double molPSumMin = 0.85;
-    double molPSumMax = 1.3;
-    double beambeamCut = 0.85;
+    
+    
     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");
@@ -171,10 +192,13 @@
         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, 0.200);
+        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);
@@ -182,7 +206,7 @@
         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, 0.200);
+        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);
@@ -190,7 +214,7 @@
         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, 0.200);
+        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);
@@ -206,9 +230,9 @@
 
         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, 0.04, 50, -0.04, 0.04);
-        pxEleVspxPos = aida.histogram2D(plotDir + trkType + triggerType + "/" + xtra + "/" + "Px(e) vs Px(p)", 50, -0.04, 0.04, 50, -0.04, 0.04);
-        VtxZVsMass = aida.histogram2D(plotDir + trkType + triggerType + "/" + xtra + "/" + "Vz vs Mass", 50, 0, 0.15, 50, -50, 80);
+        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);
@@ -221,13 +245,13 @@
         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, 0.04, 50, -0.04, 0.04);
-        pxEleVspxEle = aida.histogram2D(plotDir + trkType + triggerType + "/" + xtra + "/" + "2 Electron/Px(e) vs Px(e)", 50, -0.02, 0.06, 50, -0.02, 0.06);
+        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, 0.04, 50, -0.04, 0.04);
-        pxEleVspxEleNoBeam = aida.histogram2D(plotDir + trkType + triggerType + "/" + xtra + "/" + "2 Electron/Px(e) vs Px(e) NoBeam", 50, -0.02, 0.06, 50, -0.02, 0.06);
+        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);
 
@@ -236,8 +260,8 @@
         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, 0.100);
-        mollerMassVtxCut = aida.histogram1D(plotDir + trkType + triggerType + "/" + xtra + "/" + "2 Electron/Moller Mass (GeV): VtxCut", 100, 0, 0.100);
+        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);
@@ -246,8 +270,8 @@
         mollerYVsVtxZ = aida.histogram2D(plotDir + trkType + triggerType + "/" + xtra + "/" + "2 Electron/Moller Vy vs Vz", 100, -2, 2, 100, -50, 50);
         mollerXVsVtxY = aida.histogram2D(plotDir + trkType + triggerType + "/" + xtra + "/" + "2 Electron/Moller Vx vs Vy", 100, -5, 5, 100, -2, 2);
     
-        mollerUx = aida.histogram1D(plotDir + trkType + triggerType + "/" + xtra + "/" + "2 Electron/Moller Pair Momentum Direction Ux", 100, .025, .035);
-        mollerUy = aida.histogram1D(plotDir + trkType + triggerType + "/" + xtra + "/" + "2 Electron/Moller Pair Momentum Direction Uy", 100, -.005, .005);
+        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);
     
         
         
@@ -471,8 +495,10 @@
                 mollerYVsVtxZ.fill(bv.getPosition().y(), bv.getPosition().z());
                 mollerXVsVtxY.fill(bv.getPosition().x(), bv.getPosition().y());
                 
-                mollerUx.fill((p1.x()+p2.x())/(p1.z()+p2.z()));
-                mollerUy.fill((p1.y()+p2.y())/(p1.z()+p2.z()));
+                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) {

Modified: java/trunk/steering-files/src/main/resources/org/hps/steering/production/DataQualityRecon.lcsim
 =============================================================================
--- java/trunk/steering-files/src/main/resources/org/hps/steering/production/DataQualityRecon.lcsim	(original)
+++ java/trunk/steering-files/src/main/resources/org/hps/steering/production/DataQualityRecon.lcsim	Mon Feb 15 14:49:25 2016
@@ -9,7 +9,8 @@
         <!--        <driver name="DQMDatabaseDriver"/>  -->
         <driver name="RawTrackerHitSensorSetup"/>
         <driver name="EcalMonitoring"/>  
-        <driver name="SVTMonitoring"/>  
+        <driver name="EcalMonitoringCorr"/>  
+          <driver name="SVTMonitoring"/>
         <driver name="TrackingMonitoring"/>  
         <driver name="TrackingResiduals"/>
         <driver name="FinalStateMonitoring"/>          
@@ -21,6 +22,7 @@
         <driver name="TridentMonitoringGBL"/>
         <!-- Singles0 -->
         <driver name="EcalMonitoringSingles0"/>  
+        <driver name="EcalMonitoringCorrSingles0"/> 
         <driver name="TrackingMonitoringSingles0"/>  
         <driver name="TrackingMonitoringGBLSingles0"/>  
         <driver name="TrackingResidualsSingles0"/>
@@ -29,6 +31,7 @@
         <driver name="TridentMonitoringSingles0"/>
         <!-- Singles1 -->
         <driver name="EcalMonitoringSingles1"/>  
+        <driver name="EcalMonitoringCorrSingles1"/>  
         <driver name="TrackingMonitoringSingles1"/>  
         <driver name="TrackingMonitoringGBLSingles1"/>  
         <driver name="TrackingResidualsSingles1"/>
@@ -39,7 +42,8 @@
         <driver name="V0MonitoringGBLSingles1"/>          
         <driver name="TridentMonitoringGBLSingles1"/>
         <!-- Pairs0 -->
-        <driver name="EcalMonitoringPairs0"/>  
+        <driver name="EcalMonitoringPairs0"/>
+        <driver name="EcalMonitoringCorrPairs0"/>   
         <driver name="TrackingMonitoringPairs0"/>  
         <driver name="TrackingMonitoringGBLPairs0"/>  
         <driver name="TrackingResidualsPairs0"/>
@@ -47,7 +51,8 @@
         <driver name="V0MonitoringPairs0"/>          
         <driver name="TridentMonitoringPairs0"/>
         <!-- Pairs1 -->
-        <driver name="EcalMonitoringPairs1"/>  
+        <driver name="EcalMonitoringPairs1"/> 
+        <driver name="EcalMonitoringCorrPairs1"/>   
         <driver name="TrackingMonitoringPairs1"/>  
         <driver name="TrackingMonitoringGBLPairs1"/>  
         <driver name="TrackingResidualsPairs1"/>
@@ -58,7 +63,7 @@
         <driver name="V0MonitoringGBLPairs1"/>          
         <driver name="TridentMonitoringGBLPairs1"/>     
         <!--           -->
-        <driver name="AidaSaveDriver"/>
+        <!-- <driver name="AidaSaveDriver"/>-->
         <driver name="AidaToRootSaveDriver"/>
         <driver name="CleanupDriver"/>
     </execute>    
@@ -79,6 +84,13 @@
         <!-- 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>
         <driver name="SVTMonitoring" type="org.hps.analysis.dataquality.SvtMonitoring">         
             <triggerType>all</triggerType>
@@ -92,12 +104,15 @@
         </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>
@@ -105,20 +120,30 @@
         </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>
         <driver name="SVTMonitoringSingles0" type="org.hps.analysis.dataquality.SvtMonitoring">         
             <triggerType>singles0</triggerType>
@@ -135,17 +160,27 @@
         </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="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>
         <driver name="SVTMonitoringSingles1" type="org.hps.analysis.dataquality.SvtMonitoring">         
             <triggerType>singles1</triggerType>
@@ -162,29 +197,42 @@
         </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>            
+            <triggerType>singles1</triggerType> 
+            <beamEnergy>${beamEnergy}</beamEnergy>           
         </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>
         <driver name="SVTMonitoringPairs0" type="org.hps.analysis.dataquality.SvtMonitoring">         
             <triggerType>pairs0</triggerType>
@@ -201,18 +249,28 @@
         </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="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>
         <driver name="SVTMonitoringPairs1" type="org.hps.analysis.dataquality.SvtMonitoring">         
             <triggerType>pairs1</triggerType>
@@ -229,24 +287,30 @@
         </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"/>