Print

Print


Author: [log in to unmask]
Date: Thu Jan 22 16:47:00 2015
New Revision: 1973

Log:
replace deprecated methods

Modified:
    java/trunk/analysis/src/main/java/org/hps/analysis/examples/DetailedAnalysisDriver.java
    java/trunk/analysis/src/main/java/org/hps/analysis/examples/FastTrackAnalysisDriver.java
    java/trunk/analysis/src/main/java/org/hps/analysis/examples/JasAnalysisDriver.java
    java/trunk/monitoring-drivers/src/main/java/org/hps/monitoring/drivers/svt/TrackingReconstructionPlots.java
    java/trunk/tracking/src/main/java/org/hps/svt/alignment/RunAlignment.java
    java/trunk/users/src/main/java/org/hps/users/mgraham/DetailedAnalysisDriver.java
    java/trunk/users/src/main/java/org/hps/users/mgraham/ExamplePlotter.java
    java/trunk/users/src/main/java/org/hps/users/mgraham/FastTrackAnalysisDriver.java
    java/trunk/users/src/main/java/org/hps/users/mgraham/HitTimePlotter.java
    java/trunk/users/src/main/java/org/hps/users/mgraham/JasAnalysisDriver.java
    java/trunk/users/src/main/java/org/hps/users/mgraham/StraightTrackAnalysis.java
    java/trunk/users/src/main/java/org/hps/users/mgraham/TestAnalysisDriver.java
    java/trunk/users/src/main/java/org/hps/users/mgraham/TrackExtrapolationAnalysis.java
    java/trunk/users/src/main/java/org/hps/users/mgraham/TwoTrackAnalysis.java
    java/trunk/users/src/main/java/org/hps/users/mgraham/alignment/RunAlignment.java
    java/trunk/users/src/main/java/org/hps/users/mgraham/jlabrotation/DetailedAnalysisDriver.java
    java/trunk/users/src/main/java/org/hps/users/omoreno/SvtHitEfficiency.java
    java/trunk/users/src/main/java/org/hps/users/omoreno/SvtTrackAnalysis.java
    java/trunk/users/src/main/java/org/hps/users/phansson/RunMPAlignment.java
    java/trunk/users/src/main/java/org/hps/users/phansson/SimpleResiduals.java
    java/trunk/users/src/main/java/org/hps/users/phansson/TrackingReconstructionPlots.java
    java/trunk/users/src/main/java/org/hps/users/phansson/TrigRateDriver.java

Modified: java/trunk/analysis/src/main/java/org/hps/analysis/examples/DetailedAnalysisDriver.java
 =============================================================================
--- java/trunk/analysis/src/main/java/org/hps/analysis/examples/DetailedAnalysisDriver.java	(original)
+++ java/trunk/analysis/src/main/java/org/hps/analysis/examples/DetailedAnalysisDriver.java	Thu Jan 22 16:47:00 2015
@@ -406,7 +406,7 @@
             String atrackdir = "TrackInfoAxial/";
             //  Analyze the tracks in the event
             for (Track atrack : axialtracklist) {
-                double apx = atrack.getPX();
+                double apx = atrack.getTrackStates().get(0).getMomentum()[0];
                 aida.cloud1D(atrackdir + "pX").fill(apx);
             }
         }
@@ -414,16 +414,17 @@
         //  Analyze the tracks in the event
         for (Track track : tracklist) {
             //  Calculate the track pT and cos(theta)
-            double d0 = track.getTrackParameter(HelicalTrackFit.dcaIndex);
-            double z0 = track.getTrackParameter(HelicalTrackFit.z0Index);
-            double phi0 = track.getTrackParameter(HelicalTrackFit.phi0Index);
-            double slope = track.getTrackParameter(HelicalTrackFit.slopeIndex);
-            double curve = track.getTrackParameter(HelicalTrackFit.curvatureIndex);
-            double d0Err = Math.sqrt(track.getErrorMatrix().e(HelicalTrackFit.dcaIndex, HelicalTrackFit.dcaIndex));
-            double z0Err = Math.sqrt(track.getErrorMatrix().e(HelicalTrackFit.z0Index, HelicalTrackFit.z0Index));
-            double phi0Err = Math.sqrt(track.getErrorMatrix().e(HelicalTrackFit.phi0Index, HelicalTrackFit.phi0Index));
-            double slopeErr = Math.sqrt(track.getErrorMatrix().e(HelicalTrackFit.slopeIndex, HelicalTrackFit.slopeIndex));
-            double curveErr = Math.sqrt(track.getErrorMatrix().e(HelicalTrackFit.curvatureIndex, HelicalTrackFit.curvatureIndex));
+            double d0 = track.getTrackStates().get(0).getParameter(HelicalTrackFit.dcaIndex);
+            double z0 = track.getTrackStates().get(0).getParameter(HelicalTrackFit.z0Index);
+            double phi0 = track.getTrackStates().get(0).getParameter(HelicalTrackFit.phi0Index);
+            double slope = track.getTrackStates().get(0).getParameter(HelicalTrackFit.slopeIndex);
+            double curve = track.getTrackStates().get(0).getParameter(HelicalTrackFit.curvatureIndex);
+            SymmetricMatrix covMatrix = new SymmetricMatrix(5,track.getTrackStates().get(0).getCovMatrix(),true);
+            double d0Err = Math.sqrt(covMatrix.e(HelicalTrackFit.dcaIndex, HelicalTrackFit.dcaIndex));
+            double z0Err = Math.sqrt(covMatrix.e(HelicalTrackFit.z0Index, HelicalTrackFit.z0Index));
+            double phi0Err = Math.sqrt(covMatrix.e(HelicalTrackFit.phi0Index, HelicalTrackFit.phi0Index));
+            double slopeErr = Math.sqrt(covMatrix.e(HelicalTrackFit.slopeIndex, HelicalTrackFit.slopeIndex));
+            double curveErr = Math.sqrt(covMatrix.e(HelicalTrackFit.curvatureIndex, HelicalTrackFit.curvatureIndex));
             _nchRec++;
             if (track.getCharge() * flipSign < 0)
                 _neleRec++;
@@ -442,7 +443,7 @@
             double xoca = ht.x0();
             double yoca = ht.y0();
             double[] poca = {xoca, yoca, z0};
-            double mom[] = track.getMomentum();
+            double mom[] = track.getTrackStates().get(0).getMomentum();
             double px = mom[0];
             double py = mom[1];
             double pz = mom[2];
@@ -534,9 +535,9 @@
                 double pzmc = Pmc.z();
                 double ptmc = Math.sqrt(pxmc * pxmc + pymc * pymc);
                 double pmc = Math.sqrt(ptmc * ptmc + pzmc * pzmc);
-                double pxtk = track.getPX();
-                double pytk = track.getPY();
-                double pztk = track.getPZ();
+                double pxtk = track.getTrackStates().get(0).getMomentum()[0];
+                double pytk = track.getTrackStates().get(0).getMomentum()[1];
+                double pztk = track.getTrackStates().get(0).getMomentum()[2];
                 double pttk = Math.sqrt(pxtk * pxtk + pytk * pytk);
                 double ptk = Math.sqrt(pttk * pttk + pztk * pztk);
 
@@ -832,9 +833,9 @@
                 continue;
             if (mcp.getParents().size() == 1 && mcp.getParents().get(0).getPDGID() == 622) {
                 int nhits = tkanal.getNHitsNew();
-                double px = track.getPX();
-                double py = track.getPY();
-                double pz = track.getPZ();
+                double px = track.getTrackStates().get(0).getMomentum()[0];
+                double py = track.getTrackStates().get(0).getMomentum()[1];
+                double pz = track.getTrackStates().get(0).getMomentum()[2];
                 double pt = Math.sqrt(px * px + py * py);
                 double pperp = Math.sqrt(py * py + pz * pz);
                 double p = Math.sqrt(pt * pt + pz * pz);
@@ -1296,9 +1297,9 @@
         double me = 0.000511;
         // Loop over jets
 
-        double p1x = track1.getPX();
-        double p1y = track1.getPY();
-        double p1z = track1.getPZ();
+        double p1x = track1.getTrackStates().get(0).getMomentum()[0];
+        double p1y = track1.getTrackStates().get(0).getMomentum()[1];
+        double p1z = track1.getTrackStates().get(0).getMomentum()[2];
         double p1mag2 = p1x * p1x + p1y * p1y + p1z * p1z;
         double e1 = Math.sqrt(p1mag2 + me * me);
         double dydx1 = slt1.dydx();
@@ -1310,9 +1311,9 @@
         double truep1x = truep1y / dydx1;
         double truep1z = dzdx1 * truep1x;
 
-        double p2x = track2.getPX();
-        double p2y = track2.getPY();
-        double p2z = track2.getPZ();
+        double p2x = track2.getTrackStates().get(0).getMomentum()[0];
+        double p2y = track2.getTrackStates().get(0).getMomentum()[1];
+        double p2z = track2.getTrackStates().get(0).getMomentum()[2];
         double p2mag2 = p2x * p2x + p2y * p2y + p2z * p2z;
         double e2 = Math.sqrt(p2mag2 + me * me);
 
@@ -1399,9 +1400,9 @@
     private Hep3Vector getTrueMomentum(Track track1, StraightLineTrack slt1) {
         double[] truep = {0, 0, 0};
         double me = 0.000511;
-        double p1x = track1.getPX();
-        double p1y = track1.getPY();
-        double p1z = track1.getPZ();
+        double p1x = track1.getTrackStates().get(0).getMomentum()[0];
+        double p1y = track1.getTrackStates().get(0).getMomentum()[1];
+        double p1z = track1.getTrackStates().get(0).getMomentum()[2];
         double p1mag2 = p1x * p1x + p1y * p1y + p1z * p1z;
         double e1 = Math.sqrt(p1mag2 + me * me);
         double dydx1 = slt1.dydx();

Modified: java/trunk/analysis/src/main/java/org/hps/analysis/examples/FastTrackAnalysisDriver.java
 =============================================================================
--- java/trunk/analysis/src/main/java/org/hps/analysis/examples/FastTrackAnalysisDriver.java	(original)
+++ java/trunk/analysis/src/main/java/org/hps/analysis/examples/FastTrackAnalysisDriver.java	Thu Jan 22 16:47:00 2015
@@ -240,9 +240,9 @@
                 continue;
             if (mcp.getParents().size() == 1 && mcp.getParents().get(0).getPDGID() == 622) {
                 int nhits = tkanal.getNHitsNew();
-                double px = track.getPX();
-                double py = track.getPY();
-                double pz = track.getPZ();
+                double px = track.getTrackStates().get(0).getMomentum()[0];
+                double py = track.getTrackStates().get(0).getMomentum()[1];
+                double pz = track.getTrackStates().get(0).getMomentum()[2];
                 double pt = Math.sqrt(px * px + py * py);
                 double pperp = Math.sqrt(py * py + pz * pz);
                 double p = Math.sqrt(pt * pt + pz * pz);
@@ -302,12 +302,12 @@
                     double RP = htPos.R();
                     double slopeP = htPos.slope();
 
-                    double pxE = ele.getPX();
-                    double pyE = ele.getPY();
-                    double pzE = ele.getPZ();
-                    double pxP = pos.getPX();
-                    double pyP = pos.getPY();
-                    double pzP = pos.getPZ();
+                    double pxE = ele.getTrackStates().get(0).getMomentum()[0];
+                    double pyE = ele.getTrackStates().get(0).getMomentum()[1];
+                    double pzE = ele.getTrackStates().get(0).getMomentum()[2];
+                    double pxP = pos.getTrackStates().get(0).getMomentum()[0];
+                    double pyP = pos.getTrackStates().get(0).getMomentum()[1];
+                    double pzP = pos.getTrackStates().get(0).getMomentum()[2];
 
                     List<BilliorTrack> btlist = new ArrayList<BilliorTrack>();
 
@@ -594,9 +594,9 @@
         double me = 0.000511;
         // Loop over jets
 
-        double p1x = track1.getPX();
-        double p1y = track1.getPY();
-        double p1z = track1.getPZ();
+        double p1x = track1.getTrackStates().get(0).getMomentum()[0];
+        double p1y = track1.getTrackStates().get(0).getMomentum()[1];
+        double p1z = track1.getTrackStates().get(0).getMomentum()[2];
         double p1mag2 = p1x * p1x + p1y * p1y + p1z * p1z;
         double e1 = Math.sqrt(p1mag2 + me * me);
         double dydx1 = slt1.dydx();
@@ -608,9 +608,9 @@
         double truep1x = truep1y / dydx1;
         double truep1z = dzdx1 * truep1x;
 
-        double p2x = track2.getPX();
-        double p2y = track2.getPY();
-        double p2z = track2.getPZ();
+        double p2x = track2.getTrackStates().get(0).getMomentum()[0];
+        double p2y = track2.getTrackStates().get(0).getMomentum()[1];
+        double p2z = track2.getTrackStates().get(0).getMomentum()[2];
         double p2mag2 = p2x * p2x + p2y * p2y + p2z * p2z;
         double e2 = Math.sqrt(p2mag2 + me * me);
 
@@ -697,9 +697,9 @@
     private Hep3Vector getTrueMomentum(Track track1, StraightLineTrack slt1) {
         double[] truep = {0, 0, 0};
         double me = 0.000511;
-        double p1x = track1.getPX();
-        double p1y = track1.getPY();
-        double p1z = track1.getPZ();
+        double p1x = track1.getTrackStates().get(0).getMomentum()[0];
+        double p1y = track1.getTrackStates().get(0).getMomentum()[1];
+        double p1z = track1.getTrackStates().get(0).getMomentum()[2];
         double p1mag2 = p1x * p1x + p1y * p1y + p1z * p1z;
         double e1 = Math.sqrt(p1mag2 + me * me);
         double dydx1 = slt1.dydx();

Modified: java/trunk/analysis/src/main/java/org/hps/analysis/examples/JasAnalysisDriver.java
 =============================================================================
--- java/trunk/analysis/src/main/java/org/hps/analysis/examples/JasAnalysisDriver.java	(original)
+++ java/trunk/analysis/src/main/java/org/hps/analysis/examples/JasAnalysisDriver.java	Thu Jan 22 16:47:00 2015
@@ -262,16 +262,17 @@
         for (Track track : tracklist) {
 
             //  Calculate the track pT and cos(theta)
-            double d0 = track.getTrackParameter(HelicalTrackFit.dcaIndex);
-            double z0 = track.getTrackParameter(HelicalTrackFit.z0Index);
-            double phi0 = track.getTrackParameter(HelicalTrackFit.phi0Index);
-            double slope = track.getTrackParameter(HelicalTrackFit.slopeIndex);
-            double curve = track.getTrackParameter(HelicalTrackFit.curvatureIndex);
-            double d0Err = Math.sqrt(track.getErrorMatrix().e(HelicalTrackFit.dcaIndex, HelicalTrackFit.dcaIndex));
-            double z0Err = Math.sqrt(track.getErrorMatrix().e(HelicalTrackFit.z0Index, HelicalTrackFit.z0Index));
-            double phi0Err = Math.sqrt(track.getErrorMatrix().e(HelicalTrackFit.phi0Index, HelicalTrackFit.phi0Index));
-            double slopeErr = Math.sqrt(track.getErrorMatrix().e(HelicalTrackFit.slopeIndex, HelicalTrackFit.slopeIndex));
-            double curveErr = Math.sqrt(track.getErrorMatrix().e(HelicalTrackFit.curvatureIndex, HelicalTrackFit.curvatureIndex));
+            double d0 = track.getTrackStates().get(0).getParameter(HelicalTrackFit.dcaIndex);
+            double z0 = track.getTrackStates().get(0).getParameter(HelicalTrackFit.z0Index);
+            double phi0 = track.getTrackStates().get(0).getParameter(HelicalTrackFit.phi0Index);
+            double slope = track.getTrackStates().get(0).getParameter(HelicalTrackFit.slopeIndex);
+            double curve = track.getTrackStates().get(0).getParameter(HelicalTrackFit.curvatureIndex);
+            SymmetricMatrix covMatrix = new SymmetricMatrix(5,track.getTrackStates().get(0).getCovMatrix(),true);
+            double d0Err = Math.sqrt(covMatrix.e(HelicalTrackFit.dcaIndex, HelicalTrackFit.dcaIndex));
+            double z0Err = Math.sqrt(covMatrix.e(HelicalTrackFit.z0Index, HelicalTrackFit.z0Index));
+            double phi0Err = Math.sqrt(covMatrix.e(HelicalTrackFit.phi0Index, HelicalTrackFit.phi0Index));
+            double slopeErr = Math.sqrt(covMatrix.e(HelicalTrackFit.slopeIndex, HelicalTrackFit.slopeIndex));
+            double curveErr = Math.sqrt(covMatrix.e(HelicalTrackFit.curvatureIndex, HelicalTrackFit.curvatureIndex));
             double chisq = track.getChi2();
             //plot the helix parameters
             aida.cloud1D("d0").fill(d0);
@@ -281,7 +282,7 @@
             aida.cloud1D("curve").fill(curve);
             aida.cloud1D("chi2").fill(chisq);
 
-            double mom[] = track.getMomentum();
+            double mom[] = track.getTrackStates().get(0).getMomentum();
 
             SeedTrack stEle = (SeedTrack) track;
             SeedCandidate seedEle = stEle.getSeedCandidate();
@@ -349,9 +350,9 @@
                 double pzmc = Pmc.z();
                 double ptmc = Math.sqrt(pxmc * pxmc + pymc * pymc);
                 double pmc = Math.sqrt(ptmc * ptmc + pzmc * pzmc);
-                double pxtk = track.getPX();
-                double pytk = track.getPY();
-                double pztk = track.getPZ();
+                double pxtk = track.getTrackStates().get(0).getMomentum()[0];
+                double pytk = track.getTrackStates().get(0).getMomentum()[1];
+                double pztk = track.getTrackStates().get(0).getMomentum()[2];
                 double pttk = Math.sqrt(pxtk * pxtk + pytk * pytk);
                 double ptk = Math.sqrt(pttk * pttk + pztk * pztk);
 
@@ -877,9 +878,9 @@
         double me = 0.000511;
         // Loop over jets
 
-        double p1x = track1.getPX();
-        double p1y = track1.getPY();
-        double p1z = track1.getPZ();
+        double p1x = track1.getTrackStates().get(0).getMomentum()[0];
+        double p1y = track1.getTrackStates().get(0).getMomentum()[1];
+        double p1z = track1.getTrackStates().get(0).getMomentum()[2];
         double p1mag2 = p1x * p1x + p1y * p1y + p1z * p1z;
         double e1 = Math.sqrt(p1mag2 + me * me);
         double dydx1 = slt1.dydx();
@@ -892,9 +893,9 @@
         double truep1x = truep1y / dydx1;
         double truep1z = dzdx1 * truep1x;
 
-        double p2x = track2.getPX();
-        double p2y = track2.getPY();
-        double p2z = track2.getPZ();
+        double p2x = track2.getTrackStates().get(0).getMomentum()[0];
+        double p2y = track2.getTrackStates().get(0).getMomentum()[1];
+        double p2z = track2.getTrackStates().get(0).getMomentum()[2];
         double p2mag2 = p2x * p2x + p2y * p2y + p2z * p2z;
         double e2 = Math.sqrt(p2mag2 + me * me);
 
@@ -982,9 +983,9 @@
     private Hep3Vector getTrueMomentum(Track track1, StraightLineTrack slt1) {
         double[] truep = {0, 0, 0};
         double me = 0.000511;
-        double p1x = track1.getPX();
-        double p1y = track1.getPY();
-        double p1z = track1.getPZ();
+        double p1x = track1.getTrackStates().get(0).getMomentum()[0];
+        double p1y = track1.getTrackStates().get(0).getMomentum()[1];
+        double p1z = track1.getTrackStates().get(0).getMomentum()[2];
         double p1mag2 = p1x * p1x + p1y * p1y + p1z * p1z;
         double e1 = Math.sqrt(p1mag2 + me * me);
         double dydx1 = slt1.dydx();

Modified: 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/svt/TrackingReconstructionPlots.java	Thu Jan 22 16:47:00 2015
@@ -669,9 +669,9 @@
 
             boolean isSingleHitPerLayerTrack = singleTrackHitPerLayer(trk);
 
-            aida.histogram1D("Track Momentum (Px)").fill(trk.getPY());
-            aida.histogram1D("Track Momentum (Py)").fill(trk.getPZ());
-            aida.histogram1D("Track Momentum (Pz)").fill(trk.getPX());
+            aida.histogram1D("Track Momentum (Px)").fill(trk.getTrackStates().get(0).getMomentum()[1]);
+            aida.histogram1D("Track Momentum (Py)").fill(trk.getTrackStates().get(0).getMomentum()[2]);
+            aida.histogram1D("Track Momentum (Pz)").fill(trk.getTrackStates().get(0).getMomentum()[0]);
             aida.histogram1D("Track Chi2").fill(trk.getChi2());
 
             aida.histogram1D("Hits per Track").fill(trk.getTrackerHits().size());
@@ -696,15 +696,15 @@
 //            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.getPX() > 1.0) {
+            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("d0 ").fill(trk.getTrackParameter(ParameterName.d0.ordinal()));
-            aida.histogram1D("sinphi ").fill(Math.sin(trk.getTrackParameter(ParameterName.phi0.ordinal())));
-            aida.histogram1D("omega ").fill(trk.getTrackParameter(ParameterName.omega.ordinal()));
-            aida.histogram1D("tan(lambda) ").fill(trk.getTrackParameter(ParameterName.tanLambda.ordinal()));
-            aida.histogram1D("z0 ").fill(trk.getTrackParameter(ParameterName.z0.ordinal()));
+            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()));
 
             int isTop = -1;
             if (trk.getTrackerHits().get(0).getPosition()[2] > 0) {
@@ -716,14 +716,14 @@
             }//            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.getPY());
-                aida.histogram1D("Top Track Momentum (Py)").fill(trk.getPZ());
-                aida.histogram1D("Top Track Momentum (Pz)").fill(trk.getPX());
+                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.getPY());
-                aida.histogram1D("Bottom Track Momentum (Py)").fill(trk.getPZ());
-                aida.histogram1D("Bottom Track Momentum (Pz)").fill(trk.getPX());
+                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();
@@ -803,7 +803,7 @@
                  double amp = fit.getAmp();
                     
                  aida.histogram1D("Amp (HitOnTrack)").fill(amp);
-                 if (trk.getPX() > 1)
+                 if (trk.getTrackStates().get(0).getMomentum()[0] > 1)
                  aida.histogram1D("Amp Pz>1000 (HitOnTrack)").fill(amp);
                  }                
                  */
@@ -817,12 +817,12 @@
                                 double amp = fit.getAmp();
                                 clusterSum += amp;
                                 aida.histogram1D("Amp (HitOnTrack)").fill(amp);
-                                if (trk.getPX() > 1) {
+                                if (trk.getTrackStates().get(0).getMomentum()[0] > 1) {
                                     aida.histogram1D("Amp Pz>1000 (HitOnTrack)").fill(amp);
                                 }
                             }
                             aida.histogram1D("Amp (CluOnTrack)").fill(clusterSum);
-                            if (trk.getPX() > 1) {
+                            if (trk.getTrackStates().get(0).getMomentum()[0] > 1) {
                                 aida.histogram1D("Amp Pz>1000 (CluOnTrack)").fill(clusterSum);
                             }
                         }
@@ -839,20 +839,20 @@
 
                     posAtEcal = TrackUtils.extrapolateTrack(trk, clust.getPosition()[2]);//.positionAtEcal();
 
-                    aida.histogram2D("Energy Vs Momentum").fill(clust.getEnergy(), trk.getPX() * 1000.0);
-                    aida.histogram1D("Energy Over Momentum").fill(clust.getEnergy() / (trk.getPX() * 1000.0));
+                    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.getPX() > 1.0) {
+                    //                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.getPX() * 1000.0);
-                        //                    aida.histogram2D("Top Energy Vs Momentum").fill(posAtEcal.y(), trk.getPX() * 1000.0);
-                        aida.histogram1D("Top Energy Over Momentum").fill(clust.getEnergy() / (trk.getPX() * 1000.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());
@@ -860,8 +860,8 @@
                         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.getPX() * 1000.0);
-                        aida.histogram1D("Bottom Energy Over Momentum").fill(clust.getEnergy() / (trk.getPX() * 1000.0));
+                        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());

Modified: java/trunk/tracking/src/main/java/org/hps/svt/alignment/RunAlignment.java
 =============================================================================
--- java/trunk/tracking/src/main/java/org/hps/svt/alignment/RunAlignment.java	(original)
+++ java/trunk/tracking/src/main/java/org/hps/svt/alignment/RunAlignment.java	Thu Jan 22 16:47:00 2015
@@ -55,9 +55,9 @@
             ap.PrintResidualsAndDerivatives(trk);
 
             if(1==1){
-                aida.histogram1D("Track d0",50,-0.5,0.5).fill(trk.getTrackParameter(0));
-                aida.histogram1D("Track sin(phi0)",50,-0.5,0.5).fill(Math.sin(trk.getTrackParameter(1)));
-                aida.histogram1D("Track z0",50,-0.1,0.1).fill(Math.sin(trk.getTrackParameter(3)));
+                aida.histogram1D("Track d0",50,-0.5,0.5).fill(trk.getTrackStates().get(0).getParameter(0));
+                aida.histogram1D("Track sin(phi0)",50,-0.5,0.5).fill(Math.sin(trk.getTrackStates().get(0).getParameter(1)));
+                aida.histogram1D("Track z0",50,-0.1,0.1).fill(Math.sin(trk.getTrackStates().get(0).getParameter(3)));
                 aida.histogram1D("Track chi^2",50,0,25).fill(trk.getChi2());
                 for (int i = 1; i < 11; i++) {
                 double[] res = ap.getResidual(trk, i);
@@ -70,11 +70,11 @@
 
                 aida.histogram1D("deltaU -- Layer " + mylayer,50,-duRange,duRange).fill(res[0]);
                 aida.histogram1D("deltaU Pull-- Layer " + mylayer,50,-3,3).fill(res[0]/res[3]);
-                if(i==3&&Math.sin(trk.getTrackParameter(1))>0){
+                if(i==3&&Math.sin(trk.getTrackStates().get(0).getParameter(1))>0){
                     aida.histogram1D("Positive phi0  deltaU -- Layer " + mylayer,50,-duRange,duRange).fill(res[0]);
                 aida.histogram1D("Positive phi0 deltaU Pull-- Layer " + mylayer,50,-3,3).fill(res[0]/res[3]);
                 }
-                if(i==3&&Math.sin(trk.getTrackParameter(1))<0){
+                if(i==3&&Math.sin(trk.getTrackStates().get(0).getParameter(1))<0){
                     aida.histogram1D("Negative phi0  deltaU -- Layer " + mylayer,50,-duRange,duRange).fill(res[0]);
                 aida.histogram1D("Negative phi0 deltaU Pull-- Layer " + mylayer,50,-3,3).fill(res[0]/res[3]);
                 }

Modified: java/trunk/users/src/main/java/org/hps/users/mgraham/DetailedAnalysisDriver.java
 =============================================================================
--- java/trunk/users/src/main/java/org/hps/users/mgraham/DetailedAnalysisDriver.java	(original)
+++ java/trunk/users/src/main/java/org/hps/users/mgraham/DetailedAnalysisDriver.java	Thu Jan 22 16:47:00 2015
@@ -448,23 +448,24 @@
 //        String atrackdir = "TrackInfoAxial/";
 //        //  Analyze the tracks in the event
 //        for (Track atrack : axialtracklist) {
-//            double apx = atrack.getPX();
+//            double apx = atrack.getTrackStates().get(0).getMomentum()[0];
 //            aida.cloud1D(atrackdir + "pX").fill(apx);
 //        }
         String trackdir = "TrackInfo/";
         //  Analyze the tracks in the event
         for (Track track : tracklist) {
             //  Calculate the track pT and cos(theta)
-            double d0 = track.getTrackParameter(HelicalTrackFit.dcaIndex);
-            double z0 = track.getTrackParameter(HelicalTrackFit.z0Index);
-            double phi0 = track.getTrackParameter(HelicalTrackFit.phi0Index);
-            double slope = track.getTrackParameter(HelicalTrackFit.slopeIndex);
-            double curve = track.getTrackParameter(HelicalTrackFit.curvatureIndex);
-            double d0Err = Math.sqrt(track.getErrorMatrix().e(HelicalTrackFit.dcaIndex, HelicalTrackFit.dcaIndex));
-            double z0Err = Math.sqrt(track.getErrorMatrix().e(HelicalTrackFit.z0Index, HelicalTrackFit.z0Index));
-            double phi0Err = Math.sqrt(track.getErrorMatrix().e(HelicalTrackFit.phi0Index, HelicalTrackFit.phi0Index));
-            double slopeErr = Math.sqrt(track.getErrorMatrix().e(HelicalTrackFit.slopeIndex, HelicalTrackFit.slopeIndex));
-            double curveErr = Math.sqrt(track.getErrorMatrix().e(HelicalTrackFit.curvatureIndex, HelicalTrackFit.curvatureIndex));
+            double d0 = track.getTrackStates().get(0).getParameter(HelicalTrackFit.dcaIndex);
+            double z0 = track.getTrackStates().get(0).getParameter(HelicalTrackFit.z0Index);
+            double phi0 = track.getTrackStates().get(0).getParameter(HelicalTrackFit.phi0Index);
+            double slope = track.getTrackStates().get(0).getParameter(HelicalTrackFit.slopeIndex);
+            double curve = track.getTrackStates().get(0).getParameter(HelicalTrackFit.curvatureIndex);
+            SymmetricMatrix covMatrix = new SymmetricMatrix(5,track.getTrackStates().get(0).getCovMatrix(),true);
+            double d0Err = Math.sqrt(covMatrix.e(HelicalTrackFit.dcaIndex, HelicalTrackFit.dcaIndex));
+            double z0Err = Math.sqrt(covMatrix.e(HelicalTrackFit.z0Index, HelicalTrackFit.z0Index));
+            double phi0Err = Math.sqrt(covMatrix.e(HelicalTrackFit.phi0Index, HelicalTrackFit.phi0Index));
+            double slopeErr = Math.sqrt(covMatrix.e(HelicalTrackFit.slopeIndex, HelicalTrackFit.slopeIndex));
+            double curveErr = Math.sqrt(covMatrix.e(HelicalTrackFit.curvatureIndex, HelicalTrackFit.curvatureIndex));
             _nchRec++;
             if (track.getCharge() * flipsign < 0) {
                 _neleRec++;
@@ -485,7 +486,7 @@
             double xoca = ht.x0();
             double yoca = ht.y0();
             double[] poca = {xoca, yoca, z0};
-            double mom[] = track.getMomentum();
+            double mom[] = track.getTrackStates().get(0).getMomentum();
             double px = mom[0];
             double py = mom[1];
             double pz = mom[2];
@@ -590,9 +591,9 @@
                 double pzmc = Pmc.z();
                 double ptmc = Math.sqrt(pxmc * pxmc + pymc * pymc);
                 double pmc = Math.sqrt(ptmc * ptmc + pzmc * pzmc);
-                double pxtk = track.getPX();
-                double pytk = track.getPY();
-                double pztk = track.getPZ();
+                double pxtk = track.getTrackStates().get(0).getMomentum()[0];
+                double pytk = track.getTrackStates().get(0).getMomentum()[1];
+                double pztk = track.getTrackStates().get(0).getMomentum()[2];
                 double pttk = Math.sqrt(pxtk * pxtk + pytk * pytk);
                 double ptk = Math.sqrt(pttk * pttk + pztk * pztk);
 
@@ -914,9 +915,9 @@
             }
             if (mcp.getParents().size() == 1 && mcp.getParents().get(0).getPDGID() == 622) {
                 int nhits = tkanal.getNHitsNew();
-                double px = track.getPX();
-                double py = track.getPY();
-                double pz = track.getPZ();
+                double px = track.getTrackStates().get(0).getMomentum()[0];
+                double py = track.getTrackStates().get(0).getMomentum()[1];
+                double pz = track.getTrackStates().get(0).getMomentum()[2];
                 double pt = Math.sqrt(px * px + py * py);
                 double pperp = Math.sqrt(py * py + pz * pz);
                 double p = Math.sqrt(pt * pt + pz * pz);
@@ -1395,9 +1396,9 @@
         double me = 0.000511;
         // Loop over jets
 
-        double p1x = track1.getPX();
-        double p1y = track1.getPY();
-        double p1z = track1.getPZ();
+        double p1x = track1.getTrackStates().get(0).getMomentum()[0];
+        double p1y = track1.getTrackStates().get(0).getMomentum()[1];
+        double p1z = track1.getTrackStates().get(0).getMomentum()[2];
         double p1mag2 = p1x * p1x + p1y * p1y + p1z * p1z;
         double e1 = Math.sqrt(p1mag2 + me * me);
         double dydx1 = slt1.dydx();
@@ -1410,9 +1411,9 @@
         double truep1x = truep1y / dydx1;
         double truep1z = dzdx1 * truep1x;
 
-        double p2x = track2.getPX();
-        double p2y = track2.getPY();
-        double p2z = track2.getPZ();
+        double p2x = track2.getTrackStates().get(0).getMomentum()[0];
+        double p2y = track2.getTrackStates().get(0).getMomentum()[1];
+        double p2z = track2.getTrackStates().get(0).getMomentum()[2];
         double p2mag2 = p2x * p2x + p2y * p2y + p2z * p2z;
         double e2 = Math.sqrt(p2mag2 + me * me);
 
@@ -1500,9 +1501,9 @@
     private Hep3Vector getTrueMomentum(Track track1, StraightLineTrack slt1) {
         double[] truep = {0, 0, 0};
         double me = 0.000511;
-        double p1x = track1.getPX();
-        double p1y = track1.getPY();
-        double p1z = track1.getPZ();
+        double p1x = track1.getTrackStates().get(0).getMomentum()[0];
+        double p1y = track1.getTrackStates().get(0).getMomentum()[1];
+        double p1z = track1.getTrackStates().get(0).getMomentum()[2];
         double p1mag2 = p1x * p1x + p1y * p1y + p1z * p1z;
         double e1 = Math.sqrt(p1mag2 + me * me);
         double dydx1 = slt1.dydx();

Modified: java/trunk/users/src/main/java/org/hps/users/mgraham/ExamplePlotter.java
 =============================================================================
--- java/trunk/users/src/main/java/org/hps/users/mgraham/ExamplePlotter.java	(original)
+++ java/trunk/users/src/main/java/org/hps/users/mgraham/ExamplePlotter.java	Thu Jan 22 16:47:00 2015
@@ -71,9 +71,9 @@
         aida.tree().cd("/");
         List<Track> tracks = event.get(Track.class, trackCollectionName);
         for (Track trk : tracks) {
-            aida.histogram1D("Track Momentum (Px)").fill(trk.getPY());
-            aida.histogram1D("Track Momentum (Py)").fill(trk.getPZ());
-            aida.histogram1D("Track Momentum (Pz)").fill(trk.getPX());
+            aida.histogram1D("Track Momentum (Px)").fill(trk.getTrackStates().get(0).getMomentum()[1]);
+            aida.histogram1D("Track Momentum (Py)").fill(trk.getTrackStates().get(0).getMomentum()[2]);
+            aida.histogram1D("Track Momentum (Pz)").fill(trk.getTrackStates().get(0).getMomentum()[0]);
             aida.histogram1D("Track Chi2").fill(trk.getChi2());
 
             SeedTrack stEle = (SeedTrack) trk;

Modified: java/trunk/users/src/main/java/org/hps/users/mgraham/FastTrackAnalysisDriver.java
 =============================================================================
--- java/trunk/users/src/main/java/org/hps/users/mgraham/FastTrackAnalysisDriver.java	(original)
+++ java/trunk/users/src/main/java/org/hps/users/mgraham/FastTrackAnalysisDriver.java	Thu Jan 22 16:47:00 2015
@@ -288,9 +288,9 @@
             }
             if (mcp.getParents().size() == 1 && mcp.getParents().get(0).getPDGID() == 622) {
                 int nhits = tkanal.getNHitsNew();
-                double px = track.getPX();
-                double py = track.getPY();
-                double pz = track.getPZ();
+                double px = track.getTrackStates().get(0).getMomentum()[0];
+                double py = track.getTrackStates().get(0).getMomentum()[1];
+                double pz = track.getTrackStates().get(0).getMomentum()[2];
                 double pt = Math.sqrt(px * px + py * py);
                 double pperp = Math.sqrt(py * py + pz * pz);
                 double p = Math.sqrt(pt * pt + pz * pz);
@@ -350,12 +350,12 @@
                     double RP = htPos.R();
                     double slopeP = htPos.slope();
 
-                    double pxE = ele.getPX();
-                    double pyE = ele.getPY();
-                    double pzE = ele.getPZ();
-                    double pxP = pos.getPX();
-                    double pyP = pos.getPY();
-                    double pzP = pos.getPZ();
+                    double pxE = ele.getTrackStates().get(0).getMomentum()[0];
+                    double pyE = ele.getTrackStates().get(0).getMomentum()[1];
+                    double pzE = ele.getTrackStates().get(0).getMomentum()[2];
+                    double pxP = pos.getTrackStates().get(0).getMomentum()[0];
+                    double pyP = pos.getTrackStates().get(0).getMomentum()[1];
+                    double pzP = pos.getTrackStates().get(0).getMomentum()[2];
 
                     List<BilliorTrack> btlist = new ArrayList<BilliorTrack>();
 
@@ -722,9 +722,9 @@
         double me = 0.000511;
         // Loop over jets
 
-        double p1x = track1.getPX();
-        double p1y = track1.getPY();
-        double p1z = track1.getPZ();
+        double p1x = track1.getTrackStates().get(0).getMomentum()[0];
+        double p1y = track1.getTrackStates().get(0).getMomentum()[1];
+        double p1z = track1.getTrackStates().get(0).getMomentum()[2];
         double p1mag2 = p1x * p1x + p1y * p1y + p1z * p1z;
         double e1 = Math.sqrt(p1mag2 + me * me);
         double dydx1 = slt1.dydx();
@@ -737,9 +737,9 @@
         double truep1x = truep1y / dydx1;
         double truep1z = dzdx1 * truep1x;
 
-        double p2x = track2.getPX();
-        double p2y = track2.getPY();
-        double p2z = track2.getPZ();
+        double p2x = track2.getTrackStates().get(0).getMomentum()[0];
+        double p2y = track2.getTrackStates().get(0).getMomentum()[1];
+        double p2z = track2.getTrackStates().get(0).getMomentum()[2];
         double p2mag2 = p2x * p2x + p2y * p2y + p2z * p2z;
         double e2 = Math.sqrt(p2mag2 + me * me);
 
@@ -827,9 +827,9 @@
     private Hep3Vector getTrueMomentum(Track track1, StraightLineTrack slt1) {
         double[] truep = {0, 0, 0};
         double me = 0.000511;
-        double p1x = track1.getPX();
-        double p1y = track1.getPY();
-        double p1z = track1.getPZ();
+        double p1x = track1.getTrackStates().get(0).getMomentum()[0];
+        double p1y = track1.getTrackStates().get(0).getMomentum()[1];
+        double p1z = track1.getTrackStates().get(0).getMomentum()[2];
         double p1mag2 = p1x * p1x + p1y * p1y + p1z * p1z;
         double e1 = Math.sqrt(p1mag2 + me * me);
         double dydx1 = slt1.dydx();

Modified: java/trunk/users/src/main/java/org/hps/users/mgraham/HitTimePlotter.java
 =============================================================================
--- java/trunk/users/src/main/java/org/hps/users/mgraham/HitTimePlotter.java	(original)
+++ java/trunk/users/src/main/java/org/hps/users/mgraham/HitTimePlotter.java	Thu Jan 22 16:47:00 2015
@@ -235,9 +235,9 @@
         List<Track> tracks = event.get(Track.class, trackCollectionName);
 
         for (Track trk : tracks) {
-            aida.histogram1D("Track Momentum(Px)").fill(trk.getPY());
-            aida.histogram1D("Track Momentum(Py)").fill(trk.getPZ());
-            aida.histogram1D("Track Momentum(Pz)").fill(trk.getPX());
+            aida.histogram1D("Track Momentum(Px)").fill(trk.getTrackStates().get(0).getMomentum()[1]);
+            aida.histogram1D("Track Momentum(Py)").fill(trk.getTrackStates().get(0).getMomentum()[2]);
+            aida.histogram1D("Track Momentum(Pz)").fill(trk.getTrackStates().get(0).getMomentum()[0]);
             aida.histogram1D("TrackChi2").fill(trk.getChi2());
         }
 

Modified: java/trunk/users/src/main/java/org/hps/users/mgraham/JasAnalysisDriver.java
 =============================================================================
--- java/trunk/users/src/main/java/org/hps/users/mgraham/JasAnalysisDriver.java	(original)
+++ java/trunk/users/src/main/java/org/hps/users/mgraham/JasAnalysisDriver.java	Thu Jan 22 16:47:00 2015
@@ -252,16 +252,17 @@
         for (Track track : tracklist) {
 
             //  Calculate the track pT and cos(theta)
-            double d0 = track.getTrackParameter(HelicalTrackFit.dcaIndex);
-            double z0 = track.getTrackParameter(HelicalTrackFit.z0Index);
-            double phi0 = track.getTrackParameter(HelicalTrackFit.phi0Index);
-            double slope = track.getTrackParameter(HelicalTrackFit.slopeIndex);
-            double curve = track.getTrackParameter(HelicalTrackFit.curvatureIndex);
-            double d0Err = Math.sqrt(track.getErrorMatrix().e(HelicalTrackFit.dcaIndex, HelicalTrackFit.dcaIndex));
-            double z0Err = Math.sqrt(track.getErrorMatrix().e(HelicalTrackFit.z0Index, HelicalTrackFit.z0Index));
-            double phi0Err = Math.sqrt(track.getErrorMatrix().e(HelicalTrackFit.phi0Index, HelicalTrackFit.phi0Index));
-            double slopeErr = Math.sqrt(track.getErrorMatrix().e(HelicalTrackFit.slopeIndex, HelicalTrackFit.slopeIndex));
-            double curveErr = Math.sqrt(track.getErrorMatrix().e(HelicalTrackFit.curvatureIndex, HelicalTrackFit.curvatureIndex));
+            double d0 = track.getTrackStates().get(0).getParameter(HelicalTrackFit.dcaIndex);
+            double z0 = track.getTrackStates().get(0).getParameter(HelicalTrackFit.z0Index);
+            double phi0 = track.getTrackStates().get(0).getParameter(HelicalTrackFit.phi0Index);
+            double slope = track.getTrackStates().get(0).getParameter(HelicalTrackFit.slopeIndex);
+            double curve = track.getTrackStates().get(0).getParameter(HelicalTrackFit.curvatureIndex);
+            SymmetricMatrix covMatrix = new SymmetricMatrix(5,track.getTrackStates().get(0).getCovMatrix(),true);
+            double d0Err = Math.sqrt(covMatrix.e(HelicalTrackFit.dcaIndex, HelicalTrackFit.dcaIndex));
+            double z0Err = Math.sqrt(covMatrix.e(HelicalTrackFit.z0Index, HelicalTrackFit.z0Index));
+            double phi0Err = Math.sqrt(covMatrix.e(HelicalTrackFit.phi0Index, HelicalTrackFit.phi0Index));
+            double slopeErr = Math.sqrt(covMatrix.e(HelicalTrackFit.slopeIndex, HelicalTrackFit.slopeIndex));
+            double curveErr = Math.sqrt(covMatrix.e(HelicalTrackFit.curvatureIndex, HelicalTrackFit.curvatureIndex));
             double chisq = track.getChi2();
             //plot the helix parameters
             aida.cloud1D("d0").fill(d0);
@@ -271,7 +272,7 @@
             aida.cloud1D("curve").fill(curve);
             aida.cloud1D("chi2").fill(chisq);
 
-            double mom[] = track.getMomentum();
+            double mom[] = track.getTrackStates().get(0).getMomentum();
 
             SeedTrack stEle = (SeedTrack) track;
             SeedCandidate seedEle = stEle.getSeedCandidate();
@@ -339,9 +340,9 @@
                 double pzmc = Pmc.z();
                 double ptmc = Math.sqrt(pxmc * pxmc + pymc * pymc);
                 double pmc = Math.sqrt(ptmc * ptmc + pzmc * pzmc);
-                double pxtk = track.getPX();
-                double pytk = track.getPY();
-                double pztk = track.getPZ();
+                double pxtk = track.getTrackStates().get(0).getMomentum()[0];
+                double pytk = track.getTrackStates().get(0).getMomentum()[1];
+                double pztk = track.getTrackStates().get(0).getMomentum()[2];
                 double pttk = Math.sqrt(pxtk * pxtk + pytk * pytk);
                 double ptk = Math.sqrt(pttk * pttk + pztk * pztk);
 
@@ -884,9 +885,9 @@
         double me = 0.000511;
         // Loop over jets
 
-        double p1x = track1.getPX();
-        double p1y = track1.getPY();
-        double p1z = track1.getPZ();
+        double p1x = track1.getTrackStates().get(0).getMomentum()[0];
+        double p1y = track1.getTrackStates().get(0).getMomentum()[1];
+        double p1z = track1.getTrackStates().get(0).getMomentum()[2];
         double p1mag2 = p1x * p1x + p1y * p1y + p1z * p1z;
         double e1 = Math.sqrt(p1mag2 + me * me);
         double dydx1 = slt1.dydx();
@@ -899,9 +900,9 @@
         double truep1x = truep1y / dydx1;
         double truep1z = dzdx1 * truep1x;
 
-        double p2x = track2.getPX();
-        double p2y = track2.getPY();
-        double p2z = track2.getPZ();
+        double p2x = track2.getTrackStates().get(0).getMomentum()[0];
+        double p2y = track2.getTrackStates().get(0).getMomentum()[1];
+        double p2z = track2.getTrackStates().get(0).getMomentum()[2];
         double p2mag2 = p2x * p2x + p2y * p2y + p2z * p2z;
         double e2 = Math.sqrt(p2mag2 + me * me);
 
@@ -989,9 +990,9 @@
     private Hep3Vector getTrueMomentum(Track track1, StraightLineTrack slt1) {
         double[] truep = {0, 0, 0};
         double me = 0.000511;
-        double p1x = track1.getPX();
-        double p1y = track1.getPY();
-        double p1z = track1.getPZ();
+        double p1x = track1.getTrackStates().get(0).getMomentum()[0];
+        double p1y = track1.getTrackStates().get(0).getMomentum()[1];
+        double p1z = track1.getTrackStates().get(0).getMomentum()[2];
         double p1mag2 = p1x * p1x + p1y * p1y + p1z * p1z;
         double e1 = Math.sqrt(p1mag2 + me * me);
         double dydx1 = slt1.dydx();

Modified: java/trunk/users/src/main/java/org/hps/users/mgraham/StraightTrackAnalysis.java
 =============================================================================
--- java/trunk/users/src/main/java/org/hps/users/mgraham/StraightTrackAnalysis.java	(original)
+++ java/trunk/users/src/main/java/org/hps/users/mgraham/StraightTrackAnalysis.java	Thu Jan 22 16:47:00 2015
@@ -122,10 +122,10 @@
 
         for (Track trk : tracks) {
 //            StraightTrack stght = (StraightTrack) trk;
-            aida.histogram1D("d0", 50, -2, 2).fill(trk.getTrackParameters()[0]);
-            aida.histogram1D("z0", 50, -2, 2).fill(trk.getTrackParameters()[3]);
-            aida.histogram1D("xy slope", 50, -0.2, 0.25).fill(trk.getTrackParameters()[1]);
-            aida.histogram1D("sz slope", 50, -0.25, 0.25).fill(trk.getTrackParameters()[4]);
+            aida.histogram1D("d0", 50, -2, 2).fill(trk.getTrackStates().get(0).getParameters()[0]);
+            aida.histogram1D("z0", 50, -2, 2).fill(trk.getTrackStates().get(0).getParameters()[3]);
+            aida.histogram1D("xy slope", 50, -0.2, 0.25).fill(trk.getTrackStates().get(0).getParameters()[1]);
+            aida.histogram1D("sz slope", 50, -0.25, 0.25).fill(trk.getTrackStates().get(0).getParameters()[4]);
             aida.histogram1D("track chi2 per ndf", 50, 0, 2).fill(trk.getChi2() / trk.getNDF());
             aida.histogram1D("track nhits", 50, 0, 10).fill(trk.getTrackerHits().size());
             TrackAnalysis tkanal = new TrackAnalysis(trk, hittomc);

Modified: java/trunk/users/src/main/java/org/hps/users/mgraham/TestAnalysisDriver.java
 =============================================================================
--- java/trunk/users/src/main/java/org/hps/users/mgraham/TestAnalysisDriver.java	(original)
+++ java/trunk/users/src/main/java/org/hps/users/mgraham/TestAnalysisDriver.java	Thu Jan 22 16:47:00 2015
@@ -75,16 +75,17 @@
         //  Analyze the tracks in the event
         for (Track track : tracklist) {
             //  Calculate the track pT and cos(theta)
-            double d0 = track.getTrackParameter(HelicalTrackFit.dcaIndex);
-            double z0 = track.getTrackParameter(HelicalTrackFit.z0Index);
-            double phi0 = track.getTrackParameter(HelicalTrackFit.phi0Index);
-            double slope = track.getTrackParameter(HelicalTrackFit.slopeIndex);
-            double curve = track.getTrackParameter(HelicalTrackFit.curvatureIndex);
-            double d0Err = Math.sqrt(track.getErrorMatrix().e(HelicalTrackFit.dcaIndex, HelicalTrackFit.dcaIndex));
-            double z0Err = Math.sqrt(track.getErrorMatrix().e(HelicalTrackFit.z0Index, HelicalTrackFit.z0Index));
-            double phi0Err = Math.sqrt(track.getErrorMatrix().e(HelicalTrackFit.phi0Index, HelicalTrackFit.phi0Index));
-            double slopeErr = Math.sqrt(track.getErrorMatrix().e(HelicalTrackFit.slopeIndex, HelicalTrackFit.slopeIndex));
-            double curveErr = Math.sqrt(track.getErrorMatrix().e(HelicalTrackFit.curvatureIndex, HelicalTrackFit.curvatureIndex));
+            double d0 = track.getTrackStates().get(0).getParameter(HelicalTrackFit.dcaIndex);
+            double z0 = track.getTrackStates().get(0).getParameter(HelicalTrackFit.z0Index);
+            double phi0 = track.getTrackStates().get(0).getParameter(HelicalTrackFit.phi0Index);
+            double slope = track.getTrackStates().get(0).getParameter(HelicalTrackFit.slopeIndex);
+            double curve = track.getTrackStates().get(0).getParameter(HelicalTrackFit.curvatureIndex);
+            SymmetricMatrix covMatrix = new SymmetricMatrix(5,track.getTrackStates().get(0).getCovMatrix(),true);
+            double d0Err = Math.sqrt(covMatrix.e(HelicalTrackFit.dcaIndex, HelicalTrackFit.dcaIndex));
+            double z0Err = Math.sqrt(covMatrix.e(HelicalTrackFit.z0Index, HelicalTrackFit.z0Index));
+            double phi0Err = Math.sqrt(covMatrix.e(HelicalTrackFit.phi0Index, HelicalTrackFit.phi0Index));
+            double slopeErr = Math.sqrt(covMatrix.e(HelicalTrackFit.slopeIndex, HelicalTrackFit.slopeIndex));
+            double curveErr = Math.sqrt(covMatrix.e(HelicalTrackFit.curvatureIndex, HelicalTrackFit.curvatureIndex));
              SeedTrack stEle = (SeedTrack) track;
             SeedCandidate seedEle = stEle.getSeedCandidate();
             HelicalTrackFit ht = seedEle.getHelix();

Modified: java/trunk/users/src/main/java/org/hps/users/mgraham/TrackExtrapolationAnalysis.java
 =============================================================================
--- java/trunk/users/src/main/java/org/hps/users/mgraham/TrackExtrapolationAnalysis.java	(original)
+++ java/trunk/users/src/main/java/org/hps/users/mgraham/TrackExtrapolationAnalysis.java	Thu Jan 22 16:47:00 2015
@@ -80,7 +80,7 @@
 
         List<Track> tracks = event.get(Track.class, trackCollectionName);
         for (Track trk : tracks) {
-            double trackP = trk.getPX();
+            double trackP = trk.getTrackStates().get(0).getMomentum()[0];
             SeedTrack stEle = (SeedTrack) trk;
             SeedCandidate seedEle = stEle.getSeedCandidate();
             HelicalTrackFit ht = seedEle.getHelix();

Modified: java/trunk/users/src/main/java/org/hps/users/mgraham/TwoTrackAnalysis.java
 =============================================================================
--- java/trunk/users/src/main/java/org/hps/users/mgraham/TwoTrackAnalysis.java	(original)
+++ java/trunk/users/src/main/java/org/hps/users/mgraham/TwoTrackAnalysis.java	Thu Jan 22 16:47:00 2015
@@ -263,9 +263,9 @@
         List<Track> tracks = event.get(Track.class, trackCollectionName);
         System.out.println("Staring TwoTrackAnalysis");
         for (Track trk : tracks) {
-            aida.histogram1D("Track Momentum (Px)").fill(trk.getPY());
-            aida.histogram1D("Track Momentum (Py)").fill(trk.getPZ());
-            aida.histogram1D("Track Momentum (Pz)").fill(trk.getPX());
+            aida.histogram1D("Track Momentum (Px)").fill(trk.getTrackStates().get(0).getMomentum()[1]);
+            aida.histogram1D("Track Momentum (Py)").fill(trk.getTrackStates().get(0).getMomentum()[2]);
+            aida.histogram1D("Track Momentum (Pz)").fill(trk.getTrackStates().get(0).getMomentum()[0]);
             aida.histogram1D("Track Chi2").fill(trk.getChi2());
 
             SeedTrack stEle = (SeedTrack) trk;
@@ -740,21 +740,21 @@
                     Hep3Vector[] trkatconvE;
                     Hep3Vector[] trkatconvP;
                     if (trk1.getCharge() > 0) {
-                        pxP = trk1.getPX();
-                        pyP = trk1.getPY();
-                        pzP = trk1.getPZ();
-                        pxE = trk2.getPX();
-                        pyE = trk2.getPY();
-                        pzE = trk2.getPZ();
+                        pxP = trk1.getTrackStates().get(0).getMomentum()[0];
+                        pyP = trk1.getTrackStates().get(0).getMomentum()[1];
+                        pzP = trk1.getTrackStates().get(0).getMomentum()[2];
+                        pxE = trk2.getTrackStates().get(0).getMomentum()[0];
+                        pyE = trk2.getTrackStates().get(0).getMomentum()[1];
+                        pzE = trk2.getTrackStates().get(0).getMomentum()[2];
                         trkatconvP = trkatconver1;
                         trkatconvE = trkatconver2;
                     } else {
-                        pxP = trk2.getPX();
-                        pyP = trk2.getPY();
-                        pzP = trk2.getPZ();
-                        pxE = trk1.getPX();
-                        pyE = trk1.getPY();
-                        pzE = trk1.getPZ();
+                        pxP = trk2.getTrackStates().get(0).getMomentum()[0];
+                        pyP = trk2.getTrackStates().get(0).getMomentum()[1];
+                        pzP = trk2.getTrackStates().get(0).getMomentum()[2];
+                        pxE = trk1.getTrackStates().get(0).getMomentum()[0];
+                        pyE = trk1.getTrackStates().get(0).getMomentum()[1];
+                        pzE = trk1.getTrackStates().get(0).getMomentum()[2];
                         trkatconvP = trkatconver2;
                         trkatconvE = trkatconver1;
                     }
@@ -766,7 +766,7 @@
                     pw.format("%5.5f %5.5f %5.5f %5.5f ",distance,vX,vY,vZ);
                     pw.println();
 
-                    if (trk1.getPX() > 0.25 && trk2.getPX() > 0.25 && Math.abs(C.get(1, 0)) < 6.0) {
+                    if (trk1.getTrackStates().get(0).getMomentum()[0] > 0.25 && trk2.getTrackStates().get(0).getMomentum()[0] > 0.25 && Math.abs(C.get(1, 0)) < 6.0) {
                         aida.histogram1D("XVertex with y cut").fill(C.get(0, 0));
                         aida.histogram1D("YVertex with y cut").fill(C.get(1, 0));
                         aida.histogram1D("ZVertex with y cut").fill(C.get(2, 0));
@@ -846,15 +846,15 @@
                         // aida.histogram1D("Big Bump Track Parity").fill(trksparity);
                     }
                     if (eplustop) { //read Little bump as e+ top
-                        // aida.histogram1D("Little Bump Track Momenta (Px)").fill(trk1.getPX());
-                        // aida.histogram1D("Little Bump Track Momenta (Py)").fill(trk1.getPY());
-                        // aida.histogram1D("Little Bump Track Momenta (Pz)").fill(trk1.getPZ());
+                        // aida.histogram1D("Little Bump Track Momenta (Px)").fill(trk1.getTrackStates().get(0).getMomentum()[0]);
+                        // aida.histogram1D("Little Bump Track Momenta (Py)").fill(trk1.getTrackStates().get(0).getMomentum()[1]);
+                        // aida.histogram1D("Little Bump Track Momenta (Pz)").fill(trk1.getTrackStates().get(0).getMomentum()[2]);
                         // aida.histogram1D("Little Bump Tracks Chi2").fill(trk1.getChi2());
-                        // aida.histogram1D("Little Bump Track Momenta (Px)").fill(trk2.getPX());
-                        // aida.histogram1D("Little Bump Track Momenta (Py)").fill(trk2.getPY());
-                        // aida.histogram1D("Little Bump Track Momenta (Pz)").fill(trk2.getPZ());
+                        // aida.histogram1D("Little Bump Track Momenta (Px)").fill(trk2.getTrackStates().get(0).getMomentum()[0]);
+                        // aida.histogram1D("Little Bump Track Momenta (Py)").fill(trk2.getTrackStates().get(0).getMomentum()[1]);
+                        // aida.histogram1D("Little Bump Track Momenta (Pz)").fill(trk2.getTrackStates().get(0).getMomentum()[2]);
                         // aida.histogram1D("Little Bump Tracks Chi2").fill(trk2.getChi2());
-                        // aida.histogram1D("Little Bump Sum of Track's Momentums").fill(Math.sqrt(Math.pow((trk1.getPY() + trk2.getPY()), 2) + Math.pow((trk1.getPX() + trk2.getPX()), 2) + Math.pow((trk1.getPZ() + trk2.getPZ()), 2)));
+                        // aida.histogram1D("Little Bump Sum of Track's Momentums").fill(Math.sqrt(Math.pow((trk1.getTrackStates().get(0).getMomentum()[1] + trk2.getTrackStates().get(0).getMomentum()[1]), 2) + Math.pow((trk1.getTrackStates().get(0).getMomentum()[0] + trk2.getTrackStates().get(0).getMomentum()[0]), 2) + Math.pow((trk1.getTrackStates().get(0).getMomentum()[2] + trk2.getTrackStates().get(0).getMomentum()[2]), 2)));
                         double Etrk1sq = (Math.pow(trkatconver1[1].x(), 2) + Math.pow(trkatconver1[1].y(), 2) + Math.pow(trkatconver1[1].z(), 2));
                         double Etrk2sq = (Math.pow(trkatconver2[1].x(), 2) + Math.pow(trkatconver2[1].y(), 2) + Math.pow(trkatconver2[1].z(), 2));
                         double Etrk1 = Math.sqrt(Etrk1sq);
@@ -862,23 +862,23 @@
                         double p1dotp2 = (trkatconver1[1].x() * trkatconver2[1].x() + trkatconver1[1].y() * trkatconver2[1].y() + trkatconver1[1].z() * trkatconver2[1].z());
                         aida.histogram1D("Invariant Mass").fill(Math.sqrt(2 * Etrk1 * Etrk2 - 2 * p1dotp2));
                         if (qtrk1 == 1) {
-                            //       aida.histogram2D("Little Bump P+ vs. P-").fill(Math.sqrt((Math.pow((trk1.getPY()), 2) + Math.pow((trk1.getPX()), 2) + Math.pow((trk1.getPZ()), 2))), Math.sqrt((Math.pow((trk2.getPY()), 2) + Math.pow((trk2.getPX()), 2) + Math.pow((trk2.getPZ()), 2))));
+                            //       aida.histogram2D("Little Bump P+ vs. P-").fill(Math.sqrt((Math.pow((trk1.getTrackStates().get(0).getMomentum()[1]), 2) + Math.pow((trk1.getTrackStates().get(0).getMomentum()[0]), 2) + Math.pow((trk1.getTrackStates().get(0).getMomentum()[2]), 2))), Math.sqrt((Math.pow((trk2.getTrackStates().get(0).getMomentum()[1]), 2) + Math.pow((trk2.getTrackStates().get(0).getMomentum()[0]), 2) + Math.pow((trk2.getTrackStates().get(0).getMomentum()[2]), 2))));
                         } else {
-                            //      aida.histogram2D("Little Bump P+ vs. P-").fill(Math.sqrt((Math.pow((trk2.getPY()), 2) + Math.pow((trk2.getPX()), 2) + Math.pow((trk2.getPZ()), 2))), Math.sqrt((Math.pow((trk1.getPY()), 2) + Math.pow((trk1.getPX()), 2) + Math.pow((trk1.getPZ()), 2))));
+                            //      aida.histogram2D("Little Bump P+ vs. P-").fill(Math.sqrt((Math.pow((trk2.getTrackStates().get(0).getMomentum()[1]), 2) + Math.pow((trk2.getTrackStates().get(0).getMomentum()[0]), 2) + Math.pow((trk2.getTrackStates().get(0).getMomentum()[2]), 2))), Math.sqrt((Math.pow((trk1.getTrackStates().get(0).getMomentum()[1]), 2) + Math.pow((trk1.getTrackStates().get(0).getMomentum()[0]), 2) + Math.pow((trk1.getTrackStates().get(0).getMomentum()[2]), 2))));
                         }
                         aida.histogram2D("X v Y - e+ Top").fill(C.get(0, 0), C.get(1, 0));
                         aida.histogram2D("X v Z - e+ Top").fill(C.get(0, 0), C.get(2, 0));
                         aida.histogram2D("Y v Z - e+ Top").fill(C.get(1, 0), C.get(2, 0));
                     } else { //read Big bump as e- top
-//                        aida.histogram1D("Big Bump Track Momenta (Px)").fill(trk1.getPX());
-//                        aida.histogram1D("Big Bump Track Momenta (Py)").fill(trk1.getPY());
-//                        aida.histogram1D("Big Bump Track Momenta (Pz)").fill(trk1.getPZ());
+//                        aida.histogram1D("Big Bump Track Momenta (Px)").fill(trk1.getTrackStates().get(0).getMomentum()[0]);
+//                        aida.histogram1D("Big Bump Track Momenta (Py)").fill(trk1.getTrackStates().get(0).getMomentum()[1]);
+//                        aida.histogram1D("Big Bump Track Momenta (Pz)").fill(trk1.getTrackStates().get(0).getMomentum()[2]);
 //                        aida.histogram1D("Big Bump Tracks Chi2").fill(trk1.getChi2());
-//                        aida.histogram1D("Big Bump Track Momenta (Px)").fill(trk2.getPX());
-//                        aida.histogram1D("Big Bump Track Momenta (Py)").fill(trk2.getPY());
-//                        aida.histogram1D("Big Bump Track Momenta (Pz)").fill(trk2.getPZ());
+//                        aida.histogram1D("Big Bump Track Momenta (Px)").fill(trk2.getTrackStates().get(0).getMomentum()[0]);
+//                        aida.histogram1D("Big Bump Track Momenta (Py)").fill(trk2.getTrackStates().get(0).getMomentum()[1]);
+//                        aida.histogram1D("Big Bump Track Momenta (Pz)").fill(trk2.getTrackStates().get(0).getMomentum()[2]);
 //                        aida.histogram1D("Big Bump Tracks Chi2").fill(trk2.getChi2());
-//                        aida.histogram1D("Big Bump Sum of Track's Momentums").fill(Math.sqrt(Math.pow((trk1.getPY() + trk2.getPY()), 2) + Math.pow((trk1.getPX() + trk2.getPX()), 2) + Math.pow((trk1.getPZ() + trk2.getPZ()), 2)));
+//                        aida.histogram1D("Big Bump Sum of Track's Momentums").fill(Math.sqrt(Math.pow((trk1.getTrackStates().get(0).getMomentum()[1] + trk2.getTrackStates().get(0).getMomentum()[1]), 2) + Math.pow((trk1.getTrackStates().get(0).getMomentum()[0] + trk2.getTrackStates().get(0).getMomentum()[0]), 2) + Math.pow((trk1.getTrackStates().get(0).getMomentum()[2] + trk2.getTrackStates().get(0).getMomentum()[2]), 2)));
                         double Etrk1sq = (Math.pow(trkatconver1[1].x(), 2) + Math.pow(trkatconver1[1].y(), 2) + Math.pow(trkatconver1[1].z(), 2));
                         double Etrk2sq = (Math.pow(trkatconver2[1].x(), 2) + Math.pow(trkatconver2[1].y(), 2) + Math.pow(trkatconver2[1].z(), 2));
                         double Etrk1 = Math.sqrt(Etrk1sq);
@@ -886,9 +886,9 @@
                         double p1dotp2 = (trkatconver1[1].x() * trkatconver2[1].x() + trkatconver1[1].y() * trkatconver2[1].y() + trkatconver1[1].z() * trkatconver2[1].z());
                         aida.histogram1D("Invariant Mass").fill(Math.sqrt(2 * Etrk1 * Etrk2 - 2 * p1dotp2));
                         if (qtrk1 == 1) {
-                            //  aida.histogram2D("Big Bump P+ vs. P-").fill(Math.sqrt((Math.pow((trk1.getPY()), 2) + Math.pow((trk1.getPX()), 2) + Math.pow((trk1.getPZ()), 2))), Math.sqrt((Math.pow((trk2.getPY()), 2) + Math.pow((trk2.getPX()), 2) + Math.pow((trk2.getPZ()), 2))));
+                            //  aida.histogram2D("Big Bump P+ vs. P-").fill(Math.sqrt((Math.pow((trk1.getTrackStates().get(0).getMomentum()[1]), 2) + Math.pow((trk1.getTrackStates().get(0).getMomentum()[0]), 2) + Math.pow((trk1.getTrackStates().get(0).getMomentum()[2]), 2))), Math.sqrt((Math.pow((trk2.getTrackStates().get(0).getMomentum()[1]), 2) + Math.pow((trk2.getTrackStates().get(0).getMomentum()[0]), 2) + Math.pow((trk2.getTrackStates().get(0).getMomentum()[2]), 2))));
                         } else {
-                            // aida.histogram2D("Big Bump P+ vs. P-").fill(Math.sqrt((Math.pow((trk2.getPY()), 2) + Math.pow((trk2.getPX()), 2) + Math.pow((trk2.getPZ()), 2))), Math.sqrt((Math.pow((trk1.getPY()), 2) + Math.pow((trk1.getPX()), 2) + Math.pow((trk1.getPZ()), 2))));
+                            // aida.histogram2D("Big Bump P+ vs. P-").fill(Math.sqrt((Math.pow((trk2.getTrackStates().get(0).getMomentum()[1]), 2) + Math.pow((trk2.getTrackStates().get(0).getMomentum()[0]), 2) + Math.pow((trk2.getTrackStates().get(0).getMomentum()[2]), 2))), Math.sqrt((Math.pow((trk1.getTrackStates().get(0).getMomentum()[1]), 2) + Math.pow((trk1.getTrackStates().get(0).getMomentum()[0]), 2) + Math.pow((trk1.getTrackStates().get(0).getMomentum()[2]), 2))));
                         }
                         aida.histogram2D("X v Y - e- Top").fill(C.get(0, 0), C.get(1, 0));
                         aida.histogram2D("X v Z - e- Top").fill(C.get(0, 0), C.get(2, 0));
@@ -905,42 +905,42 @@
 
 
                 if ((isTrk2Top + isTrk1Top) == 0) {
-//                    aida.histogram1D("Split Track Momenta (Px)").fill(trk1.getPX());
-//                    aida.histogram1D("Split Track Momenta (Py)").fill(trk1.getPY());
-//                    aida.histogram1D("Split Track Momenta (Pz)").fill(trk1.getPZ());
+//                    aida.histogram1D("Split Track Momenta (Px)").fill(trk1.getTrackStates().get(0).getMomentum()[0]);
+//                    aida.histogram1D("Split Track Momenta (Py)").fill(trk1.getTrackStates().get(0).getMomentum()[1]);
+//                    aida.histogram1D("Split Track Momenta (Pz)").fill(trk1.getTrackStates().get(0).getMomentum()[2]);
 //                    aida.histogram1D("Split Tracks Chi2").fill(trk1.getChi2());
-//                    aida.histogram1D("Split Track Momenta (Px)").fill(trk2.getPX());
-//                    aida.histogram1D("Split Track Momenta (Py)").fill(trk2.getPY());
-//                    aida.histogram1D("Split Track Momenta (Pz)").fill(trk2.getPZ());
+//                    aida.histogram1D("Split Track Momenta (Px)").fill(trk2.getTrackStates().get(0).getMomentum()[0]);
+//                    aida.histogram1D("Split Track Momenta (Py)").fill(trk2.getTrackStates().get(0).getMomentum()[1]);
+//                    aida.histogram1D("Split Track Momenta (Pz)").fill(trk2.getTrackStates().get(0).getMomentum()[2]);
 //                    aida.histogram1D("Split Tracks Chi2").fill(trk2.getChi2());
                     //     aida.histogram1D("Charge Distributions Split Tracks").fill(qtrk1 + qtrk2);
                 }
 
                 if ((isTrk2Top + isTrk1Top) == 2) {
-//                    aida.histogram1D("Top-Top Track Momenta (Px)").fill(trk1.getPX());
-//                    aida.histogram1D("Top-Top Track Momenta (Py)").fill(trk1.getPY());
-//                    aida.histogram1D("Top-Top Track Momenta (Pz)").fill(trk1.getPZ());
+//                    aida.histogram1D("Top-Top Track Momenta (Px)").fill(trk1.getTrackStates().get(0).getMomentum()[0]);
+//                    aida.histogram1D("Top-Top Track Momenta (Py)").fill(trk1.getTrackStates().get(0).getMomentum()[1]);
+//                    aida.histogram1D("Top-Top Track Momenta (Pz)").fill(trk1.getTrackStates().get(0).getMomentum()[2]);
 //                    aida.histogram1D("Top-Top Tracks Chi2").fill(trk1.getChi2());
-//                    aida.histogram1D("Top-Top Track Momenta (Px)").fill(trk2.getPX());
-//                    aida.histogram1D("Top-Top Track Momenta (Py)").fill(trk2.getPY());
-//                    aida.histogram1D("Top-Top Track Momenta (Pz)").fill(trk2.getPZ());
+//                    aida.histogram1D("Top-Top Track Momenta (Px)").fill(trk2.getTrackStates().get(0).getMomentum()[0]);
+//                    aida.histogram1D("Top-Top Track Momenta (Py)").fill(trk2.getTrackStates().get(0).getMomentum()[1]);
+//                    aida.histogram1D("Top-Top Track Momenta (Pz)").fill(trk2.getTrackStates().get(0).getMomentum()[2]);
 //                    aida.histogram1D("Top-Top Tracks Chi2").fill(trk2.getChi2());
                     //     aida.histogram1D("Charge Distributions Non-Split Tracks").fill(qtrk1 + qtrk2);
                 }
 
 
 //                if ((qtrk1 + qtrk2) == 0) {
-//                    aida.histogram1D("Perpendicular Momentum").fill(Math.sqrt(Math.pow((trk1.getPY() + trk2.getPY()), 2) + Math.pow((trk1.getPZ() + trk2.getPZ()), 2)));
+//                    aida.histogram1D("Perpendicular Momentum").fill(Math.sqrt(Math.pow((trk1.getTrackStates().get(0).getMomentum()[1] + trk2.getTrackStates().get(0).getMomentum()[1]), 2) + Math.pow((trk1.getTrackStates().get(0).getMomentum()[2] + trk2.getTrackStates().get(0).getMomentum()[2]), 2)));
 //
 //                    if (qtrk1 == 1) {
-//                        aida.histogram2D("Py+ vs. Py-").fill(trk1.getPY(), trk2.getPY());
-//                        aida.histogram2D("Pz+ vs. Pz-").fill(trk1.getPZ(), trk2.getPZ());
-//                        aida.histogram2D("Total P+ vs. P-").fill(Math.sqrt((Math.pow((trk1.getPY()), 2) + Math.pow((trk1.getPX()), 2) + Math.pow((trk1.getPZ()), 2))), Math.sqrt((Math.pow((trk2.getPY()), 2) + Math.pow((trk2.getPX()), 2) + Math.pow((trk2.getPZ()), 2))));
+//                        aida.histogram2D("Py+ vs. Py-").fill(trk1.getTrackStates().get(0).getMomentum()[1], trk2.getTrackStates().get(0).getMomentum()[1]);
+//                        aida.histogram2D("Pz+ vs. Pz-").fill(trk1.getTrackStates().get(0).getMomentum()[2], trk2.getTrackStates().get(0).getMomentum()[2]);
+//                        aida.histogram2D("Total P+ vs. P-").fill(Math.sqrt((Math.pow((trk1.getTrackStates().get(0).getMomentum()[1]), 2) + Math.pow((trk1.getTrackStates().get(0).getMomentum()[0]), 2) + Math.pow((trk1.getTrackStates().get(0).getMomentum()[2]), 2))), Math.sqrt((Math.pow((trk2.getTrackStates().get(0).getMomentum()[1]), 2) + Math.pow((trk2.getTrackStates().get(0).getMomentum()[0]), 2) + Math.pow((trk2.getTrackStates().get(0).getMomentum()[2]), 2))));
 //
 //                    } else {
-//                        aida.histogram2D("Py+ vs. Py-").fill(trk2.getPY(), trk1.getPY());
-//                        aida.histogram2D("Pz+ vs. Pz-").fill(trk2.getPZ(), trk1.getPZ());
-//                        aida.histogram2D("Total P+ vs. P-").fill(Math.sqrt((Math.pow((trk2.getPY()), 2) + Math.pow((trk2.getPX()), 2) + Math.pow((trk2.getPZ()), 2))), Math.sqrt((Math.pow((trk1.getPY()), 2) + Math.pow((trk1.getPX()), 2) + Math.pow((trk1.getPZ()), 2))));
+//                        aida.histogram2D("Py+ vs. Py-").fill(trk2.getTrackStates().get(0).getMomentum()[1], trk1.getTrackStates().get(0).getMomentum()[1]);
+//                        aida.histogram2D("Pz+ vs. Pz-").fill(trk2.getTrackStates().get(0).getMomentum()[2], trk1.getTrackStates().get(0).getMomentum()[2]);
+//                        aida.histogram2D("Total P+ vs. P-").fill(Math.sqrt((Math.pow((trk2.getTrackStates().get(0).getMomentum()[1]), 2) + Math.pow((trk2.getTrackStates().get(0).getMomentum()[0]), 2) + Math.pow((trk2.getTrackStates().get(0).getMomentum()[2]), 2))), Math.sqrt((Math.pow((trk1.getTrackStates().get(0).getMomentum()[1]), 2) + Math.pow((trk1.getTrackStates().get(0).getMomentum()[0]), 2) + Math.pow((trk1.getTrackStates().get(0).getMomentum()[2]), 2))));
 //                    }
 //                }
 

Modified: java/trunk/users/src/main/java/org/hps/users/mgraham/alignment/RunAlignment.java
 =============================================================================
--- java/trunk/users/src/main/java/org/hps/users/mgraham/alignment/RunAlignment.java	(original)
+++ java/trunk/users/src/main/java/org/hps/users/mgraham/alignment/RunAlignment.java	Thu Jan 22 16:47:00 2015
@@ -55,9 +55,9 @@
             ap.PrintResidualsAndDerivatives(trk);
 
             if(1==1){
-                aida.histogram1D("Track d0",50,-0.5,0.5).fill(trk.getTrackParameter(0));
-                aida.histogram1D("Track sin(phi0)",50,-0.5,0.5).fill(Math.sin(trk.getTrackParameter(1)));
-                aida.histogram1D("Track z0",50,-0.1,0.1).fill(Math.sin(trk.getTrackParameter(3)));
+                aida.histogram1D("Track d0",50,-0.5,0.5).fill(trk.getTrackStates().get(0).getParameter(0));
+                aida.histogram1D("Track sin(phi0)",50,-0.5,0.5).fill(Math.sin(trk.getTrackStates().get(0).getParameter(1)));
+                aida.histogram1D("Track z0",50,-0.1,0.1).fill(Math.sin(trk.getTrackStates().get(0).getParameter(3)));
                 aida.histogram1D("Track chi^2",50,0,25).fill(trk.getChi2());
                 for (int i = 1; i < 11; i++) {
                 double[] res = ap.getResidual(trk, i);
@@ -70,11 +70,11 @@
 
                 aida.histogram1D("deltaU -- Layer " + mylayer,50,-duRange,duRange).fill(res[0]);
                 aida.histogram1D("deltaU Pull-- Layer " + mylayer,50,-3,3).fill(res[0]/res[3]);
-                if(i==3&&Math.sin(trk.getTrackParameter(1))>0){
+                if(i==3&&Math.sin(trk.getTrackStates().get(0).getParameter(1))>0){
                     aida.histogram1D("Positive phi0  deltaU -- Layer " + mylayer,50,-duRange,duRange).fill(res[0]);
                 aida.histogram1D("Positive phi0 deltaU Pull-- Layer " + mylayer,50,-3,3).fill(res[0]/res[3]);
                 }
-                if(i==3&&Math.sin(trk.getTrackParameter(1))<0){
+                if(i==3&&Math.sin(trk.getTrackStates().get(0).getParameter(1))<0){
                     aida.histogram1D("Negative phi0  deltaU -- Layer " + mylayer,50,-duRange,duRange).fill(res[0]);
                 aida.histogram1D("Negative phi0 deltaU Pull-- Layer " + mylayer,50,-3,3).fill(res[0]/res[3]);
                 }

Modified: java/trunk/users/src/main/java/org/hps/users/mgraham/jlabrotation/DetailedAnalysisDriver.java
 =============================================================================
--- java/trunk/users/src/main/java/org/hps/users/mgraham/jlabrotation/DetailedAnalysisDriver.java	(original)
+++ java/trunk/users/src/main/java/org/hps/users/mgraham/jlabrotation/DetailedAnalysisDriver.java	Thu Jan 22 16:47:00 2015
@@ -360,7 +360,7 @@
             aida.cloud1D("Axial Tracks per Event").fill(axialtracklist.size());
             String atrackdir = "TrackInfoAxial/";
             for (Track atrack : axialtracklist) {
-                double apx = atrack.getPX();
+                double apx = atrack.getTrackStates().get(0).getMomentum()[0];
                 aida.cloud1D(atrackdir + "pX").fill(apx);
                 TrackAnalysis tkanal = new TrackAnalysis(atrack, hittomcAxial);
                 MCParticle mcp = tkanal.getMCParticle();
@@ -406,16 +406,17 @@
         //  Analyze the tracks in the event
         for (Track track : tracklist) {
             //  Calculate the track pT and cos(theta)
-            double d0 = track.getTrackParameter(HelicalTrackFit.dcaIndex);
-            double z0 = track.getTrackParameter(HelicalTrackFit.z0Index);
-            double phi0 = track.getTrackParameter(HelicalTrackFit.phi0Index);
-            double slope = track.getTrackParameter(HelicalTrackFit.slopeIndex);
-            double curve = track.getTrackParameter(HelicalTrackFit.curvatureIndex);
-            double d0Err = Math.sqrt(track.getErrorMatrix().e(HelicalTrackFit.dcaIndex, HelicalTrackFit.dcaIndex));
-            double z0Err = Math.sqrt(track.getErrorMatrix().e(HelicalTrackFit.z0Index, HelicalTrackFit.z0Index));
-            double phi0Err = Math.sqrt(track.getErrorMatrix().e(HelicalTrackFit.phi0Index, HelicalTrackFit.phi0Index));
-            double slopeErr = Math.sqrt(track.getErrorMatrix().e(HelicalTrackFit.slopeIndex, HelicalTrackFit.slopeIndex));
-            double curveErr = Math.sqrt(track.getErrorMatrix().e(HelicalTrackFit.curvatureIndex, HelicalTrackFit.curvatureIndex));
+            double d0 = track.getTrackStates().get(0).getParameter(HelicalTrackFit.dcaIndex);
+            double z0 = track.getTrackStates().get(0).getParameter(HelicalTrackFit.z0Index);
+            double phi0 = track.getTrackStates().get(0).getParameter(HelicalTrackFit.phi0Index);
+            double slope = track.getTrackStates().get(0).getParameter(HelicalTrackFit.slopeIndex);
+            double curve = track.getTrackStates().get(0).getParameter(HelicalTrackFit.curvatureIndex);
+            SymmetricMatrix covMatrix = new SymmetricMatrix(5,track.getTrackStates().get(0).getCovMatrix(),true);
+            double d0Err = Math.sqrt(covMatrix.e(HelicalTrackFit.dcaIndex, HelicalTrackFit.dcaIndex));
+            double z0Err = Math.sqrt(covMatrix.e(HelicalTrackFit.z0Index, HelicalTrackFit.z0Index));
+            double phi0Err = Math.sqrt(covMatrix.e(HelicalTrackFit.phi0Index, HelicalTrackFit.phi0Index));
+            double slopeErr = Math.sqrt(covMatrix.e(HelicalTrackFit.slopeIndex, HelicalTrackFit.slopeIndex));
+            double curveErr = Math.sqrt(covMatrix.e(HelicalTrackFit.curvatureIndex, HelicalTrackFit.curvatureIndex));
             _nchRec++;
             if (track.getCharge() < 0)
                 _neleRec++;
@@ -434,7 +435,7 @@
             double xoca = ht.x0();
             double yoca = ht.y0();
             double[] poca = {xoca, yoca, z0};
-            double mom[] = track.getMomentum();
+            double mom[] = track.getTrackStates().get(0).getMomentum();
             double px = mom[0];
             double py = mom[1];
             double pz = mom[2];
@@ -526,9 +527,9 @@
                 double pzmc = Pmc.z();
                 double ptmc = Math.sqrt(pxmc * pxmc + pymc * pymc);
                 double pmc = Math.sqrt(ptmc * ptmc + pzmc * pzmc);
-                double pxtk = track.getPX();
-                double pytk = track.getPY();
-                double pztk = track.getPZ();
+                double pxtk = track.getTrackStates().get(0).getMomentum()[0];
+                double pytk = track.getTrackStates().get(0).getMomentum()[1];
+                double pztk = track.getTrackStates().get(0).getMomentum()[2];
                 double pttk = Math.sqrt(pxtk * pxtk + pytk * pytk);
                 double ptk = Math.sqrt(pttk * pttk + pztk * pztk);
 
@@ -815,9 +816,9 @@
                 continue;
             if (mcp.getParents().size() == 1 && mcp.getParents().get(0).getPDGID() == 622) {
                 int nhits = tkanal.getNHitsNew();
-                double px = track.getPX();
-                double py = track.getPY();
-                double pz = track.getPZ();
+                double px = track.getTrackStates().get(0).getMomentum()[0];
+                double py = track.getTrackStates().get(0).getMomentum()[1];
+                double pz = track.getTrackStates().get(0).getMomentum()[2];
                 double pt = Math.sqrt(px * px + py * py);
                 double pperp = Math.sqrt(py * py + pz * pz);
                 double p = Math.sqrt(pt * pt + pz * pz);
@@ -1327,9 +1328,9 @@
         double me = 0.000511;
         // Loop over jets
 
-        double p1x = track1.getPX();
-        double p1y = track1.getPY();
-        double p1z = track1.getPZ();
+        double p1x = track1.getTrackStates().get(0).getMomentum()[0];
+        double p1y = track1.getTrackStates().get(0).getMomentum()[1];
+        double p1z = track1.getTrackStates().get(0).getMomentum()[2];
         double p1mag2 = p1x * p1x + p1y * p1y + p1z * p1z;
         double e1 = Math.sqrt(p1mag2 + me * me);
         double dydx1 = slt1.dydx();
@@ -1341,9 +1342,9 @@
         double truep1x = truep1y / dydx1;
         double truep1z = dzdx1 * truep1x;
 
-        double p2x = track2.getPX();
-        double p2y = track2.getPY();
-        double p2z = track2.getPZ();
+        double p2x = track2.getTrackStates().get(0).getMomentum()[0];
+        double p2y = track2.getTrackStates().get(0).getMomentum()[1];
+        double p2z = track2.getTrackStates().get(0).getMomentum()[2];
         double p2mag2 = p2x * p2x + p2y * p2y + p2z * p2z;
         double e2 = Math.sqrt(p2mag2 + me * me);
 
@@ -1430,9 +1431,9 @@
     private Hep3Vector getTrueMomentum(Track track1, StraightLineTrack slt1) {
         double[] truep = {0, 0, 0};
         double me = 0.000511;
-        double p1x = track1.getPX();
-        double p1y = track1.getPY();
-        double p1z = track1.getPZ();
+        double p1x = track1.getTrackStates().get(0).getMomentum()[0];
+        double p1y = track1.getTrackStates().get(0).getMomentum()[1];
+        double p1z = track1.getTrackStates().get(0).getMomentum()[2];
         double p1mag2 = p1x * p1x + p1y * p1y + p1z * p1z;
         double e1 = Math.sqrt(p1mag2 + me * me);
         double dydx1 = slt1.dydx();

Modified: java/trunk/users/src/main/java/org/hps/users/omoreno/SvtHitEfficiency.java
 =============================================================================
--- java/trunk/users/src/main/java/org/hps/users/omoreno/SvtHitEfficiency.java	(original)
+++ java/trunk/users/src/main/java/org/hps/users/omoreno/SvtHitEfficiency.java	Thu Jan 22 16:47:00 2015
@@ -282,7 +282,7 @@
             
         	// Apply a momentum cut? Probably ...
         	// Calculate the track momentum
-        	double momentum = Math.sqrt(track.getPX()*track.getPX() + track.getPY()*track.getPY() + track.getPZ()*track.getPZ());
+        	double momentum = Math.sqrt(track.getTrackStates().get(0).getMomentum()[0]*track.getTrackStates().get(0).getMomentum()[0] + track.getTrackStates().get(0).getMomentum()[1]*track.getTrackStates().get(0).getMomentum()[1] + track.getTrackStates().get(0).getMomentum()[2]*track.getTrackStates().get(0).getMomentum()[2]);
         	if(momentum < 0.5 /* GeV */) continue;
         	if(enableMomentumPlots)
         		aida.histogram1D("Track Momentum - All Tracks").fill(momentum);

Modified: java/trunk/users/src/main/java/org/hps/users/omoreno/SvtTrackAnalysis.java
 =============================================================================
--- java/trunk/users/src/main/java/org/hps/users/omoreno/SvtTrackAnalysis.java	(original)
+++ java/trunk/users/src/main/java/org/hps/users/omoreno/SvtTrackAnalysis.java	Thu Jan 22 16:47:00 2015
@@ -286,31 +286,31 @@
     		aida.histogram1D("R").fill((1/TrackUtils.getR(track))*1000);
     		aida.histogram1D("Tan(Lambda)").fill(TrackUtils.getTanLambda(track));
     		
-    		aida.histogram1D("Px").fill(track.getPX());
-    		aida.histogram1D("Py").fill(track.getPY());
-    		aida.histogram1D("Pz").fill(track.getPZ());
+    		aida.histogram1D("Px").fill(track.getTrackStates().get(0).getMomentum()[0]);
+    		aida.histogram1D("Py").fill(track.getTrackStates().get(0).getMomentum()[1]);
+    		aida.histogram1D("Pz").fill(track.getTrackStates().get(0).getMomentum()[2]);
     		aida.histogram1D("ChiSquared").fill(track.getChi2());
     		
     		if(Math.signum(TrackUtils.getR(track)) < 0){
     			aida.histogram2D("Track Position at Ecal: Curvature < 0").fill(positionEcal.y(), positionEcal.z());
     			aida.histogram2D("Track Position at Harp: Curvature < 0").fill(positionConverter.y(), positionConverter.z());
-        		aida.histogram1D("Px: C < 0").fill(track.getPX());
-        		aida.histogram1D("Py: C < 0").fill(track.getPY());
-        		aida.histogram1D("Pz: C < 0").fill(track.getPZ());
+        		aida.histogram1D("Px: C < 0").fill(track.getTrackStates().get(0).getMomentum()[0]);
+        		aida.histogram1D("Py: C < 0").fill(track.getTrackStates().get(0).getMomentum()[1]);
+        		aida.histogram1D("Pz: C < 0").fill(track.getTrackStates().get(0).getMomentum()[2]);
         		nnegative++;
     		} else if(Math.signum(TrackUtils.getR(track)) > 0){
     			aida.histogram2D("Track Position at Ecal: Curvature > 0").fill(positionEcal.y(), positionEcal.z());
     			aida.histogram2D("Track Position at Harp: Curvature > 0").fill(positionConverter.y(), positionConverter.z());
-        		aida.histogram1D("Px: C > 0").fill(track.getPX());
-        		aida.histogram1D("Px: C > 0").fill(track.getPY());
-        		aida.histogram1D("Px: C > 0").fill(track.getPZ());
+        		aida.histogram1D("Px: C > 0").fill(track.getTrackStates().get(0).getMomentum()[0]);
+        		aida.histogram1D("Px: C > 0").fill(track.getTrackStates().get(0).getMomentum()[1]);
+        		aida.histogram1D("Px: C > 0").fill(track.getTrackStates().get(0).getMomentum()[2]);
         		npositive++;
     		}
     		
     		if(tracks.size() > 1){
     			aida.histogram2D("Track Position at Ecal: Two Tracks").fill(positionEcal.y(), positionEcal.z());
     			aida.histogram2D("Track Position at Harp: Two Tracks").fill(positionConverter.y(), positionConverter.z()); 
-    			aida.histogram1D("Px: Two Tracks").fill(track.getPX());
+    			aida.histogram1D("Px: Two Tracks").fill(track.getTrackStates().get(0).getMomentum()[0]);
     			if(tracks.size() == 2) nTwoTracks++;
     		}
     		
@@ -341,7 +341,7 @@
     	for(Map.Entry<SeedTrack, Cluster> entry : trackToCluster.entrySet()){
     		double Energy = entry.getValue().getEnergy();
     		SeedTrack track = entry.getKey();
-    		double pTotal = Math.sqrt(track.getPX()*track.getPX() + track.getPY()*track.getPY() + track.getPZ()*track.getPZ());
+    		double pTotal = Math.sqrt(track.getTrackStates().get(0).getMomentum()[0]*track.getTrackStates().get(0).getMomentum()[0] + track.getTrackStates().get(0).getMomentum()[1]*track.getTrackStates().get(0).getMomentum()[1] + track.getTrackStates().get(0).getMomentum()[2]*track.getTrackStates().get(0).getMomentum()[2]);
     		
     		double ep = Energy/(pTotal*1000);
     		

Modified: java/trunk/users/src/main/java/org/hps/users/phansson/RunMPAlignment.java
 =============================================================================
--- java/trunk/users/src/main/java/org/hps/users/phansson/RunMPAlignment.java	(original)
+++ java/trunk/users/src/main/java/org/hps/users/phansson/RunMPAlignment.java	Thu Jan 22 16:47:00 2015
@@ -159,7 +159,7 @@
             }
         }   
         if(hitsOnWrongSide) {
-            System.out.println(this.getClass().getSimpleName() + ": TRACK w/ both halves hit (: chi2 "+track.getChi2()+", pX "+track.getPX()+", pY "+track.getPY()+", pZ "+track.getPZ()+")");
+            System.out.println(this.getClass().getSimpleName() + ": TRACK w/ both halves hit (: chi2 "+track.getChi2()+", pX "+track.getTrackStates().get(0).getMomentum()[0]+", pY "+track.getTrackStates().get(0).getMomentum()[1]+", pZ "+track.getTrackStates().get(0).getMomentum()[2]+")");
             System.out.printf(this.getClass().getSimpleName() + ": Hits: ");
             for (TrackerHit hit : hitsOnTrack) {
                 double[] pos = hit.getPosition();

Modified: java/trunk/users/src/main/java/org/hps/users/phansson/SimpleResiduals.java
 =============================================================================
--- java/trunk/users/src/main/java/org/hps/users/phansson/SimpleResiduals.java	(original)
+++ java/trunk/users/src/main/java/org/hps/users/phansson/SimpleResiduals.java	Thu Jan 22 16:47:00 2015
@@ -555,10 +555,10 @@
     
     
     public void fillTrackInfo( Track track) {
-        aida.histogram1D("phi0").fill(track.getTrackParameter(HelicalTrackFit.phi0Index));    
-        aida.histogram1D("z0").fill(track.getTrackParameter(HelicalTrackFit.z0Index));
-        aida.histogram1D("slope").fill(track.getTrackParameter(HelicalTrackFit.slopeIndex));
-        double theta = Math.atan(1.0/track.getTrackParameter(HelicalTrackFit.slopeIndex));
+        aida.histogram1D("phi0").fill(track.getTrackStates().get(0).getParameter(HelicalTrackFit.phi0Index));    
+        aida.histogram1D("z0").fill(track.getTrackStates().get(0).getParameter(HelicalTrackFit.z0Index));
+        aida.histogram1D("slope").fill(track.getTrackStates().get(0).getParameter(HelicalTrackFit.slopeIndex));
+        double theta = Math.atan(1.0/track.getTrackStates().get(0).getParameter(HelicalTrackFit.slopeIndex));
         aida.histogram1D("theta").fill(theta);
     }
     

Modified: java/trunk/users/src/main/java/org/hps/users/phansson/TrackingReconstructionPlots.java
 =============================================================================
--- java/trunk/users/src/main/java/org/hps/users/phansson/TrackingReconstructionPlots.java	(original)
+++ java/trunk/users/src/main/java/org/hps/users/phansson/TrackingReconstructionPlots.java	Thu Jan 22 16:47:00 2015
@@ -692,9 +692,9 @@
 
             boolean isSingleHitPerLayerTrack = singleTrackHitPerLayer(trk);
 
-            aida.histogram1D("Track Momentum (Px)").fill(trk.getPY());
-            aida.histogram1D("Track Momentum (Py)").fill(trk.getPZ());
-            aida.histogram1D("Track Momentum (Pz)").fill(trk.getPX());
+            aida.histogram1D("Track Momentum (Px)").fill(trk.getTrackStates().get(0).getMomentum()[1]);
+            aida.histogram1D("Track Momentum (Py)").fill(trk.getTrackStates().get(0).getMomentum()[2]);
+            aida.histogram1D("Track Momentum (Pz)").fill(trk.getTrackStates().get(0).getMomentum()[0]);
             aida.histogram1D("Track Chi2").fill(trk.getChi2());
 
             aida.histogram1D("Hits per Track").fill(trk.getTrackerHits().size());
@@ -719,15 +719,15 @@
 //            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.getPX() > 1.0) {
+            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("d0 ").fill(trk.getTrackParameter(ParameterName.d0.ordinal()));
-            aida.histogram1D("sinphi ").fill(Math.sin(trk.getTrackParameter(ParameterName.phi0.ordinal())));
-            aida.histogram1D("omega ").fill(trk.getTrackParameter(ParameterName.omega.ordinal()));
-            aida.histogram1D("tan(lambda) ").fill(trk.getTrackParameter(ParameterName.tanLambda.ordinal()));
-            aida.histogram1D("z0 ").fill(trk.getTrackParameter(ParameterName.z0.ordinal()));
+            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()));
 
             int isTop = -1;
             if (trk.getTrackerHits().get(0).getPosition()[2] > 0) {
@@ -739,14 +739,14 @@
             }//            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.getPY());
-                aida.histogram1D("Top Track Momentum (Py)").fill(trk.getPZ());
-                aida.histogram1D("Top Track Momentum (Pz)").fill(trk.getPX());
+                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.getPY());
-                aida.histogram1D("Bottom Track Momentum (Py)").fill(trk.getPZ());
-                aida.histogram1D("Bottom Track Momentum (Pz)").fill(trk.getPX());
+                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();
@@ -823,7 +823,7 @@
                  double amp = fit.getAmp();
                     
                  aida.histogram1D("Amp (HitOnTrack)").fill(amp);
-                 if (trk.getPX() > 1)
+                 if (trk.getTrackStates().get(0).getMomentum()[0] > 1)
                  aida.histogram1D("Amp Pz>1000 (HitOnTrack)").fill(amp);
                  }                
                  */
@@ -836,13 +836,13 @@
                                 double amp = fit.getAmp();
                                 clusterSum += amp;
                                 aida.histogram1D("Amp (HitOnTrack)").fill(amp);
-                                if (trk.getPX() > 1) {
+                                if (trk.getTrackStates().get(0).getMomentum()[0] > 1) {
                                     aida.histogram1D("Amp Pz>1000 (HitOnTrack)").fill(amp);
                                 }
                             }
                         }
                         aida.histogram1D("Amp (CluOnTrack)").fill(clusterSum);
-                        if (trk.getPX() > 1) {
+                        if (trk.getTrackStates().get(0).getMomentum()[0] > 1) {
                             aida.histogram1D("Amp Pz>1000 (CluOnTrack)").fill(clusterSum);
                         }
                     }
@@ -858,20 +858,20 @@
 
                     posAtEcal = TrackUtils.extrapolateTrack(trk, clust.getPosition()[2]);//.positionAtEcal();
 
-                    aida.histogram2D("Energy Vs Momentum").fill(clust.getEnergy(), trk.getPX() * 1000.0);
-                    aida.histogram1D("Energy Over Momentum").fill(clust.getEnergy() / (trk.getPX() * 1000.0));
+                    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.getPX() > 1.0) {
+                    //                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.getPX() * 1000.0);
-                        //                    aida.histogram2D("Top Energy Vs Momentum").fill(posAtEcal.y(), trk.getPX() * 1000.0);
-                        aida.histogram1D("Top Energy Over Momentum").fill(clust.getEnergy() / (trk.getPX() * 1000.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());
@@ -879,8 +879,8 @@
                         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.getPX() * 1000.0);
-                        aida.histogram1D("Bottom Energy Over Momentum").fill(clust.getEnergy() / (trk.getPX() * 1000.0));
+                        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());

Modified: java/trunk/users/src/main/java/org/hps/users/phansson/TrigRateDriver.java
 =============================================================================
--- java/trunk/users/src/main/java/org/hps/users/phansson/TrigRateDriver.java	(original)
+++ java/trunk/users/src/main/java/org/hps/users/phansson/TrigRateDriver.java	Thu Jan 22 16:47:00 2015
@@ -327,7 +327,7 @@
                 trkMatchTool.setCluster(cl);
                 trkMatchTool.match(tracks);
                 if(trkMatchTool.isMatchedY(20)) {
-                    eoverp = cl.getEnergy()/(trkMatchTool.getMatchedTrack().getPX()*1000);
+                    eoverp = cl.getEnergy()/(trkMatchTool.getMatchedTrack().getTrackStates().get(0).getMomentum()[0]*1000);
                 }   
             }
             if(eoverp>0) aida.histogram1D("Eoverp " + side).fill(eoverp);