12 #ifndef ROOT_TGeoHelix
13 #define ROOT_TGeoHelix
20 class TGeoHelix :
public TObject
27 Double_t fPointInit[3];
35 TGeoHelix(
const TGeoHelix&);
36 TGeoHelix &operator=(
const TGeoHelix&);
39 kHelixNeedUpdate = BIT(16),
40 kHelixStraight = BIT(17),
41 kHelixCircle = BIT(18)
45 TGeoHelix(Double_t curvature, Double_t step, Int_t charge=1);
49 void InitPoint(Double_t x0, Double_t y0, Double_t z0);
50 void InitPoint(Double_t *point);
51 void InitDirection(Double_t dirx, Double_t diry, Double_t dirz, Bool_t is_normalized=kTRUE);
52 void InitDirection(Double_t *dir, Bool_t is_normalized=kTRUE);
54 Double_t ComputeSafeStep(Double_t epsil=1E-6)
const;
55 const Double_t *GetCurrentPoint()
const {
return fPoint;}
56 const Double_t *GetCurrentDirection()
const {
return fDir;}
57 Double_t GetXYcurvature()
const {
return fC;}
58 Double_t GetStep()
const {
return fStep;}
59 Double_t GetTotalCurvature()
const;
60 Bool_t IsRightHanded()
const {
return (fQ>0)?kFALSE:kTRUE;}
63 Double_t StepToPlane(Double_t *point, Double_t *norm);
66 void SetCharge(Int_t charge);
67 void SetXYcurvature(Double_t curvature);
68 void SetField(Double_t bx, Double_t by, Double_t bz, Bool_t is_normalized=kTRUE);
69 void SetHelixStep(Double_t hstep);
71 void Step(Double_t step);
75 ClassDef(TGeoHelix, 1)