lcsim/src/org/lcsim/util/swim
diff -u -r1.21 -r1.22
--- HelixSwimmer.java 29 Apr 2010 13:41:37 -0000 1.21
+++ HelixSwimmer.java 17 Apr 2011 14:22:13 -0000 1.22
@@ -25,7 +25,7 @@
* by Paul Avery.
*
* @author jstrube
- * @version $Id: HelixSwimmer.java,v 1.21 2010/04/29 13:41:37 cassell Exp $
+ * @version $Id: HelixSwimmer.java,v 1.22 2011/04/17 14:22:13 grefe Exp $
*/
public class HelixSwimmer {
private double field;
@@ -68,6 +68,31 @@
_momentum = p;
_charge = iq;
}
+
+ /**
+ * Sets parameters for helix swimmmer.
+ *
+ * @param p
+ * 3-momentum (px,py,pz)
+ * @param r0
+ * initial position(x0,y0,z0)
+ * @param q
+ * charge q = q/|e| = +1/0/-1
+ */
+ public void setTrack(Hep3Vector p0, SpacePoint r0, double q) {
+ SpaceVector p = new CartesianVector(p0.v());
+ double phi = Math.atan2(p.y(), p.x());
+ double lambda = Math.atan2(p.z(), p.rxy());
+
+ if (q != 0 && field != 0) {
+ double radius = p.rxy() / (q * field);
+ _trajectory = new Helix(r0, radius, phi, lambda);
+ } else {
+ _trajectory = new Line(r0, phi, lambda);
+ }
+ _momentum = p;
+ _charge = q;
+ }
/**
* Sets parameters for helix swimmmer.