Print

Print


Commit in lcsim/src/org/lcsim/util/swim on MAIN
HelixSwimmer.java+26-11.21 -> 1.22
Allowing non-integer charge

lcsim/src/org/lcsim/util/swim
HelixSwimmer.java 1.21 -> 1.22
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.
CVSspam 0.2.8