lcsim/src/org/lcsim/util/swim
diff -u -r1.1 -r1.2
--- JansLCIOTrackParameters.java 16 Aug 2007 21:46:45 -0000 1.1
+++ JansLCIOTrackParameters.java 26 Aug 2007 08:24:42 -0000 1.2
@@ -1,5 +1,5 @@
/**
- * @version $Id: JansLCIOTrackParameters.java,v 1.1 2007/08/16 21:46:45 jstrube Exp $
+ * @version $Id: JansLCIOTrackParameters.java,v 1.2 2007/08/26 08:24:42 jstrube Exp $
*/
package org.lcsim.util.swim;
@@ -45,7 +45,7 @@
* 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.
+ * 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
lcsim/src/org/lcsim/util/swim
diff -u -r1.1 -r1.2
--- JansHelixSwimmer.java 16 Aug 2007 21:46:45 -0000 1.1
+++ JansHelixSwimmer.java 26 Aug 2007 08:24:42 -0000 1.2
@@ -1,10 +1,13 @@
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;
@@ -22,7 +25,7 @@
* 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.1 2007/08/16 21:46:45 jstrube Exp $
+ * @version $Id: JansHelixSwimmer.java,v 1.2 2007/08/26 08:24:42 jstrube Exp $
*/
public class JansHelixSwimmer {
private double field;
@@ -60,20 +63,17 @@
_charge = iq;
}
-// public void setTrack(Track t) {
-// double r = 1 / t.getParameter(omega);
-// double phi = t.getParameter(phi0);
-// double lambda = Math.atan(t.getParameter(tanLambda));
-//
-// SpacePoint ref = t.getReferencePoint();
-// SpacePoint origin = t.getPosition();
-// _trajectory = new Helix(origin, r, phi, lambda);
-//
-// _charge = t.getCharge();
-// double pt = r * _charge * field;
-// _momentum = t.getMomentum();
-// }
-
+
+ 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) {