JSFHelicalTrack
class description - source file - inheritance tree
protected:
Bool_t TestBfield()
public:
JSFHelicalTrack()
JSFHelicalTrack(Float_t* helix, Float_t* pivot, Int_t ndf = -1, Double_t chisq = 0, Double_t cl = 0, Double_t* error = 0)
JSFHelicalTrack(Float_t px, Float_t py, Float_t pz, Float_t bz, Float_t charge, Float_t x = 0, Float_t y = 0, Float_t z = 0)
JSFHelicalTrack(JSFHelixParameter hlx)
JSFHelicalTrack(JSF3DV p1, JSF3DV p2, JSF3DV p3, Double_t bfield)
JSFHelicalTrack(const JSFHelicalTrack&)
virtual ~JSFHelicalTrack()
void AddMSError(Float_t xrad, Float_t deltakappa = 0.0)
void Average(JSFHelicalTrack ht)
void ChangeSign()
static TClass* Class()
void FirstDerivative(Double_t ang, Double_t* dXdHelix)
Double_t GetAlpha()
Double_t GetBField()
JSF2DV GetCenter()
Double_t GetCharge()
Double_t GetChisq()
Double_t GetCL()
JSF3DV GetCoordinate(Double_t phi)
Double_t GetDeflectionAngle2D(JSF2DV p)
Double_t* GetHelixErrorMatrix()
JSFHelixParameter GetHelixParameter()
JSF3DV GetMomentum(Double_t phi)
Int_t GetNDF()
Double_t GetRadius()
THelix* GetTHelix(Double_t rcyl, Double_t zcyl)
Int_t IntersectOf2Circle(JSF2DV x1, Double_t r1, JSF2DV x2, Double_t r2, JSF2DV& c1, JSF2DV& c2)
Bool_t IntersectWithCylinder(JSFRPhiZ ref, JSFRPhiZ& p)
Bool_t IntersectWithCylinder(JSFRPhiZ ref, Double_t& ang)
virtual TClass* IsA() const
void MovePivot(JSF3DV pivot)
JSFHelicalTrack& operator=(const JSFHelicalTrack& p)
Int_t OriginToCylinder(Double_t Rcyl, Double_t Zcyl, Double_t& phi0, Double_t& phi1, Int_t Maxloop = 3, Double_t StartX = 0, Double_t StartY = 0)
void Print()
void SetBfield(Double_t field)
void SetErrorMatrix(Int_t ndf, Double_t chisq, Double_t cl, Double_t* emat)
void SetHelix(JSF3DV p1, JSF3DV p2, JSF3DV p3, Double_t bfield)
void SetHelix(Double_t* par)
void SetTrackByFitToCyl(Int_t npnt, JSFHitCylinder* hits, Double_t bf, Bool_t ipConstraint = kFALSE)
virtual void ShowMembers(TMemberInspector& insp, char* parent)
virtual void Streamer(TBuffer& b)
void StreamerNVirtual(TBuffer& b)
protected:
JSFHelixParameter fHelix !
JSFHelixErrorMatrix_u fError !
Bool_t fWithError ! True when error matrix is meaningfull
Double_t fChisq ! Chisq of the fit.
Double_t fCL ! Fit confidence level
Int_t fNDF ! Number of degree of freedom.
Double_t fBfield ! Solenoidal Magnetic field ( in unit of kGauss )
Double_t fAlpha ! = ( 1/c Bfield);
JSFHelicalTrack
Basic class to describe helical track
(Update)
16-October-1999 In SetHelixByFitToCyl, trial helix is determined
by using first, center, and last space points
3-October-1999 Chisq was actually chi^4 so modified.
4-October-2000 Add a member, AddMSError.
In SetTrackByFitToCyl, pivot is determined by the first SP.
$Id: JSFHelicalTrack.cxx,v 1.13 2003/02/06 07:51:24 miyamoto Exp $
JSFHelicalTrack()
JSFHelicalTrack(Float_t helix[], Float_t pivot[],
Int_t ndf, Double_t chisq, Double_t cl,
Double_t *error )
JSFHelicalTrack(Float_t px, Float_t py, Float_t pz,
Float_t bz, Float_t charge,
Float_t x, Float_t y, Float_t z)
Construct the object from momentum (px,py,pz), charge, Bz, and
starting point of the helix (x,y,z)
JSFHelicalTrack(JSFHelixParameter hlx)
JSFHelicalTrack(JSF3DV p1, JSF3DV p2, JSF3DV p3, Double_t bfield)
void SetHelix(JSF3DV p1, JSF3DV p2, JSF3DV p3, Double_t bfield)
Set HelicalTrackParameter from 3 points, p1, p2, p3, and
Magnetic field, bz. bz is in unit of kgauss.
Curvature is calculated from x and y corrdinates of p1, p2, p3
and tan-lambda is defined by z coordinates of p1 and p2.
Pivot is set to p1.
void Print()
Int_t IntersectOf2Circle(JSF2DV x1, Double_t r1, JSF2DV x2, Double_t r2,
JSF2DV &c1, JSF2DV &c2)
Calculate Intersection of Two circles, whose radius and center coordinates are
(r1,x1) and (r2,x2), and return coordinates of intersection.
Return value is a number of intersection, 0 1 or 2.
Int_t OriginToCylinder(Double_t Rcyl, Double_t Zcyl,
Double_t &Phi0, Double_t &Phi1, Int_t Maxloop,
Double_t StartX, Double_t StartY)
Calculate deflection angle from origin to the cylinder:
(Input)
Rcyl : radius of the cylinder.
Zcyl : half length of the cylynder in z direction.
Maxloop : If helix hits cylynder's end cap, number of rotation is limitted to Maxloop
instead of giving diflection angle to reach endcap.
StartX : X coordinate of start point of the helix.
StartY : Y coordinate of start point of the helix.
Bool_t IntersectWithCylinder(JSFRPhiZ ref, Double_t &fang)
Find track position at cylinder with radius refr
(Input)
ref : Track position near ref is calculated.
(Output)
deflection angle at intersection
Bool_t IntersectWithCylinder(JSFRPhiZ ref, JSFRPhiZ &p)
Find track position at cylinder with radius ref.r
(Input)
ref : Track position near ref is calculated.
(Output)
p : Track position at cylinder
p.r = ref.r and p.phi and p.z are calculated.
retun code is false, when not intersect with cylinder.
THelix* GetTHelix(Double_t rcyl, Double_t zcyl)
returns THelix object
rcyl and zcyl is a radius and a half Z length where Helix is drown.
void FirstDerivative(Double_t ang, Double_t *dXdHelix)
Calculate 1st derivative at deflection angle, ang.
Result are returned in array ans.
ans[i][j] = d(x,y,z)/d(dr, phi0, kappa, dz, tanl)
void SetTrackByFitToCyl(Int_t npnt, JSFHitCylinder *hits, Double_t bf,
Bool_t ipConstraint)
Make a helix fit to the hit points. Hit points are measurements of
cylindrical geometry. They are given by a cylindrical coordinate of (phi, z)
and its error, (dphi, dz), at radius r. Those data are given by a class,
JSFHitCylinder.
(Input)
npnt : number of hit points.
hits : space points.
bf : solenoid magnetic field (kgauss)
ipConstraint : When true, forced track to pass through IP.
(Output)
Result is given in a class data member.
(Notes)
npnt should be greater than 2.
Usage of this function would be,
JSFHelicalTrack hlx;
hlx.FitCylinderGeometry(npnt, hits, bf);
Then fitted result are saved in the object, hlx.
For input space points, hits, ri , zi, dzi, dphi are in unit of lenght (cm, etc)
phii is radian. dphi is an actually r-phi resolution in unit of length.
void ChangeSign()
Change sign of track. Helix parameter and error matrix are
modified accordingly.
void MovePivot(JSF3DV pivot)
Re-evaluate helix parameter by moving the pivot to "pivot".
void AddMSError(Float_t xrad, Float_t deltakappa)
Increase the error matrix to include the effect of
the multiple scattering in the matterinal of radiation length xrad.
deltakappa is subtracted from Kappa of helix parameter for
energy loss correction
void Average(JSFHelicalTrack ht)
(Function)
Average this HelicalTrack and ht.
This helical track parameter is updated.
Inline Functions
Bool_t TestBfield()
Double_t GetChisq()
Int_t GetNDF()
Double_t GetCL()
Double_t GetBField()
Double_t GetAlpha()
JSFHelixParameter GetHelixParameter()
Double_t* GetHelixErrorMatrix()
void SetHelix(Double_t* par)
void SetErrorMatrix(Int_t ndf, Double_t chisq, Double_t cl, Double_t* emat)
void SetBfield(Double_t field)
JSF3DV GetCoordinate(Double_t phi)
JSF2DV GetCenter()
Double_t GetRadius()
Double_t GetCharge()
JSF3DV GetMomentum(Double_t phi)
Double_t GetDeflectionAngle2D(JSF2DV p)
JSFHelicalTrack& operator=(const JSFHelicalTrack& p)
TClass* Class()
TClass* IsA() const
void ShowMembers(TMemberInspector& insp, char* parent)
void Streamer(TBuffer& b)
void StreamerNVirtual(TBuffer& b)
JSFHelicalTrack JSFHelicalTrack(const JSFHelicalTrack&)
void ~JSFHelicalTrack()
Last update: Tue Jan 20 15:55:10 2004
ROOT page - Home 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.