hep.lcd.util.swim
Class HelixSwim

java.lang.Object
  |
  +--hep.lcd.util.swim.HelixSwim

public class HelixSwim
extends Object

Given a particle of initial momentum, position and charge (p, r0 and iq), calculates its trajectory in a uniform magnetic field in the z-direction. The trajectory is parametrized as function of the path length alpha.
This implementation works for charged and neutral particles alike. Note: This class has been specifically adapted to the unique LCD tracking coordinate system. (Inverted sign of curvatures.)

Version:
$Id: HelixSwim.java,v 1.2 2001/06/18 22:39:12 walkowia Exp $
Author:
W.Walkowiak
Source Code:
HelixSwim.java

Field Summary
static double PTINY
          public static constants
 
Constructor Summary
HelixSwim(double B)
          Create a helix swimmmer.
HelixSwim(double B, double[] p, double[] r0, int iq)
          Create and initialize a helix swimmmer.
HelixSwim(double B, double rhoMin, double rhoMax, double zMax)
          Create a helix swimmmer set B field and cylindrical geometry parallel to z-axis.
 
Method Summary
 Vector asPoints(double alphaMax)
          Provide points along the particle's track within cylindrical volume.
 double getCosL()
          report cos lambda
 double getRc()
          report the circle's radius in the rho-phi plane
 double getSinL()
          report sin lambda
 double getTanL()
          report tan lambda
 void setCurvatureFlip(boolean isFlipped)
          Flag for flipped curvature.
 void setCylinderGeometry(double rhoMin, double rhoMax, double zMax)
          Set cylindrical geometry parallel to z-axis.
 void setPointDensity(int nPoints)
          Set minimum point number on a full circle.
 void setPointDistance(double ptDist)
          Set point distance along trajectory:
 void setTrack(double[] p, double[] r0, int iq)
          Set track for helix swimmmer.
 double[] swimBy(double alpha)
          swim along this track to point at distance alpha from it's origin (in positive track direction)
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

PTINY

public static final double PTINY
public static constants
Constructor Detail

HelixSwim

public HelixSwim(double B)
Create a helix swimmmer.
Parameters:
B - field strength; uniform, solenoidal, directed along z-axis

HelixSwim

public HelixSwim(double B,
                 double rhoMin,
                 double rhoMax,
                 double zMax)
Create a helix swimmmer set B field and cylindrical geometry parallel to z-axis.
Parameters:
B - field strength; uniform, solenoidal, directed along z-axis
rhoMin - minimum radius
rhoMax - maximum radius
zMax - maximum extend in +/-z
See Also:
setCylinderGeometry(double, double, double)

HelixSwim

public HelixSwim(double B,
                 double[] p,
                 double[] r0,
                 int iq)
Create and initialize a helix swimmmer.
Parameters:
B - field strength; uniform, solenoidal, directed along z-axis
p - 3-momentum (px,py,pz)
r0 - initial position(x0,y0,z0)
iq - charge iq = q/|e| = +/-1
Method Detail

setTrack

public void setTrack(double[] p,
                     double[] r0,
                     int iq)
Set track for helix swimmmer. Note: This method is LCD specific because of the wrong curving direction of all tracks in the LCD software environment.
Parameters:
B - field strength; uniform, solenoidal, directed along z-axis
p - 3-momentum (px,py,pz)
r0 - initial position(x0,y0,z0)
iq - charge iq = q/|e| = +/-1

swimBy

public double[] swimBy(double alpha)
swim along this track to point at distance alpha from it's origin (in positive track direction)

getRc

public double getRc()
report the circle's radius in the rho-phi plane

getTanL

public double getTanL()
report tan lambda
Returns:
tangent of the dip angle lambda

getSinL

public double getSinL()
report sin lambda
Returns:
sine of the dip angle lambda

getCosL

public double getCosL()
report cos lambda
Returns:
cosine of the dip angle lambda

setPointDensity

public void setPointDensity(int nPoints)
Set minimum point number on a full circle.
Parameters:
nPoints - number of points on a full circle
See Also:
asPoints(double)

setPointDistance

public void setPointDistance(double ptDist)
Set point distance along trajectory:
Parameters:
ptDist - distance between two points
See Also:
asPoints(double)

setCylinderGeometry

public void setCylinderGeometry(double rhoMin,
                                double rhoMax,
                                double zMax)
Set cylindrical geometry parallel to z-axis.
Parameters:
rhoMin - minimum radius
rhoMax - maximum radius
zMax - maximum extend in +/-z
See Also:
asPoints(double)

asPoints

public Vector asPoints(double alphaMax)
Provide points along the particle's track within cylindrical volume.
Parameters:
alphaMax - : maximum path length along trajectory, alphaMax < 0 : alphaMax is automatically set according to the cylinders extensions.
Returns:
Vector of double[3] containing points on trajectory.
See Also:
setCylinderGeometry(double, double, double), setPointDistance(double), setPointDensity(int)

setCurvatureFlip

public void setCurvatureFlip(boolean isFlipped)
Flag for flipped curvature.
This enables us to compare this Helix with GISMO hits for example.


The LCD Group