THelix
class description - source file - inheritance tree
    protected:
      Double_t FindClosestPhase(Double_t phi0, Double_t cosine)
          void SetRotMatrix()
    public:
                 THelix THelix(Double_t x, Double_t y, Double_t z, Double_t vx, Double_t vy, Double_t vz, Double_t w)
                 THelix THelix(Double_t* xyz, Double_t* v, Double_t w, Double_t* range = 0, EHelixRangeType rtype = kHelixZ, Double_t* axis = 0)
                 THelix THelix()
                 THelix THelix(const THelix& helix)
           virtual void ~THelix()
                TClass* Class()
           virtual void Copy(TObject& helix)
           virtual void Draw(Option_t* option)
      virtual Option_t* GetOption() const
        virtual TClass* IsA() const
           virtual void Paint(Option_t* option)
           virtual void Print(Option_t* option)
           virtual void SavePrimitive(ofstream& out, Option_t* option)
           virtual void SetAxis(Double_t x, Double_t y, Double_t z)
           virtual void SetAxis(Double_t* axis)
                   void SetHelix(Double_t* xyz, Double_t* v, Double_t w, Double_t* range = 0, EHelixRangeType type = kUnchanged, Double_t* axis = 0)
           virtual void SetOption(Option_t* option)
           virtual void SetRange(Double_t r1, Double_t r2, EHelixRangeType rtype = kHelixZ)
           virtual void SetRange(Double_t* range, EHelixRangeType rtype = kHelixZ)
           virtual void ShowMembers(TMemberInspector& insp, char* parent)
           virtual void Sizeof3D() const
           virtual void Streamer(TBuffer& b)
    protected:
          Double_t fX0        Initial X position
          Double_t fY0        Initial Y position
          Double_t fZ0        Initial Z position
          Double_t fVt        Transverse velocity (constant of motion)
          Double_t fPhi0      Initial phase, so vx0 = fVt*cos(fPhi0)
          Double_t fVz        Z velocity (constant of motion)
          Double_t fW         Angular frequency
          Double_t fAxis[3]   Direction unit vector of the helix axis
       TRotMatrix* fRotMat    Rotation matrix: axis // z  -->  axis // fAxis
          Double_t fRange[2]  Range of helix parameter t
      static Int_t fgMinNSeg  minimal number of segments in polyline
 Helix is, hmmm, well, a helix.  It has 3 different constructors.
 Comments/suggestions/etc on this class should be sent to the author:
             pyeh@cdfsga.fnal.gov (Ping Yeh)
   If a particle with charge q passes through a point (x,y,z)
   with momentum (px,py,pz) with magnetic field B along an axis (nx,ny,nz),
   this helix can be constrcuted like
      THelix p(x0,y0,z0, px,py,pz, q*B, nx,ny,nz);
     (nx,ny,nz) defaults to (0,0,1).
   A helix in its own frame can be defined with initial position
   (x0,y0,z0) and "velocity" (vx0,vy0,vz0), both 3-vectors, and
   an angular frequency w.  The parametric equation of the helix is
    x = x0 - vt / w * sin(-w * t + phi0)
    y = y0 + vt / w * cos(-w * t + phi0)
    z = z0 + vz * t
   The 'normal constructor' has 6 parameters,
       Example:
                 THelix pl1(xyz0, v0, w, range, rtype, axis);
         where:
             xyz0  : array of initial position
             v0    : array of initial velocity
             w     : angular frequency
             range : helix range
             rtype : kHelixZ specifies allowed drawing range in helix Z direction, i.e., along B field.
                     kLabZ specifies drawing range in lab frame.
                     kHelixX, kHelixY, kLabX, kLabY, kUnchanged ... etc can also be specified
             axis  : helix axis
 A Third constructor uses several default values:
       Example:
   c1 = new TCanvas("c1");
   TView *view = new TView(1);
   view->SetRange(-1,-1,-1,1,1,1);
   THelix *helix = new THelix(0.0, 0.0, 0.0, 1.0, 0.0, 0.3, 10.0);
   helix->Draw();
 will initializes a helix with its axis in Z direction (rtype=kHelixZ).
 range[0] = 0 and range[1] = 1
______________________________________________________________________________
void SetHelix(Double_t *p,  Double_t *v,  Double_t w,
                       Double_t *range, EHelixRangeType rType,
                       Double_t *axis )
 Set all helix parameters.
 THelix()
 Helix default constructor.
 THelix(Double_t x,  Double_t y,  Double_t z,
               Double_t vx, Double_t vy, Double_t vz,
               Double_t w)
        : TPolyLine3D()
 Helix normal constructor.
 THelix(Double_t * p, Double_t * v, Double_t w,
               Double_t * range, EHelixRangeType rType, Double_t * axis)
        : TPolyLine3D()
 Helix normal constructor.
  THelix(const THelix &h) : TPolyLine3D()
 Helix copy constructor.
 ~THelix()
 Helix destructor.
 THelix(const THelix &helix)
void Copy(TObject &obj)
 Copy this helix to obj.
void Draw(Option_t *option)
 Draw this helix with its current attributes.
void Print(Option_t *option)
 Dump this helix with its attributes.
void SavePrimitive(ofstream &out, Option_t *)
 Save primitive as a C++ statement(s) on output stream out.
void SetAxis(Double_t * axis)
 Set a new axis for the helix.  This will make a new rotation matrix.
void SetAxis(Double_t x, Double_t y, Double_t z)
void SetRange(Double_t * range, EHelixRangeType rType)
 set a new range for the helix.  This will remake the polyline.
void SetRange(Double_t r1, Double_t r2, EHelixRangeType rType)
void Sizeof3D() const
 Return total X3D size of this shape with its attributes.
void SetRotMatrix()
 set the rotational matrix according to the helix axis
Double_t FindClosestPhase(Double_t phi0,  Double_t cosine)
 Finds the closest phase to phi0 that gives cos(phase) = cosine
Inline Functions
          Option_t* GetOption() const
               void Paint(Option_t* option)
               void SetOption(Option_t* option)
            TClass* Class()
            TClass* IsA() const
               void ShowMembers(TMemberInspector& insp, char* parent)
               void Streamer(TBuffer& b)
Author:     Ping Yeh   19/12/97
Last update:   2.20/05 17/04/99  07.50.09  by  Rene Brun
Copyright (c) 1995-1999, The ROOT System, All rights reserved.         *
ROOT page - Class index - Top of the page
This page has been automatically generated. If you have any comments or suggestions about the page layout send a mail to ROOT support, or contact the developers with any questions or problems regarding ROOT.