Commit in lcsim on HelixSwimmerFix
src/org/lcsim/recon/vertexing/zvtop4/ZvFitter.java+12-61.20 -> 1.20.2.1
                                    /ZvUtil.java+2-61.17 -> 1.17.2.1
                                    /ZvParameters.java+1-31.6 -> 1.6.2.1
src/org/lcsim/util/swim/HelixSwimmer.java+194-1241.18 -> 1.18.2.1
                       /JansLCIOTrackParameters.java-1401.2 removed
                       /JansHelixSwimmer.java-1371.2 removed
src/org/lcsim/event/Track.java+261-1141.9 -> 1.9.2.1
src/org/lcsim/event/base/BaseTrack.java+2-21.9 -> 1.9.2.1
test/org/lcsim/util/swim/JansLCIOParameterTest.java+16-161.1 -> 1.1.2.1
src/org/lcsim/recon/cat/util/BasicTrack.java+5-61.2 -> 1.2.2.1
src/org/lcsim/contrib/LeiXia/rpc_PFA_np_hmx_ilc090_g2.java+2-11.4 -> 1.4.2.1
                            /rpc_PFA_np.java+3-21.3 -> 1.3.2.1
src/org/lcsim/contrib/JanStrube/tracking/TrackTester.java+1-21.1 -> 1.1.2.1
+499-559
2 removed + 11 modified, total 13 files
Fixed Version of HelixSwimmer. Fixed the Parameter class in Track to something sensible for the first time ever.
All tests pass. The SpaceVector -> Hep3Vector refactoring is not yet done, but trivial. Right now SpacePoint and SpaceVector are different classes, so that the correct order of arguments can be enforced. Since both implement Hep3Vector, refactoring would remove the ability to enforce this constraint.

This code needs to be reviewed in terms of naming conventions, deprecations and type of method parameters / return values, then be merged back before the release.

lcsim/src/org/lcsim/recon/vertexing/zvtop4
ZvFitter.java 1.20 -> 1.20.2.1
diff -u -r1.20 -r1.20.2.1
--- ZvFitter.java	23 Oct 2006 19:42:27 -0000	1.20
+++ ZvFitter.java	5 Sep 2007 17:50:33 -0000	1.20.2.1
@@ -14,6 +14,12 @@
 import java.util.Set;
 
 import org.lcsim.event.Track;
+import static org.lcsim.event.Track.ParameterName.d0;
+import static org.lcsim.event.Track.ParameterName.omega;
+import static org.lcsim.event.Track.ParameterName.tanLambda;
+import static org.lcsim.event.Track.ParameterName.z0;
+import static org.lcsim.event.Track.ParameterName.phi0;
+
 import org.lcsim.geometry.Detector;
 import org.lcsim.spacegeom.CartesianPoint;
 import org.lcsim.spacegeom.SpacePoint;
@@ -25,7 +31,7 @@
  * Fitter class based on a least squares method
  * 
  * @author W.Walkowiak, 09/18/00
- * @version $Id: ZvFitter.java,v 1.20 2006/10/23 19:42:27 tonyj Exp $
+ * @version $Id: ZvFitter.java,v 1.20.2.1 2007/09/05 17:50:33 jstrube Exp $
  */
 
 /* TODO static members only
@@ -213,10 +219,10 @@
             // TODO trackParameters !
             // TODO What the heck are those deleted for ???
             // --> see later: Error Matrix
-            trackParameters[i] = new Track.Parameters(track.getTrackParameters());
-            trackParameters[i].phi0 = 0.;
-            trackParameters[i].omega = 0.;
-            trackParameters[i].s = 0.;
+            trackParameters[i] = new Track.Parameters(track.getTrackParameters(), Math.sqrt(track.getPX()*track.getPX()+track.getPY()*track.getPY()));
+            trackParameters[i].set(phi0,0.);
+            trackParameters[i].set(omega, 0.);
+            trackParameters[i].set(tanLambda, 0);
             
             // FIXME SpacePoint cast
             tDee[i] = new CartesianPoint(track.getReferencePoint());
@@ -256,7 +262,7 @@
             tA0[i][0] = trackParameters[i].get(Track.ParameterName.phi0);
             // FIXME this used to be kappa...
             tA0[i][1] = trackParameters[i].get(Track.ParameterName.omega);
-            tA0[i][2] = trackParameters[i].get(Track.ParameterName.s);
+            tA0[i][2] = trackParameters[i].get(Track.ParameterName.tanLambda);
             tA0[i][3] = dot(vDel, tKsi[i]);
             tA0[i][4] = dot(vDel, tEta[i]);
         }

lcsim/src/org/lcsim/recon/vertexing/zvtop4
ZvUtil.java 1.17 -> 1.17.2.1
diff -u -r1.17 -r1.17.2.1
--- ZvUtil.java	28 Jun 2006 01:54:49 -0000	1.17
+++ ZvUtil.java	5 Sep 2007 17:50:33 -0000	1.17.2.1
@@ -26,7 +26,7 @@
 /**
  * Repository of utility functions
  * @author jstrube
- * @version $Id: ZvUtil.java,v 1.17 2006/06/28 01:54:49 jstrube Exp $
+ * @version $Id: ZvUtil.java,v 1.17.2.1 2007/09/05 17:50:33 jstrube Exp $
  */
 final class ZvUtil {
 
@@ -148,7 +148,7 @@
      */
     public static Hep3Vector getUnitTangent(double[] hlxPar)
     {
-        int tanLambda = Track.ParameterName.s.ordinal();
+        int tanLambda = Track.ParameterName.tanLambda.ordinal();
         int phi = Track.ParameterName.phi0.ordinal();
         double norm = Math.sqrt(1.+hlxPar[tanLambda]*hlxPar[tanLambda]);
         double x = Math.cos(hlxPar[phi])/norm;
@@ -157,8 +157,4 @@
         return new BasicHep3Vector(x, y, z);
     }
     
-    public static Track.Parameters convert2TrackParameters (ZvParameters params) {
-        Track.Parameters result = new Track.Parameters();
-        return result;
-    }
 }

lcsim/src/org/lcsim/recon/vertexing/zvtop4
ZvParameters.java 1.6 -> 1.6.2.1
diff -u -r1.6 -r1.6.2.1
--- ZvParameters.java	31 Jan 2006 23:34:34 -0000	1.6
+++ ZvParameters.java	5 Sep 2007 17:50:34 -0000	1.6.2.1
@@ -1,11 +1,9 @@
 package org.lcsim.recon.vertexing.zvtop4;
 
-import org.lcsim.event.Track.Parameters;
-
 /**
  * Parameters names differ slightly from TrackParameters
  * @author jstrube
- * @version $Id: ZvParameters.java,v 1.6 2006/01/31 23:34:34 jstrube Exp $
+ * @version $Id: ZvParameters.java,v 1.6.2.1 2007/09/05 17:50:34 jstrube Exp $
  */
 class ZvParameters {
     public double phi;

lcsim/src/org/lcsim/util/swim
HelixSwimmer.java 1.18 -> 1.18.2.1
diff -u -r1.18 -r1.18.2.1
--- HelixSwimmer.java	31 Jul 2006 18:37:50 -0000	1.18
+++ HelixSwimmer.java	5 Sep 2007 17:50:35 -0000	1.18.2.1
@@ -1,137 +1,207 @@
 package org.lcsim.util.swim;
 
-import hep.physics.vec.BasicHep3Vector;
 import hep.physics.vec.Hep3Vector;
-import org.lcsim.constants.Constants;
+
 import org.lcsim.event.Track;
+import org.lcsim.event.Track.Parameters;
+import org.lcsim.recon.vertexing.zvtop4.VectorArithmetic;
+import org.lcsim.spacegeom.CartesianPoint;
+import org.lcsim.spacegeom.CartesianVector;
 import org.lcsim.spacegeom.SpacePoint;
+import org.lcsim.spacegeom.SpaceVector;
 
-import static java.lang.Math.abs;
-import static java.lang.Math.signum;
+import static java.lang.Math.atan;
+import static java.lang.Math.sin;
+import static java.lang.Math.cos;
+import static java.lang.Math.sqrt;
+import static org.lcsim.constants.Constants.fieldConversion;
+import static org.lcsim.event.Track.ParameterName.d0;
+import static org.lcsim.event.Track.ParameterName.phi0;
+import static org.lcsim.event.Track.ParameterName.omega;
+import static org.lcsim.event.Track.ParameterName.z0;
+import static org.lcsim.event.Track.ParameterName.tanLambda;
 
 /**
- * A simple helix smimmer for use in org.lcsim. Uses standard lcsim units
- * Tesla, mm, GeV. This swimmer works for charged and neutral tracks.
- * <p> 
+ * A simple helix swimmer for use in org.lcsim. Uses standard lcsim units Tesla,
+ * mm, GeV. This swimmer works for charged and neutral tracks.
+ * <p>
  * For more info on swimming see <a href="doc-files/transport.pdf">this paper</a>
  * by Paul Avery.
- * @author tonyj
- * @version $Id: HelixSwimmer.java,v 1.18 2006/07/31 18:37:50 sinev Exp $
+ * 
+ * @author jstrube
+ * @version $Id: HelixSwimmer.java,v 1.18.2.1 2007/09/05 17:50:35 jstrube Exp $
  */
-public class HelixSwimmer
-{
-   public class SpatialParameters
-   {
-	   public double px;
-	   public double py;
-	   public double pz;
-	   public int charge;
-	   public boolean isInvalid = true;
-  }
-   private double field;
-   private Trajectory trajectory;
-   private SpatialParameters spatialParms;
-   private Track track;
-   /** Creates a new instance of HelixSwimmer
-    * @param B field strength in Tesla; uniform, solenoidal, directed along z-axis
-    */
-   public HelixSwimmer(double B)
-   {
-      field = B*Constants.fieldConversion;
-      spatialParms = new SpatialParameters();
-   }
-   /**
-    * Sets parameters for helix swimmmer.
-    *
-    * @param p 3-momentum (px,py,pz)
-    * @param r0 initial position(x0,y0,z0)
-    * @param iq charge iq = q/|e| = +1/0/-1
-    */
-   public void setTrack(Hep3Vector p, Hep3Vector r0, int iq)
-   {
-      double temp = p.x()*p.x()+p.y()*p.y();
-      double pmom = Math.sqrt(temp + p.z()*p.z());
-      double sin_lambda = p.z()/pmom;
-      double phi = Math.atan2(p.y(),p.x());
-      double lambda = Math.asin(sin_lambda);
-      
-      if (iq != 0 && field != 0)
-      {
-         double pt = Math.sqrt(temp);
-         double radius = pt/(iq*field);
-         trajectory = new Helix(r0,radius,phi,lambda);
-      }
-      else
-      {
-         trajectory = new Line(r0, phi, lambda);
-      }
-      spatialParms.isInvalid = true;
-   }
-   
-   public void setTrack(Track t)
-   {
-      double omega = t.getTrackParameter(2);
-      double z0 = t.getTrackParameter(3);
-      double phi0 = t.getTrackParameter(1);
-      double lambda = Math.atan(t.getTrackParameter(4));
-      double d0 = t.getTrackParameter(0);
-      double[] ref = t.getReferencePoint();
-      // origin of the circle that is the x-y projection of the helix
-      Hep3Vector origin = new BasicHep3Vector( ref[0] -d0 * Math.sin(phi0), ref[1] + d0 * Math.cos(phi0), ref[2] + z0);
-      trajectory = new Helix(origin,1/omega,phi0,lambda);
-      spatialParms.isInvalid = true;
-      track=t;
-   }
-   public SpacePoint getPointAtDistance(double alpha)
-   {
-      if (trajectory == null) throw new RuntimeException("Trajectory not set");
-      return trajectory.getPointAtDistance(alpha);
-   }
-   public double getDistanceToRadius(double r)
-   {
-      if (trajectory == null) throw new RuntimeException("Trajectory not set");
-      return trajectory.getDistanceToInfiniteCylinder(r);
-   }
-   public double getDistanceToZ(double z)
-   {
-      if (trajectory == null) throw new RuntimeException("Trajectory not set");
-      double result = trajectory.getDistanceToZPlane(z);
-      if (result<0) result = trajectory.getDistanceToZPlane(-z);
-      return result;
-   }
-   public double getDistanceToCylinder(double r,double z)
-   {
-      double x1 = getDistanceToRadius(r);
-      double x2 = getDistanceToZ(z);
-      return Double.isNaN(x1) ? x2 : Math.min(x1,x2);
-   }
-   
-   /**
-    * Returns the distance along the trajectory to get to the point of closest approach 
-    * @param point The point to swim as close as possible to
-    * @return the length parameter by how much the trajectory has to be swum
-    */
-   public double getDistanceToPoint(Hep3Vector point) {
-       return trajectory.getDistanceToPoint(point);
-   }
-   
-   /**
-    * Calculates px, py, pz, iq from the Track Parameters and the B field.
-    * @return a Parameter object with the new parameters
-    */
-   // This unfortunately has to go here, because the Track parameters can't be used to get the momentum.
-   // The B field is needed in addition.
-   public SpatialParameters getSpatialParameters() {
-	   if (spatialParms.isInvalid) {
-		   double omega = track.getTrackParameter(2);
-	       double Pt = abs((1./omega) * field);
-	       spatialParms.px = Pt * Math.cos(track.getTrackParameter(1));
-	       spatialParms.py = Pt * Math.sin(track.getTrackParameter(1));
-	       spatialParms.pz = Pt * track.getTrackParameter(4);
-	       spatialParms.charge = (int) signum(omega);
-	   }
-	   return spatialParms;	   
-   }
+public class HelixSwimmer {
+    private double field;
+    private Trajectory _trajectory;
+    private SpaceVector _momentum;
+    private double _charge;
+
+    /**
+     * Creates a new instance of HelixSwimmer
+     * 
+     * @param B
+     *                field strength in Tesla; uniform, solenoidal, directed
+     *                along z-axis
+     */
+    public HelixSwimmer(double B) {
+        field = B * fieldConversion;
+    }
+
+    /**
+     * Sets parameters for helix swimmmer.
+     * 
+     * @param p
+     *                3-momentum (px,py,pz)
+     * @param r0
+     *                initial position(x0,y0,z0)
+     * @param iq
+     *                charge iq = q/|e| = +1/0/-1
+     */
+    public void setTrack(SpaceVector p, SpacePoint r0, int iq) {
+        double phi = Math.atan2(p.y(), p.x());
+        double lambda = Math.atan2(p.z(), p.rxy());
+
+        if (iq != 0 && field != 0) {
+            double radius = p.rxy() / (iq * field);
+            _trajectory = new Helix(r0, radius, phi, lambda);
+        } else {
+            _trajectory = new Line(r0, phi, lambda);
+        }
+        _momentum = p;
+        _charge = iq;
+    }
+
+    /**
+     * Sets parameters for helix swimmmer.
+     * 
+     * @param p
+     *                3-momentum (px,py,pz)
+     * @param r0
+     *                initial position(x0,y0,z0)
+     * @param iq
+     *                charge iq = q/|e| = +1/0/-1
+     * @deprecated in favor of
+     *             {@link setTrack(SpaceVector p, SpacePoint r0, int iq)}
+     *             because this method has an ambiguous signature
+     */
+    @Deprecated
+    public void setTrack(Hep3Vector p, Hep3Vector r0, int iq) {
+        double pt = sqrt(p.x() * p.x() + p.y() * p.y());
+        double phi = Math.atan2(p.y(), p.x());
+        double lambda = Math.atan2(p.z(), pt);
+
+        if (iq != 0 && field != 0) {
+            double radius = pt / (iq * field);
+            _trajectory = new Helix(r0, radius, phi, lambda);
+        } else {
+            _trajectory = new Line(r0, phi, lambda);
+        }
+        _momentum = new CartesianVector(p.v());
+        _charge = iq;
+    }
+
+    /**
+     * Sets the parameters for the helix swimmer. Uses the LCIOParameters class
+     * for conversion between track parameters and space and momentum
+     * representation
+     * 
+     * @param t
+     *                The track to approximate with a helix
+     */
+    public void setTrack(Track t) {
+        double pt = sqrt(t.getPX() * t.getPX() + t.getPY() * t.getPY());
+        Parameters parameters = new Parameters(t.getTrackParameters(), pt);
+
+        SpacePoint ref = new CartesianPoint(t.getReferencePoint());
+        SpacePoint origin = Parameters.Parameters2Position(parameters, ref);
+        _trajectory = new Helix(origin, 1 / parameters.get(omega), parameters
+                .get(phi0), atan(parameters.get(tanLambda)));
+        _momentum = Parameters.Parameters2Momentum(parameters);
+    }
+
+    /**
+     * 
+     * @param alpha
+     * @return a {@link SpacePoint} at the length alpha from the origin along
+     *         the track
+     * @deprecated in favor of {@link getPointAtLength}
+     */
+    @Deprecated
+    public SpacePoint getPointAtDistance(double alpha) {
+        return getPointAtLength(alpha);
+    }
+
+    /**
+     * Returns a SpacePoint at the length alpha from the origin along the track
+     * 
+     * @param alpha
+     * @return a {@link SpacePoint} at the length alpha from the origin along
+     *         the track
+     */
+    public SpacePoint getPointAtLength(double alpha) {
+        if (_trajectory == null) {
+            throw new RuntimeException("Trajectory not set");
+        }
+        return _trajectory.getPointAtDistance(alpha);
+    }
+
+    public double getDistanceToRadius(double r) {
+        if (_trajectory == null) {
+            throw new RuntimeException("Trajectory not set");
+        }
+        return _trajectory.getDistanceToInfiniteCylinder(r);
+    }
+
+    public double getDistanceToZ(double z) {
+        if (_trajectory == null) {
+            throw new RuntimeException("Trajectory not set");
+        }
+        double result = _trajectory.getDistanceToZPlane(z);
+        if (result < 0) {
+            result = _trajectory.getDistanceToZPlane(-z);
+        }
+        return result;
+    }
+
+    public double getDistanceToCylinder(double r, double z) {
+        double x1 = getDistanceToRadius(r);
+        double x2 = getDistanceToZ(z);
+        return Double.isNaN(x1) ? x2 : Math.min(x1, x2);
+    }
+
+    /**
+     * Returns the distance along the trajectory to get to the point of closest
+     * approach
+     * 
+     * @param point
+     *                The point to swim as close as possible to
+     * @return the length parameter by how much the trajectory has to be swum
+     */
+    public double getTrackLengthToPoint(Hep3Vector point) {
+        return _trajectory.getDistanceToPoint(point);
+    }
+
+    public double getDistanceToPoint(Hep3Vector point) {
+        return getTrackLengthToPoint(point);
+    }
+    /**
+     * Returns the momentum on a point on the track at a distance from the
+     * origin
+     * 
+     * @param alpha
+     *                The 2D distance from the origin along the track
+     * @return The components of the momentum in a SpacePoint
+     */
+    public SpaceVector getMomentumAtLength(double alpha) {
+        // the trajectory can only return the unit direction of the momentum
+        SpaceVector unitDirection = _trajectory.getUnitTangentAtLength(alpha);
+        double magnitude = _momentum.rxy();
+        // System.out.println("HelixSwimmer: momentum.magnitude= "+magnitude);
+        return VectorArithmetic.multiply(unitDirection, magnitude);
+    }
 
-   public Trajectory getTrajectory() { return trajectory; } 
+    public Trajectory getTrajectory() {
+        return _trajectory;
+    }
 }

lcsim/src/org/lcsim/util/swim
JansLCIOTrackParameters.java removed after 1.2
diff -N JansLCIOTrackParameters.java
--- JansLCIOTrackParameters.java	26 Aug 2007 08:24:42 -0000	1.2
+++ /dev/null	1 Jan 1970 00:00:00 -0000
@@ -1,140 +0,0 @@
-/**
- * @version $Id: JansLCIOTrackParameters.java,v 1.2 2007/08/26 08:24:42 jstrube Exp $
- */
-package org.lcsim.util.swim;
-
-import static java.lang.Math.atan2;
-import static java.lang.Math.cos;
-import static java.lang.Math.sin;
-import static java.lang.Math.sqrt;
-import static org.lcsim.constants.Constants.fieldConversion;
-
-import org.lcsim.spacegeom.CartesianPoint;
-import org.lcsim.spacegeom.CartesianVector;
-import org.lcsim.spacegeom.SpacePoint;
-import org.lcsim.spacegeom.SpaceVector;
-
-import static org.lcsim.util.swim.JansLCIOTrackParameters.ParameterName.d0;
-import static org.lcsim.util.swim.JansLCIOTrackParameters.ParameterName.phi0;
-import static org.lcsim.util.swim.JansLCIOTrackParameters.ParameterName.omega;
-import static org.lcsim.util.swim.JansLCIOTrackParameters.ParameterName.z0;
-import static org.lcsim.util.swim.JansLCIOTrackParameters.ParameterName.tanLambda;
-
-
-public class JansLCIOTrackParameters {
-	
-    public enum ParameterName {
-        d0, phi0, omega, z0, tanLambda
-    }
-
-    /**
-	 * Computes the momentum vector from a given parameter set
-	 * @param parameters The Parameter object 
-	 * @return The momentum vector corresponding to the given parameters
-	 */
-    public static SpaceVector Parameters2Momentum(JansLCIOTrackParameters parameters) {
-	    double pt = parameters.pt;
-	    
-	    return new CartesianVector(
-	                pt * cos(parameters.get(phi0))
-	                , pt * sin(parameters.get(phi0))
-	                , pt * parameters.get(tanLambda)
-	            );
-	}
-    /**
-     * Computes the point of closest approach on the track to the given reference point.
-     * Note that this function does not do any swimming. It merely returns a different representation of the given parameters.
-     * This is meaningless without the reference point however.
-     * In order to prevent the user from having to know the implementation details, the reference point is made an explicit parameter.  
-     * @param parameters The Parameter object
-     * @param refPoint The reference point
-     * @return The point of closest approach on the track to the reference point
-     */
-	public static SpacePoint Parameters2Position(JansLCIOTrackParameters parameters, SpacePoint refPoint) {
-	    double d_0 = parameters.get(d0);
-	    double z_0 = parameters.get(z0);
-	    double phi_0 = parameters.get(phi0);
-	    
-	    double x = refPoint.x() - d_0*sin(phi_0);
-	    double y = refPoint.y() + d_0*cos(phi_0);
-	    double z = refPoint.z() + z_0;
-	    
-	    return new CartesianPoint(x, y, z);
-	}
-    /**
-	 * Calculates the parameters of the Track under the assumption that the
-	 * space-momentum representation is given at the POCA to the reference point. 
-	 * @param pos The point of closest approach on the track to the reference point
-     * @param mom The momentum vector at @see pos
-     * @param ref The reference point
-     * @param charge The charge of the particle
-     * @param Bz The z component of the magnetic field. Assuming a homogeneous field parallel to z
-	 * @return The Parameter object corresponding to the arguments
-	 */
-	public static JansLCIOTrackParameters SpaceMomentum2Parameters(SpacePoint pos, SpaceVector mom, SpacePoint ref, int charge, double field_z) {
-	    JansLCIOTrackParameters result = new JansLCIOTrackParameters();
-	    double aqBz = charge*field_z*fieldConversion;
-	    double x = pos.x() - ref.x();
-	    double y = pos.y() - ref.y();
-	    double z_0 = pos.z() - ref.z();
-	    double phi_0 = mom.phi();
-	    double pt = mom.rxy();
-	     
-	    result.set(d0, -x*sin(phi_0)+ y*cos(phi_0));
-	    result.set(phi0, phi_0);
-	    result.set(omega, aqBz/pt);
-	    result.set(z0, z_0);
-	    result.set(tanLambda, mom.z()/pt);
-	    result.setPt(pt);
-	    return result;
-	}
-	
-    double[] values;
-    double pt;
-    
-    public JansLCIOTrackParameters(JansLCIOTrackParameters parameters) {
-    	values = parameters.values.clone();
-    	pt = parameters.pt;
-    }
-    
-    JansLCIOTrackParameters() {
-        values = new double[5];
-        pt = 0;
-    }
-    
-    public JansLCIOTrackParameters(double[] vals, double p_t) {
-        values = vals;
-        pt = p_t;
-    }
-    
-    double get(ParameterName name) {
-        return values[name.ordinal()];
-    }
-    
-    public double getPt() {
-        return pt;
-    }
-        
-	public double[] getValues() {
-        return values;
-    }
-        
-    void set(ParameterName name, double val) {
-        values[name.ordinal()] = val;
-    }
-	
-	
-	void setPt(double p_t) {
-        pt = p_t;
-    }
-	
-	public String toString() {
-		StringBuilder sb = new StringBuilder();
-		sb.append(String.format("Parameters:\n"));
-		for (ParameterName p : ParameterName.values()) {
-			sb.append(String.format("%10s: %g\n", p.name(), values[p.ordinal()]));
-		}
-		sb.append(String.format("%10s: %g\n", "pt", pt));
-		return sb.toString(); 
-	}
-}

lcsim/src/org/lcsim/util/swim
JansHelixSwimmer.java removed after 1.2
diff -N JansHelixSwimmer.java
--- JansHelixSwimmer.java	26 Aug 2007 08:24:42 -0000	1.2
+++ /dev/null	1 Jan 1970 00:00:00 -0000
@@ -1,137 +0,0 @@
-package org.lcsim.util.swim;
-
-import org.lcsim.event.Track;
-import org.lcsim.recon.vertexing.zvtop4.VectorArithmetic;
-import org.lcsim.spacegeom.CartesianPoint;
-import org.lcsim.spacegeom.CartesianVector;
-import org.lcsim.spacegeom.SpacePoint;
-import org.lcsim.spacegeom.SpaceVector;
-
-import static java.lang.Math.atan;
-import static java.lang.Math.sin;
-import static java.lang.Math.cos;
-import static java.lang.Math.sqrt;
-import static org.lcsim.constants.Constants.fieldConversion;
-import static org.lcsim.util.swim.JansLCIOTrackParameters.ParameterName.d0;
-import static org.lcsim.util.swim.JansLCIOTrackParameters.ParameterName.phi0;
-import static org.lcsim.util.swim.JansLCIOTrackParameters.ParameterName.omega;
-import static org.lcsim.util.swim.JansLCIOTrackParameters.ParameterName.z0;
-import static org.lcsim.util.swim.JansLCIOTrackParameters.ParameterName.tanLambda;
-
-/**
- * A simple helix swimmer for use in org.lcsim. Uses standard lcsim units Tesla, mm, GeV. This swimmer works for charged
- * and neutral tracks.
- * <p>
- * For more info on swimming see <a href="doc-files/transport.pdf">this paper</a> by Paul Avery.
- * 
- * @author jstrube
- * @version $Id: JansHelixSwimmer.java,v 1.2 2007/08/26 08:24:42 jstrube Exp $
- */
-public class JansHelixSwimmer {
-    private double field;
-    private Trajectory _trajectory;
-    private SpaceVector _momentum;
-    private double _charge;
-
-    /**
-     * Creates a new instance of HelixSwimmer
-     * 
-     * @param B field strength in Tesla; uniform, solenoidal, directed along z-axis
-     */
-    public JansHelixSwimmer(double B) {
-        field = B * fieldConversion;
-    }
-
-    /**
-     * Sets parameters for helix swimmmer.
-     * 
-     * @param p 3-momentum (px,py,pz)
-     * @param r0 initial position(x0,y0,z0)
-     * @param iq charge iq = q/|e| = +1/0/-1
-     */
-    public void setTrack(SpaceVector p, SpacePoint r0, int iq) {
-        double phi = Math.atan2(p.y(), p.x());
-        double lambda = Math.atan2(p.z(), p.rxy());
-
-        if (iq != 0 && field != 0) {
-            double radius = p.rxy() / (iq * field);
-            _trajectory = new Helix(r0, radius, phi, lambda);
-        } else {
-            _trajectory = new Line(r0, phi, lambda);
-        }
-        _momentum = p;
-        _charge = iq;
-    }
-
-    
-    public void setTrack(Track t) {
-      double pt = sqrt(t.getPX()*t.getPX() + t.getPY()*t.getPY());
-      JansLCIOTrackParameters parameters = new JansLCIOTrackParameters(t.getTrackParameters(), pt);
-
-      SpacePoint ref = new CartesianPoint(t.getReferencePoint());
-      SpacePoint origin = JansLCIOTrackParameters.Parameters2Position(parameters, ref);
-      _trajectory = new Helix(origin, 1/parameters.get(omega), parameters.get(phi0), atan(parameters.get(tanLambda)));
-      _momentum = JansLCIOTrackParameters.Parameters2Momentum(parameters);
-    }
-    
-
-    public SpacePoint getPointAtLength(double alpha) {
-        if (_trajectory == null) {
-            throw new RuntimeException("Trajectory not set");
-        }
-        return _trajectory.getPointAtDistance(alpha);
-    }
-
-    public double getDistanceToRadius(double r) {
-        if (_trajectory == null) {
-            throw new RuntimeException("Trajectory not set");
-        }
-        return _trajectory.getDistanceToInfiniteCylinder(r);
-    }
-
-    public double getDistanceToZ(double z) {
-        if (_trajectory == null) {
-            throw new RuntimeException("Trajectory not set");
-        }
-        double result = _trajectory.getDistanceToZPlane(z);
-        if (result < 0) {
-            result = _trajectory.getDistanceToZPlane( -z);
-        }
-        return result;
-    }
-
-    public double getDistanceToCylinder(double r, double z) {
-        double x1 = getDistanceToRadius(r);
-        double x2 = getDistanceToZ(z);
-        return Double.isNaN(x1) ? x2 : Math.min(x1, x2);
-    }
-
-    /**
-     * Returns the distance along the trajectory to get to the point of closest approach
-     * 
-     * @param point The point to swim as close as possible to
-     * @return the length parameter by how much the trajectory has to be swum
-     */
-    public double getTrackLengthToPoint(SpacePoint point) {
-        return _trajectory.getDistanceToPoint(point);
-    }
-
-
-    /**
-     * Returns the momentum on a point on the track at a distance from the origin
-     * 
-     * @param alpha The 2D distance from the origin along the track
-     * @return The components of the momentum in a SpacePoint
-     */
-    public SpaceVector getMomentumAtLength(double alpha) {
-        // the trajectory can only return the unit direction of the momentum
-        SpaceVector unitDirection = _trajectory.getUnitTangentAtLength(alpha);
-        double magnitude = _momentum.rxy();
-        // System.out.println("HelixSwimmer: momentum.magnitude= "+magnitude);
-        return VectorArithmetic.multiply(unitDirection, magnitude);
-    }
-
-    public Trajectory getTrajectory() {
-        return _trajectory;
-    }
-}

lcsim/src/org/lcsim/event
Track.java 1.9 -> 1.9.2.1
diff -u -r1.9 -r1.9.2.1
--- Track.java	16 Aug 2007 23:22:00 -0000	1.9
+++ Track.java	5 Sep 2007 17:50:35 -0000	1.9.2.1
@@ -1,132 +1,279 @@
 package org.lcsim.event;
 
+import static java.lang.Math.cos;
+import static java.lang.Math.sin;
+import static org.lcsim.constants.Constants.fieldConversion;
+import static org.lcsim.event.Track.ParameterName.d0;
+import static org.lcsim.event.Track.ParameterName.omega;
+import static org.lcsim.event.Track.ParameterName.phi0;
+import static org.lcsim.event.Track.ParameterName.tanLambda;
+import static org.lcsim.event.Track.ParameterName.z0;
 import hep.physics.matrix.SymmetricMatrix;
 
 import java.util.List;
 
+import org.lcsim.spacegeom.CartesianPoint;
+import org.lcsim.spacegeom.CartesianVector;
+import org.lcsim.spacegeom.SpacePoint;
+import org.lcsim.spacegeom.SpaceVector;
+
 /**
  * Represents a found (reconstructed) track
+ * 
  * @author tonyj
- * @version $Id: Track.java,v 1.9 2007/08/16 23:22:00 jeremy Exp $
+ * @version $Id: Track.java,v 1.9.2.1 2007/09/05 17:50:35 jstrube Exp $
  */
 
-public interface Track
-{
-    enum ParameterName {
-        d0, phi0, omega, z0, s
+public interface Track {
+    public enum ParameterName {
+        d0, phi0, omega, z0, tanLambda
     }
-    class Parameters {
-        public double d0;
-        public double phi0;
-        public double omega;
-        public double z0;
-        public double s;
-        public Parameters() {
-            d0 = phi0 = omega = z0 = s = 0;
-        }
-        
-        public Parameters(double[] p) {
-            d0 = p[0];
-            phi0 = p[1];
-            omega = p[2];
-            z0 = p[3];
-            s = p[4];
-        }
-        
-        // the logical way to do this is EnumMap
-        // but that needs Double
+
+
+    public class Parameters {
+        /**
+         * Computes the momentum vector from a given parameter set
+         * 
+         * @param parameters
+         *                The Parameter object
+         * @return The momentum vector corresponding to the given parameters
+         */
+        public static SpaceVector Parameters2Momentum(Parameters parameters) {
+            double pt = parameters.pt;
+
+            return new CartesianVector(pt * cos(parameters.get(phi0)), pt
+                    * sin(parameters.get(phi0)), pt * parameters.get(tanLambda));
+        }
+
+        /**
+         * Computes the point of closest approach on the track to the given
+         * reference point. Note that this function does not do any swimming. It
+         * merely returns a different representation of the given parameters.
+         * This is meaningless without the reference point however. In order to
+         * prevent the user from having to know the implementation details, the
+         * reference point is made an explicit parameter.
+         * 
+         * @param parameters
+         *                The Parameter object
+         * @param refPoint
+         *                The reference point
+         * @return The point of closest approach on the track to the reference
+         *         point
+         */
+        public static SpacePoint Parameters2Position(Parameters parameters,
+                SpacePoint refPoint) {
+            double d_0 = parameters.get(d0);
+            double z_0 = parameters.get(z0);
+            double phi_0 = parameters.get(phi0);
+
+            double x = refPoint.x() - d_0 * sin(phi_0);
+            double y = refPoint.y() + d_0 * cos(phi_0);
+            double z = refPoint.z() + z_0;
+
+            return new CartesianPoint(x, y, z);
+        }
+
+        /**
+         * Calculates the parameters of the Track under the assumption that the
+         * space-momentum representation is given at the POCA to the reference
+         * point.
+         * 
+         * @param pos
+         *                The point of closest approach on the track to the
+         *                reference point
+         * @param mom
+         *                The momentum vector at
+         * @see pos
+         * @param ref
+         *                The reference point
+         * @param charge
+         *                The charge of the particle
+         * @param Bz
+         *                The z component of the magnetic field. Assuming a
+         *                homogeneous field parallel to z
+         * @return The Parameter object corresponding to the arguments
+         */
+        public static Parameters SpaceMomentum2Parameters(SpacePoint pos,
+                SpaceVector mom, SpacePoint ref, int charge, double field_z) {
+            Parameters result = new Parameters();
+            double aqBz = charge * field_z * fieldConversion;
+            double x = pos.x() - ref.x();
+            double y = pos.y() - ref.y();
+            double z_0 = pos.z() - ref.z();
+            double phi_0 = mom.phi();
+            double pt = mom.rxy();
+
+            result.set(d0, -x * sin(phi_0) + y * cos(phi_0));
+            result.set(phi0, phi_0);
+            result.set(omega, aqBz / pt);
+            result.set(z0, z_0);
+            result.set(tanLambda, mom.z() / pt);
+            result.setPt(pt);
+            return result;
+        }
+
+        double[] values;
+        double pt;
+
+        public Parameters(Parameters parameters) {
+            values = parameters.values.clone();
+            pt = parameters.pt;
+        }
+
+        Parameters() {
+            values = new double[5];
+            pt = 0;
+        }
+
+        public Parameters(double[] vals, double p_t) {
+            values = vals;
+            pt = p_t;
+        }
+
         public double get(ParameterName name) {
-            switch (name) {
-            case d0: return d0;
-            case phi0: return phi0;
-            case omega: return omega;
-            case z0: return z0;
-            case s: return s;
-            }
-            return 0;
+            return values[name.ordinal()];
+        }
+
+        public double getPt() {
+            return pt;
+        }
+
+        public double[] getValues() {
+            return values;
+        }
+
+        public void set(ParameterName name, double val) {
+            values[name.ordinal()] = val;
+        }
+
+        void setPt(double p_t) {
+            pt = p_t;
         }
-        
-        @Deprecated public double get(int i) {
-            switch (i) {
-            case 0: return d0;
-            case 1: return phi0;
-            case 2: return omega;
-            case 3: return z0;
-            case 4: return s;
+
+        public String toString() {
+            StringBuilder sb = new StringBuilder();
+            sb.append(String.format("Parameters:\n"));
+            for (ParameterName p : ParameterName.values()) {
+                sb.append(String.format("%10s: %g\n", p.name(), values[p
+                        .ordinal()]));
             }
-            return 0;
+            sb.append(String.format("%10s: %g\n", "pt", pt));
+            return sb.toString();
         }
     }
-    
-   int getCharge();
-   double[] getReferencePoint();
-   double getReferencePointX();
-   double getReferencePointY();
-   double getReferencePointZ();
-   boolean isReferencePointPCA();
-   double[] getMomentum();
-   //Hep3Vector momentum();
-   //SpacePoint referencePoint();
-   double getPX();
-   double getPY();
-   double getPZ();
-   //MCParticle getMCParticle();
-   
-   /**
-    * Returns true if the track has been successfully fitted
-    */
-   
-   boolean fitSuccess();
-   
-   /**
-    * Get an individual track parameter
-    *
-    * The track parameters for LCD are defined as follows
-    * <table>
-    * <tr><th>Index</th><th>Meaning</th></tr>
-    * <tr><td> 0 </td><td> d0 = XY impact parameter </td><tr>
-    * <tr><td> 1 </td><td> phi0 </td><tr> </td><tr>
-    * <tr><td> 2 </td><td> omega = 1/curv.radius (negative for negative tracks) </td><tr>
-    * <tr><td> 3 </td><td> z0 = z of track origin (z impact parameter) </td><tr>
-    * <tr><td> 4 </td><td> s = tan lambda </td><tr>
-    * </table> 
-    * Parameters according to <a href="../util/swim/doc-files/L3_helix.pdf">the L3 conventions</a><br />
-    * @param i The index of the track parameter
-    * @return The track parameter with the specified index
-    */
-   double getTrackParameter(int i);
-   /**
-    * Get the track parameters as an array
-    * @see #getTrackParameter
-    */
-   double[] getTrackParameters();
-   /**
-    * Get the error matrix
-    * @see #getTrackParameter
-    */
-   SymmetricMatrix getErrorMatrix();
-   /**
-    * Get the Chi Squared for the track fit
-    * @see #getNDF
-    * @return Chi Squared
-    */
-   double getChi2();
-   /**
-    * Get the numbers of degrees of freedom for the fit
-    * @see #getChi2
-    * @return The number of degrees of freedom
-    */
-   int getNDF();
-   
-   double getdEdx();
-   double getdEdxError();
-   double getRadiusOfInnermostHit();
-   int[] getSubdetectorHitNumbers();
-   List<Track> getTracks();
-   List<TrackerHit> getTrackerHits();
-   int getType();
-   
-   //double parameter(ParameterName n);
-   // similar name is not a problem, because of different signature
-   //Parameters parameters();
+
+    int getCharge();
+
+    double[] getReferencePoint();
+
+    double getReferencePointX();
+
+    double getReferencePointY();
+
+    double getReferencePointZ();
+
+    boolean isReferencePointPCA();
+
+    double[] getMomentum();
+
+    // Hep3Vector momentum();
+    // SpacePoint referencePoint();
+    double getPX();
+
+    double getPY();
+
+    double getPZ();
+
+    // MCParticle getMCParticle();
+
+    /**
+     * Returns true if the track has been successfully fitted
+     */
+
+    boolean fitSuccess();
+
+    /**
+     * Get an individual track parameter
+     * 
+     * The track parameters for LCD are defined as follows <table>
+     * <tr>
+     * <th>Index</th>
+     * <th>Meaning</th>
+     * </tr>
+     * <tr>
+     * <td> 0 </td>
+     * <td> d0 = XY impact parameter </td>
+     * <tr>
+     * <tr>
+     * <td> 1 </td>
+     * <td> phi0 </td>
+     * <tr> </td>
+     * <tr>
+     * <tr>
+     * <td> 2 </td>
+     * <td> omega = 1/curv.radius (negative for negative tracks) </td>
+     * <tr>
+     * <tr>
+     * <td> 3 </td>
+     * <td> z0 = z of track origin (z impact parameter) </td>
+     * <tr>
+     * <tr>
+     * <td> 4 </td>
+     * <td> s = tan lambda </td>
+     * <tr> </table> Parameters according to <a
+     * href="../util/swim/doc-files/L3_helix.pdf">the L3 conventions</a><br />
+     * 
+     * @param i
+     *                The index of the track parameter
+     * @return The track parameter with the specified index
+     */
+    double getTrackParameter(int i);
+
+    /**
+     * Get the track parameters as an array
+     * 
+     * @see #getTrackParameter
+     */
+    double[] getTrackParameters();
+
+    /**
+     * Get the error matrix
+     * 
+     * @see #getTrackParameter
+     */
+    SymmetricMatrix getErrorMatrix();
+
+    /**
+     * Get the Chi Squared for the track fit
+     * 
+     * @see #getNDF
+     * @return Chi Squared
+     */
+    double getChi2();
+
+    /**
+     * Get the numbers of degrees of freedom for the fit
+     * 
+     * @see #getChi2
+     * @return The number of degrees of freedom
+     */
+    int getNDF();
+
+    double getdEdx();
+
+    double getdEdxError();
+
+    double getRadiusOfInnermostHit();
+
+    int[] getSubdetectorHitNumbers();
+
+    List<Track> getTracks();
+
+    List<TrackerHit> getTrackerHits();
+
+    int getType();
+
+    // double parameter(ParameterName n);
+    // similar name is not a problem, because of different signature
+    // Parameters parameters();
 }

lcsim/src/org/lcsim/event/base
BaseTrack.java 1.9 -> 1.9.2.1
diff -u -r1.9 -r1.9.2.1
--- BaseTrack.java	9 Feb 2007 17:34:10 -0000	1.9
+++ BaseTrack.java	5 Sep 2007 17:50:36 -0000	1.9.2.1
@@ -3,7 +3,7 @@
  *
  * Created on March 24, 2006, 9:18 PM
  *
- * $Id: BaseTrack.java,v 1.9 2007/02/09 17:34:10 cassell Exp $
+ * $Id: BaseTrack.java,v 1.9.2.1 2007/09/05 17:50:36 jstrube Exp $
  */
 
 package org.lcsim.event.base;
@@ -43,7 +43,7 @@
     protected static final int D0 = Track.ParameterName.d0.ordinal();
     protected static final int PHI = Track.ParameterName.phi0.ordinal();
     protected static final int OMEGA = Track.ParameterName.omega.ordinal();
-    protected static final int TANLAMBDA = Track.ParameterName.s.ordinal();
+    protected static final int TANLAMBDA = Track.ParameterName.tanLambda.ordinal();
     protected static final int Z0 = Track.ParameterName.z0.ordinal();
     
     /** Creates a new instance of BaseTrack */

lcsim/test/org/lcsim/util/swim
JansLCIOParameterTest.java 1.1 -> 1.1.2.1
diff -u -r1.1 -r1.1.2.1
--- JansLCIOParameterTest.java	16 Aug 2007 21:46:46 -0000	1.1
+++ JansLCIOParameterTest.java	5 Sep 2007 17:50:36 -0000	1.1.2.1
@@ -4,8 +4,8 @@
 import org.lcsim.spacegeom.CartesianVector;
 import org.lcsim.spacegeom.SpacePoint;
 import org.lcsim.spacegeom.SpaceVector;
-import static org.lcsim.util.swim.JansLCIOTrackParameters.ParameterName;
-
+import static org.lcsim.event.Track.ParameterName;
+import org.lcsim.event.Track.Parameters;
 import junit.framework.TestCase;
 
 public class JansLCIOParameterTest extends TestCase {
@@ -25,9 +25,9 @@
 	    SpacePoint ref2 = new CartesianPoint(-1, -2, -30);
 	    for (int charge=-2; charge<3; charge++) {
     		for (double field=-5; field<5.1; field += 0.5) {
-    			JansLCIOTrackParameters parms = JansLCIOTrackParameters.SpaceMomentum2Parameters(pos, mom, pos, charge, field);
-    			assertEquals(pos, JansLCIOTrackParameters.Parameters2Position(parms, pos));
-    			assertEquals(mom, JansLCIOTrackParameters.Parameters2Momentum(parms));
+    			Parameters parms = Parameters.SpaceMomentum2Parameters(pos, mom, pos, charge, field);
+    			assertEquals(pos, Parameters.Parameters2Position(parms, pos));
+    			assertEquals(mom, Parameters.Parameters2Momentum(parms));
     		}
 	    }
 	}
@@ -38,22 +38,22 @@
 	    SpacePoint location = new CartesianPoint(1, 0, 0);
 	    SpaceVector mom = new CartesianVector(0, -1, 1);
 	    SpacePoint zero = new SpacePoint();
-	    JansLCIOTrackParameters params = JansLCIOTrackParameters.SpaceMomentum2Parameters(location, mom, zero, 1, field);
-	    assertEquals(params.pt, 1.0);
+	    Parameters params = Parameters.SpaceMomentum2Parameters(location, mom, zero, 1, field);
+	    assertEquals(params.getPt(), 1.0);
 	    assertEquals(params.get(ParameterName.z0), 0.0);
 	    assertEquals(params.get(ParameterName.d0), 1.0);
-	    assertEquals(mom, JansLCIOTrackParameters.Parameters2Momentum(params));
-	    assertEquals(location, JansLCIOTrackParameters.Parameters2Position(params, zero));
+	    assertEquals(mom, Parameters.Parameters2Momentum(params));
+	    assertEquals(location, Parameters.Parameters2Position(params, zero));
 
 	    // The reference point has to be on the y axis
 	    SpacePoint refPoint = new CartesianPoint(-20, 0, -60);
-	    JansLCIOTrackParameters params2 = JansLCIOTrackParameters.SpaceMomentum2Parameters(location, mom, refPoint, -1, -field); 
+	    Parameters params2 = Parameters.SpaceMomentum2Parameters(location, mom, refPoint, -1, -field); 
     	
-	    assertEquals(params2.pt, 1.0);
+	    assertEquals(params2.getPt(), 1.0);
 	    assertEquals(params2.get(ParameterName.z0), 60.0);
 	    assertEquals(params2.get(ParameterName.d0), -(refPoint.x()-1.0));
-	    assertEquals(mom, JansLCIOTrackParameters.Parameters2Momentum(params2));
-	    assertEquals(location, JansLCIOTrackParameters.Parameters2Position(params2, refPoint));
+	    assertEquals(mom, Parameters.Parameters2Momentum(params2));
+	    assertEquals(location, Parameters.Parameters2Position(params2, refPoint));
 	}
 
 	// test a bit more complicated Geometry
@@ -64,11 +64,11 @@
 	    SpaceVector mom = new CartesianVector(1, 0, 2);
 	    // make sure it's the same y as the location
 	    SpacePoint refPoint = new CartesianPoint(3.6, 9.2, -11.7);
-	    JansLCIOTrackParameters params = JansLCIOTrackParameters.SpaceMomentum2Parameters(location, mom, refPoint, charge, field);
+	    Parameters params = Parameters.SpaceMomentum2Parameters(location, mom, refPoint, charge, field);
 	    assertEquals(params.get(ParameterName.phi0), 0, 1e-15);
 	    assertEquals(params.get(ParameterName.d0), -4.5, 1e-10);
-	    SpaceVector newMom = JansLCIOTrackParameters.Parameters2Momentum(params);
-	    SpacePoint newPos = JansLCIOTrackParameters.Parameters2Position(params, refPoint);
+	    SpaceVector newMom = Parameters.Parameters2Momentum(params);
+	    SpacePoint newPos = Parameters.Parameters2Position(params, refPoint);
 	    assertEquals(newMom, mom);
 	    assertEquals(newPos, location);
 	}

lcsim/src/org/lcsim/recon/cat/util
BasicTrack.java 1.2 -> 1.2.2.1
diff -u -r1.2 -r1.2.2.1
--- BasicTrack.java	22 Aug 2007 19:56:27 -0000	1.2
+++ BasicTrack.java	5 Sep 2007 17:50:36 -0000	1.2.2.1
@@ -11,15 +11,14 @@
 import org.lcsim.conditions.ConditionsManager;
 import org.lcsim.conditions.ConditionsManager.ConditionsSetNotFoundException;
 import org.lcsim.geometry.Detector;
-import org.lcsim.util.swim.JansHelixSwimmer;
-import org.lcsim.util.swim.JansLCIOTrackParameters;
+import org.lcsim.util.swim.HelixSwimmer;
 
 /**
  * Basic implementation of {@link org.lcsim.event.Track} interface.
  * Includes method for initializing track parameters from momentum at a given point.
  *
  * @author D. Onoprienko
- * @version $Id: BasicTrack.java,v 1.2 2007/08/22 19:56:27 onoprien Exp $
+ * @version $Id: BasicTrack.java,v 1.2.2.1 2007/09/05 17:50:36 jstrube Exp $
  */
 public class BasicTrack implements Track {
 
@@ -31,7 +30,7 @@
    */
   static public void initialize(Detector detector) {
     _bField = detector.getFieldMap().getField(new double[]{0.,0.,0.})[2];
-    _swimmer = new JansHelixSwimmer(_bField);
+    _swimmer = new HelixSwimmer(_bField);
   }
   
   /** Default constructor. */
@@ -145,7 +144,7 @@
     double alpha = _swimmer.getTrackLengthToPoint(refPoint);
     SpacePoint poca = _swimmer.getPointAtLength(alpha);
     SpaceVector momentumAtPoca = _swimmer.getMomentumAtLength(alpha);
-    JansLCIOTrackParameters parameters = JansLCIOTrackParameters.SpaceMomentum2Parameters(poca, momentumAtPoca, refPoint, charge, _bField);
+    Parameters parameters = Parameters.SpaceMomentum2Parameters(poca, momentumAtPoca, refPoint, charge, _bField);
     _parameters = parameters.getValues();
     _momentum = momentumAtPoca.v();
     _charge = charge;
@@ -171,7 +170,7 @@
   protected int _type;
   
   protected static double _bField;
-  protected static JansHelixSwimmer _swimmer;
+  protected static HelixSwimmer _swimmer;
   
   protected static ConditionsListener _conListener = new ConditionsListener() {
     public void conditionsChanged(ConditionsEvent event) {

lcsim/src/org/lcsim/contrib/LeiXia
rpc_PFA_np_hmx_ilc090_g2.java 1.4 -> 1.4.2.1
diff -u -r1.4 -r1.4.2.1
--- rpc_PFA_np_hmx_ilc090_g2.java	17 Aug 2007 16:20:33 -0000	1.4
+++ rpc_PFA_np_hmx_ilc090_g2.java	5 Sep 2007 17:50:37 -0000	1.4.2.1
@@ -17,6 +17,7 @@
 import org.lcsim.recon.emid.hmatrix.HMatrixBuilder;
 import org.lcsim.recon.emid.hmatrix.HMatrixConditionsConverter;
 import org.lcsim.spacegeom.CartesianPoint;
+import org.lcsim.spacegeom.CartesianVector;
 import org.lcsim.math.chisq.ChisqProb;
 
 /*
@@ -1859,7 +1860,7 @@
        else trackq = 0;  // hope this never happens!
 
        HelixSwimmer swimmer = new HelixSwimmer(5);
-       swimmer.setTrack(new CartesianPoint(trackp), new CartesianPoint(tracko), trackq);  // swimmer in 5T B field along Z+
+       swimmer.setTrack(new CartesianVector(trackp), new CartesianPoint(tracko), trackq);  // swimmer in 5T B field along Z+
 
        List<double[]> TrackPoint = new ArrayList<double[]>();
        double length = 10.;  //  this value should be as small as possible!

lcsim/src/org/lcsim/contrib/LeiXia
rpc_PFA_np.java 1.3 -> 1.3.2.1
diff -u -r1.3 -r1.3.2.1
--- rpc_PFA_np.java	17 Aug 2007 16:20:33 -0000	1.3
+++ rpc_PFA_np.java	5 Sep 2007 17:50:37 -0000	1.3.2.1
@@ -6,6 +6,7 @@
 import org.lcsim.event.MCParticle;
 import org.lcsim.event.SimCalorimeterHit;
 import org.lcsim.spacegeom.CartesianPoint;
+import org.lcsim.spacegeom.CartesianVector;
 import org.lcsim.util.Driver;
 import org.lcsim.util.aida.AIDA;
 import org.lcsim.util.swim.Helix;
@@ -16,7 +17,7 @@
 /**
  * Reconstruction: SiD study (rpc active medium) - non projective
  * @author Lei Xia <[log in to unmask]>
- * @version $Id: rpc_PFA_np.java,v 1.3 2007/08/17 16:20:33 jstrube Exp $
+ * @version $Id: rpc_PFA_np.java,v 1.3.2.1 2007/09/05 17:50:37 jstrube Exp $
  */
 
 public class rpc_PFA_np extends Driver
@@ -1615,7 +1616,7 @@
        else trackq = 0;  // hope this never happens!
 
        HelixSwimmer swimmer = new HelixSwimmer(5.);  // swimmer in 5T B field along Z+
-       swimmer.setTrack(new CartesianPoint(trackp), new CartesianPoint(tracko), trackq);
+       swimmer.setTrack(new CartesianVector(trackp), new CartesianPoint(tracko), trackq);
        // , , , 
        
        List<double[]> TrackPoint = new ArrayList<double[]>();

lcsim/src/org/lcsim/contrib/JanStrube/tracking
TrackTester.java 1.1 -> 1.1.2.1
diff -u -r1.1 -r1.1.2.1
--- TrackTester.java	10 Sep 2006 11:47:34 -0000	1.1
+++ TrackTester.java	5 Sep 2007 17:50:38 -0000	1.1.2.1
@@ -1,5 +1,5 @@
 /**
- * @version $Id: TrackTester.java,v 1.1 2006/09/10 11:47:34 jstrube Exp $
+ * @version $Id: TrackTester.java,v 1.1.2.1 2007/09/05 17:50:38 jstrube Exp $
  */
 package org.lcsim.contrib.JanStrube.tracking;
 
@@ -17,7 +17,6 @@
         for (Track t : trackList) {
             HelixSwimmer swimmer = new HelixSwimmer(5);
             swimmer.setTrack(t);
-            swimmer.getSpatialParameters();
             t.getMomentum();
         }
     }
CVSspam 0.2.8