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 2015

HPS-SVN March 2015

Subject:

r2265 - in /java/trunk: analysis/src/main/java/org/hps/analysis/dataquality/ conditions/ monitoring-drivers/src/main/java/org/hps/monitoring/drivers/svt/ monitoring-drivers/src/main/java/org/hps/monitoring/drivers/trackrecon/ monitoring-util/ steering-files/src/main/resources/org/hps/steering/users/mgraham/

From:

[log in to unmask]

Reply-To:

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

Date:

Thu, 5 Mar 2015 18:58:29 -0000

Content-Type:

text/plain

Parts/Attachments:

Parts/Attachments

text/plain (2234 lines)

Author: [log in to unmask]
Date: Thu Mar  5 10:58:18 2015
New Revision: 2265

Log:
changes to tracking recon monitoring

Added:
    java/trunk/monitoring-drivers/src/main/java/org/hps/monitoring/drivers/trackrecon/
    java/trunk/monitoring-drivers/src/main/java/org/hps/monitoring/drivers/trackrecon/TrackResiduals.java
    java/trunk/monitoring-drivers/src/main/java/org/hps/monitoring/drivers/trackrecon/TrackTimePlots.java
      - copied, changed from r2221, java/trunk/monitoring-drivers/src/main/java/org/hps/monitoring/drivers/svt/TrackTimePlots.java
    java/trunk/monitoring-drivers/src/main/java/org/hps/monitoring/drivers/trackrecon/TrackingReconPlots.java
      - copied, changed from r2221, java/trunk/monitoring-drivers/src/main/java/org/hps/monitoring/drivers/svt/TrackingReconstructionPlots.java
    java/trunk/monitoring-drivers/src/main/java/org/hps/monitoring/drivers/trackrecon/V0ReconPlots.java
Removed:
    java/trunk/monitoring-drivers/src/main/java/org/hps/monitoring/drivers/svt/TrackTimePlots.java
    java/trunk/monitoring-drivers/src/main/java/org/hps/monitoring/drivers/svt/TrackingReconstructionPlots.java
Modified:
    java/trunk/analysis/src/main/java/org/hps/analysis/dataquality/DataQualityMonitor.java
    java/trunk/analysis/src/main/java/org/hps/analysis/dataquality/FinalStateMonitoring.java
    java/trunk/analysis/src/main/java/org/hps/analysis/dataquality/TrackMCEfficiency.java
    java/trunk/analysis/src/main/java/org/hps/analysis/dataquality/TrackingResiduals.java
    java/trunk/conditions/   (props changed)
    java/trunk/monitoring-drivers/src/main/java/org/hps/monitoring/drivers/svt/SVTEventInfo.java
    java/trunk/monitoring-drivers/src/main/java/org/hps/monitoring/drivers/svt/SVTHitPulsePlots.java
    java/trunk/monitoring-drivers/src/main/java/org/hps/monitoring/drivers/svt/SVTHitReconstructionPlots.java
    java/trunk/monitoring-drivers/src/main/java/org/hps/monitoring/drivers/svt/SVTPulseFitPlots.java
    java/trunk/monitoring-util/   (props changed)
    java/trunk/steering-files/src/main/resources/org/hps/steering/users/mgraham/MattsScrewAround.lcsim
    java/trunk/steering-files/src/main/resources/org/hps/steering/users/mgraham/NoTimeNoTriggerRecon.lcsim

Modified: java/trunk/analysis/src/main/java/org/hps/analysis/dataquality/DataQualityMonitor.java
 =============================================================================
--- java/trunk/analysis/src/main/java/org/hps/analysis/dataquality/DataQualityMonitor.java	(original)
+++ java/trunk/analysis/src/main/java/org/hps/analysis/dataquality/DataQualityMonitor.java	Thu Mar  5 10:58:18 2015
@@ -26,7 +26,7 @@
     protected boolean connectToDB = false;
     protected boolean printDQMStrings = false;
     protected Map<String, Double> monitoredQuantityMap = new HashMap<>();
-
+    protected boolean debug=false;
     protected boolean outputPlots = false;
     protected String outputPlotDir = "DQMOutputPlots/";
     
@@ -34,6 +34,10 @@
         this.recoVersion = recoVersion;
     }
 
+    public void setDebug(boolean debug){
+        this.debug=debug;
+    }
+    
     public void setRunNumber(int run) {
         this.runNumber = run;
     }

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	Thu Mar  5 10:58:18 2015
@@ -51,8 +51,7 @@
     //some summers
     double sumdelX = 0.0;
     double sumdelY = 0.0;
-    double sumEoverP = 0.0;
-    boolean debug = false;
+    double sumEoverP = 0.0;   
     private String plotDir = "FinalStateParticles/";
 
     @Override
@@ -90,8 +89,11 @@
     @Override
     public void process(EventHeader event) {
         /*  make sure everything is there */
-        if (!event.hasCollection(ReconstructedParticle.class, finalStateParticlesColName))
+        if (!event.hasCollection(ReconstructedParticle.class, finalStateParticlesColName)){
+            if(debug)
+                    System.out.println(finalStateParticlesColName+" collection not found???");
             return;
+        }
         nRecoEvents++;
         int nPhotons = 0;  //number of photons 
         int nUnAssTracks = 0; //number of tracks w/o clusters

Modified: java/trunk/analysis/src/main/java/org/hps/analysis/dataquality/TrackMCEfficiency.java
 =============================================================================
--- java/trunk/analysis/src/main/java/org/hps/analysis/dataquality/TrackMCEfficiency.java	(original)
+++ java/trunk/analysis/src/main/java/org/hps/analysis/dataquality/TrackMCEfficiency.java	Thu Mar  5 10:58:18 2015
@@ -121,28 +121,34 @@
 
         //make sure the required collections exist
         if (!event.hasCollection(RawTrackerHit.class, rawTrackerHitCollectionName)) {
-            System.out.println(this.getClass().getSimpleName() + ": no collection found " + rawTrackerHitCollectionName);
+            if (debug)
+                System.out.println(this.getClass().getSimpleName() + ": no collection found " + rawTrackerHitCollectionName);
             return;
         }
-        if (!event.hasCollection(LCRelation.class, fittedSVTHitCollectionName)) {
-            System.out.println(this.getClass().getSimpleName() + ": no collection found " + fittedSVTHitCollectionName);
+        if (!event.hasCollection(LCRelation.class, fittedSVTHitCollectionName))
+            if (debug)
+                System.out.println(this.getClass().getSimpleName() + ": no collection found " + fittedSVTHitCollectionName); //mg...2/1/2015...don't return if the fitted collection isn't there...
+        //allow us to run if we simulated in "simple" mode (i.e. no time evolution)
+        //            return;
+        if (!event.hasCollection(Track.class, trackCollectionName)) {
+            if (debug)
+                System.out.println(this.getClass().getSimpleName() + ": no collection found " + trackCollectionName);
             return;
         }
-        if (!event.hasCollection(Track.class, trackCollectionName)) {
-            System.out.println(this.getClass().getSimpleName() + ": no collection found " + trackCollectionName);
+        if (!event.hasCollection(LCRelation.class, trackHitMCRelationsCollectionName)) {
+            if (debug)
+                System.out.println(this.getClass().getSimpleName() + ": no collection found " + trackHitMCRelationsCollectionName);
             return;
         }
-        if (!event.hasCollection(LCRelation.class, trackHitMCRelationsCollectionName)) {
-            System.out.println(this.getClass().getSimpleName() + ": no collection found " + trackHitMCRelationsCollectionName);
+        if (!event.hasCollection(TrackerHit.class, siClusterCollectionName)) {
+            if (debug)
+                System.out.println(this.getClass().getSimpleName() + ": no collection found " + siClusterCollectionName);
             return;
         }
-        if (!event.hasCollection(TrackerHit.class, siClusterCollectionName)) {
-            System.out.println(this.getClass().getSimpleName() + ": no collection found " + siClusterCollectionName);
-            return;
-        }
 
         if (!event.hasCollection(SimTrackerHit.class, trackerHitCollectionName)) {
-            System.out.println(this.getClass().getSimpleName() + ": no collection found " + trackerHitCollectionName);
+            if (debug)
+                System.out.println(this.getClass().getSimpleName() + ": no collection found " + trackerHitCollectionName);
             return;
         }
         //
@@ -153,37 +159,28 @@
         Map<Track, TrackAnalysis> tkanalMap = new HashMap<Track, TrackAnalysis>();
         RelationalTable hittomc = new BaseRelationalTable(RelationalTable.Mode.MANY_TO_MANY, RelationalTable.Weighting.UNWEIGHTED);
         List<LCRelation> mcrelations = event.get(LCRelation.class, trackHitMCRelationsCollectionName);
-        if (debugTrackEfficiency) {
+        if (debugTrackEfficiency)
             System.out.println(this.getClass().getSimpleName() + ": number of MC relations = " + mcrelations.size());
-        }
-        for (LCRelation relation : mcrelations) {
-            if (relation != null && relation.getFrom() != null && relation.getTo() != null) {
+        for (LCRelation relation : mcrelations)
+            if (relation != null && relation.getFrom() != null && relation.getTo() != null)
                 hittomc.add(relation.getFrom(), relation.getTo());
-            }
-        }
-        if (debugTrackEfficiency) {
+        if (debugTrackEfficiency)
             System.out.println(this.getClass().getSimpleName() + ": number of hittomc relations = " + hittomc.size());
-        }
         RelationalTable mcHittomcP = new BaseRelationalTable(RelationalTable.Mode.MANY_TO_MANY, RelationalTable.Weighting.UNWEIGHTED);
         //  Get the collections of SimTrackerHits
         List<List<SimTrackerHit>> simcols = event.get(SimTrackerHit.class);
         //  Loop over the SimTrackerHits and fill in the relational table
-        for (List<SimTrackerHit> simlist : simcols) {
-            for (SimTrackerHit simhit : simlist) {
-                if (simhit.getMCParticle() != null) {
+        for (List<SimTrackerHit> simlist : simcols)
+            for (SimTrackerHit simhit : simlist)
+                if (simhit.getMCParticle() != null)
                     mcHittomcP.add(simhit, simhit.getMCParticle());
-                }
-            }
-        }
         RelationalTable trktomc = new BaseRelationalTable(RelationalTable.Mode.MANY_TO_MANY, RelationalTable.Weighting.UNWEIGHTED);
         RelationalTable rawtomc = new BaseRelationalTable(RelationalTable.Mode.MANY_TO_MANY, RelationalTable.Weighting.UNWEIGHTED);
         if (event.hasCollection(LCRelation.class, "SVTTrueHitRelations")) {
             List<LCRelation> trueHitRelations = event.get(LCRelation.class, "SVTTrueHitRelations");
-            for (LCRelation relation : trueHitRelations) {
-                if (relation != null && relation.getFrom() != null && relation.getTo() != null) {
+            for (LCRelation relation : trueHitRelations)
+                if (relation != null && relation.getFrom() != null && relation.getTo() != null)
                     rawtomc.add(relation.getFrom(), relation.getTo());
-                }
-            }
         }
         // make relational table for strip clusters to mc particle
         List<TrackerHit> siClusters = event.get(TrackerHit.class, siClusterCollectionName);
@@ -192,59 +189,49 @@
             List<RawTrackerHit> rawHits = cluster.getRawHits();
             for (RawTrackerHit rth : rawHits) {
                 Set<SimTrackerHit> simTrackerHits = rawtomc.allFrom(rth);
-                if (simTrackerHits != null) {
-                    for (SimTrackerHit simhit : simTrackerHits) {
+                if (simTrackerHits != null)
+                    for (SimTrackerHit simhit : simTrackerHits)
                         clustertosimhit.add(cluster, simhit);
-                    }
-                }
             }
         }
         //relational tables from mc particle to raw and fitted tracker hits
         RelationalTable fittomc = new BaseRelationalTable(RelationalTable.Mode.MANY_TO_MANY, RelationalTable.Weighting.UNWEIGHTED);
-        List<LCRelation> fittedTrackerHits = event.get(LCRelation.class, fittedSVTHitCollectionName);
-        for (LCRelation hit : fittedTrackerHits) {
-            RawTrackerHit rth = FittedRawTrackerHit.getRawTrackerHit(hit);
-            Set<SimTrackerHit> simTrackerHits = rawtomc.allFrom(rth);
-            if (simTrackerHits != null) {
-                for (SimTrackerHit simhit : simTrackerHits) {
-                    if (simhit.getMCParticle() != null) {
-                        fittomc.add(hit, simhit.getMCParticle());
-                    }
-                }
-            }
-        }
-
+        if (event.hasCollection(LCRelation.class, fittedSVTHitCollectionName)) {
+            List<LCRelation> fittedTrackerHits = event.get(LCRelation.class, fittedSVTHitCollectionName);
+            for (LCRelation hit : fittedTrackerHits) {
+                RawTrackerHit rth = FittedRawTrackerHit.getRawTrackerHit(hit);
+                Set<SimTrackerHit> simTrackerHits = rawtomc.allFrom(rth);
+                if (simTrackerHits != null)
+                    for (SimTrackerHit simhit : simTrackerHits)
+                        if (simhit.getMCParticle() != null)
+                            fittomc.add(hit, simhit.getMCParticle());
+            }
+        }
         RelationalTable hittostrip = new BaseRelationalTable(RelationalTable.Mode.MANY_TO_MANY, RelationalTable.Weighting.UNWEIGHTED);
         List<LCRelation> hitrelations = event.get(LCRelation.class, detectorFrameHitRelationsCollectionName);
-        for (LCRelation relation : hitrelations) {
-            if (relation != null && relation.getFrom() != null && relation.getTo() != null) {
+        for (LCRelation relation : hitrelations)
+            if (relation != null && relation.getFrom() != null && relation.getTo() != null)
                 hittostrip.add(relation.getFrom(), relation.getTo());
-            }
-        }
 
         RelationalTable hittorotated = new BaseRelationalTable(RelationalTable.Mode.ONE_TO_ONE, RelationalTable.Weighting.UNWEIGHTED);
         List<LCRelation> rotaterelations = event.get(LCRelation.class, trackHitRelationsCollectionName);
-        for (LCRelation relation : rotaterelations) {
-            if (relation != null && relation.getFrom() != null && relation.getTo() != null) {
+        for (LCRelation relation : rotaterelations)
+            if (relation != null && relation.getFrom() != null && relation.getTo() != null)
                 hittorotated.add(relation.getFrom(), relation.getTo());
-            }
-        }
 
         //  Instantiate the class that determines if a track is "findable"
         FindableTrack findable = new FindableTrack(event);
 
         List<Track> tracks = event.get(Track.class, trackCollectionName);
-        if (debugTrackEfficiency) {
+        if (debugTrackEfficiency)
             System.out.println(this.getClass().getSimpleName() + ": nTracks = " + tracks.size());
-        }
         for (Track trk : tracks) {
             TrackAnalysis tkanal = new TrackAnalysis(trk, hittomc, rawtomc, hittostrip, hittorotated);
             tkanalMap.put(trk, tkanal);
             MCParticle mcp = tkanal.getMCParticleNew();
             if (mcp != null) {//  Create a map between the tracks found and the assigned MC particle            
-                if (debugTrackEfficiency) {
+                if (debugTrackEfficiency)
                     System.out.println(this.getClass().getSimpleName() + ": found MCP match");
-                }
                 trktomc.add(trk, tkanal.getMCParticleNew());
             }
         }
@@ -266,12 +253,12 @@
             double eta = -Math.log(Math.tan(Math.atan2(pt, pz) / 2));
             double phi = Math.atan2(px, pz);
             //  Find the number of layers hit by this mc particle
-            if (debugTrackEfficiency) {
+            if (debugTrackEfficiency)
                 System.out.println("MC pt=" + pt);
-            }
             int nhits = findable.LayersHit(mcp);
             boolean isFindable = findable.InnerTrackerIsFindable(mcp, nlayers - 2);
-
+            if (debugTrackEfficiency)
+                System.out.println("nhits Findable =" + nhits + "; is findable? " + isFindable);
             //  Calculate the helix parameters for this MC particle
             HelixParamCalculator helix = new HelixParamCalculator(mcp, bfield);
             double d0 = helix.getDCA();
@@ -289,17 +276,14 @@
                 //it's the A'...let's see if we found both tracks.
                 List<MCParticle> daughters = mcp.getDaughters();
                 for (MCParticle d : daughters) {
-                    if (trktomc.allTo(d).isEmpty()) {
+                    if (trktomc.allTo(d).isEmpty())
                         bothreco = false;
-                    }
-                    if (!findable.InnerTrackerIsFindable(d, nlayers - 2)) {
+                    if (!findable.InnerTrackerIsFindable(d, nlayers - 2))
                         bothfindable = false;
-                    }
                 }
                 double vtxWgt = 0;
-                if (bothreco) {
+                if (bothreco)
                     vtxWgt = 1.0;
-                }
 //                VxEff.fill(mcp.getOriginX(), vtxWgt);
 //                VyEff.fill(mcp.getOriginY(), vtxWgt);
 //                VzEff.fill(mcp.getOriginZ(), vtxWgt);
@@ -315,35 +299,41 @@
                 _nchMCP++;
                 findableTracks++;
                 double wgt = 0.;
-                if (ntrk > 0) {
+                if (ntrk > 0)
                     wgt = 1.;
-                }
                 foundTracks += wgt;
+                if (debugTrackEfficiency)
+                    System.out.println("...is findable; filling plots with weight " + wgt);
                 peffFindable.fill(p, wgt);
                 phieffFindable.fill(phi, wgt);
                 ctheffFindable.fill(cth, wgt);
 
                 if (wgt == 0) {
-
                     Set<SimTrackerHit> mchitlist = mcHittomcP.allTo(mcp);
                     Set<HelicalTrackCross> hitlist = hittomc.allTo(mcp);
-                    Set<FittedRawTrackerHit> fitlist = fittomc.allTo(mcp);
-                    if (debugTrackEfficiency) {
-                        System.out.println(this.getClass().getSimpleName() + ":  Missed a findable track with MC p = " + p);
-                        if (!hasHTHInEachLayer(hitlist, fitlist)) {
-                            System.out.println("\t\tThis track failed becasue it's missing a helical track hit");
+                    if (debugTrackEfficiency)
+                        if (fittomc != null) {
+                            Set<FittedRawTrackerHit> fitlist = fittomc.allTo(mcp);
+                            System.out.println(this.getClass().getSimpleName() + ":  Missed a findable track with MC p = " + p);
+                            if (!hasHTHInEachLayer(hitlist, fitlist))
+                                System.out.println("\t\tThis track failed becasue it's missing a helical track hit");
                         }
-                    }
                 }
 
+            }
+            if (debugTrackEfficiency){
+                System.out.println("# of mc parents " + mcp.getParents().size());
+                if(mcp.getParents().size() > 0 )
+                    System.out.println("PDG ID of parent 0 is " + mcp.getParents().get(0).getPDGID());
             }
             if (mcp.getParents().size() == 1 && mcp.getParents().get(0).getPDGID() == 622) {
                 totelectrons++;
 //                    findableelectrons++;
                 double wgt = 0.;
-                if (ntrk > 0) {
+                if (ntrk > 0)
                     wgt = 1.;
-                }
+                if (debugTrackEfficiency)
+                    System.out.println("...is from A'; filling plots with weight " + wgt);
                 foundelectrons += wgt;
                 peffElectrons.fill(p, wgt);
                 phieffElectrons.fill(phi, wgt);
@@ -386,19 +376,15 @@
     }
 
     private boolean hasHTHInEachLayer(Set<HelicalTrackCross> list, Set<FittedRawTrackerHit> fitlist) {
-        if (list.isEmpty()) {
+        if (list.isEmpty())
             return false;
-        }
-        if (!(list.toArray()[0] instanceof HelicalTrackCross)) {
+        if (!(list.toArray()[0] instanceof HelicalTrackCross))
             return false;
-        }
         for (int layer = 1; layer < nlayers - 2; layer += 2) {
             boolean hasThisLayer = false;
-            for (HelicalTrackCross hit : list) {
-                if (hit.Layer() == layer) {
+            for (HelicalTrackCross hit : list)
+                if (hit.Layer() == layer)
                     hasThisLayer = true;
-                }
-            }
             if (!hasThisLayer) {
 //                System.out.println("Missing reconstructed hit in layer = " + layer);
                 boolean hasFitHitSL1 = false;

Modified: java/trunk/analysis/src/main/java/org/hps/analysis/dataquality/TrackingResiduals.java
 =============================================================================
--- java/trunk/analysis/src/main/java/org/hps/analysis/dataquality/TrackingResiduals.java	(original)
+++ java/trunk/analysis/src/main/java/org/hps/analysis/dataquality/TrackingResiduals.java	Thu Mar  5 10:58:18 2015
@@ -13,7 +13,6 @@
 import java.util.Map;
 import java.util.logging.Level;
 import java.util.logging.Logger;
-import org.hps.recon.tracking.gbl.GBLStripClusterData;
 import org.lcsim.event.EventHeader;
 import org.lcsim.event.GenericObject;
 import org.lcsim.geometry.Detector;

Modified: java/trunk/monitoring-drivers/src/main/java/org/hps/monitoring/drivers/svt/SVTEventInfo.java
 =============================================================================
--- java/trunk/monitoring-drivers/src/main/java/org/hps/monitoring/drivers/svt/SVTEventInfo.java	(original)
+++ java/trunk/monitoring-drivers/src/main/java/org/hps/monitoring/drivers/svt/SVTEventInfo.java	Thu Mar  5 10:58:18 2015
@@ -1,5 +1,6 @@
 package org.hps.monitoring.drivers.svt;
 
+import org.hps.monitoring.drivers.trackrecon.TrackingReconPlots;
 import hep.aida.IAnalysisFactory;
 import hep.aida.IHistogram1D;
 import hep.aida.IPlotter;
@@ -160,7 +161,7 @@
             try {
                 aida.saveAs(outputPlots);
             } catch (IOException ex) {
-                Logger.getLogger(TrackingReconstructionPlots.class.getName()).log(Level.SEVERE, null, ex);
+                Logger.getLogger(TrackingReconPlots.class.getName()).log(Level.SEVERE, null, ex);
             }
     }
 

Modified: java/trunk/monitoring-drivers/src/main/java/org/hps/monitoring/drivers/svt/SVTHitPulsePlots.java
 =============================================================================
--- java/trunk/monitoring-drivers/src/main/java/org/hps/monitoring/drivers/svt/SVTHitPulsePlots.java	(original)
+++ java/trunk/monitoring-drivers/src/main/java/org/hps/monitoring/drivers/svt/SVTHitPulsePlots.java	Thu Mar  5 10:58:18 2015
@@ -1,5 +1,6 @@
 package org.hps.monitoring.drivers.svt;
 
+import org.hps.monitoring.drivers.trackrecon.TrackingReconPlots;
 import hep.aida.IAnalysisFactory;
 import hep.aida.IHistogram2D;
 import hep.aida.IPlotter;
@@ -148,7 +149,7 @@
             try {
                 aida.saveAs(outputPlots);
             } catch (IOException ex) {
-                Logger.getLogger(TrackingReconstructionPlots.class.getName()).log(Level.SEVERE, null, ex);
+                Logger.getLogger(TrackingReconPlots.class.getName()).log(Level.SEVERE, null, ex);
             }
         }
         //plotterFrame.dispose();

Modified: java/trunk/monitoring-drivers/src/main/java/org/hps/monitoring/drivers/svt/SVTHitReconstructionPlots.java
 =============================================================================
--- java/trunk/monitoring-drivers/src/main/java/org/hps/monitoring/drivers/svt/SVTHitReconstructionPlots.java	(original)
+++ java/trunk/monitoring-drivers/src/main/java/org/hps/monitoring/drivers/svt/SVTHitReconstructionPlots.java	Thu Mar  5 10:58:18 2015
@@ -1,5 +1,6 @@
 package org.hps.monitoring.drivers.svt;
 
+import org.hps.monitoring.drivers.trackrecon.TrackingReconPlots;
 import hep.aida.IAnalysisFactory;
 import hep.aida.IHistogram1D;
 import hep.aida.IHistogram2D;
@@ -285,7 +286,7 @@
             try {
                 aida.saveAs(outputPlots);
             } catch (IOException ex) {
-                Logger.getLogger(TrackingReconstructionPlots.class.getName()).log(Level.SEVERE, null, ex);
+                Logger.getLogger(TrackingReconPlots.class.getName()).log(Level.SEVERE, null, ex);
             }
         }
         //plotterFrame.dispose();

Modified: java/trunk/monitoring-drivers/src/main/java/org/hps/monitoring/drivers/svt/SVTPulseFitPlots.java
 =============================================================================
--- java/trunk/monitoring-drivers/src/main/java/org/hps/monitoring/drivers/svt/SVTPulseFitPlots.java	(original)
+++ java/trunk/monitoring-drivers/src/main/java/org/hps/monitoring/drivers/svt/SVTPulseFitPlots.java	Thu Mar  5 10:58:18 2015
@@ -1,5 +1,6 @@
 package org.hps.monitoring.drivers.svt;
 
+import org.hps.monitoring.drivers.trackrecon.TrackingReconPlots;
 import hep.aida.IAnalysisFactory;
 import hep.aida.IHistogram1D;
 import hep.aida.IHistogram2D;
@@ -185,7 +186,7 @@
             try {
                 aida.saveAs(outputPlots);
             } catch (IOException ex) {
-                Logger.getLogger(TrackingReconstructionPlots.class.getName()).log(Level.SEVERE, null, ex);
+                Logger.getLogger(TrackingReconPlots.class.getName()).log(Level.SEVERE, null, ex);
             }
         }
     }

Added: java/trunk/monitoring-drivers/src/main/java/org/hps/monitoring/drivers/trackrecon/TrackResiduals.java
 =============================================================================
--- java/trunk/monitoring-drivers/src/main/java/org/hps/monitoring/drivers/trackrecon/TrackResiduals.java	(added)
+++ java/trunk/monitoring-drivers/src/main/java/org/hps/monitoring/drivers/trackrecon/TrackResiduals.java	Thu Mar  5 10:58:18 2015
@@ -0,0 +1,235 @@
+package org.hps.monitoring.drivers.trackrecon;
+
+import hep.aida.IAnalysisFactory;
+import hep.aida.IFitFactory;
+import hep.aida.IFitResult;
+import hep.aida.IFitter;
+import hep.aida.IHistogram1D;
+import hep.aida.IPlotter;
+import hep.aida.IPlotterStyle;
+import java.io.IOException;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+import org.lcsim.event.EventHeader;
+import org.lcsim.event.GenericObject;
+import org.lcsim.geometry.Detector;
+import org.lcsim.util.Driver;
+import org.lcsim.util.aida.AIDA;
+
+/**
+ *
+ * @author mgraham
+ */
+public class TrackResiduals extends Driver {
+
+    // Collection Names
+    String trackTimeDataCollectionName = "TrackTimeData";
+    String trackResidualsCollectionName = "TrackResiduals";
+    String gblStripClusterDataCollectionName = "GBLStripClusterData";
+    private AIDA aida = AIDA.defaultInstance();
+
+    int nEvents = 0;
+
+    private String plotDir = "TrackResiduals/";
+    String[] trackingQuantNames = {};
+    int nmodules = 6;
+    private String posresDir = "PostionResiduals/";
+    private String uresDir = "UResiduals/";
+    private String timeresDir = "TimeResiduals/";
+  
+    IPlotter plotterResX;
+    IPlotter plotterResY;
+
+    String outputPlots;
+
+    void setupPlotter(IPlotter plotter, String title) {
+        plotter.setTitle(title);
+        IPlotterStyle style = plotter.style();
+        style.dataStyle().fillStyle().setColor("yellow");
+        style.dataStyle().errorBarStyle().setVisible(false);
+    }
+
+    private int computePlotterRegion(int i, boolean istop) {
+    
+        int region =-99;
+        if (i < 3)
+            if (istop)
+                region= i*4;
+            else
+                region= i*4+1;
+        else
+            if (istop)
+                region= (i-3)*4+2 ;
+            else
+                region= (i-3)*4+3;
+//     System.out.println("Setting region to "+region);
+        return region;
+    }
+
+    @Override
+    protected void detectorChanged(Detector detector) {
+
+        aida.tree().cd("/");
+//        resetOccupancyMap(); // this is for calculating averages         
+        IAnalysisFactory fac = aida.analysisFactory();
+
+        plotterResX = fac.createPlotterFactory().create("HPS Tracking Plots");
+        setupPlotter(plotterResX, "X-Residuals");
+        plotterResX.createRegions(3, 4);
+
+        plotterResY = fac.createPlotterFactory().create("HPS Tracking Plots");
+        setupPlotter(plotterResY, "Y-Residuals");
+        plotterResY.createRegions(3, 4);
+
+        for (int i = 1; i <= nmodules; i++) {
+            IHistogram1D xresid = aida.histogram1D("Module " + i + " Top x Residual", 50, -getRange(i, true), getRange(i, true));
+            IHistogram1D yresid = aida.histogram1D("Module " + i + " Top y Residual", 50, -getRange(i, false), getRange(i, false));
+            IHistogram1D xresidbot = aida.histogram1D("Module " + i + " Bot x Residual", 50, -getRange(i, true), getRange(i, true));
+            IHistogram1D yresidbot = aida.histogram1D("Module " + i + " Bot y Residual", 50, -getRange(i, false), getRange(i, false));
+            plotterResX.region(computePlotterRegion(i - 1, true)).plot(xresid);
+            plotterResX.region(computePlotterRegion(i - 1, false)).plot(xresidbot);
+            plotterResY.region(computePlotterRegion(i - 1, true)).plot(yresid);
+            plotterResY.region(computePlotterRegion(i - 1, false)).plot(yresidbot);
+        }
+
+        /*
+         for (int i = 1; i <= nmodules * 2; i++) {
+         IHistogram1D tresid = aida.histogram1D(plotDir + timeresDir + "HalfModule " + i + " t Residual", 50, -20, 20);
+         IHistogram1D utopresid = aida.histogram1D(plotDir + uresDir + "HalfModule " + i + " Top u Residual", 50, -getRange((i + 1) / 2, false), getRange((i + 1) / 2, false));
+         IHistogram1D ubotresid = aida.histogram1D(plotDir + uresDir + "HalfModule " + i + " Bot u Residual", 50, -getRange((i + 1) / 2, false), getRange((i + 1) / 2, false));
+         }
+         */
+    }
+
+    @Override
+    public void process(EventHeader event) {
+        aida.tree().cd("/");
+        if (!event.hasCollection(GenericObject.class, trackTimeDataCollectionName))
+            return;
+        if (!event.hasCollection(GenericObject.class, trackResidualsCollectionName))
+            return;
+        nEvents++;
+        List<GenericObject> trdList = event.get(GenericObject.class, trackResidualsCollectionName);
+        for (GenericObject trd : trdList) {
+            int nResid = trd.getNDouble();
+            int isBot = trd.getIntVal(trd.getNInt() - 1);//last Int is the top/bottom flag
+            for (int i = 1; i <= nResid; i++)
+
+                if (isBot == 1) {
+                    aida.histogram1D("Module " + i + " Bot x Residual").fill(trd.getDoubleVal(i - 1));//x is the double value in the generic object
+                    aida.histogram1D("Module " + i + " Bot y Residual").fill(trd.getFloatVal(i - 1));//y is the float value in the generic object
+                } else {
+                    aida.histogram1D("Module " + i + " Top x Residual").fill(trd.getDoubleVal(i - 1));//x is the double value in the generic object
+                    aida.histogram1D("Module " + i + " Top y Residual").fill(trd.getFloatVal(i - 1));//y is the float value in the generic object                    
+                }
+        }
+        /*
+         List<GenericObject> ttdList = event.get(GenericObject.class, trackTimeDataCollectionName);
+         for (GenericObject ttd : ttdList) {
+         int nResid = ttd.getNDouble();
+         for (int i = 1; i <= nResid; i++)
+         aida.histogram1D( "HalfModule " + i + " t Residual").fill(ttd.getDoubleVal(i - 1));//x is the double value in the generic object               
+         }
+         */
+        /*
+         if (!event.hasCollection(GenericObject.class, gblStripClusterDataCollectionName))
+         return;
+         List<GenericObject> gblSCDList = event.get(GenericObject.class, gblStripClusterDataCollectionName);
+         for (GenericObject gblSCD : gblSCDList) {
+         double umeas = gblSCD.getDoubleVal(15);//TODO:  implement generic methods into GBLStripClusterData so this isn't hard coded
+         double utrk = gblSCD.getDoubleVal(16);//implement generic methods into GBLStripClusterData so this isn't hard coded
+         double resid = umeas - utrk;
+         double tanlambda = gblSCD.getDoubleVal(21);//use the slope as a proxy for the top/bottom half of tracker
+
+         int i = gblSCD.getIntVal(0);//implement generic methods into GBLStripClusterData so this isn't hard coded
+         if (tanlambda > 0)
+         aida.histogram1D(plotDir + uresDir + "HalfModule " + i + " Top u Residual").fill(resid);//x is the double value in the generic object                 
+         else
+         aida.histogram1D(plotDir + uresDir + "HalfModule " + i + " Bot u Residual").fill(resid);//x is the double value in the generic object                 
+
+         }
+         */
+    }
+
+    private String getQuantityName(int itype, int iquant, int top, int nlayer) {
+        String typeString = "position_resid";
+        String quantString = "mean_";
+        if (itype == 1)
+            typeString = "time_resid";
+        if (iquant == 1)
+            quantString = "sigma_";
+
+        String botString = "bot_";
+        if (top == 1)
+            botString = "top_";
+        if (top == 2)
+            botString = "";
+
+        String layerString = "module" + nlayer;
+        if (itype == 1)
+            layerString = "halfmodule" + nlayer;
+
+        return typeString + quantString + botString + layerString;
+    }
+
+
+    private double getRange(int layer, boolean isX) {
+        double range = 2.5;
+        if (isX) {
+            if (layer == 1)
+                return 0.5;
+            if (layer == 2)
+                return 0.5;
+            if (layer == 3)
+                return 0.5;
+            if (layer == 4)
+                return 1.0;
+            if (layer == 5)
+                return 1.0;
+            if (layer == 6)
+                return 1.0;
+        } else {
+            if (layer == 1)
+                return 0.005;
+            if (layer == 2)
+                return 0.5;
+            if (layer == 3)
+                return 0.5;
+            if (layer == 4)
+                return 1.0;
+            if (layer == 5)
+                return 1.0;
+            if (layer == 6)
+                return 1.5;
+        }
+        return range;
+
+    }
+
+    IFitResult fitGaussian(IHistogram1D h1d, IFitter fitter, String range) {
+        double[] init = {20.0, 0.0, 0.2};
+        return fitter.fit(h1d, "g", init, range);
+//        double[] init = {20.0, 0.0, 1.0, 20, -1};
+//        return fitter.fit(h1d, "g+p1", init, range);
+    }
+
+    public void setOutputPlots(String output) {
+        this.outputPlots = output;
+    }
+
+    @Override
+    public void endOfData() {
+        if (outputPlots != null)
+            try {
+                plotterResX.writeToFile(outputPlots + "-X.gif");
+                plotterResY.writeToFile(outputPlots + "-Y.gif");
+            } catch (IOException ex) {
+                Logger.getLogger(TrackingReconPlots.class.getName()).log(Level.SEVERE, null, ex);
+            }
+
+    }
+
+}

Copied: java/trunk/monitoring-drivers/src/main/java/org/hps/monitoring/drivers/trackrecon/TrackTimePlots.java (from r2221, java/trunk/monitoring-drivers/src/main/java/org/hps/monitoring/drivers/svt/TrackTimePlots.java)
 =============================================================================
--- java/trunk/monitoring-drivers/src/main/java/org/hps/monitoring/drivers/svt/TrackTimePlots.java	(original)
+++ java/trunk/monitoring-drivers/src/main/java/org/hps/monitoring/drivers/trackrecon/TrackTimePlots.java	Thu Mar  5 10:58:18 2015
@@ -1,4 +1,4 @@
-package org.hps.monitoring.drivers.svt;
+package org.hps.monitoring.drivers.trackrecon;
 
 import hep.aida.IHistogram1D;
 import hep.aida.IHistogram2D;

Copied: java/trunk/monitoring-drivers/src/main/java/org/hps/monitoring/drivers/trackrecon/TrackingReconPlots.java (from r2221, java/trunk/monitoring-drivers/src/main/java/org/hps/monitoring/drivers/svt/TrackingReconstructionPlots.java)
 =============================================================================
--- java/trunk/monitoring-drivers/src/main/java/org/hps/monitoring/drivers/svt/TrackingReconstructionPlots.java	(original)
+++ java/trunk/monitoring-drivers/src/main/java/org/hps/monitoring/drivers/trackrecon/TrackingReconPlots.java	Thu Mar  5 10:58:18 2015
@@ -1,48 +1,21 @@
-package org.hps.monitoring.drivers.svt;
+package org.hps.monitoring.drivers.trackrecon;
 
 import hep.aida.IAnalysisFactory;
 import hep.aida.IHistogram1D;
-import hep.aida.IHistogram2D;
 import hep.aida.IPlotter;
 import hep.aida.IPlotterStyle;
-import hep.aida.IProfile;
-import hep.physics.matrix.SymmetricMatrix;
-import hep.physics.vec.Hep3Vector;
 
 import java.io.IOException;
 import java.util.List;
 import java.util.logging.Level;
 import java.util.logging.Logger;
 
-//===> import org.hps.conditions.deprecated.HPSSVTCalibrationConstants;
-//===> import org.hps.conditions.deprecated.HPSSVTCalibrationConstants.ChannelConstants;
-//===> import org.hps.conditions.deprecated.SvtUtils;
-import org.hps.recon.tracking.BeamlineConstants;
-import org.hps.recon.tracking.DumbShaperFit;
-import org.hps.recon.tracking.HelixConverter;
-import org.hps.recon.tracking.ShapeFitParameters;
-import org.hps.recon.tracking.ShaperFitAlgorithm;
-import org.hps.recon.tracking.StraightLineTrack;
-import org.hps.recon.tracking.TrackUtils;
-import org.lcsim.detector.tracker.silicon.HpsSiSensor;
-import org.lcsim.detector.tracker.silicon.SiSensor;
-import org.lcsim.event.Cluster;
 import org.lcsim.event.EventHeader;
 import org.lcsim.event.LCIOParameters.ParameterName;
-import org.lcsim.event.RawTrackerHit;
 import org.lcsim.event.Track;
-import org.lcsim.event.TrackerHit;
-import org.lcsim.fit.helicaltrack.HelicalTrackCross;
-import org.lcsim.fit.helicaltrack.HelicalTrackFit;
 import org.lcsim.fit.helicaltrack.HelicalTrackHit;
-import org.lcsim.fit.helicaltrack.HelicalTrackStrip;
-import org.lcsim.fit.helicaltrack.HelixUtils;
 import org.lcsim.geometry.Detector;
 import org.lcsim.geometry.IDDecoder;
-import org.lcsim.geometry.compact.converter.HPSTrackerBuilder;
-import org.lcsim.recon.tracking.digitization.sisim.SiTrackerHitStrip1D;
-import org.lcsim.recon.tracking.seedtracker.SeedCandidate;
-import org.lcsim.recon.tracking.seedtracker.SeedTrack;
 import org.lcsim.util.Driver;
 import org.lcsim.util.aida.AIDA;
 
@@ -50,11 +23,8 @@
  *
  * @author mgraham
  */
-public class TrackingReconstructionPlots extends Driver {
+public class TrackingReconPlots extends Driver {
 
-    //private AIDAFrame plotterFrame;
-    //private AIDAFrame topFrame;
-    //private AIDAFrame bottomFrame;
     private AIDA aida = AIDA.defaultInstance();
     private String helicalTrackHitCollectionName = "HelicalTrackHits";
     private String rotatedTrackHitCollectionName = "RotatedHelicalTrackHits";
@@ -64,113 +34,43 @@
     IDDecoder dec;
     private String outputPlots = null;
     IPlotter plotter;
-    IPlotter plotter2;
     IPlotter plotter22;
-    IPlotter plotter222;
-    IPlotter plotter3;
-    IPlotter plotter3_1;
-    IPlotter plotter3_2;
-    IPlotter plotter4;
-    IPlotter plotter5;
-    IPlotter plotter5_1;
-    IPlotter plotter55;
-    IPlotter plotter6;
-    IPlotter plotter7;
-    IPlotter top1;
-    IPlotter top2;
-    IPlotter top3;
-    IPlotter top4;
-    IPlotter bot1;
-    IPlotter bot2;
-    IPlotter bot3;
-    IPlotter bot4;
-    double zEcal = 1500;
-    double zAtDownStrPairSpec = 914.0; //mm
-    double zAtColl = -1500;
     IHistogram1D trkPx;
     IHistogram1D nTracks;
-    ShaperFitAlgorithm _shaper = new DumbShaperFit();
-    private boolean shapeFit = false;
 
     @Override
     protected void detectorChanged(Detector detector) {
         aida.tree().cd("/");
-        //plotterFrame = new AIDAFrame();
-        //plotterFrame.setTitle("HPS Tracking Plots");
 
-        //topFrame = new AIDAFrame();
-        //topFrame.setTitle("Top Tracking Plots");
-        //bottomFrame = new AIDAFrame();
-        //bottomFrame.setTitle("Bottom Tracking Plots");
-        
         IAnalysisFactory fac = aida.analysisFactory();
         plotter = fac.createPlotterFactory().create("HPS Tracking Plots");
         plotter.setTitle("Momentum");
         IPlotterStyle style = plotter.style();
         style.dataStyle().fillStyle().setColor("yellow");
         style.dataStyle().errorBarStyle().setVisible(false);
-        plotter.createRegions(2, 2);
+        plotter.createRegions(2, 3);
         //plotterFrame.addPlotter(plotter);
+        IHistogram1D nhits = aida.histogram1D("Hits per Track", 2, 5, 7);
+        IHistogram1D charge = aida.histogram1D("Track Charge", 3, -1, 2);
+        trkPx = aida.histogram1D("Track Momentum (Px)", 50, -0.1, 0.2);
+        IHistogram1D trkPy = aida.histogram1D("Track Momentum (Py)", 50, -0.2, 0.2);
+        IHistogram1D trkPz = aida.histogram1D("Track Momentum (Pz)", 50, 0, 3);
+        IHistogram1D trkChi2 = aida.histogram1D("Track Chi2", 50, 0, 25.0);
 
-        trkPx = aida.histogram1D("Track Momentum (Px)", 25, -0.25, 0.25);
-        IHistogram1D trkPy = aida.histogram1D("Track Momentum (Py)", 25, -0.5, 0.5);
-        IHistogram1D trkPz = aida.histogram1D("Track Momentum (Pz)", 25, 0, 3.5);
-        IHistogram1D trkChi2 = aida.histogram1D("Track Chi2", 25, 0, 25.0);
-
-        plotter.region(0).plot(trkPx);
-        plotter.region(1).plot(trkPy);
-        plotter.region(2).plot(trkPz);
-        plotter.region(3).plot(trkChi2);
-
-        plotter.show();
+        plotter.region(0).plot(nhits);
+        plotter.region(1).plot(charge);
+        plotter.region(2).plot(trkPx);
+        plotter.region(3).plot(trkPy);
+        plotter.region(4).plot(trkPz);
+        plotter.region(5).plot(trkChi2);
 
 //   ******************************************************************
-        top1 = fac.createPlotterFactory().create("Top Tracking Plots");
-        top1.setTitle("Top Momentum");
-        IPlotterStyle stop1 = top1.style();
-        stop1.dataStyle().fillStyle().setColor("green");
-        stop1.dataStyle().errorBarStyle().setVisible(false);
-        top1.createRegions(2, 2);
-        //topFrame.addPlotter(top1);
-
-        IHistogram1D toptrkPx = aida.histogram1D("Top Track Momentum (Px)", 25, -0.25, 0.25);
-        IHistogram1D toptrkPy = aida.histogram1D("Top Track Momentum (Py)", 25, -0.5, 0.5);
-        IHistogram1D toptrkPz = aida.histogram1D("Top Track Momentum (Pz)", 25, 0, 3.5);
-        IHistogram1D toptrkChi2 = aida.histogram1D("Top Track Chi2", 25, 0, 25.0);
-
-        top1.region(0).plot(toptrkPx);
-        top1.region(1).plot(toptrkPy);
-        top1.region(2).plot(toptrkPz);
-        top1.region(3).plot(toptrkChi2);
-
-        top1.show();
-
-        bot1 = fac.createPlotterFactory().create("Bottom Tracking Plots");
-        bot1.setTitle("Bottom Momentum");
-        IPlotterStyle sbot1 = bot1.style();
-        sbot1.dataStyle().fillStyle().setColor("blue");
-        sbot1.dataStyle().errorBarStyle().setVisible(false);
-        bot1.createRegions(2, 2);
-        //bottomFrame.addPlotter(bot1);
-
-        IHistogram1D bottrkPx = aida.histogram1D("Bottom Track Momentum (Px)", 25, -0.25, 0.25);
-        IHistogram1D bottrkPy = aida.histogram1D("Bottom Track Momentum (Py)", 25, -0.5, 0.5);
-        IHistogram1D bottrkPz = aida.histogram1D("Bottom Track Momentum (Pz)", 25, 0, 3.5);
-        IHistogram1D bottrkChi2 = aida.histogram1D("Bottom Track Chi2", 25, 0, 25.0);
-
-        bot1.region(0).plot(bottrkPx);
-        bot1.region(1).plot(bottrkPy);
-        bot1.region(2).plot(bottrkPz);
-        bot1.region(3).plot(bottrkChi2);
-
-        bot1.show();
-
-//   ******************************************************************
-        IHistogram1D trkd0 = aida.histogram1D("d0 ", 25, -100.0, 100.0);
-        IHistogram1D trkphi = aida.histogram1D("sinphi ", 25, -0.2, 0.2);
-        IHistogram1D trkomega = aida.histogram1D("omega ", 25, -0.0025, 0.0025);
-        IHistogram1D trklam = aida.histogram1D("tan(lambda) ", 25, -0.1, 0.1);
-        IHistogram1D trkz0 = aida.histogram1D("z0 ", 25, -100.0, 100.0);
+        nTracks = aida.histogram1D("Number of Tracks ", 7, 0, 7.0);
+        IHistogram1D trkd0 = aida.histogram1D("d0 ", 50, -5.0, 5.0);
+        IHistogram1D trkphi = aida.histogram1D("sinphi ", 50, -0.1, 0.15);
+        IHistogram1D trkomega = aida.histogram1D("omega ", 50, -0.0006, 0.0006);
+        IHistogram1D trklam = aida.histogram1D("tan(lambda) ", 50, -0.1, 0.1);
+        IHistogram1D trkz0 = aida.histogram1D("y0 ", 50, -1.0, 1.0);
 
         plotter22 = fac.createPlotterFactory().create("HPS Track Params");
         plotter22.setTitle("Track parameters");
@@ -179,398 +79,18 @@
         style22.dataStyle().fillStyle().setColor("yellow");
         style22.dataStyle().errorBarStyle().setVisible(false);
         plotter22.createRegions(2, 3);
-        plotter22.region(0).plot(trkd0);
-        plotter22.region(1).plot(trkphi);
-        plotter22.region(2).plot(trkomega);
-        plotter22.region(3).plot(trklam);
-        plotter22.region(4).plot(trkz0);
+        plotter22.region(0).plot(nTracks);
+        plotter22.region(1).plot(trkd0);
+        plotter22.region(2).plot(trkphi);
+        plotter22.region(3).plot(trkomega);
+        plotter22.region(4).plot(trklam);
+        plotter22.region(5).plot(trkz0);
 
-        plotter2 = fac.createPlotterFactory().create("HPS Tracking Plots");
-        plotter2.setTitle("Track extrapolation");
-        //plotterFrame.addPlotter(plotter2);
-        IPlotterStyle style2 = plotter2.style();
-        style2.dataStyle().fillStyle().setColor("yellow");
-        style2.dataStyle().errorBarStyle().setVisible(false);
-        plotter2.createRegions(2, 4);
-        IHistogram1D xAtConverter = aida.histogram1D("X (mm) @ Z=-60cm", 50, -50, 50);
-        IHistogram1D yAtConverter = aida.histogram1D("Y (mm) @ Z=-60cm", 50, -20, 20);
-        IHistogram1D xAtColl = aida.histogram1D("X (mm) @ Z=-150cm", 50, -200, 200);
-        IHistogram1D yAtColl = aida.histogram1D("Y (mm) @ Z=-150cm", 50, -200, 200);
-        IHistogram1D xAtEcal = aida.histogram1D("X (mm) @ ECAL", 50, -500, 500);
-        IHistogram1D yAtEcal = aida.histogram1D("Y (mm) @ ECAL", 50, -100, 100);
-        IHistogram1D xAtEcal2 = aida.histogram1D("X (mm) @ ECAL (Pz>1)", 50, -500, 500);
-        IHistogram1D yAtEcal2 = aida.histogram1D("Y (mm) @ ECAL (Pz>1)", 50, -100, 100);
-
-        plotter2.region(0).plot(xAtConverter);
-        plotter2.region(4).plot(yAtConverter);
-        plotter2.region(1).plot(xAtColl);
-        plotter2.region(5).plot(yAtColl);
-        plotter2.region(2).plot(xAtEcal);
-        plotter2.region(6).plot(yAtEcal);
-        plotter2.region(3).plot(xAtEcal2);
-        plotter2.region(7).plot(yAtEcal2);
-
-        plotter222 = fac.createPlotterFactory().create("HPS Tracking Plots");
-        plotter222.setTitle("Other");
-        //plotterFrame.addPlotter(plotter222);
-        IPlotterStyle style222 = plotter222.style();
-        style222.dataStyle().fillStyle().setColor("yellow");
-        style222.dataStyle().errorBarStyle().setVisible(false);
-        plotter222.createRegions(2, 3);
-
-        IHistogram1D nHits = aida.histogram1D("Hits per Track", 2, 4, 6);
-        IHistogram1D amp = aida.histogram1D("Amp (HitOnTrack)", 50, 0, 5000);
-        IHistogram1D ampcl = aida.histogram1D("Amp (CluOnTrack)", 50, 0, 5000);
-        IHistogram1D amp2 = aida.histogram1D("Amp Pz>1000 (HitOnTrack)", 50, 0, 5000);
-        IHistogram1D ampcl2 = aida.histogram1D("Amp Pz>1000 (CluOnTrack)", 50, 0, 5000);
-        nTracks = aida.histogram1D("Tracks per Event", 3, 0, 3);
-
-        plotter222.region(0).plot(nHits);
-        plotter222.region(3).plot(nTracks);
-        plotter222.region(1).plot(amp);
-        plotter222.region(4).plot(amp2);
-        plotter222.region(2).plot(ampcl);
-        plotter222.region(5).plot(ampcl2);
-
-        plotter3 = fac.createPlotterFactory().create("HPS Residual Plots");
-        plotter3.setTitle("Residuals");
-        //plotterFrame.addPlotter(plotter3);
-        IPlotterStyle style3 = plotter3.style();
-        style3.dataStyle().fillStyle().setColor("yellow");
-        style3.dataStyle().errorBarStyle().setVisible(false);
-        plotter3.createRegions(6, 2);
-
-        double minResidY = -1.5;
-        double maxResidY = 1.5;
-
-        double minResidX = -5;
-        double maxResidX = 5;
-
-        IHistogram1D mod1ResX = aida.histogram1D("Module 1 Residual X(mm)", 25, minResidX, maxResidX);
-        IHistogram1D mod1ResY = aida.histogram1D("Module 1 Residual Y(mm)", 25, minResidY, maxResidY);
-
-        IHistogram1D mod2ResX = aida.histogram1D("Module 2 Residual X(mm)", 25, minResidX, maxResidX);
-        IHistogram1D mod2ResY = aida.histogram1D("Module 2 Residual Y(mm)", 25, minResidY, maxResidY);
-
-        IHistogram1D mod3ResX = aida.histogram1D("Module 3 Residual X(mm)", 25, minResidX, maxResidX);
-        IHistogram1D mod3ResY = aida.histogram1D("Module 3 Residual Y(mm)", 25, minResidY, maxResidY);
-
-        IHistogram1D mod4ResX = aida.histogram1D("Module 4 Residual X(mm)", 25, minResidX, maxResidX);
-        IHistogram1D mod4ResY = aida.histogram1D("Module 4 Residual Y(mm)", 25, minResidY, maxResidY);
-
-        IHistogram1D mod5ResX = aida.histogram1D("Module 5 Residual X(mm)", 25, minResidX, maxResidX);
-        IHistogram1D mod5ResY = aida.histogram1D("Module 5 Residual Y(mm)", 25, minResidY, maxResidY);
-
-        IHistogram1D mod6ResX = aida.histogram1D("Module 6 Residual X(mm)", 25, minResidX, maxResidX);
-        IHistogram1D mod6ResY = aida.histogram1D("Module 6 Residual Y(mm)", 25, minResidY, maxResidY);
-
-        plotter3.region(0).plot(mod1ResX);
-        plotter3.region(2).plot(mod2ResX);
-        plotter3.region(4).plot(mod3ResX);
-        plotter3.region(6).plot(mod4ResX);
-        plotter3.region(8).plot(mod5ResX);
-        plotter3.region(10).plot(mod6ResX);
-
-        plotter3.region(1).plot(mod1ResY);
-        plotter3.region(3).plot(mod2ResY);
-        plotter3.region(5).plot(mod3ResY);
-        plotter3.region(7).plot(mod4ResY);
-        plotter3.region(9).plot(mod5ResY);
-        plotter3.region(11).plot(mod6ResY);
-
-        plotter3_1 = fac.createPlotterFactory().create("HPS Residual Plots (Single hit per layer)");
-        plotter3_1.setTitle("Residuals (Top)");
-        //plotterFrame.addPlotter(plotter3_1);
-        IPlotterStyle style3_1 = plotter3_1.style();
-        style3_1.dataStyle().fillStyle().setColor("yellow");
-        style3_1.dataStyle().errorBarStyle().setVisible(false);
-        plotter3_1.createRegions(6, 2);
-
-        IHistogram1D mod1ResX_Top = aida.histogram1D("Module 1 Residual X(mm) Top", 25, minResidX, maxResidX);
-        IHistogram1D mod1ResY_Top = aida.histogram1D("Module 1 Residual Y(mm) Top", 25, minResidY, maxResidY);
-
-        IHistogram1D mod2ResX_Top = aida.histogram1D("Module 2 Residual X(mm) Top", 25, minResidX, maxResidX);
-        IHistogram1D mod2ResY_Top = aida.histogram1D("Module 2 Residual Y(mm) Top", 25, minResidY, maxResidY);
-
-        IHistogram1D mod3ResX_Top = aida.histogram1D("Module 3 Residual X(mm) Top", 25, minResidX, maxResidX);
-        IHistogram1D mod3ResY_Top = aida.histogram1D("Module 3 Residual Y(mm) Top", 25, minResidY, maxResidY);
-
-        IHistogram1D mod4ResX_Top = aida.histogram1D("Module 4 Residual X(mm) Top", 25, minResidX, maxResidX);
-        IHistogram1D mod4ResY_Top = aida.histogram1D("Module 4 Residual Y(mm) Top", 25, minResidY, maxResidY);
-
-        IHistogram1D mod5ResX_Top = aida.histogram1D("Module 5 Residual X(mm) Top", 25, minResidX, maxResidX);
-        IHistogram1D mod5ResY_Top = aida.histogram1D("Module 5 Residual Y(mm) Top", 25, minResidY, maxResidY);
-
-        IHistogram1D mod6ResX_Top = aida.histogram1D("Module 6 Residual X(mm) Top", 25, minResidX, maxResidX);
-        IHistogram1D mod6ResY_Top = aida.histogram1D("Module 6 Residual Y(mm) Top", 25, minResidY, maxResidY);
-
-        plotter3_1.region(0).plot(mod1ResX_Top);
-        plotter3_1.region(2).plot(mod2ResX_Top);
-        plotter3_1.region(4).plot(mod3ResX_Top);
-        plotter3_1.region(6).plot(mod4ResX_Top);
-        plotter3_1.region(8).plot(mod5ResX_Top);
-        plotter3_1.region(10).plot(mod6ResX_Top);
-
-        plotter3_1.region(1).plot(mod1ResY_Top);
-        plotter3_1.region(3).plot(mod2ResY_Top);
-        plotter3_1.region(5).plot(mod3ResY_Top);
-        plotter3_1.region(7).plot(mod4ResY_Top);
-        plotter3_1.region(9).plot(mod5ResY_Top);
-        plotter3_1.region(11).plot(mod6ResY_Top);
-
-        plotter3_2 = fac.createPlotterFactory().create("HPS Residual Plots (Single strip cluster per layer)");
-        plotter3_2.setTitle("Residuals (Bottom)");
-        //plotterFrame.addPlotter(plotter3_2);
-        IPlotterStyle style3_2 = plotter3_2.style();
-        style3_2.dataStyle().fillStyle().setColor("yellow");
-        style3_2.dataStyle().errorBarStyle().setVisible(false);
-        plotter3_2.createRegions(6, 2);
-
-        IHistogram1D mod1ResX_Bottom = aida.histogram1D("Module 1 Residual X(mm) Bottom", 25, minResidX, maxResidX);
-        IHistogram1D mod1ResY_Bottom = aida.histogram1D("Module 1 Residual Y(mm) Bottom", 25, minResidY, maxResidY);
-
-        IHistogram1D mod2ResX_Bottom = aida.histogram1D("Module 2 Residual X(mm) Bottom", 25, minResidX, maxResidX);
-        IHistogram1D mod2ResY_Bottom = aida.histogram1D("Module 2 Residual Y(mm) Bottom", 25, minResidY, maxResidY);
-
-        IHistogram1D mod3ResX_Bottom = aida.histogram1D("Module 3 Residual X(mm) Bottom", 25, minResidX, maxResidX);
-        IHistogram1D mod3ResY_Bottom = aida.histogram1D("Module 3 Residual Y(mm) Bottom", 25, minResidY, maxResidY);
-
-        IHistogram1D mod4ResX_Bottom = aida.histogram1D("Module 4 Residual X(mm) Bottom", 25, minResidX, maxResidX);
-        IHistogram1D mod4ResY_Bottom = aida.histogram1D("Module 4 Residual Y(mm) Bottom", 25, minResidY, maxResidY);
-
-        IHistogram1D mod5ResX_Bottom = aida.histogram1D("Module 5 Residual X(mm) Bottom", 25, minResidX, maxResidX);
-        IHistogram1D mod5ResY_Bottom = aida.histogram1D("Module 5 Residual Y(mm) Bottom", 25, minResidY, maxResidY);
-
-        IHistogram1D mod6ResX_Bottom = aida.histogram1D("Module 6 Residual X(mm) Bottom", 25, minResidX, maxResidX);
-        IHistogram1D mod6ResY_Bottom = aida.histogram1D("Module 6 Residual Y(mm) Bottom", 25, minResidY, maxResidY);
-
-        plotter3_2.region(0).plot(mod1ResX_Bottom);
-        plotter3_2.region(2).plot(mod2ResX_Bottom);
-        plotter3_2.region(4).plot(mod3ResX_Bottom);
-        plotter3_2.region(6).plot(mod4ResX_Bottom);
-        plotter3_2.region(8).plot(mod5ResX_Bottom);
-        plotter3_2.region(10).plot(mod6ResX_Bottom);
-
-        plotter3_2.region(1).plot(mod1ResY_Bottom);
-        plotter3_2.region(3).plot(mod2ResY_Bottom);
-        plotter3_2.region(5).plot(mod3ResY_Bottom);
-        plotter3_2.region(7).plot(mod4ResY_Bottom);
-        plotter3_2.region(9).plot(mod5ResY_Bottom);
-        plotter3_2.region(11).plot(mod6ResY_Bottom);
-
-        plotter4 = fac.createPlotterFactory().create("HPS Track and ECal Plots");
-        plotter4.setTitle("Track and ECal Correlations");
-        //plotterFrame.addPlotter(plotter4);
-        IPlotterStyle style4 = plotter4.style();
-        style4.setParameter("hist2DStyle", "colorMap");
-        style4.dataStyle().fillStyle().setParameter("colorMapScheme", "rainbow");
-        style4.dataStyle().fillStyle().setColor("yellow");
-        style4.dataStyle().errorBarStyle().setVisible(false);
-        plotter4.createRegions(2, 3);
-
-        IHistogram2D eVsP = aida.histogram2D("Energy Vs Momentum", 50, 0, 500, 50, 0, 3000);
-        IHistogram1D eOverP = aida.histogram1D("Energy Over Momentum", 50, 0, 2);
-
-        IHistogram1D distX = aida.histogram1D("deltaX", 50, -400, 400);
-        IHistogram1D distY = aida.histogram1D("deltaY", 50, -40, 40);
-
-//        IHistogram1D distX2 = aida.histogram1D("deltaX (Pz>1)", 50, -400, 400);
-//        IHistogram1D distY2 = aida.histogram1D("deltaY (Pz>1)", 50, -40, 40);
-        IHistogram2D xEcalVsTrk = aida.histogram2D("X ECal Vs Track", 100, -400, 400, 100, -400, 400);
-        IHistogram2D yEcalVsTrk = aida.histogram2D("Y ECal Vs Track", 100, -100, 100, 100, -100, 100);
-
-        plotter4.region(0).plot(eVsP);
-        plotter4.region(3).plot(eOverP);
-        plotter4.region(1).plot(distX);
-        plotter4.region(4).plot(distY);
-        plotter4.region(2).plot(xEcalVsTrk);
-        plotter4.region(5).plot(yEcalVsTrk);
-
-        //   ******************************************************************
-        top2 = fac.createPlotterFactory().create("Top ECal Plots");
-        top2.setTitle("Top ECal Correlations");
-        IPlotterStyle stop2 = top2.style();
-        stop2.dataStyle().fillStyle().setColor("green");
-        stop2.dataStyle().errorBarStyle().setVisible(false);
-        stop2.setParameter("hist2DStyle", "colorMap");
-        stop2.dataStyle().fillStyle().setParameter("colorMapScheme", "rainbow");
-        top2.createRegions(2, 3);
-        //topFrame.addPlotter(top2);
-
-        IHistogram2D topeVsP = aida.histogram2D("Top Energy Vs Momentum", 50, 0, 500, 50, 0, 3000);
-        IHistogram1D topeOverP = aida.histogram1D("Top Energy Over Momentum", 50, 0, 2);
-
-        IHistogram1D topdistX = aida.histogram1D("Top deltaX", 50, -400, 400);
-        IHistogram1D topdistY = aida.histogram1D("Top deltaY", 50, -40, 40);
-
-        IHistogram2D topxEcalVsTrk = aida.histogram2D("Top X ECal Vs Track", 100, -400, 400, 100, -400, 400);
-        IHistogram2D topyEcalVsTrk = aida.histogram2D("Top Y ECal Vs Track", 100, 0, 100, 100, 0, 100);
-
-        top2.region(0).plot(topeVsP);
-        top2.region(3).plot(topeOverP);
-        top2.region(1).plot(topdistX);
-        top2.region(4).plot(topdistY);
-        top2.region(2).plot(topxEcalVsTrk);
-        top2.region(5).plot(topyEcalVsTrk);
-
-        bot2 = fac.createPlotterFactory().create("Bottom ECal Plots");
-        bot2.setTitle("Bottom ECal Correlations");
-        IPlotterStyle sbot2 = bot2.style();
-        sbot2.dataStyle().fillStyle().setColor("green");
-        sbot2.dataStyle().errorBarStyle().setVisible(false);
-        sbot2.setParameter("hist2DStyle", "colorMap");
-        sbot2.dataStyle().fillStyle().setParameter("colorMapScheme", "rainbow");
-        bot2.createRegions(2, 3);
-        //bottomFrame.addPlotter(bot2);
-
-        IHistogram2D BottomeVsP = aida.histogram2D("Bottom Energy Vs Momentum", 50, 0, 500, 50, 0, 3000);
-        IHistogram1D BottomeOverP = aida.histogram1D("Bottom Energy Over Momentum", 50, 0, 2);
-
-        IHistogram1D BottomdistX = aida.histogram1D("Bottom deltaX", 50, -400, 400);
-        IHistogram1D BottomdistY = aida.histogram1D("Bottom deltaY", 50, -40, 40);
-
-        IHistogram2D BottomxEcalVsTrk = aida.histogram2D("Bottom X ECal Vs Track", 100, -400, 400, 100, -400, 400);
-        IHistogram2D BottomyEcalVsTrk = aida.histogram2D("Bottom Y ECal Vs Track", 100, -100, 0, 100, -100, 0);
-
-        bot2.region(0).plot(BottomeVsP);
-        bot2.region(3).plot(BottomeOverP);
-        bot2.region(1).plot(BottomdistX);
-        bot2.region(4).plot(BottomdistY);
-        bot2.region(2).plot(BottomxEcalVsTrk);
-        bot2.region(5).plot(BottomyEcalVsTrk);
-
-//   ******************************************************************
-        top3 = fac.createPlotterFactory().create("Top ECal Plots");
-        top3.setTitle("Top ECal More Correlations");
-        IPlotterStyle stop3 = top3.style();
-        stop3.dataStyle().fillStyle().setColor("green");
-        stop3.dataStyle().errorBarStyle().setVisible(false);
-        stop3.setParameter("hist2DStyle", "colorMap");
-        stop3.dataStyle().fillStyle().setParameter("colorMapScheme", "rainbow");
-        top3.createRegions(1, 2);
-        //topFrame.addPlotter(top3);
-
-        IHistogram2D topdistXvsX = aida.histogram2D("Top deltaX vs X", 51, -400, 400, 25, -400, 400);
-        IHistogram2D topdistYvsY = aida.histogram2D("Top deltaY vs Y", 51, 0, 100, 25, -40, 40);
-
-        top3.region(0).plot(topdistXvsX);
-        top3.region(1).plot(topdistYvsY);
-
-        bot3 = fac.createPlotterFactory().create("Bottom ECal Plots");
-        bot3.setTitle("Bottom ECal More Correlations");
-        IPlotterStyle sbot3 = bot3.style();
-        sbot3.dataStyle().fillStyle().setColor("green");
-        sbot3.dataStyle().errorBarStyle().setVisible(false);
-        sbot3.setParameter("hist2DStyle", "colorMap");
-        sbot3.dataStyle().fillStyle().setParameter("colorMapScheme", "rainbow");
-        bot3.createRegions(1, 2);
-        //bottomFrame.addPlotter(bot3);
-
-        IHistogram2D botdistXvsX = aida.histogram2D("Bottom deltaX vs X", 51, -400, 400, 25, -400, 400);
-        IHistogram2D botdistYvsY = aida.histogram2D("Bottom deltaY vs Y", 51, -100, 0, 25, -40, 40);
-
-        bot3.region(0).plot(botdistXvsX);
-        bot3.region(1).plot(botdistYvsY);
-
-//   ******************************************************************
-        plotter5 = fac.createPlotterFactory().create("HPS Hit Positions");
-        plotter5.setTitle("Hit Positions:  Top");
-        //plotterFrame.addPlotter(plotter5);
-        IPlotterStyle style5 = plotter5.style();
-        style5.setParameter("hist2DStyle", "colorMap");
-        style5.dataStyle().fillStyle().setParameter("colorMapScheme", "rainbow");
-        style5.dataStyle().fillStyle().setColor("yellow");
-        style5.dataStyle().errorBarStyle().setVisible(false);
-        plotter5.createRegions(1, 2);
-
-        IHistogram1D charge = aida.histogram1D("Charge", 3, -1, 1);
-
-        IHistogram2D l1Pos = aida.histogram2D("Layer 1 HTH Position:  Top", 50, -55, 55, 55, -25, 25);
-        IHistogram2D l7Pos = aida.histogram2D("Layer 7 HTH Position:  Top", 50, -55, 55, 55, -25, 25);
-
-        plotter5.region(0).plot(l1Pos);
-        plotter5.region(1).plot(l7Pos);
-
-        plotter5_1 = fac.createPlotterFactory().create("HPS Hit Positions");
-        plotter5_1.setTitle("Hit Positions:  Bottom");
-        //plotterFrame.addPlotter(plotter5_1);
-        IPlotterStyle style5_1 = plotter5_1.style();
-        style5_1.setParameter("hist2DStyle", "colorMap");
-        style5_1.dataStyle().fillStyle().setParameter("colorMapScheme", "rainbow");
-        style5_1.dataStyle().fillStyle().setColor("yellow");
-        style5_1.dataStyle().errorBarStyle().setVisible(false);
-        plotter5_1.createRegions(1, 2);
-
-        IHistogram2D l1PosBot = aida.histogram2D("Layer 1 HTH Position:  Bottom", 50, -55, 55, 55, -25, 25);
-        IHistogram2D l7PosBot = aida.histogram2D("Layer 7 HTH Position:  Bottom", 50, -55, 55, 55, -25, 25);
-        plotter5_1.region(0).plot(l1PosBot);
-        plotter5_1.region(1).plot(l7PosBot);
-
-        plotter55 = fac.createPlotterFactory().create("HPS Hit Positions");
-        plotter55.setTitle("Helical Track Hits");
-        //plotterFrame.addPlotter(plotter55);
-        IPlotterStyle style55 = plotter55.style();
-        style55.dataStyle().fillStyle().setColor("Green");
-        style55.dataStyle().errorBarStyle().setVisible(false);
-        style55.dataStyle().markerStyle().setSize(20);
-        plotter55.createRegions(1, 2);
-
-        IProfile avgLayersTopPlot = aida.profile1D("Number of Stereo Hits per layer in Top Half", 5, 1, 11);
-        IProfile avgLayersBottomPlot = aida.profile1D("Number of Stereo Hits per layer in Bottom Half", 5, 1, 11);
-
-        plotter55.region(0).plot(avgLayersTopPlot);
-        plotter55.region(1).plot(avgLayersBottomPlot);
-
-        plotter6 = fac.createPlotterFactory().create("HPS ECAL Hit Positions");
-        plotter6.setTitle("ECAL Positions");
-        //plotterFrame.addPlotter(plotter6);
-        IPlotterStyle style6 = plotter6.style();
-        style6.setParameter("hist2DStyle", "colorMap");
-        style6.dataStyle().fillStyle().setParameter("colorMapScheme", "rainbow");
-        style6.dataStyle().fillStyle().setColor("yellow");
-        style6.dataStyle().errorBarStyle().setVisible(false);
-        plotter6.createRegions(4, 2);
-
-        IHistogram2D topECal = aida.histogram2D("Top ECal Cluster Position", 50, -400, 400, 10, 0, 100);
-        IHistogram2D botECal = aida.histogram2D("Bottom ECal Cluster Position", 50, -400, 400, 10, -100, 0);
-        IHistogram2D topECal1 = aida.histogram2D("Top ECal Cluster Position (>0 tracks)", 50, -400, 400, 10, 0, 100);
-        IHistogram2D botECal1 = aida.histogram2D("Bottom ECal Cluster Position (>0 tracks)", 50, -400, 400, 10, -100, 0);
-        IHistogram2D topECal2 = aida.histogram2D("Top ECal Cluster Position (E>100,>0 tracks)", 50, -400, 400, 10, 0, 100);
-        IHistogram2D botECal2 = aida.histogram2D("Bottom ECal Cluster Position (E>100,>0 tracks)", 50, -400, 400, 10, -100, 0);
-        IHistogram2D topECal3 = aida.histogram2D("Top ECal Cluster Position w_E (E>100,>0 tracks)", 50, -400, 400, 10, 0, 100);
-        IHistogram2D botECal3 = aida.histogram2D("Bottom ECal Cluster Position w_E (E>100,>0 tracks)", 50, -400, 400, 10, -100, 0);
-
-        plotter6.region(0).plot(topECal);
-        plotter6.region(1).plot(botECal);
-        plotter6.region(2).plot(topECal1);
-        plotter6.region(3).plot(botECal1);
-        plotter6.region(4).plot(topECal2);
-        plotter6.region(5).plot(botECal2);
-        plotter6.region(6).plot(topECal3);
-        plotter6.region(7).plot(botECal3);
-
-        //plotterFrame.pack();
-        //plotterFrame.setVisible(true);
-        //topFrame.pack();
-        //topFrame.setVisible(true);
-        //bottomFrame.pack();
-        //bottomFrame.setVisible(true);
-        plotter7 = fac.createPlotterFactory().create("HPS ECAL Hit Positions");
-        plotter7.setTitle("Basic Misc Stuff");
-        //plotterFrame.addPlotter(plotter7);
-        IPlotterStyle style7 = plotter7.style();
-        style7.setParameter("hist2DStyle", "colorMap");
-        style7.dataStyle().fillStyle().setParameter("colorMapScheme", "rainbow");
-        style7.dataStyle().fillStyle().setColor("yellow");
-        style7.dataStyle().errorBarStyle().setVisible(false);
-        plotter7.createRegions(2, 2);
-
-        IHistogram2D quadrants = aida.histogram2D("Charge vs Slope", 2, -1, 1, 2, -1, 1);
-        plotter7.region(0).plot(quadrants);
-
+        plotter22.show();
+        plotter.show();
     }
 
-    public TrackingReconstructionPlots() {
+    public TrackingReconPlots() {
     }
 
     public void setOutputPlots(String output) {
@@ -597,77 +117,18 @@
     @Override
     public void process(EventHeader event) {
         aida.tree().cd("/");
-        if (!event.hasCollection(HelicalTrackHit.class, helicalTrackHitCollectionName)) {
+        if (!event.hasCollection(HelicalTrackHit.class, helicalTrackHitCollectionName))
             return;
-        }
 
-       
-        List<HelicalTrackHit> hthList = event.get(HelicalTrackHit.class, helicalTrackHitCollectionName);
-        int[] layersTop = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
-        int[] layersBot = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
-        
-        for (HelicalTrackHit hth : hthList) {
-            HelicalTrackCross htc = (HelicalTrackCross) hth;
-            HpsSiSensor sensor = ((HpsSiSensor) ((RawTrackerHit) htc.getRawHits().get(0)).getDetectorElement());
-            if (sensor.isTopLayer()) {
-                layersTop[htc.Layer() - 1]++;
-            } else {
-                layersBot[htc.Layer() - 1]++;
-            }
-        }
-        for (int i = 0; i < 12; i++) {
-            aida.profile1D("Number of Stereo Hits per layer in Top Half").fill(i + 1, layersTop[i]);
-            aida.profile1D("Number of Stereo Hits per layer in Bottom Half").fill(i + 1, layersBot[i]);
-        }
         if (!event.hasCollection(Track.class, trackCollectionName)) {
-            aida.histogram1D("Number Tracks/Event").fill(0);
+            nTracks.fill(0);
             return;
         }
 
         List<Track> tracks = event.get(Track.class, trackCollectionName);
         nTracks.fill(tracks.size());
-        if (event.hasCollection(Cluster.class, ecalCollectionName)) {
-            List<Cluster> clusters = event.get(Cluster.class, ecalCollectionName);
-            for (Cluster cluster : clusters) {
-                if (cluster.getPosition()[1] > 0) {
-                    aida.histogram2D("Top ECal Cluster Position").fill(cluster.getPosition()[0], cluster.getPosition()[1]);
-                }
-                if (cluster.getPosition()[1] < 0) {
-                    aida.histogram2D("Bottom ECal Cluster Position").fill(cluster.getPosition()[0], cluster.getPosition()[1]);
-                }
-
-                if (tracks.size() > 0) {
-                    if (cluster.getPosition()[1] > 0) {
-                        aida.histogram2D("Top ECal Cluster Position (>0 tracks)").fill(cluster.getPosition()[0], cluster.getPosition()[1]);
-                    }
-                    if (cluster.getPosition()[1] < 0) {
-                        aida.histogram2D("Bottom ECal Cluster Position (>0 tracks)").fill(cluster.getPosition()[0], cluster.getPosition()[1]);
-                    }
-
-                    if (cluster.getEnergy() > 100) {
-                        if (cluster.getPosition()[1] > 0) {
-                            aida.histogram2D("Top ECal Cluster Position (E>100,>0 tracks)").fill(cluster.getPosition()[0], cluster.getPosition()[1]);
-                            aida.histogram2D("Top ECal Cluster Position w_E (E>100,>0 tracks)").fill(cluster.getPosition()[0], cluster.getPosition()[1], cluster.getEnergy());
-                        }
-                        if (cluster.getPosition()[1] < 0) {
-                            aida.histogram2D("Bottom ECal Cluster Position (E>100,>0 tracks)").fill(cluster.getPosition()[0], cluster.getPosition()[1]);
-                            aida.histogram2D("Bottom ECal Cluster Position w_E (E>100,>0 tracks)").fill(cluster.getPosition()[0], cluster.getPosition()[1], cluster.getEnergy());
-                        }
-                    }
-                }
-
-            }
-        }
-
-        List<SiTrackerHitStrip1D> stripHits = event.get(SiTrackerHitStrip1D.class, "StripClusterer_SiTrackerHitStrip1D");
-        int stripClustersPerLayerTop[] = getStripClustersPerLayer(stripHits, "up");
-        //int stripClustersPerLayerBottom[] = getStripClustersPerLayer(stripHits,"down");
-
-        boolean hasSingleStripClusterPerLayer = singleStripClusterPerLayer(stripClustersPerLayerTop);
 
         for (Track trk : tracks) {
-
-            boolean isSingleHitPerLayerTrack = singleTrackHitPerLayer(trk);
 
             aida.histogram1D("Track Momentum (Px)").fill(trk.getTrackStates().get(0).getMomentum()[1]);
             aida.histogram1D("Track Momentum (Py)").fill(trk.getTrackStates().get(0).getMomentum()[2]);
@@ -675,364 +136,34 @@
             aida.histogram1D("Track Chi2").fill(trk.getChi2());
 
             aida.histogram1D("Hits per Track").fill(trk.getTrackerHits().size());
-            SeedTrack stEle = (SeedTrack) trk;
-            SeedCandidate seedEle = stEle.getSeedCandidate();
-            HelicalTrackFit ht = seedEle.getHelix();
-            HelixConverter converter = new HelixConverter(0);
-            StraightLineTrack slt = converter.Convert(ht);
-
-            Hep3Vector posAtEcal = TrackUtils.getTrackPositionAtEcal(trk);
-
-            aida.histogram1D("X (mm) @ Z=-60cm").fill(slt.getYZAtX(BeamlineConstants.HARP_POSITION_TESTRUN)[0]);  //this is y in the tracker frame
-            aida.histogram1D("Y (mm) @ Z=-60cm").fill(slt.getYZAtX(BeamlineConstants.HARP_POSITION_TESTRUN)[1]);  //this is z in the tracker frame
-            //double sECAL = HelixUtils.PathToXPlane(ht, zEcal, 3000, 1).get(0);
-            aida.histogram1D("X (mm) @ Z=-150cm").fill(slt.getYZAtX(zAtColl)[0]);
-            aida.histogram1D("Y (mm) @ Z=-150cm").fill(slt.getYZAtX(zAtColl)[1]);
-
-            //Straight line after field-region???
-            //HelixConverter converterEcal = new HelixConverter(zAtDownStrPairSpec);
-            //StraightLineTrack sltEcal = converterEcal.Convert(ht);
-//            double sECAL = HelixUtils.PathToXPlane(ht, zEcal, 3000, 1).get(0);
-//            Hep3Vector posonhelix = HelixUtils.PointOnHelix(ht, sECAL);//position in tracker coordinates!
-            aida.histogram1D("X (mm) @ ECAL").fill(posAtEcal.x());
-            aida.histogram1D("Y (mm) @ ECAL").fill(posAtEcal.y());
-            if (trk.getTrackStates().get(0).getMomentum()[0] > 1.0) {
-                aida.histogram1D("X (mm) @ ECAL (Pz>1)").fill(posAtEcal.x());
-                aida.histogram1D("Y (mm) @ ECAL (Pz>1)").fill(posAtEcal.y());
-            }
+            aida.histogram1D("Track Charge").fill(-trk.getCharge());
             aida.histogram1D("d0 ").fill(trk.getTrackStates().get(0).getParameter(ParameterName.d0.ordinal()));
             aida.histogram1D("sinphi ").fill(Math.sin(trk.getTrackStates().get(0).getParameter(ParameterName.phi0.ordinal())));
             aida.histogram1D("omega ").fill(trk.getTrackStates().get(0).getParameter(ParameterName.omega.ordinal()));
             aida.histogram1D("tan(lambda) ").fill(trk.getTrackStates().get(0).getParameter(ParameterName.tanLambda.ordinal()));
-            aida.histogram1D("z0 ").fill(trk.getTrackStates().get(0).getParameter(ParameterName.z0.ordinal()));
+            aida.histogram1D("y0 ").fill(trk.getTrackStates().get(0).getParameter(ParameterName.z0.ordinal()));
 
-            int isTop = -1;
-            if (trk.getTrackerHits().get(0).getPosition()[2] > 0) {
-                isTop = 0;//make plot look pretty
-            }
-            int charge = trk.getCharge();
-            if (charge > 0) {
-                charge = 0;//make plot look pretty
-            }//            System.out.println("Charge = " + charge + "; isTop = " + isTop);
-            aida.histogram2D("Charge vs Slope").fill(charge, isTop);
-            if (isTop == 0) {
-                aida.histogram1D("Top Track Momentum (Px)").fill(trk.getTrackStates().get(0).getMomentum()[1]);
-                aida.histogram1D("Top Track Momentum (Py)").fill(trk.getTrackStates().get(0).getMomentum()[2]);
-                aida.histogram1D("Top Track Momentum (Pz)").fill(trk.getTrackStates().get(0).getMomentum()[0]);
-                aida.histogram1D("Top Track Chi2").fill(trk.getChi2());
-            } else {
-                aida.histogram1D("Bottom Track Momentum (Px)").fill(trk.getTrackStates().get(0).getMomentum()[1]);
-                aida.histogram1D("Bottom Track Momentum (Py)").fill(trk.getTrackStates().get(0).getMomentum()[2]);
-                aida.histogram1D("Bottom Track Momentum (Pz)").fill(trk.getTrackStates().get(0).getMomentum()[0]);
-                aida.histogram1D("Bottom Track Chi2").fill(trk.getChi2());
-            }
-            List<TrackerHit> hitsOnTrack = trk.getTrackerHits();
-            for (TrackerHit hit : hitsOnTrack) {
-                HelicalTrackHit htc = (HelicalTrackHit) hit;
-                HelicalTrackCross htcross = (HelicalTrackCross) htc;
-                double sHit = ht.PathMap().get(htc);
-                Hep3Vector posonhelix = HelixUtils.PointOnHelix(ht, sHit);
-
-                double yTr = posonhelix.y();
-                double zTr = posonhelix.z();
-                int layer = htc.Layer();
-                String modNum = "Module X ";
-                if (layer == 1) {
-                    modNum = "Module 1 ";
-                }
-                if (layer == 3) {
-                    modNum = "Module 2 ";
-                }
-                if (layer == 5) {
-                    modNum = "Module 3 ";
-                }
-                if (layer == 7) {
-                    modNum = "Module 4 ";
-                }
-                if (layer == 9) {
-                    modNum = "Module 5 ";
-                }
-                if (layer == 11) {
-                    modNum = "Module 6 ";
-                }
-                SymmetricMatrix cov = htc.getCorrectedCovMatrix();
-
-                aida.histogram1D(modNum + "Residual X(mm)").fill(htcross.getCorrectedPosition().y() - yTr);//these hits should be rotated track hits already
-                aida.histogram1D(modNum + "Residual Y(mm)").fill(htcross.getCorrectedPosition().z() - zTr);//these hits should be rotated track hits already
-                if (hit.getPosition()[2] > 0) {
-                    aida.histogram1D(modNum + "Residual X(mm) Top").fill(htcross.getCorrectedPosition().y() - yTr);//these hits should be rotated track hits already
-                    aida.histogram1D(modNum + "Residual Y(mm) Top").fill(htcross.getCorrectedPosition().z() - zTr);//these hits should be rotated track hits already
-
-                }
-                if (hit.getPosition()[2] < 0) {
-                    aida.histogram1D(modNum + "Residual X(mm) Bottom").fill(htcross.getCorrectedPosition().y() - yTr);//these hits should be rotated track hits already
-                    aida.histogram1D(modNum + "Residual Y(mm) Bottom").fill(htcross.getCorrectedPosition().z() - zTr);//these hits should be rotated track hits already
-
-                }
-                HpsSiSensor sensor = ((HpsSiSensor) ((RawTrackerHit) htc.getRawHits().get(0)).getDetectorElement());
-                double x = htcross.getCorrectedPosition().y();
-                double y = htcross.getCorrectedPosition().z();
-                if (sensor.isTopLayer()) {
-                    layersTop[htc.Layer() - 1]++;
-                    Hep3Vector sensorPos = ((SiSensor) ((RawTrackerHit) htc.getRawHits().get(0)).getDetectorElement()).getGeometry().getPosition();
-                    if (htc.Layer() == 1) {
-//                    System.out.println(sensorPos.toString());
-//                    System.out.println("Hit X = " + x + "; Hit Y = " + y);
-                        aida.histogram2D("Layer 1 HTH Position:  Top").fill(x - sensorPos.x(), y - sensorPos.y());
-                    }
-                    if (htc.Layer() == 7) {
-                        aida.histogram2D("Layer 7 HTH Position:  Top").fill(x - sensorPos.x(), y - sensorPos.y());
-                    }
-                } else {
-                    layersBot[htc.Layer() - 1]++;
-                    Hep3Vector sensorPos = ((SiSensor) ((RawTrackerHit) htc.getRawHits().get(0)).getDetectorElement()).getGeometry().getPosition();
-                    if (htc.Layer() == 1) {
-//                    System.out.println(sensorPos.toString());
-//                    System.out.println("Hit X = " + x + "; Hit Y = " + y);
-                        aida.histogram2D("Layer 1 HTH Position:  Bottom").fill(x - sensorPos.x(), y - sensorPos.y());
-                    }
-                    if (htc.Layer() == 7) {
-                        aida.histogram2D("Layer 7 HTH Position:  Bottom").fill(x - sensorPos.x(), y - sensorPos.y());
-                    }
-                }
-                /*
-                 List<RawTrackerHit> rawHits = hit.getRawHits();                
-                 for (RawTrackerHit rawHit : rawHits) {
-                 ChannelConstants constants = HPSSVTCalibrationConstants.getChannelConstants((SiSensor) rawHit.getDetectorElement(), rawHit.getIdentifierFieldValue("strip"));
-                 HPSShapeFitParameters fit = _shaper.fitShape(rawHit, constants);
-                 double amp = fit.getAmp();
-                    
-                 aida.histogram1D("Amp (HitOnTrack)").fill(amp);
-                 if (trk.getTrackStates().get(0).getMomentum()[0] > 1)
-                 aida.histogram1D("Amp Pz>1000 (HitOnTrack)").fill(amp);
-                 }                
-                 */
-                if(isShapeFit()) {
-                    for (HelicalTrackStrip hts : htcross.getStrips()) {
-                        double clusterSum = 0;
-                        for (RawTrackerHit rawHit : (List<RawTrackerHit>) hts.rawhits()) {
-                            //===> ChannelConstants constants = HPSSVTCalibrationConstants.getChannelConstants((SiSensor) rawHit.getDetectorElement(), rawHit.getIdentifierFieldValue("strip"));
-                            //===>for (ShapeFitParameters fit : _shaper.fitShape(rawHit, constants)) {
-                            for (ShapeFitParameters fit : _shaper.fitShape(rawHit)) {
-                                double amp = fit.getAmp();
-                                clusterSum += amp;
-                                aida.histogram1D("Amp (HitOnTrack)").fill(amp);
-                                if (trk.getTrackStates().get(0).getMomentum()[0] > 1) {
-                                    aida.histogram1D("Amp Pz>1000 (HitOnTrack)").fill(amp);
-                                }
-                            }
-                            aida.histogram1D("Amp (CluOnTrack)").fill(clusterSum);
-                            if (trk.getTrackStates().get(0).getMomentum()[0] > 1) {
-                                aida.histogram1D("Amp Pz>1000 (CluOnTrack)").fill(clusterSum);
-                            }
-                        }
-                    }
-                }
-            }
-            if(event.hasCollection(Cluster.class,ecalCollectionName)) {
-                List<Cluster> clusters = event.get(Cluster.class, ecalCollectionName);
-
-                Cluster clust = findClosestCluster(posAtEcal, clusters);
-
-                //           if (clust != null) {
-                if (clust != null) {
-
-                    posAtEcal = TrackUtils.extrapolateTrack(trk, clust.getPosition()[2]);//.positionAtEcal();
-
-                    aida.histogram2D("Energy Vs Momentum").fill(clust.getEnergy(), trk.getTrackStates().get(0).getMomentum()[0] * 1000.0);
-                    aida.histogram1D("Energy Over Momentum").fill(clust.getEnergy() / (trk.getTrackStates().get(0).getMomentum()[0] * 1000.0));
-                    aida.histogram1D("deltaX").fill(clust.getPosition()[0] - posAtEcal.x());
-                    aida.histogram1D("deltaY").fill(clust.getPosition()[1] - posAtEcal.y());
-                    //                if (trk.getTrackStates().get(0).getMomentum()[0] > 1.0) {
-                    //                    aida.histogram1D("deltaX (Pz>1)").fill(clust.getPosition()[0] - posAtEcal.y());
-                    //                    aida.histogram1D("deltaY (Pz>1)").fill(clust.getPosition()[1] - posAtEcal.z());
-                    //                }
-                    aida.histogram2D("X ECal Vs Track").fill(clust.getPosition()[0], posAtEcal.x());
-                    aida.histogram2D("Y ECal Vs Track").fill(clust.getPosition()[1], posAtEcal.y());
-                    if (isTop == 0) {
-                        aida.histogram2D("Top Energy Vs Momentum").fill(clust.getEnergy(), trk.getTrackStates().get(0).getMomentum()[0] * 1000.0);
-                        //                    aida.histogram2D("Top Energy Vs Momentum").fill(posAtEcal.y(), trk.getTrackStates().get(0).getMomentum()[0] * 1000.0);
-                        aida.histogram1D("Top Energy Over Momentum").fill(clust.getEnergy() / (trk.getTrackStates().get(0).getMomentum()[0] * 1000.0));
-                        aida.histogram1D("Top deltaX").fill(clust.getPosition()[0] - posAtEcal.x());
-                        aida.histogram1D("Top deltaY").fill(clust.getPosition()[1] - posAtEcal.y());
-                        aida.histogram2D("Top deltaX vs X").fill(clust.getPosition()[0], clust.getPosition()[0] - posAtEcal.x());
-                        aida.histogram2D("Top deltaY vs Y").fill(clust.getPosition()[1], clust.getPosition()[1] - posAtEcal.y());
-                        aida.histogram2D("Top X ECal Vs Track").fill(clust.getPosition()[0], posAtEcal.x());
-                        aida.histogram2D("Top Y ECal Vs Track").fill(clust.getPosition()[1], posAtEcal.y());
-                    } else {
-                        aida.histogram2D("Bottom Energy Vs Momentum").fill(clust.getEnergy(), trk.getTrackStates().get(0).getMomentum()[0] * 1000.0);
-                        aida.histogram1D("Bottom Energy Over Momentum").fill(clust.getEnergy() / (trk.getTrackStates().get(0).getMomentum()[0] * 1000.0));
-                        aida.histogram1D("Bottom deltaX").fill(clust.getPosition()[0] - posAtEcal.x());
-                        aida.histogram1D("Bottom deltaY").fill(clust.getPosition()[1] - posAtEcal.y());
-                        aida.histogram2D("Bottom deltaX vs X").fill(clust.getPosition()[0], clust.getPosition()[0] - posAtEcal.x());
-                        aida.histogram2D("Bottom deltaY vs Y").fill(clust.getPosition()[1], clust.getPosition()[1] - posAtEcal.y());
-                        aida.histogram2D("Bottom X ECal Vs Track").fill(clust.getPosition()[0], posAtEcal.x());
-                        aida.histogram2D("Bottom Y ECal Vs Track").fill(clust.getPosition()[1], posAtEcal.y());
-                    }
-
-                }
-            }
-        }
-    }
-
-    public int[] getTrackHitsPerLayer(Track trk) {
-        int n[] = {0, 0, 0, 0, 0, 0};
-        List<TrackerHit> hitsOnTrack = trk.getTrackerHits();
-        int layer;
-        for (TrackerHit hit : hitsOnTrack) {
-            HelicalTrackHit htc = (HelicalTrackHit) hit;
-//            if (htc.getPosition()[2] < 0) {
-            layer = htc.Layer();
-            layer = (layer - 1) / 2;
-            n[layer] = n[layer] + 1;
-//            }
+//            SeedTrack stEle = (SeedTrack) trk;
+//            SeedCandidate seedEle = stEle.getSeedCandidate();
+//            HelicalTrackFit ht = seedEle.getHelix();
+//            HelixConverter converter = new HelixConverter(0);
         }
 
-        return n;
-    }
-
-    public boolean singleTrackHitPerLayer(Track track) {
-        int hitsPerLayer[] = getTrackHitsPerLayer(track);
-        for (int i = 0; i < 6; ++i) {
-            if (hitsPerLayer[i] != 1) {
-                return false;
-            }
-        }
-        return true;
-    }
-
-    public boolean singleStripClusterPerLayer(int hitsPerLayer[]) {
-        //This includes both axial and stereo separately 
-        // so for a hit in each double layer we need 10 hits
-        for (int i = 0; i < 12; ++i) {
-            if (hitsPerLayer[i] != 1) {
-                return false;
-            }
-        }
-        return true;
-    }
-
-    public int[] getStripClustersPerLayer(List<SiTrackerHitStrip1D> trackerHits, String side) {
-        String name;
-        int l;
-        int n[] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
-        boolean ddd = false;
-
-        if (ddd) {
-            System.out.println("Get # hits per layer on side \"" + side + "\"");
-        }
-
-        for (SiTrackerHitStrip1D stripCluster : trackerHits) {
-
-            if (ddd) {
-                System.out.println("Processing stripCluster " + stripCluster.toString());
-            }
-
-            if (!"".equals(side)) {
-                String s;
-                if (stripCluster.getPosition()[1] >= 0.0) {
-                    s = "up";
-                } else {
-                    s = "down";
-                }
-                if (!s.equals(side)) {
-                    continue;
-                }
-            }
-
-            name = stripCluster.getSensor().getName();
-            if (name.length() < 14) {
-                System.err.println("This name is too short!!");
-                throw new RuntimeException("SiSensor name " + name + " is invalid?");
-            }
-
-            if (ddd) {
-                System.out.println("sensor name  " + name);
-            }
-            
-            if(name.contains("layer") && name.contains("_module")) {
-                //String str_l = name.substring(13);
-                String str_l = name.substring(name.indexOf("layer") + 5, name.indexOf("_module"));
-                l = Integer.parseInt(str_l);
-            }
-            else if(name.contains("module") && name.contains("_halfmodule")) {
-                int ll = HPSTrackerBuilder.getLayerFromVolumeName(name);
-                boolean isAxial = HPSTrackerBuilder.isAxialFromName(name);
-                boolean isTopLayer = HPSTrackerBuilder.getHalfFromName(name).equals("top") ? true : false;
-                if(isAxial) {
-                    if(isTopLayer) {
-                        l = 2*ll-1;
-                    }
-                    else {
-                        l = 2*ll;
-                    }
-                } else {
-                    if(isTopLayer) {
-                        l = 2*ll;
-                    } else {
-                        l = 2*ll-1;
-                    }
-                }
-
-            } else {
-                throw new RuntimeException("Cannot get layer from name " + name);
-            }
-            
-            if (ddd) {
-                System.out.println("sensor name  " + name + " --> layer " + l);
-            }
-
-            if (l < 1 || l > 12) {
-                System.out.println("This layer doesn't exist?");
-                throw new RuntimeException("SiSensor name " + name + " is invalid?");
-            }
-
-            n[l - 1] = n[l - 1] + 1;
-
-        }
-
-        return n;
     }
 
     @Override
     public void endOfData() {
-        if (outputPlots != null) {
+        if (outputPlots != null)
             try {
-                aida.saveAs(outputPlots);
+                plotter.writeToFile(outputPlots+"-mom.gif");
+                 plotter22.writeToFile(outputPlots+"-trkparams.gif");
             } catch (IOException ex) {
-                Logger.getLogger(TrackingReconstructionPlots.class.getName()).log(Level.SEVERE, null, ex);
+                Logger.getLogger(TrackingReconPlots.class.getName()).log(Level.SEVERE, null, ex);
             }
-        }
+
         //plotterFrame.dispose();
         //topFrame.dispose();
         //bottomFrame.dispose();
     }
 
-    private Cluster findClosestCluster(Hep3Vector posonhelix, List<Cluster> clusters) {
-        Cluster closest = null;
-        double minDist = 9999;
-        for (Cluster cluster : clusters) {
-            double[] clPos = cluster.getPosition();
-            double clEne = cluster.getEnergy();
-            double dist = Math.sqrt(Math.pow(clPos[0] - posonhelix.x(), 2) + Math.pow(clPos[1] - posonhelix.y(), 2)); //coordinates!!!
-//            double dist = Math.sqrt(Math.pow(clPos[1] - posonhelix.z(), 2)); //coordinates!!!
-            if (dist < minDist && clEne > 50) {
-                closest = cluster;
-                minDist = dist;
-            }
-//                    if(cluster.getEnergy()/10>500)
-        }
-//        System.out.println("Found a cluster..." + minDist);
-
-        return closest;
-
-    }
-
-    public boolean isShapeFit() {
-        return shapeFit;
-    }
-
-    public void setShapeFit(boolean shapeFit) {
-        this.shapeFit = shapeFit;
-    }
 }

Added: java/trunk/monitoring-drivers/src/main/java/org/hps/monitoring/drivers/trackrecon/V0ReconPlots.java
 =============================================================================
--- java/trunk/monitoring-drivers/src/main/java/org/hps/monitoring/drivers/trackrecon/V0ReconPlots.java	(added)
+++ java/trunk/monitoring-drivers/src/main/java/org/hps/monitoring/drivers/trackrecon/V0ReconPlots.java	Thu Mar  5 10:58:18 2015
@@ -0,0 +1,155 @@
+package org.hps.monitoring.drivers.trackrecon;
+
+import hep.aida.IAnalysisFactory;
+import hep.aida.IHistogram1D;
+import hep.aida.IHistogram2D;
+import hep.aida.IPlotter;
+import hep.aida.IPlotterStyle;
+import java.io.IOException;
+import java.util.List;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+import org.lcsim.event.EventHeader;
+import org.lcsim.event.ReconstructedParticle;
+import org.lcsim.event.Track;
+import org.lcsim.event.Vertex;
+import org.lcsim.geometry.Detector;
+import org.lcsim.util.Driver;
+import org.lcsim.util.aida.AIDA;
+
+/**
+ *
+ * @author mgraham
+ */
+public class V0ReconPlots extends Driver {
+
+    private AIDA aida = AIDA.defaultInstance();
+    String finalStateParticlesColName = "FinalStateParticles";
+    String unconstrainedV0CandidatesColName = "UnconstrainedV0Candidates";
+    String beamConV0CandidatesColName = "BeamspotConstrainedV0Candidates";
+    String targetV0ConCandidatesColName = "TargetConstrainedV0Candidates";
+    //some counters
+    int nRecoEvents = 0;
+    boolean debug = false;
+
+    IPlotter plotterUncon;
+    IPlotter plotter2d;
+    String outputPlots;
+
+    @Override
+    protected void detectorChanged(Detector detector) {
+        System.out.println("V0Monitoring::detectorChanged  Setting up the plotter");
+
+        aida.tree().cd("/");
+//        resetOccupancyMap(); // this is for calculating averages         
+        IAnalysisFactory fac = aida.analysisFactory();
+
+        plotterUncon = fac.createPlotterFactory().create("HPS Tracking Plots");
+        setupPlotter(plotterUncon, "Unconstrained V0s");
+        plotterUncon.createRegions(2, 3);
+
+        /*  V0 Quantities   */
+        /*  Mass, vertex, chi^2 of fit */
+        /* beamspot constrained */
+        IHistogram1D nV0 = aida.histogram1D("Number of V0 per event", 5, 0, 5);
+        IHistogram1D unconMass = aida.histogram1D("Unconstrained Mass (GeV)", 100, 0, 0.200);
+        IHistogram1D unconVx = aida.histogram1D("Unconstrained Vx (mm)", 50, -1, 1);
+        IHistogram1D unconVy = aida.histogram1D("Unconstrained Vy (mm)", 50, -0.6, 0.6);
+        IHistogram1D unconVz = aida.histogram1D("Unconstrained Vz (mm)", 50, -10, 10);
+        IHistogram1D unconChi2 = aida.histogram1D("Unconstrained Chi2", 25, 0, 25);
+        plotterUncon.region(0).plot(nV0);
+        plotterUncon.region(1).plot(unconMass);
+        plotterUncon.region(2).plot(unconChi2);
+        plotterUncon.region(3).plot(unconVx);
+        plotterUncon.region(4).plot(unconVy);
+        plotterUncon.region(5).plot(unconVz);
+
+        plotter2d = fac.createPlotterFactory().create("HPS Tracking Plots");
+        setupPlotter(plotter2d, "V0 2D Plots");
+        plotter2d.createRegions(2, 2);
+        IPlotterStyle style = plotter2d.style();
+        style.statisticsBoxStyle().setVisible(false);
+        style.setParameter("hist2DStyle", "colorMap");
+        style.dataStyle().fillStyle().setParameter("colorMapScheme", "rainbow");
+
+        IHistogram2D pEleVspPos = aida.histogram2D("P(e) vs P(p)", 50, 0, 2.5, 50, 0, 2.5);
+        IHistogram2D pyEleVspyPos = aida.histogram2D("Py(e) vs Py(p)", 50, -0.1, 0.1, 50, -0.1, 0.1);
+        IHistogram2D pxEleVspxPos = aida.histogram2D("Px(e) vs Px(p)", 50, -0.1, 0.1, 50, -0.1, 0.1);
+        IHistogram2D massVsVtxZ = aida.histogram2D("Mass vs Vz", 50, 0, 0.15, 50, -10, 10);
+        plotter2d.region(0).plot(pEleVspPos);
+        plotter2d.region(1).plot(pxEleVspxPos);
+        plotter2d.region(2).plot(massVsVtxZ);
+        plotter2d.region(3).plot(pyEleVspyPos);
+    }
+
+    @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;
+        nRecoEvents++;
+
+        List<ReconstructedParticle> unConstrainedV0List = event.get(ReconstructedParticle.class, unconstrainedV0CandidatesColName);
+        aida.histogram1D("Number of V0 per event").fill(unConstrainedV0List.size());
+        for (ReconstructedParticle uncV0 : unConstrainedV0List) {
+            Vertex uncVert = uncV0.getStartVertex();
+            aida.histogram1D("Unconstrained Vx (mm)").fill(uncVert.getPosition().x());
+            aida.histogram1D("Unconstrained Vy (mm)").fill(uncVert.getPosition().y());
+            aida.histogram1D("Unconstrained Vz (mm)").fill(uncVert.getPosition().z());
+            aida.histogram1D("Unconstrained Mass (GeV)").fill(uncV0.getMass());
+            aida.histogram1D("Unconstrained Chi2").fill(uncVert.getChi2());
+            aida.histogram2D("Mass vs Vz").fill(uncV0.getMass(), uncVert.getPosition().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("P(e) vs P(p)").fill(getMomentum(ele), getMomentum(pos));
+            aida.histogram2D("Px(e) vs Px(p)").fill(ele.getTrackStates().get(0).getMomentum()[1], pos.getTrackStates().get(0).getMomentum()[1]);
+            aida.histogram2D("Py(e) vs Py(p)").fill(ele.getTrackStates().get(0).getMomentum()[2], pos.getTrackStates().get(0).getMomentum()[2]);
+        }
+    }
+
+    void setupPlotter(IPlotter plotter, String title) {
+        plotter.setTitle(title);
+        IPlotterStyle style = plotter.style();
+        style.dataStyle().fillStyle().setColor("yellow");
+        style.dataStyle().errorBarStyle().setVisible(false);
+    }
+
+    public void setOutputPlots(String output) {
+        this.outputPlots = output;
+    }
+
+    private double getMomentum(Track trk) {
+
+        double px = trk.getTrackStates().get(0).getMomentum()[0];
+        double py = trk.getTrackStates().get(0).getMomentum()[1];
+        double pz = trk.getTrackStates().get(0).getMomentum()[2];
+        return Math.sqrt(px * px + py * py + pz * pz);
+    }
+
+    @Override
+    public void endOfData() {
+        if (outputPlots != null)
+            try {
+                plotterUncon.writeToFile(outputPlots + "-Unconstrained.gif");
+                plotter2d.writeToFile(outputPlots + "-2d.gif");
+            } catch (IOException ex) {
+                Logger.getLogger(TrackingReconPlots.class.getName()).log(Level.SEVERE, null, ex);
+            }
+
+    }
+
+}

Modified: java/trunk/steering-files/src/main/resources/org/hps/steering/users/mgraham/MattsScrewAround.lcsim
 =============================================================================
--- java/trunk/steering-files/src/main/resources/org/hps/steering/users/mgraham/MattsScrewAround.lcsim	(original)
+++ java/trunk/steering-files/src/main/resources/org/hps/steering/users/mgraham/MattsScrewAround.lcsim	Thu Mar  5 10:58:18 2015
@@ -5,32 +5,31 @@
 <lcsim xmlns:xs="http://www.w3.org/2001/XMLSchema-instance" xs:noNamespaceSchemaLocation="http://www.lcsim.org/schemas/lcsim/1.0/lcsim.xsd">
     <execute>
         <driver name="EventMarkerDriver" />
-        <driver name="ConditionsDriver" />
         <driver name="SvtSensorSetup" />
         <driver name="RawTrackerHitSensorSetup" />
         <driver name="RawTrackerHitFitterDriver" />
         <driver name="TrackerHitDriver" />
         <driver name="HelicalTrackHitDriver" />
-<!--         <driver name="TrackerReconDriver"/> 
-          <driver name="TrackDataDriver"/>    -->
-        <driver name="AxialTrackReconDriver" />
+         <driver name="TrackerReconDriver"/> 
+          <driver name="TrackDataDriver"/>   
         <driver name="EcalRawConverter" />
         <driver name="EcalClusterer" />
         <driver name="ReconParticle" />
-        <driver name="TrackingMonitoring" />
-        <driver name="TrackMCEfficiency" />
-<!--        <driver name="StraightTrackAnalysis"/>    -->
-        <driver name="AidaSaveDriver" />
-        <driver name="LCIOWriter" />
+<!--        <driver name="TrackingMonitoring" />
+        <driver name="TrackingResiduals"/>  
+        <driver name="V0Monitoring"/>  -->
+        <driver name="TrackingDQM" />
+        <driver name="TrackingResidualsDQM"/>  
+        <driver name="FinalStateDQM"/>  
+        <driver name="V0DQM"/>  
+        <driver name="AidaSaveDriver"/> 
         <driver name="CleanupDriver" />
     </execute>
     <drivers>
+     <driver name="SvtSensorSetup" type="org.hps.recon.tracking.SvtSensorSetup" />   
         <driver name="ConditionsDriver" type="org.hps.conditions.ConditionsDriver" />
-        <driver name="SvtSensorSetup" type="org.hps.recon.tracking.SvtSensorSetup" />
-        <!-- Broken due to missing prop file.  JM -->
-        <!-- <driver name="DQMDatabaseDriver" type="org.hps.analysis.dataquality.DQMDatabaseDriver" />  -->
-        <driver name="EventMarkerDriver" type="org.lcsim.job.EventMarkerDriver">
-            <eventInterval>1</eventInterval>
+         <driver name="EventMarkerDriver" type="org.lcsim.job.EventMarkerDriver">
+            <eventInterval>10</eventInterval>
         </driver>
         <driver name="RawTrackerHitSensorSetup" type="org.lcsim.recon.tracking.digitization.sisim.config.RawTrackerHitSensorSetup" />
         <driver name="BadChannelFilter" type="org.hps.recon.tracking.SVTBadChannelFilterDriver" />
@@ -49,7 +48,7 @@
             <clusterTimeCut>16.0</clusterTimeCut>
             <maxSeperation>20.0</maxSeperation>
             <tolerance>1.0</tolerance>
-            <saveAxialHits>true</saveAxialHits>
+            <saveAxialHits>false</saveAxialHits>
         </driver>
         <driver name="TrackerReconDriver" type="org.hps.recon.tracking.TrackerReconDriver">
             <debug>false</debug>
@@ -62,10 +61,6 @@
         </driver>
         <driver name="EcalClusterer" type="org.hps.recon.ecal.cluster.ClusterDriver">
             <clustererName>LegacyClusterer</clustererName>
-        </driver>
-        <driver name="AddBeamSpotToTrack" type="org.hps.users.mgraham.AddBeamSpotToTrack">
-        </driver>
-        <driver name="BeamSpotTrackAnalysis" type="org.hps.users.mgraham.BeamSpotTrackAnalysis">
         </driver>
         <driver name="ReconParticle" type="org.hps.recon.particle.HpsReconParticleDriver">
             <debug>false</debug>
@@ -81,50 +76,33 @@
             <beamConV0VerticesColName>BSBeamspotConstrainedV0Vertices</beamConV0VerticesColName>
             <targetConV0VerticesColName>BSTargetConstrainedV0Vertices</targetConV0VerticesColName>
         </driver>
-        <driver name="AidaSaveDriver" type="org.lcsim.job.AidaSaveDriver">
-            <outputFileName>./conditions_test_plots.root</outputFileName>
+     
+        <driver name="TrackingMonitoring" type="org.hps.monitoring.drivers.trackrecon.TrackingReconPlots">         
+        <outputPlots>tracking</outputPlots>
         </driver>
-        <driver name="SVTMonitoring" type="org.hps.analysis.dataquality.SvtMonitoring">
-            <runNumber>${runNumber}</runNumber>
+        <driver name="TrackingResiduals" type="org.hps.monitoring.drivers.trackrecon.TrackResiduals">
+             <outputPlots>track-residuals</outputPlots>      
+        </driver>
+         <driver name="V0Monitoring" type="org.hps.monitoring.drivers.trackrecon.V0ReconPlots">         
+        <outputPlots>v0recon</outputPlots>
+        </driver>      
+
+
+        <driver name="TrackingDQM" type="org.hps.analysis.dataquality.TrackingMonitoring">         
             <overwriteDB>false</overwriteDB>
         </driver>
-        <driver name="TrackingMonitoring" type="org.hps.analysis.dataquality.TrackingMonitoring">
-            <runNumber>${runNumber}</runNumber>
-            <overwriteDB>false</overwriteDB>
-            <trackCollectionName>StraightTracks</trackCollectionName>
-        </driver>
-        <driver name="TrackingResiduals" type="org.hps.analysis.dataquality.TrackingResiduals">
-            <runNumber>${runNumber}</runNumber>
+      <driver name="TrackingResidualsDQM" type="org.hps.analysis.dataquality.TrackingResiduals">         
             <overwriteDB>false</overwriteDB>
         </driver>
-        <driver name="FinalStateMonitoring" type="org.hps.analysis.dataquality.FinalStateMonitoring">
-            <runNumber>${runNumber}</runNumber>
+ <driver name="FinalStateDQM" type="org.hps.analysis.dataquality.FinalStateMonitoring">         
             <overwriteDB>false</overwriteDB>
         </driver>
-        <driver name="SVTHitMCEfficiency" type="org.hps.analysis.dataquality.SVTHitMCEfficiency">
-            <overwriteDB>false</overwriteDB>
-            <printDQMStrings>false</printDQMStrings>
-        </driver>
-        <driver name="V0Monitoring" type="org.hps.analysis.dataquality.V0Monitoring">
-            <runNumber>${runNumber}</runNumber>
+        <driver name="V0DQM" type="org.hps.analysis.dataquality.V0Monitoring">         
             <overwriteDB>false</overwriteDB>
         </driver>
-        <driver name="CleanupDriver" type="org.lcsim.recon.tracking.digitization.sisim.config.ReadoutCleanupDriver" />
-        <driver name="LCIOWriter" type="org.lcsim.util.loop.LCIODriver">
-            <outputFilePath>blah.slcio</outputFilePath>
-        </driver>
-        <driver name="AxialTrackReconDriver" type="org.hps.recon.tracking.axial.AxialTrackReconDriver">
-            <debug>false</debug>
-            <strategyResource>/org/hps/recon/tracking/strategies/HPS-Axial.xml</strategyResource>
-            <trackCollectionName>StraightTracks</trackCollectionName>
-        </driver>
-        <driver name="TrackMCEfficiency" type="org.hps.analysis.dataquality.TrackMCEfficiency">
-            <overwriteDB>false</overwriteDB>
-            <trackCollectionName>StraightTracks</trackCollectionName>
-            <trackHitCollectionName>RotatedAxialTrackHits</trackHitCollectionName>
-            <trackHitMCRelationsCollectionName>RotatedAxialTrackHitsMCRelations</trackHitMCRelationsCollectionName>
-        </driver>
-        <driver name="StraightTrackAnalysis" type="org.hps.users.mgraham.StraightTrackAnalysis">
-        </driver>
+     <driver name="AidaSaveDriver" type="org.lcsim.job.AidaSaveDriver">
+                 <outputFileName>./Test-DQM-Tracking-Recon.root</outputFileName>
+        </driver>  
+        <driver name="CleanupDriver" type="org.lcsim.recon.tracking.digitization.sisim.config.ReadoutCleanupDriver" />       
     </drivers>
 </lcsim>

Modified: java/trunk/steering-files/src/main/resources/org/hps/steering/users/mgraham/NoTimeNoTriggerRecon.lcsim
 =============================================================================
--- java/trunk/steering-files/src/main/resources/org/hps/steering/users/mgraham/NoTimeNoTriggerRecon.lcsim	(original)
+++ java/trunk/steering-files/src/main/resources/org/hps/steering/users/mgraham/NoTimeNoTriggerRecon.lcsim	Thu Mar  5 10:58:18 2015
@@ -5,33 +5,67 @@
         <printDriversDetailed>true</printDriversDetailed>
     </control>
     <execute>
-        <driver name="EventMarkerDriver" />
-        <driver name="TrackerDigiDriver" />
-        <driver name="HelicalTrackHitDriver" />
-        <driver name="AxialTrackReconDriver" />
-        <!-- <driver name="TrackerReconDriver"/> <driver name="TrackDataDriver"/> -->
-        <!-- <driver name="StraightTrackReconDriver"/> -->
-        <driver name="StraightTrackAnalysis" />
-        <driver name="SVTMonitoring" />
-        <driver name="TrackingMonitoring" />
-        <driver name="TrackingResiduals" />
-        <driver name="AidaSaveDriver" />
-        <driver name="LCIOWriter" />
-        <driver name="CleanupDriver" />
+        <driver name="EventMarkerDriver"/>
+        <driver name="SvtSensorSetup"/>
+        <driver name="TrackerDigiDriver"/>
+      <driver name="EcalEdepToTriggerConverterDriver"/>
+        <driver name="EcalReadoutConverterDriver"/>
+        <driver name="ReconClusterer"/>
+        <driver name="HelicalTrackHitDriver"/> 
+        <driver name="TrackerReconDriver"/> 
+       <driver name="TrackDataDriver"/>   
+<!--        <driver name="AxialTrackReconDriver"/>   -->
+<!--       <driver name="StraightTrackReconDriver"/>  -->
+<!--        <driver name="StraightTrackAnalysis"/>  -->
+         <driver name="ReconParticle" />  
+        <driver name="SVTMonitoring"/>  
+        <driver name="TrackingMonitoring"/> 
+       <driver name="TrackMCEfficiency"/> 
+        <driver name="TrackingResiduals"/>  
+        <driver name="FinalStateMonitoring"/>
+        <driver name="V0Monitoring"/>
+        <driver name="AidaSaveDriver"/> 
+        <driver name="LCIOWriter"/> 
+        <driver name="CleanupDriver"/> 
     </execute>
     <drivers>
         <driver name="EventMarkerDriver" type="org.lcsim.job.EventMarkerDriver">
-            <eventInterval>1</eventInterval>
+            <eventInterval>100</eventInterval>
         </driver>
+
+       <driver name="EcalEdepToTriggerConverterDriver" type="org.hps.recon.ecal.EcalEdepToTriggerConverterDriver">
+            <readoutCollection>EcalCalHits</readoutCollection>
+            <applyBadCrystalMap>false</applyBadCrystalMap>
+            <truncateScale>1</truncateScale>
+            <constantGain>0.15</constantGain>
+        </driver>
+        <driver name="EcalReadoutConverterDriver" type="org.hps.recon.ecal.EcalRawConverterDriver">
+            <runBackwards>true</runBackwards>
+            <rawCollectionName>EcalReadoutHits</rawCollectionName>
+            <ecalCollectionName>EcalCalHits</ecalCollectionName>
+        </driver>
+
+      <driver name="ReconClusterer" type="org.hps.recon.ecal.cluster.ReconClusterDriver">
+            <logLevel>WARNING</logLevel>
+            <outputClusterCollectionName>EcalClusters</outputClusterCollectionName>
+            <hitEnergyThreshold>0.01</hitEnergyThreshold>
+            <seedEnergyThreshold>0.100</seedEnergyThreshold> 
+            <clusterEnergyThreshold>0.200</clusterEnergyThreshold>
+            <useTimeCut>false</useTimeCut>
+            <writeRejectedHitCollection>false</writeRejectedHitCollection>
+        </driver>
+
+       <driver name="SvtSensorSetup" type="org.hps.recon.tracking.SvtSensorSetup" />
         <driver name="TrackerDigiDriver" type="org.hps.recon.tracking.SimpleTrackerDigiDriver">
             <!-- <dropBadChannels>true</dropBadChannels> -->
+            <rawTrackerHitOutputCollectionName>SVTRawTrackerHits</rawTrackerHitOutputCollectionName>
             <debug>false</debug>
         </driver>
         <driver name="HelicalTrackHitDriver" type="org.hps.recon.tracking.HelicalTrackHitDriver">
             <debug>false</debug>
             <maxSeperation>20.0</maxSeperation>
             <tolerance>1.0</tolerance>
-            <saveAxialHits>true</saveAxialHits>
+            <saveAxialHits>false</saveAxialHits>
         </driver>
         <driver name="TrackerReconDriver" type="org.hps.recon.tracking.TrackerReconDriver">
             <debug>false</debug>
@@ -58,28 +92,41 @@
             <runNumber>${runNumber}</runNumber>
             <overwriteDB>false</overwriteDB>
         </driver>
-        <driver name="TrackingMonitoring" type="org.hps.analysis.dataquality.TrackingMonitoring">
-            <runNumber>${runNumber}</runNumber>
+       <driver name="TrackingMonitoring" type="org.hps.analysis.dataquality.TrackingMonitoring">
+            <trackCollectionName>MatchedTracks</trackCollectionName>
+             <runNumber>${runNumber}</runNumber>
             <overwriteDB>false</overwriteDB>
-        </driver>
-        <driver name="TrackingResiduals" type="org.hps.analysis.dataquality.TrackingResiduals">
-            <runNumber>${runNumber}</runNumber>
+       </driver>
+  <driver name="TrackingResiduals" type="org.hps.analysis.dataquality.TrackingResiduals">           
+             <runNumber>${runNumber}</runNumber>
             <overwriteDB>false</overwriteDB>
         </driver>
         <driver name="FinalStateMonitoring" type="org.hps.analysis.dataquality.FinalStateMonitoring">
             <runNumber>${runNumber}</runNumber>
             <overwriteDB>false</overwriteDB>
-        </driver>
-        <driver name="TrackMCEfficiency" type="org.hps.analysis.dataquality.TrackMCEfficiency">
+             <debug>false</debug>   
+       </driver>    
+      <driver name="V0Monitoring" type="org.hps.analysis.dataquality.V0Monitoring">
+              <runNumber>${runNumber}</runNumber>
             <overwriteDB>false</overwriteDB>
         </driver>
         <driver name="SVTHitMCEfficiency" type="org.hps.analysis.dataquality.SVTHitMCEfficiency">
             <overwriteDB>false</overwriteDB>
             <printDQMStrings>false</printDQMStrings>
+       </driver>     
+
+      <driver name="TrackMCEfficiency" type="org.hps.analysis.dataquality.TrackMCEfficiency">
+            <overwriteDB>false</overwriteDB>
+            <debug>true</debug>
+            <debugTrackEfficiency>true</debugTrackEfficiency>
+           </driver> 
+     <driver name="AidaSaveDriver" type="org.lcsim.job.AidaSaveDriver">
+                 <outputFileName>./HPSTracker2014-v0-ap75mev.root</outputFileName>
+        </driver>  
+     <driver name="ReconParticle" type="org.hps.recon.particle.HpsReconParticleDriver">
+            <debug>false</debug>
         </driver>
-        <driver name="AidaSaveDriver" type="org.lcsim.job.AidaSaveDriver">
-            <outputFileName>./straight-tracks.root</outputFileName>
-        </driver>
-        <driver name="CleanupDriver" type="org.lcsim.recon.tracking.digitization.sisim.config.ReadoutCleanupDriver" />
+       <driver name="CleanupDriver" type="org.lcsim.recon.tracking.digitization.sisim.config.ReadoutCleanupDriver"/>                                   
+
     </drivers>
 </lcsim>

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