Commit in lcsim on MAIN
src/org/lcsim/contrib/JanStrube/vtxFitter/VtxTrack.java+3-31.2 -> 1.3
                                         /Fitter.java+5-51.14 -> 1.15
src/org/lcsim/contrib/JanStrube/tracking/LCIOTrackParameters.java+138added 1.1
                                        /Track.java+4-61.6 -> 1.7
                                        /HelixSwimmer.java+6-61.7 -> 1.8
                                        /NewTrack.java+20-71.10 -> 1.11
                                        /TransitionalTrack.java+6-61.4 -> 1.5
                                        /NewFastMCTrackFactory.java+9-91.12 -> 1.13
                                        /NewMCFastTrackDriver.java+5-51.3 -> 1.4
                                        /Helix.java+7-21.6 -> 1.7
                                        /EMap.java-1341.5 removed
src/org/lcsim/contrib/JanStrube/standalone/Tracks.py+158added 1.1
                                          /MainLoop.py+16-61.2 -> 1.3
                                          /.cvsignore+11.3 -> 1.4
test/org/lcsim/contrib/JanStrube/tracking/LCIOParameterTest.java+82added 1.1
                                         /NewTrackTest.java+4-41.3 -> 1.4
                                         /HelixSwimmerTrackConsistencyTest.java+8-81.8 -> 1.9
                                         /NewFastMCTrackFactoryTest.java+3-31.1 -> 1.2
                                         /EMapTest.java-821.2 removed
src/org/lcsim/contrib/JanStrube/zvtop/ZvUtil.java+4-31.1 -> 1.2
+479-289
3 added + 2 removed + 15 modified, total 20 files
Changing the name of the Parameter class from EMap to LCIOParameters.
Bringing the ParameterName enum into the parameter class. This makes it easier to abstract out the Track parameterization.

lcsim/src/org/lcsim/contrib/JanStrube/vtxFitter
VtxTrack.java 1.2 -> 1.3
diff -u -r1.2 -r1.3
--- VtxTrack.java	23 Oct 2006 19:42:31 -0000	1.2
+++ VtxTrack.java	28 Oct 2006 00:48:32 -0000	1.3
@@ -1,7 +1,7 @@
 package org.lcsim.contrib.JanStrube.vtxFitter;
 
 import hep.physics.matrix.SymmetricMatrix;
-import org.lcsim.contrib.JanStrube.tracking.EMap;
+import org.lcsim.contrib.JanStrube.tracking.LCIOTrackParameters;
 import org.lcsim.contrib.JanStrube.tracking.NewTrack;
 import org.lcsim.contrib.JanStrube.tracking.Track;
 import org.lcsim.spacegeom.SpacePoint;
@@ -17,13 +17,13 @@
 	 */
 	VtxTrack(Track t) {
 		super((SpacePoint) t.getReferencePoint().clone()
-			, new EMap(t.getParameters())
+			, new LCIOTrackParameters(t.getParameters())
 			, new SymmetricMatrix(t.getErrorMatrix())
 			, t.getCharge());
 	}
 	
 	void updateMomentum(SpaceVector momentum, SpacePoint position, double B_z) {
-		_parameters = EMap.SpaceMomentum2Parameters(position, momentum, position, _charge, B_z);
+		_parameters = LCIOTrackParameters.SpaceMomentum2Parameters(position, momentum, position, _charge, B_z);
 	}
 	
 }

lcsim/src/org/lcsim/contrib/JanStrube/vtxFitter
Fitter.java 1.14 -> 1.15
diff -u -r1.14 -r1.15
--- Fitter.java	23 Oct 2006 19:42:31 -0000	1.14
+++ Fitter.java	28 Oct 2006 00:48:32 -0000	1.15
@@ -2,7 +2,7 @@
 package org.lcsim.contrib.JanStrube.vtxFitter;
 
 /**
- * @version $Id: Fitter.java,v 1.14 2006/10/23 19:42:31 tonyj Exp $
+ * @version $Id: Fitter.java,v 1.15 2006/10/28 00:48:32 jstrube Exp $
  */
 
 import Jama.util.Maths;
@@ -13,7 +13,7 @@
 
 import java.util.Collection;
 
-import org.lcsim.contrib.JanStrube.tracking.EMap;
+import org.lcsim.contrib.JanStrube.tracking.LCIOTrackParameters;
 import org.lcsim.contrib.JanStrube.tracking.HelixSwimmer;
 import org.lcsim.contrib.JanStrube.tracking.Track;
 import org.lcsim.event.EventHeader;
@@ -128,10 +128,10 @@
         Matrix B_k = getMomentumDerivativeMatrix(vtxPosition, p, t.getCharge(), B_z);
         Matrix q0 = new Matrix(p.getCartesianArray(), 3);
         // turn the measurement into a Matrix object
-        Matrix h = new Matrix(EMap.SpaceMomentum2Parameters(vtxPosition, p, vtxPosition, t.getCharge(), B_z)
+        Matrix h = new Matrix(LCIOTrackParameters.SpaceMomentum2Parameters(vtxPosition, p, vtxPosition, t.getCharge(), B_z)
                 .getValues(), 5);
         // the measurement of the track is taken at the POCA to the best estimate
-        Matrix m_k = new Matrix(EMap.SpaceMomentum2Parameters(x, p, vtxPosition, t.getCharge(), B_z).getValues(), 5);
+        Matrix m_k = new Matrix(LCIOTrackParameters.SpaceMomentum2Parameters(x, p, vtxPosition, t.getCharge(), B_z).getValues(), 5);
         Matrix c_k0 = h.minus(A_k.times(x_prev).plus(B_k.times(q0)));
 
         // Now for the real filtering equations
@@ -189,7 +189,7 @@
         Matrix G_k = Maths.toJamaMatrix(t.getErrorMatrix()).inverse();
         Matrix W_k = B_k.transpose().times(G_k.times(B_k)).uminus();
         // the measurement of the track is taken at the POCA to the best estimate
-        Matrix m_k = new Matrix(EMap.SpaceMomentum2Parameters(x, p, vtxPosition, t.getCharge(), B_z).getValues(), 5);
+        Matrix m_k = new Matrix(LCIOTrackParameters.SpaceMomentum2Parameters(x, p, vtxPosition, t.getCharge(), B_z).getValues(), 5);
         Matrix c_k0 = m_k.minus(A_k.times(x_prev).plus(B_k.times(q0)));
         Matrix q_kN = W_k.times(B_k.transpose().times(G_k)).times(m_k.minus(c_k0.plus(A_k.times(x_prev))));
         SpaceVector updatedMomentum = new CartesianVector(q_kN.getRowPackedCopy());

lcsim/src/org/lcsim/contrib/JanStrube/tracking
LCIOTrackParameters.java added at 1.1
diff -N LCIOTrackParameters.java
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ LCIOTrackParameters.java	28 Oct 2006 00:48:37 -0000	1.1
@@ -0,0 +1,138 @@
+/**
+ * @version $Id: LCIOTrackParameters.java,v 1.1 2006/10/28 00:48:37 jstrube Exp $
+ */
+package org.lcsim.contrib.JanStrube.tracking;
+
+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 static org.lcsim.contrib.JanStrube.tracking.LCIOTrackParameters.ParameterName.d0;
+import static org.lcsim.contrib.JanStrube.tracking.LCIOTrackParameters.ParameterName.omega;
+import static org.lcsim.contrib.JanStrube.tracking.LCIOTrackParameters.ParameterName.phi0;
+import static org.lcsim.contrib.JanStrube.tracking.LCIOTrackParameters.ParameterName.tanLambda;
+import static org.lcsim.contrib.JanStrube.tracking.LCIOTrackParameters.ParameterName.z0;
+
+import org.lcsim.spacegeom.CartesianPoint;
+import org.lcsim.spacegeom.CartesianVector;
+import org.lcsim.spacegeom.SpacePoint;
+import org.lcsim.spacegeom.SpaceVector;
+
+public class LCIOTrackParameters {
+	
+    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(LCIOTrackParameters 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 kow 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(LCIOTrackParameters 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 LCIOTrackParameters SpaceMomentum2Parameters(SpacePoint pos, SpaceVector mom, SpacePoint ref, int charge, double field_z) {
+	    LCIOTrackParameters result = new LCIOTrackParameters();
+	    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 LCIOTrackParameters(LCIOTrackParameters parameters) {
+    	values = parameters.values.clone();
+    	pt = parameters.pt;
+    }
+    
+    LCIOTrackParameters() {
+        values = new double[5];
+        pt = 0;
+    }
+    
+    public LCIOTrackParameters(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/contrib/JanStrube/tracking
Track.java 1.6 -> 1.7
diff -u -r1.6 -r1.7
--- Track.java	23 Oct 2006 19:42:31 -0000	1.6
+++ Track.java	28 Oct 2006 00:48:37 -0000	1.7
@@ -1,9 +1,11 @@
 /**
- * @version $Id: Track.java,v 1.6 2006/10/23 19:42:31 tonyj Exp $
+ * @version $Id: Track.java,v 1.7 2006/10/28 00:48:37 jstrube Exp $
  */
 package org.lcsim.contrib.JanStrube.tracking;
 
 import hep.physics.matrix.SymmetricMatrix;
+
+import org.lcsim.contrib.JanStrube.tracking.LCIOTrackParameters.ParameterName;
 import org.lcsim.spacegeom.SpacePoint;
 import org.lcsim.spacegeom.SpaceVector;
 
@@ -13,10 +15,6 @@
  */
 public interface Track {
 
-    enum ParameterName {
-        d0, phi0, omega, z0, tanLambda
-    }
-
     /**
      * Returns the parameter by name
      * @param name symbolic name of the parameter
@@ -28,7 +26,7 @@
      * Returns the parmeters container, which holds the 5 parameters and the pt
      * @return The parameters for this Track
      */
-    public abstract EMap getParameters();
+    public abstract LCIOTrackParameters getParameters();
     
     /**
      * Accessor to the POCA of the reference point.

lcsim/src/org/lcsim/contrib/JanStrube/tracking
HelixSwimmer.java 1.7 -> 1.8
diff -u -r1.7 -r1.8
--- HelixSwimmer.java	10 Sep 2006 11:47:34 -0000	1.7
+++ HelixSwimmer.java	28 Oct 2006 00:48:38 -0000	1.8
@@ -9,11 +9,11 @@
 import static java.lang.Math.cos;
 import static java.lang.Math.sqrt;
 import static org.lcsim.constants.Constants.fieldConversion;
-import static org.lcsim.contrib.JanStrube.tracking.Track.ParameterName.d0;
-import static org.lcsim.contrib.JanStrube.tracking.Track.ParameterName.phi0;
-import static org.lcsim.contrib.JanStrube.tracking.Track.ParameterName.omega;
-import static org.lcsim.contrib.JanStrube.tracking.Track.ParameterName.z0;
-import static org.lcsim.contrib.JanStrube.tracking.Track.ParameterName.tanLambda;
+import static org.lcsim.contrib.JanStrube.tracking.LCIOTrackParameters.ParameterName.d0;
+import static org.lcsim.contrib.JanStrube.tracking.LCIOTrackParameters.ParameterName.phi0;
+import static org.lcsim.contrib.JanStrube.tracking.LCIOTrackParameters.ParameterName.omega;
+import static org.lcsim.contrib.JanStrube.tracking.LCIOTrackParameters.ParameterName.z0;
+import static org.lcsim.contrib.JanStrube.tracking.LCIOTrackParameters.ParameterName.tanLambda;
 
 /**
  * A simple helix smimmer for use in org.lcsim. Uses standard lcsim units Tesla, mm, GeV. This swimmer works for charged
@@ -22,7 +22,7 @@
  * For more info on swimming see <a href="doc-files/transport.pdf">this paper</a> by Paul Avery.
  * 
  * @author jstrube
- * @version $Id: HelixSwimmer.java,v 1.7 2006/09/10 11:47:34 jstrube Exp $
+ * @version $Id: HelixSwimmer.java,v 1.8 2006/10/28 00:48:38 jstrube Exp $
  */
 public class HelixSwimmer {
     private double field;

lcsim/src/org/lcsim/contrib/JanStrube/tracking
NewTrack.java 1.10 -> 1.11
diff -u -r1.10 -r1.11
--- NewTrack.java	23 Oct 2006 19:42:30 -0000	1.10
+++ NewTrack.java	28 Oct 2006 00:48:38 -0000	1.11
@@ -1,11 +1,15 @@
 /**
- * @version $Id: NewTrack.java,v 1.10 2006/10/23 19:42:30 tonyj Exp $
+ * @version $Id: NewTrack.java,v 1.11 2006/10/28 00:48:38 jstrube Exp $
  */
 package org.lcsim.contrib.JanStrube.tracking;
 
 import hep.physics.matrix.SymmetricMatrix;
+
+import org.lcsim.contrib.JanStrube.tracking.LCIOTrackParameters.ParameterName;
+import org.lcsim.spacegeom.CartesianPoint;
 import org.lcsim.spacegeom.SpacePoint;
 import org.lcsim.spacegeom.SpaceVector;
+import static java.lang.Math.sqrt;
 
 
 /**
@@ -15,17 +19,26 @@
  * An invariant of this class is that the "origin" is the point of closest approach to the reference point.
  */
 public class NewTrack implements Track {
-    protected EMap _parameters;
+    protected LCIOTrackParameters _parameters;
     protected SymmetricMatrix _errorMatrix;
     protected SpacePoint _referencePoint;
     protected int _charge;
     
     protected NewTrack() {
-        _parameters = new EMap();
+        _parameters = new LCIOTrackParameters();
         _errorMatrix = new SymmetricMatrix(5);
     }
     
-    protected NewTrack(SpacePoint refPoint, EMap parameters, SymmetricMatrix errorMatrix, int charge) {
+    public NewTrack(org.lcsim.event.Track t) {
+    	double[] p = t.getMomentum();
+    	double pt = sqrt(p[0]*p[0] + p[1]*p[1]);
+    	_parameters = new LCIOTrackParameters(t.getTrackParameters(), pt);
+    	_errorMatrix = t.getErrorMatrix();
+    	_referencePoint = new CartesianPoint(t.getReferencePoint());
+    	_charge = t.getCharge();
+    }
+    
+    protected NewTrack(SpacePoint refPoint, LCIOTrackParameters parameters, SymmetricMatrix errorMatrix, int charge) {
         _referencePoint = refPoint;
         _parameters = parameters;
         _charge = charge;
@@ -41,7 +54,7 @@
     /* (non-Javadoc)
      * @see org.lcsim.contrib.JanStrube.tracking.Track#getParameters()
      */
-    public EMap getParameters() {
+    public LCIOTrackParameters getParameters() {
         return _parameters; 
     }
     /* (non-Javadoc)
@@ -70,10 +83,10 @@
     }
     
     public SpacePoint getPosition() {
-        return EMap.Parameters2Position(_parameters, _referencePoint);
+        return LCIOTrackParameters.Parameters2Position(_parameters, _referencePoint);
     }
     
     public SpaceVector getMomentum() {
-        return EMap.Parameters2Momentum(_parameters);
+        return LCIOTrackParameters.Parameters2Momentum(_parameters);
     }
 }

lcsim/src/org/lcsim/contrib/JanStrube/tracking
TransitionalTrack.java 1.4 -> 1.5
diff -u -r1.4 -r1.5
--- TransitionalTrack.java	23 Oct 2006 19:42:30 -0000	1.4
+++ TransitionalTrack.java	28 Oct 2006 00:48:39 -0000	1.5
@@ -1,5 +1,5 @@
 /**
- * @version $Id: TransitionalTrack.java,v 1.4 2006/10/23 19:42:30 tonyj Exp $
+ * @version $Id: TransitionalTrack.java,v 1.5 2006/10/28 00:48:39 jstrube Exp $
  */
 package org.lcsim.contrib.JanStrube.tracking;
 
@@ -58,10 +58,10 @@
      */
     public double[] getMomentum() {
         double pt = _track.getPt();
-        double phi0 = _track.getParameter(org.lcsim.contrib.JanStrube.tracking.Track.ParameterName.phi0);
+        double phi0 = _track.getParameter(org.lcsim.contrib.JanStrube.tracking.LCIOTrackParameters.ParameterName.phi0);
         double x = pt*cos(phi0);
         double y = pt*sin(phi0);
-        double z = pt*_track.getParameter(org.lcsim.contrib.JanStrube.tracking.Track.ParameterName.tanLambda);
+        double z = pt*_track.getParameter(org.lcsim.contrib.JanStrube.tracking.LCIOTrackParameters.ParameterName.tanLambda);
         return new double[] {x, y, z};
     }
 
@@ -78,7 +78,7 @@
      */
     public double getPX() {
         double pt = _track.getPt();
-        double phi0 = _track.getParameter(org.lcsim.contrib.JanStrube.tracking.Track.ParameterName.phi0);
+        double phi0 = _track.getParameter(org.lcsim.contrib.JanStrube.tracking.LCIOTrackParameters.ParameterName.phi0);
         double x = pt*cos(phi0);
         return x;
     }
@@ -88,7 +88,7 @@
      */
     public double getPY() {
         double pt = _track.getPt();
-        double phi0 = _track.getParameter(org.lcsim.contrib.JanStrube.tracking.Track.ParameterName.phi0);
+        double phi0 = _track.getParameter(org.lcsim.contrib.JanStrube.tracking.LCIOTrackParameters.ParameterName.phi0);
         double y = pt*sin(phi0);
         return y;
     }
@@ -98,7 +98,7 @@
      */
     public double getPZ() {
         double pt = _track.getPt();
-        double z = pt*_track.getParameter(org.lcsim.contrib.JanStrube.tracking.Track.ParameterName.tanLambda);
+        double z = pt*_track.getParameter(org.lcsim.contrib.JanStrube.tracking.LCIOTrackParameters.ParameterName.tanLambda);
         return z;
     }
 

lcsim/src/org/lcsim/contrib/JanStrube/tracking
NewFastMCTrackFactory.java 1.12 -> 1.13
diff -u -r1.12 -r1.13
--- NewFastMCTrackFactory.java	23 Oct 2006 19:42:30 -0000	1.12
+++ NewFastMCTrackFactory.java	28 Oct 2006 00:48:40 -0000	1.13
@@ -1,5 +1,5 @@
 /**
- * @version $Id: NewFastMCTrackFactory.java,v 1.12 2006/10/23 19:42:30 tonyj Exp $
+ * @version $Id: NewFastMCTrackFactory.java,v 1.13 2006/10/28 00:48:40 jstrube Exp $
  */
 package org.lcsim.contrib.JanStrube.tracking;
 
@@ -9,8 +9,8 @@
 import static java.lang.Math.abs;
 import static java.lang.Math.atan2;
 import static java.lang.Math.sqrt;
-import static org.lcsim.contrib.JanStrube.tracking.Track.ParameterName.omega;
-import static org.lcsim.contrib.JanStrube.tracking.Track.ParameterName.phi0;
+import static org.lcsim.contrib.JanStrube.tracking.LCIOTrackParameters.ParameterName.omega;
+import static org.lcsim.contrib.JanStrube.tracking.LCIOTrackParameters.ParameterName.phi0;
 
 import hep.physics.vec.Hep3Vector;
 
@@ -130,7 +130,7 @@
         double alpha = _swimmer.getTrackLengthToPoint(referencePoint);
         SpacePoint poca = _swimmer.getPointAtLength(alpha);
         SpaceVector momentumAtPoca = _swimmer.getMomentumAtLength(alpha);
-        EMap parameters = EMap.SpaceMomentum2Parameters(poca, momentumAtPoca, referencePoint, charge, _Bz);
+        LCIOTrackParameters parameters = LCIOTrackParameters.SpaceMomentum2Parameters(poca, momentumAtPoca, referencePoint, charge, _Bz);
         SymmetricMatrix errorMatrix = new SymmetricMatrix(5);
         // this sets the measurement error
         double cosTheta = abs(momentumAtPoca.cosTheta());
@@ -144,7 +144,7 @@
             }
         }
         // it's a bit inefficient to always have this condition here, although it's only used in tests.
-        EMap smearParams = shouldISmear 
+        LCIOTrackParameters smearParams = shouldISmear 
             ? smearParameters(parameters, errorMatrix, random)
             : parameters;
             
@@ -152,8 +152,8 @@
 //         System.out.println("TrackFactory: POCA " + poca);
 //         System.out.println("TrackFactory: Momentum " + momentumAtPoca);
 //         System.out.println("TrackFactory: Parameters: " + smearParams);
-//         System.out.println("TrackFactory: POCA from parameters: " + EMap.Parameters2Position(smearParams, referencePoint));
-//         System.out.println("TrackFactory: Parameters from POCA: " + EMap.SpaceMomentum2Parameters(poca, momentumAtPoca, referencePoint, charge, _Bz));
+//         System.out.println("TrackFactory: POCA from parameters: " + LCIOTrackParameters.Parameters2Position(smearParams, referencePoint));
+//         System.out.println("TrackFactory: Parameters from POCA: " + LCIOTrackParameters.SpaceMomentum2Parameters(poca, momentumAtPoca, referencePoint, charge, _Bz));
          return new NewTrack(referencePoint, smearParams, errorMatrix, charge);
     }
     
@@ -197,7 +197,7 @@
      * @param random A random generator
      * @return A new set of smeared parameters
      */
-    private static EMap smearParameters(EMap oldParams, SymmetricMatrix sm, Random random) {
+    private static LCIOTrackParameters smearParameters(LCIOTrackParameters oldParams, SymmetricMatrix sm, Random random) {
         Matrix errorMatrix = Maths.toJamaMatrix(sm);
         EigenvalueDecomposition eigen = errorMatrix.eig();
         double[] realEigen = eigen.getRealEigenvalues();
@@ -227,6 +227,6 @@
         } else if (parameters[phi0.ordinal()] < -PI) {
             parameters[phi0.ordinal()] += 2 * PI;
         }
-        return new EMap(parameters, pt);
+        return new LCIOTrackParameters(parameters, pt);
     }
 }

lcsim/src/org/lcsim/contrib/JanStrube/tracking
NewMCFastTrackDriver.java 1.3 -> 1.4
diff -u -r1.3 -r1.4
--- NewMCFastTrackDriver.java	19 Aug 2006 20:08:02 -0000	1.3
+++ NewMCFastTrackDriver.java	28 Oct 2006 00:48:41 -0000	1.4
@@ -1,5 +1,5 @@
 /**
- * @version $Id: NewMCFastTrackDriver.java,v 1.3 2006/08/19 20:08:02 jstrube Exp $
+ * @version $Id: NewMCFastTrackDriver.java,v 1.4 2006/10/28 00:48:41 jstrube Exp $
  */
 package org.lcsim.contrib.JanStrube.tracking;
 
@@ -87,11 +87,11 @@
             }
 
             Track t = factory.getTrack(p.getMomentum(), p.getOrigin(), (int)p.getCharge());
-            // org.lcsim.event.Track passpartout = new TransitionalTrack(t);
-            // trackList.add(passpartout);
-	    newTrackList.add(t);
+            org.lcsim.event.Track passpartout = new TransitionalTrack(t);
+            trackList.add(passpartout);
+            newTrackList.add(t);
         }
-        event.put(EventHeader.TRACKS, newTrackList, Track.class, 0);
+        event.put(EventHeader.TRACKS, trackList, org.lcsim.event.Track.class, 0);
     }
 
     public void conditionsChanged(ConditionsEvent event) {

lcsim/src/org/lcsim/contrib/JanStrube/tracking
Helix.java 1.6 -> 1.7
diff -u -r1.6 -r1.7
--- Helix.java	12 Sep 2006 13:28:23 -0000	1.6
+++ Helix.java	28 Oct 2006 00:48:42 -0000	1.7
@@ -25,7 +25,7 @@
  * by Paul Avery.
  * 
  * @author tonyj
- * @version $Id: Helix.java,v 1.6 2006/09/12 13:28:23 jstrube Exp $
+ * @version $Id: Helix.java,v 1.7 2006/10/28 00:48:42 jstrube Exp $
  */
 public class Helix implements Trajectory {
 	Hep3Vector origin;
@@ -126,7 +126,12 @@
 			throw new IllegalArgumentException("radius " + r + "<0");
 		double darg = r * r / (2. * radius * radiusOfCenter) - radiusOfCenter
 				/ (2. * radius) - radius / (2. * radiusOfCenter);
-		double diff = asin(darg) + phi - phiToCenter;
+		double deltaphi = phi-phiToCenter;
+		if (deltaphi < - Math.PI)
+			deltaphi += 2.* Math.PI;
+		if (deltaphi > Math.PI)
+			deltaphi -= 2.*Math.PI;
+		double diff = asin(darg) + deltaphi; 
 		double result = (radius / cosLambda) * diff;
 		while (result < 0)
 			result += Math.abs(radius / cosLambda) * 2 * Math.PI;

lcsim/src/org/lcsim/contrib/JanStrube/tracking
EMap.java removed after 1.5
diff -N EMap.java
--- EMap.java	14 Oct 2006 08:45:22 -0000	1.5
+++ /dev/null	1 Jan 1970 00:00:00 -0000
@@ -1,134 +0,0 @@
-/**
- * @version $Id: EMap.java,v 1.5 2006/10/14 08:45:22 jstrube Exp $
- */
-package org.lcsim.contrib.JanStrube.tracking;
-
-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 static org.lcsim.contrib.JanStrube.tracking.Track.ParameterName.d0;
-import static org.lcsim.contrib.JanStrube.tracking.Track.ParameterName.omega;
-import static org.lcsim.contrib.JanStrube.tracking.Track.ParameterName.phi0;
-import static org.lcsim.contrib.JanStrube.tracking.Track.ParameterName.tanLambda;
-import static org.lcsim.contrib.JanStrube.tracking.Track.ParameterName.z0;
-
-import org.lcsim.contrib.JanStrube.tracking.Track.ParameterName;
-import org.lcsim.spacegeom.CartesianPoint;
-import org.lcsim.spacegeom.CartesianVector;
-import org.lcsim.spacegeom.SpacePoint;
-import org.lcsim.spacegeom.SpaceVector;
-
-public class EMap {
-    /**
-	 * 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(EMap 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 kow 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(EMap 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 EMap SpaceMomentum2Parameters(SpacePoint pos, SpaceVector mom, SpacePoint ref, int charge, double field_z) {
-	    EMap result = new EMap();
-	    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 EMap(EMap map) {
-    	values = map.values.clone();
-    	pt = map.pt;
-    }
-    
-    EMap() {
-        values = new double[5];
-        pt = 0;
-    }
-    
-    EMap(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/contrib/JanStrube/standalone
Tracks.py added at 1.1
diff -N Tracks.py
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ Tracks.py	28 Oct 2006 00:48:53 -0000	1.1
@@ -0,0 +1,158 @@
+from org.lcsim.util.aida import AIDA
+from org.lcsim.util import Driver
+from org.lcsim.mc.fast.tracking import ReconTrack
+from org.lcsim.contrib.JanStrube.tracking import EMap, NewFastMCTrackFactory
+from org.lcsim.spacegeom import CartesianPoint, CartesianVector
+from org.lcsim.util.swim import HelixSwimmer as Swimmer_old
+from org.lcsim.contrib.JanStrube.tracking import HelixSwimmer as Swimmer_new
+from math import sqrt
+from java.lang import Boolean
+
+false = Boolean('false')
+true = Boolean('true')
+
+class TrackTest(Driver):
+    def __init__(self):
+        self.aida = AIDA.defaultInstance()
+        self.i = 0
+
+    # show that the track parameterization in the FastMC is bull
+    def process(self, event):
+        if self.i % 100 == 0:
+            print 'processing event', self.i
+        self.i += 1
+        tracks = event.getTracks()
+        for t in tracks:
+            particle = t.getMCParticle()
+            origin = particle.getOrigin()
+            momentum = particle.getMomentum()
+            #print 'Particle Origin:', origin
+            #print 'Particle Momentum:', momentum
+            #print 'Track reference point:', t.getReferencePoint()
+            #print 'Track momentum', t.getMomentum()
+            #print 'Track parameters:', t.getTrackParameters()
+            pt = sqrt(t.getPX()**2 + t.getPY()**2)
+            parms = t.getTrackParameters()
+            emap_old = EMap(t.getTrackParameters(), pt)
+            refPoint = CartesianPoint(0, 0, 0)
+            #print 'EMap:', emap_old
+            #print EMap.Parameters2Momentum(emap_old)
+            #print EMap.Parameters2Position(emap_old, refPoint)
+            trackFac = NewFastMCTrackFactory(event, false)
+            o = origin
+            p = momentum
+            c = int(particle.getCharge())
+            newT = trackFac.getTrack(CartesianVector(p.x(), p.y(), p.z()), CartesianPoint(o.x(), o.y(), o.z()), CartesianPoint(0, 0, 0), c)
+            emap_new = newT.getParameters()
+            vals_old = emap_old.getValues()
+            self.aida.cloud1D('OldTrack/d0').fill(vals_old[0])
+            self.aida.cloud1D('OldTrack/phi0').fill(vals_old[1])
+            self.aida.cloud1D('OldTrack/omega').fill(vals_old[2])
+            self.aida.cloud1D('OldTrack/z0').fill(vals_old[3])
+            self.aida.cloud1D('OldTrack/tanLambda').fill(vals_old[4])
+            vals_new = emap_new.getValues()
+            self.aida.cloud1D('NewTrack/d0').fill(vals_new[0])
+            self.aida.cloud1D('NewTrack/phi0').fill(vals_new[1])
+            self.aida.cloud1D('NewTrack/omega').fill(vals_new[2])
+            self.aida.cloud1D('NewTrack/z0').fill(vals_new[3])
+            self.aida.cloud1D('NewTrack/tanLambda').fill(vals_new[4])
+
+            #print newT.getReferencePoint()
+            #print newT.getPosition()
+            #print newT.getMomentum()
+            #print newT.getParameters()
+            # after 10 iterations transforming back and forth
+            for i in range(10):
+                tempPos = EMap.Parameters2Position(emap_old, refPoint)
+                tempMom = EMap.Parameters2Momentum(emap_old)
+                emap_old = EMap.SpaceMomentum2Parameters(tempPos, tempMom, refPoint, c, 5.)
+                tempPos = EMap.Parameters2Position(emap_new, refPoint)
+                tempMom = EMap.Parameters2Momentum(emap_new)
+                emap_new = EMap.SpaceMomentum2Parameters(tempPos, tempMom, refPoint, c, 5.)
+
+            # difference between old parameters after 10 conversions
+            vals_old10 = emap_old.getValues()
+            self.aida.cloud1D('OldTrack/d0 diff after 10').fill(parms[0] - vals_old10[0])
+            self.aida.cloud1D('OldTrack/phi0 diff after 10').fill(parms[1] - vals_old10[1])
+            self.aida.cloud1D('OldTrack/omega diff after 10').fill(parms[2] - vals_old10[2])
+            self.aida.cloud1D('OldTrack/z0 diff after 10').fill(parms[3] - vals_old10[3])
+            self.aida.cloud1D('OldTrack/tanLambda diff after 10').fill(parms[4] - vals_old10[4])
+
+            vals_new10 = emap_new.getValues()
+            # difference between new parameters after 10 conversions
+            self.aida.cloud1D('NewTrack/d0 diff after 10').fill(vals_new[0] - vals_new10[0])
+            self.aida.cloud1D('NewTrack/phi0 diff after 10').fill(vals_new[1] - vals_new10[1])
+            self.aida.cloud1D('NewTrack/omega diff after 10').fill(vals_new[2] - vals_new10[2])
+            self.aida.cloud1D('NewTrack/z0 diff after 10').fill(vals_new[3] - vals_new10[3])
+            self.aida.cloud1D('NewTrack/tanLambda diff after 10').fill(vals_new[4] - vals_new10[4])
+
+            # difference between old and new parameters
+            self.aida.cloud1D('NewTrack-OldTrack d0').fill(vals_new10[0] - vals_old10[0])
+            self.aida.cloud1D('NewTrack-OldTrack phi0').fill(vals_new10[1] - vals_old10[1])
+            self.aida.cloud1D('NewTrack-OldTrack omega').fill(vals_new10[2] - vals_old10[2])
+            self.aida.cloud1D('NewTrack-OldTrack z0').fill(vals_new10[3] - vals_old10[3])
+            self.aida.cloud1D('NewTrack-OldTrack tanLambda').fill(vals_new10[4] - vals_old10[4])
+
+            swimmer_old = Swimmer_old(5)
+            swimmer_new = Swimmer_new(5)
+
+            swimmer_old.setTrack(t)
+            # should be 0
+            dist_old = swimmer_old.getDistanceToPoint(origin)
+            point_old = swimmer_old.getPointAtDistance(dist_old)
+            self.aida.cloud1D('OldTrack/diffOrigin x').fill(point_old.x() - origin.x())
+            self.aida.cloud1D('OldTrack/diffOrigin y').fill(point_old.y() - origin.y())
+            self.aida.cloud1D('OldTrack/diffOrigin z').fill(point_old.z() - origin.z())
+            momentum_old = swimmer_old.getTrajectory().getTangentAtDistance(dist_old)
+            #m = momentum.magnitude()
+            #self.aida.cloud1D('OldTrack/diffMomentum x').fill(momentum.x() - m*momentum_old.x())
+            #self.aida.cloud1D('OldTrack/diffMomentum y').fill(momentum.y() - m*momentum_old.y())
+            #self.aida.cloud1D('OldTrack/diffMomentum z').fill(momentum.z() - m*momentum_old.z())
+            #self.aida.cloud1D('OldTrack distance to Origin').fill(dist_old)
+
+            swimmer_new.setTrack(newT)
+            # should be 0, because point is instantiated there
+            dist_new = swimmer_new.getTrackLengthToPoint(CartesianPoint(origin.v()))
+            point_new = swimmer_new.getPointAtLength(dist_new)
+            self.aida.cloud1D('NewTrack distance to Origin').fill(dist_new)
+            self.aida.cloud1D('NewTrack/diffOrigin x').fill(point_new.x() - origin.x())
+            self.aida.cloud1D('NewTrack/diffOrigin y').fill(point_new.y() - origin.y())
+            self.aida.cloud1D('NewTrack/diffOrigin z').fill(point_new.z() - origin.z())
+            #momentum_new = swimmer_new.getMomentumAtLength(dist_new)
+            #self.aida.cloud1D('NewTrack/diffMomentum x').fill(momentum.x() - momentum_new.x())
+            #self.aida.cloud1D('NewTrack/diffMomentum y').fill(momentum.y() - momentum_new.y())
+            #self.aida.cloud1D('NewTrack/diffMomentum z').fill(momentum.z() - momentum_new.z())
+
+            #print emap_old
+            #print emap_new
+            #print 
+            #print
+
+
+class TrackErrorMatrix(Driver):
+    def __init__(self):
+        self.aida = AIDA.defaultInstance()
+
+    def process(self, event):
+        tracks = event.getTracks()
+        for t in tracks:
+            particle = t.getMCParticle()
+            origin = particle.getOrigin()
+            momentum = particle.getMomentum()
+            pt = sqrt(t.getPX()**2 + t.getPY()**2)
+            emap_old = EMap(t.getTrackParameters(), pt)
+            refPoint = CartesianPoint(0, 0, 0)
+            trackFac = NewFastMCTrackFactory(event, false)
+            o = origin
+            p = momentum
+            c = int(particle.getCharge())
+            newT = trackFac.getTrack(CartesianVector(p.x(), p.y(), p.z()), CartesianPoint(o.x(), o.y(), o.z()), CartesianPoint(0, 0, 0), c)
+            errorMatrix_old = t.getErrorMatrix()
+            errorMatrix_new = newT.getErrorMatrix()
+            difference = 0
+            for x in range(5):
+                for y in range(5):
+                    difference += (errorMatrix_old.e(x, y) - errorMatrix_new.e(x, y))**2
+
+            self.aida.cloud1D('ErrorMatrix squared difference').fill(difference)
+

lcsim/src/org/lcsim/contrib/JanStrube/standalone
MainLoop.py 1.2 -> 1.3
diff -u -r1.2 -r1.3
--- MainLoop.py	19 Aug 2006 20:03:16 -0000	1.2
+++ MainLoop.py	28 Oct 2006 00:48:53 -0000	1.3
@@ -9,9 +9,12 @@
 from java.io import File
 #from ZvTubePlotter import ZvTubePlotter
 from java.lang import System
-from FitterTestDriver import FitterTestDriver
+#from FitterTestDriver import FitterTestDriver
 from java.lang import Boolean
 from ReconParticleTestDriver import ReconParticleTestDriver
+import NickTrackVtxFitter
+from org.lcsim.contrib.JanStrube.tracking import NewMCFastTrackDriver
+from Tracks import TrackTest, TrackErrorMatrix
 
 True = Boolean("true")
 False = Boolean("false")
@@ -20,14 +23,21 @@
     loop = LCSimLoop()
 #    location = URL("ftp://ftp-lcd.slac.stanford.edu/lcd/ILC/ILC500/Zgamma/stdhep/pythia/pythiaZgamma.stdhep")
 #    location = URL("ftp://ftp-lcd.slac.stanford.edu/lcd/ILC/singleParticle/stdhep/psi_mumu_Theta4-176_5-100GeV.stdhep")
-    location = URL("ftp://ftp-lcd.slac.stanford.edu/lcd/ILC/singleParticle/stdhep/K0S_pipi_Theta45-135_5-25Gev.stdhep")
+#    location = URL("ftp://ftp-lcd.slac.stanford.edu/lcd/ILC/singleParticle/stdhep/K0S_pipi_Theta45-135_5-25Gev.stdhep")
+#    location = URL("ftp://ftp-lcd.slac.stanford.edu/lcd/ILC/singleParticle/sidaug05/slcio/slic/tau_5pi_Theta20-90_10-200GeV_SLIC_v1r9p3_sidaug05.slcio")
+#    location = URL("ftp://ftp-lcd.slac.stanford.edu/lcd/ILC/singleParticle/sidaug05/slcio/slic/tau_3pi_Theta20-90_10-200GeV_SLIC_v1r9p3_sidaug05.slcio")
+    location = URL("ftp://ftp-lcd.slac.stanford.edu/lcd/ILC/singleParticle/sidaug05/slcio/slic/psi_mumu_Theta4-176_5-100GeV_SLIC_v1r9p3_sidaug05.slcio")
     cache = FileCache()
     trackFile = cache.getCachedFile(location)
-    loop.setStdhepRecordSource(trackFile, "sidaug05")
-#    loop.setLCIORecordSource(input)
+#    loop.setStdhepRecordSource(trackFile, "sidaug05")
+    loop.setLCIORecordSource(trackFile)
     # no beamspotConstraint, no simple smearing
-    loop.add(FitterTestDriver())
-#    loop.add(MCFast(false, false))
+    loop.add(MCFast(False, False))
+#    loop.add(FitterTestDriver())
+    loop.add(TrackTest())
+    loop.add(TrackErrorMatrix())
+#    loop.add(NewMCFastTrackDriver())
+#    loop.add(NickTrackVtxFitter())
 #    loop.add(ZvTubePlotter())
 #    loop.add(VertexFitterDriver())
 #    loop.add(ReconParticleTestDriver())

lcsim/src/org/lcsim/contrib/JanStrube/standalone
.cvsignore 1.3 -> 1.4
diff -u -r1.3 -r1.4
--- .cvsignore	10 Sep 2006 11:47:38 -0000	1.3
+++ .cvsignore	28 Oct 2006 00:48:53 -0000	1.4
@@ -4,3 +4,4 @@
 *.aida
 *.stdhep
 *.out
+.*.swp

lcsim/test/org/lcsim/contrib/JanStrube/tracking
LCIOParameterTest.java added at 1.1
diff -N LCIOParameterTest.java
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ LCIOParameterTest.java	28 Oct 2006 00:48:55 -0000	1.1
@@ -0,0 +1,82 @@
+package org.lcsim.contrib.JanStrube.tracking;
+
+import org.lcsim.contrib.JanStrube.tracking.LCIOTrackParameters.ParameterName;
+import org.lcsim.spacegeom.CartesianPoint;
+import org.lcsim.spacegeom.CartesianVector;
+import org.lcsim.spacegeom.SpacePoint;
+import org.lcsim.spacegeom.SpaceVector;
+
+import junit.framework.TestCase;
+
+public class LCIOParameterTest extends TestCase {
+
+	protected void setUp() throws Exception {
+		super.setUp();
+	}
+
+	protected void tearDown() throws Exception {
+		super.tearDown();
+	}
+
+	public void testParameterConversion() {
+	    SpacePoint pos = new CartesianPoint(3, 2, 1);
+	    SpaceVector mom = new CartesianVector(4, 20, -9);
+	    SpacePoint ref1 = new SpacePoint();
+	    SpacePoint ref2 = new CartesianPoint(-1, -2, -30);
+	    for (int charge=-2; charge<3; charge++) {
+    		for (double field=-5; field<5.1; field += 0.5) {
+    			LCIOTrackParameters parms = LCIOTrackParameters.SpaceMomentum2Parameters(pos, mom, pos, charge, field);
+    			assertEquals(pos, LCIOTrackParameters.Parameters2Position(parms, pos));
+    			assertEquals(mom, LCIOTrackParameters.Parameters2Momentum(parms));
+    		}
+	    }
+	}
+	
+	// Test the conversion on some easily predefined geometries
+	public void testCircle() {
+	    double field = -1.;
+	    SpacePoint location = new CartesianPoint(1, 0, 0);
+	    SpaceVector mom = new CartesianVector(0, -1, 1);
+	    SpacePoint zero = new SpacePoint();
+	    LCIOTrackParameters params = LCIOTrackParameters.SpaceMomentum2Parameters(location, mom, zero, 1, field);
+	    assertEquals(params.pt, 1.0);
+	    assertEquals(params.get(ParameterName.z0), 0.0);
+	    assertEquals(params.get(ParameterName.d0), 1.0);
+	    assertEquals(mom, LCIOTrackParameters.Parameters2Momentum(params));
+	    assertEquals(location, LCIOTrackParameters.Parameters2Position(params, zero));
+
+	    // The reference point has to be on the y axis
+	    SpacePoint refPoint = new CartesianPoint(-20, 0, -60);
+	    LCIOTrackParameters params2 = LCIOTrackParameters.SpaceMomentum2Parameters(location, mom, refPoint, -1, -field); 
+    	
+	    assertEquals(params2.pt, 1.0);
+	    assertEquals(params2.get(ParameterName.z0), 60.0);
+	    assertEquals(params2.get(ParameterName.d0), -(refPoint.x()-1.0));
+	    assertEquals(mom, LCIOTrackParameters.Parameters2Momentum(params2));
+	    assertEquals(location, LCIOTrackParameters.Parameters2Position(params2, refPoint));
+	}
+
+	// test a bit more complicated Geometry
+	public void testConversion() {
+	    double field = -7.2;
+	    int charge = 13;
+	    SpacePoint location = new CartesianPoint(3.6, 4.7, 2.9);
+	    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);
+	    LCIOTrackParameters params = LCIOTrackParameters.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 = LCIOTrackParameters.Parameters2Momentum(params);
+	    SpacePoint newPos = LCIOTrackParameters.Parameters2Position(params, refPoint);
+	    assertEquals(newMom, mom);
+	    assertEquals(newPos, location);
+	}
+
+
+	void assertEquals(SpacePoint a, SpacePoint b) {
+	        assertEquals(a.x(), b.x(), 1e-10);
+	        assertEquals(a.y(), b.y(), 1e-10);
+	        assertEquals(a.z(), b.z(), 1e-10);	
+	}
+}

lcsim/test/org/lcsim/contrib/JanStrube/tracking
NewTrackTest.java 1.3 -> 1.4
diff -u -r1.3 -r1.4
--- NewTrackTest.java	14 Oct 2006 08:45:24 -0000	1.3
+++ NewTrackTest.java	28 Oct 2006 00:48:53 -0000	1.4
@@ -1,5 +1,5 @@
 /**
- * @version $Id: NewTrackTest.java,v 1.3 2006/10/14 08:45:24 jstrube Exp $
+ * @version $Id: NewTrackTest.java,v 1.4 2006/10/28 00:48:53 jstrube Exp $
  */
 package org.lcsim.contrib.JanStrube.tracking;
 
@@ -126,9 +126,9 @@
     	SpacePoint newPos1 = t.getPosition();
     	SpaceVector newMom1 = t.getMomentum();
     	
-    	EMap parms = EMap.SpaceMomentum2Parameters(newPos1, newMom1, ref1, charge, _Bz);
-	assertEquals(t.getPosition(), EMap.Parameters2Position(parms, ref1));
-    	assertEquals(t.getMomentum(), EMap.Parameters2Momentum(parms));
+    	LCIOTrackParameters parms = LCIOTrackParameters.SpaceMomentum2Parameters(newPos1, newMom1, ref1, charge, _Bz);
+	assertEquals(t.getPosition(), LCIOTrackParameters.Parameters2Position(parms, ref1));
+    	assertEquals(t.getMomentum(), LCIOTrackParameters.Parameters2Momentum(parms));
 	// lazy method for comparison
 	assertEquals(t.getParameters().toString(), parms.toString());
     }

lcsim/test/org/lcsim/contrib/JanStrube/tracking
HelixSwimmerTrackConsistencyTest.java 1.8 -> 1.9
diff -u -r1.8 -r1.9
--- HelixSwimmerTrackConsistencyTest.java	23 Oct 2006 19:42:34 -0000	1.8
+++ HelixSwimmerTrackConsistencyTest.java	28 Oct 2006 00:48:54 -0000	1.9
@@ -1,5 +1,5 @@
 /**
- * @version $Id: HelixSwimmerTrackConsistencyTest.java,v 1.8 2006/10/23 19:42:34 tonyj Exp $
+ * @version $Id: HelixSwimmerTrackConsistencyTest.java,v 1.9 2006/10/28 00:48:54 jstrube Exp $
  */
 package org.lcsim.contrib.JanStrube.tracking;
 
@@ -213,7 +213,7 @@
         assertEquals(swimmerRaw.getPointAtLength(alpha_raw), swimmerTrack.getPointAtLength(alpha_track-alpha), 1e-10);
         
         // d0 is the distance between P0 and Pref in the x-y plane
-        double d0 = t.getParameter(Track.ParameterName.d0);
+        double d0 = t.getParameter(LCIOTrackParameters.ParameterName.d0);
         SpacePoint origin = swimmerTrack.getPointAtLength(0);
         double dist = VectorArithmetic.subtract(origin, t.getReferencePoint()).rxy();
         assertEquals(abs(d0), abs(dist), 1e-10);
@@ -240,13 +240,13 @@
         // reference Point is (0, 0, 0)
         Track t = factory.getTrack(momentum, location, referencePoint, charge, new Random(), false);
         // track parameters
-        EMap tp = new EMap();
+        LCIOTrackParameters tp = new LCIOTrackParameters();
         tp.pt = t.getPt();
-        tp.set(Track.ParameterName.d0, t.getParameter(Track.ParameterName.d0));
-        tp.set(Track.ParameterName.omega, t.getParameter(Track.ParameterName.omega));
-        tp.set(Track.ParameterName.phi0, t.getParameter(Track.ParameterName.phi0));
-        tp.set(Track.ParameterName.tanLambda, t.getParameter(Track.ParameterName.tanLambda));
-        tp.set(Track.ParameterName.z0, t.getParameter(Track.ParameterName.z0));
+        tp.set(LCIOTrackParameters.ParameterName.d0, t.getParameter(LCIOTrackParameters.ParameterName.d0));
+        tp.set(LCIOTrackParameters.ParameterName.omega, t.getParameter(LCIOTrackParameters.ParameterName.omega));
+        tp.set(LCIOTrackParameters.ParameterName.phi0, t.getParameter(LCIOTrackParameters.ParameterName.phi0));
+        tp.set(LCIOTrackParameters.ParameterName.tanLambda, t.getParameter(LCIOTrackParameters.ParameterName.tanLambda));
+        tp.set(LCIOTrackParameters.ParameterName.z0, t.getParameter(LCIOTrackParameters.ParameterName.z0));
         
         // we don't need an error matrix for this test
         NewTrack t1 = new NewTrack(referencePoint, tp, new SymmetricMatrix(5), charge);

lcsim/test/org/lcsim/contrib/JanStrube/tracking
NewFastMCTrackFactoryTest.java 1.1 -> 1.2
diff -u -r1.1 -r1.2
--- NewFastMCTrackFactoryTest.java	10 Sep 2006 11:47:41 -0000	1.1
+++ NewFastMCTrackFactoryTest.java	28 Oct 2006 00:48:55 -0000	1.2
@@ -1,5 +1,5 @@
 /**
- * @version $Id: NewFastMCTrackFactoryTest.java,v 1.1 2006/09/10 11:47:41 jstrube Exp $
+ * @version $Id: NewFastMCTrackFactoryTest.java,v 1.2 2006/10/28 00:48:55 jstrube Exp $
  */
 package org.lcsim.contrib.JanStrube.tracking;
 
@@ -49,7 +49,7 @@
         SpaceVector momentum = new CartesianVector(-18.58944945449937, 4.932838972376678, -8.631586722626338);
         SpacePoint refPoint = new SpacePoint();
         Track t = fac.getTrack(momentum, position, refPoint, -1, new Random(), false);
-        SpacePoint track_momentum = EMap.Parameters2Momentum(t.getParameters());
+        SpacePoint track_momentum = LCIOTrackParameters.Parameters2Momentum(t.getParameters());
 //        assertEquals(momentum.theta(), track_momentum.theta());
         HelixSwimmer swimmer = new HelixSwimmer(5);
         swimmer.setTrack(t);
@@ -57,7 +57,7 @@
         double alpha = swimmer.getTrackLengthToPoint(position);
         SpacePoint newPos = swimmer.getPointAtLength(alpha);
         SpacePoint newMom = swimmer.getMomentumAtLength(alpha);
-        assertEquals(t.getPosition(), EMap.Parameters2Position(t.getParameters(), refPoint), 1e-10);
+        assertEquals(t.getPosition(), LCIOTrackParameters.Parameters2Position(t.getParameters(), refPoint), 1e-10);
 	assertEquals(newPos, position, 1e-10);
 	assertEquals(newMom, momentum, 1e-10);
     }

lcsim/test/org/lcsim/contrib/JanStrube/tracking
EMapTest.java removed after 1.2
diff -N EMapTest.java
--- EMapTest.java	14 Oct 2006 08:45:24 -0000	1.2
+++ /dev/null	1 Jan 1970 00:00:00 -0000
@@ -1,82 +0,0 @@
-package org.lcsim.contrib.JanStrube.tracking;
-
-import org.lcsim.contrib.JanStrube.tracking.Track.ParameterName;
-import org.lcsim.spacegeom.CartesianPoint;
-import org.lcsim.spacegeom.CartesianVector;
-import org.lcsim.spacegeom.SpacePoint;
-import org.lcsim.spacegeom.SpaceVector;
-
-import junit.framework.TestCase;
-
-public class EMapTest extends TestCase {
-
-	protected void setUp() throws Exception {
-		super.setUp();
-	}
-
-	protected void tearDown() throws Exception {
-		super.tearDown();
-	}
-
-	public void testParameterConversion() {
-	    SpacePoint pos = new CartesianPoint(3, 2, 1);
-	    SpaceVector mom = new CartesianVector(4, 20, -9);
-	    SpacePoint ref1 = new SpacePoint();
-	    SpacePoint ref2 = new CartesianPoint(-1, -2, -30);
-	    for (int charge=-2; charge<3; charge++) {
-    		for (double field=-5; field<5.1; field += 0.5) {
-    			EMap parms = EMap.SpaceMomentum2Parameters(pos, mom, pos, charge, field);
-    			assertEquals(pos, EMap.Parameters2Position(parms, pos));
-    			assertEquals(mom, EMap.Parameters2Momentum(parms));
-    		}
-	    }
-	}
-	
-	// Test the conversion on some easily predefined geometries
-	public void testCircle() {
-	    double field = -1.;
-	    SpacePoint location = new CartesianPoint(1, 0, 0);
-	    SpaceVector mom = new CartesianVector(0, -1, 1);
-	    SpacePoint zero = new SpacePoint();
-	    EMap params = EMap.SpaceMomentum2Parameters(location, mom, zero, 1, field);
-	    assertEquals(params.pt, 1.0);
-	    assertEquals(params.get(ParameterName.z0), 0.0);
-	    assertEquals(params.get(ParameterName.d0), 1.0);
-	    assertEquals(mom, EMap.Parameters2Momentum(params));
-	    assertEquals(location, EMap.Parameters2Position(params, zero));
-
-	    // The reference point has to be on the y axis
-	    SpacePoint refPoint = new CartesianPoint(-20, 0, -60);
-	    EMap params2 = EMap.SpaceMomentum2Parameters(location, mom, refPoint, -1, -field); 
-    	
-	    assertEquals(params2.pt, 1.0);
-	    assertEquals(params2.get(ParameterName.z0), 60.0);
-	    assertEquals(params2.get(ParameterName.d0), -(refPoint.x()-1.0));
-	    assertEquals(mom, EMap.Parameters2Momentum(params2));
-	    assertEquals(location, EMap.Parameters2Position(params2, refPoint));
-	}
-
-	// test a bit more complicated Geometry
-	public void testConversion() {
-	    double field = -7.2;
-	    int charge = 13;
-	    SpacePoint location = new CartesianPoint(3.6, 4.7, 2.9);
-	    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);
-	    EMap params = EMap.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 = EMap.Parameters2Momentum(params);
-	    SpacePoint newPos = EMap.Parameters2Position(params, refPoint);
-	    assertEquals(newMom, mom);
-	    assertEquals(newPos, location);
-	}
-
-
-	void assertEquals(SpacePoint a, SpacePoint b) {
-	        assertEquals(a.x(), b.x(), 1e-10);
-	        assertEquals(a.y(), b.y(), 1e-10);
-	        assertEquals(a.z(), b.z(), 1e-10);	
-	}
-}

lcsim/src/org/lcsim/contrib/JanStrube/zvtop
ZvUtil.java 1.1 -> 1.2
diff -u -r1.1 -r1.2
--- ZvUtil.java	9 Oct 2006 17:25:27 -0000	1.1
+++ ZvUtil.java	28 Oct 2006 00:48:55 -0000	1.2
@@ -2,6 +2,7 @@
 
 import java.util.Collection;
 
+import org.lcsim.contrib.JanStrube.tracking.LCIOTrackParameters;
 import org.lcsim.contrib.JanStrube.tracking.HelixSwimmer;
 import org.lcsim.contrib.JanStrube.tracking.Track;
 import org.lcsim.geometry.Detector;
@@ -24,7 +25,7 @@
 /**
  * Repository of utility functions
  * @author jstrube
- * @version $Id: ZvUtil.java,v 1.1 2006/10/09 17:25:27 jstrube Exp $
+ * @version $Id: ZvUtil.java,v 1.2 2006/10/28 00:48:55 jstrube Exp $
  */
 final class ZvUtil {
 
@@ -117,8 +118,8 @@
      */
     public static SpaceVector getUnitTangent(double[] hlxPar)
     {
-        int tanLambda = Track.ParameterName.tanLambda.ordinal();
-        int phi = Track.ParameterName.phi0.ordinal();
+        int tanLambda = LCIOTrackParameters.ParameterName.tanLambda.ordinal();
+        int phi = LCIOTrackParameters.ParameterName.phi0.ordinal();
         double norm = Math.sqrt(1.+hlxPar[tanLambda]*hlxPar[tanLambda]);
         double x = Math.cos(hlxPar[phi])/norm;
         double y = Math.sin(hlxPar[phi])/norm;
CVSspam 0.2.8