class HRungeKutta

Function Members (Methods)

public:
HRungeKutta()
HRungeKutta(const HRungeKutta&)
virtual~HRungeKutta()
static TClass*Class()
voidclear()
Bool_tfit3Hits(Double_t*, Double_t*, Double_t*, Double_t*, Float_t*, Int_t, Double_t pGuess = 999999999.)
Bool_tfit4Hits(Double_t*, Double_t*, Double_t*, Double_t*, Float_t*, Int_t, Double_t pGuess = 999999999.)
Float_tgetChi2()
Float_tgetDXtrackFirstMDCFitPos()
Float_tgetDXtrackLastMDCFitPos()
Float_tgetDYtrackFirstMDCFitPos()
Float_tgetDYtrackLastMDCFitPos()
Float_tgetDZtrackFirstMDCFitPos()
Float_tgetDZtrackLastMDCFitPos()
Double_tgetMTol()
Int_tgetNMaxMod()
Float_tgetPfit()
Float_tgetPhiSeg1()
Float_tgetPhiSeg2()
Float_tgetRSeg1()
Float_tgetRSeg2()
Float_tgetThetaSeg1()
Float_tgetThetaSeg2()
Float_tgetTrackLength()
Float_tgetXfit(Int_t iMdc)
Float_tgetXfithit(Int_t iMdc)
Float_tgetXhit(Int_t iMdc)
Float_tgetXtrackFirstMDCFitPos()
Float_tgetXtrackLastMDCFitPos()
Float_tgetXtrackOnMETA()
Float_tgetYfit(Int_t iMdc)
Float_tgetYfithit(Int_t iMdc)
Float_tgetYhit(Int_t iMdc)
Float_tgetYtrackFirstMDCFitPos()
Float_tgetYtrackLastMDCFitPos()
Float_tgetYtrackOnMETA()
Float_tgetZfit(Int_t iMdc)
Float_tgetZSeg1()
Float_tgetZSeg2()
Float_tgetZtrackFirstMDCFitPos()
Float_tgetZtrackLastMDCFitPos()
Float_tgetZtrackOnMETA()
virtual TClass*IsA() const
HRungeKutta&operator=(const HRungeKutta&)
voidsetField(HMdcTrackGField*, Float_t)
voidsetFieldFactor(Float_t fpol)
voidsetMdcPosition(Int_t, Int_t, HGeomTransform&)
voidsetMTol(Double_t tol)
virtual voidShowMembers(TMemberInspector& insp, char* parent)
virtual voidStreamer(TBuffer& b)
voidStreamerNVirtual(TBuffer& b)
voidtraceToMETA(HGeomVector&, HGeomVector&, HGeomVector*, HGeomVector*)
voidtraceToVertex(HMdcSizesCells*)
private:
voidcosines(Float_t, Float_t, Double_t*)
Bool_tdecompose(TMatrixD& lu, Double_t& sign, Double_t tol, Int_t& nrZeros)
voidderive(Double_t*, Int_t)
Float_tdistance(Double_t*, Double_t*)
Bool_tfindIntersectionPoint(Double_t*, Double_t*, Double_t*, Double_t*, Double_t*)
voidfindMdcIntersectionPoint(Double_t*, Double_t*, Int_t, Double_t*)
Bool_tfitMdc()
voidgentrkNew(Float_t, Double_t*, Double_t*, Double_t*, Int_t)
voidinitMom()
Bool_tlinSys()
voidparSetNew0(Float_t, Float_t, Int_t)
voidparSetNewVar(Float_t, Float_t)
voidrkeqfw(Double_t*, Float_t, Double_t*, Float_t*)
Float_trkgtrk(Float_t, Float_t, Double_t*, Double_t*, Int_t kind = 0)

Data Members

private:
Float_tchi2normalized chi^2 after RK-fit
Double_tdirAtFirstMDC[3]fitted direction at first MDC
Double_tdirAtLastMDC[3]fitted direction at last MDC
Float_tdpar[5]variations (momentum, xdir, ydir, xpos, ypos)
Double_tdydpar[5][8]derivatives
Double_tdzfacMdc[2][6]factor to calculate dz from dy in the first two MDC planes
HMdcTrackGField*fieldMappointer to field map
Double_tfieldScalFactfactor of the magnetic field strength
Double_tfit[4][3]hits and fitted points at mdc's
Double_tfit1h[4][3]
Double_tfit1v[4][3]fitted positions for derivatives
Double_tfitdh[4][3]
Double_tfitdp[4][3]
Double_tfitdv[4][3]
Double_tfitpar[5]fit parameters
Double_thit[4][3]
Float_tinitialStepSizeinitial RK step size
Int_tjstepstep number
Double_tmTol! tolerance for invertion of matrix (default : DBL_EPSILON)
Double_tmaxDistmaximum distance for straight line approximation
Int_tmaxNumStepsmaximum number of steps
Float_tmaxPrecisionmaximum required precision for a single step
Float_tmaxStepSizemaximum stepsize
Bool_tmdcInstalled[4][6]remembers which MDCs have known geometry
Int_tmdcLookup[4]index in mdcModules for all 4 modules
Int_tmdcModules[4]module number in hit/fit
Double_tmdcPos[4][6][3]real position of mdc's in sector coordinate system
Float_tminPrecisionminimum required precision for a single step
Float_tminStepSizeminimum stepsize
Int_tnMaxModmaximum hit module number (3 or 4)
Int_tndfnumber of degrees of freedom
Double_tnormVecMdc[4][6][3]normal vector on each Mdc module in sector coordinate system
Double_tp0Guessinitial momentum
Float_tpfitmomentum after RK-fit
Double_tphiSeg1fitted data for inner segment
Double_tphiSeg2fitted data for outer segment
Double_tpointForVertexRec[6][3]point on virtual plane in front of MDC1 used for vertex reconstruction
Float_tpolbendingpolarity of bending (field scaling factor * pfit)
Double_tposNearLastMDC[3]fitted direction at last MDC
Double_trSeg1
Double_trSeg2
Float_tresolution[8]resolution
Int_tsectorsector index
Float_tsig[8]sigmas for hit points
Float_tstepSizeAtLastMDCRK step size at last MDC
Float_tstepSizeDecfactor to decrease stepsize
Float_tstepSizeIncfactor to increase stepsize
Double_tthetaSeg1
Double_tthetaSeg2
Float_ttrackLengthtrack length
Float_ttrackLengthAtLastMDCtrack length from target to last MDC
Double_ttrackPosOnMETA[3]fitted trajectory point on META
Double_tydata[8]difference between fitted and measured hit positions
Double_tzSeg1
Double_tzSeg2

Class Charts

Inheritance Inherited Members Includes Libraries
Class Charts

Function documentation

HRungeKutta()
void clear()
 clears magnetic field definition and vertex position and direction
void setField(HMdcTrackGField* , Float_t )
 sets the field map and the scaling factor
void setMdcPosition(Int_t , Int_t , HGeomTransform& )
 sets the MDC module position in the sector coordinate system
 calculates the normal vector on the planes
Bool_t fit4Hits(Double_t* , Double_t* , Double_t* , Double_t* , Float_t* , Int_t , Double_t pGuess = 999999999.)
 Input:  position and direction of the two segments u1 and u2,
         array with multiplication factors for errors
         sector number, initial guess for momentum
 From the segments the hit positions are calculated.
 Calls fitMdc for Runge-Kutta track propagation and fitting
Bool_t fit3Hits(Double_t* , Double_t* , Double_t* , Double_t* , Float_t* , Int_t , Double_t pGuess = 999999999.)
 Input:  position and direction of the two segments u1 and u2
         array with multiplication factors for errors
         sector number, initial guess for momentum
 From the segments the hit positions are calculated.
 If the multiplication factors for errors of a hit -1, the hit is discarded.
 Calls fitMdc for Runge-Kutta track propagation and fitting
Bool_t fitMdc()
void findMdcIntersectionPoint(Double_t* , Double_t* , Int_t , Double_t* )
 calculates the hit points in the MDC module (index mdcN 0..3)
 input:  posline == pos from track piece
 input:  dirline == pos from segment
         mdcN    == module number 0..3
 output: xyz     == hit position in module
void initMom()
 Here we set initial approximation momentum value
Float_t distance(Double_t* , Double_t* )
 calculates the distance between two points
void parSetNew0(Float_t , Float_t , Int_t )
 RK propagation with initial or last fit parameters
 uv - vertical direction in MDC1
 uh - horizontal direction
void parSetNewVar(Float_t , Float_t )
 calculates the derivatives (RK propagation with parameter variations)
 uv - vertical direction
 uh - horizontal direction in MDC1
void cosines(Float_t , Float_t , Double_t* )
 calculates the direction
void derive(Double_t* , Int_t )
 calculates the derivative (hit-fit)/variation
Bool_t linSys()
 solves the system of linear equations and sets the new fitting parameters
void gentrkNew(Float_t , Double_t* , Double_t* , Double_t* , Int_t )
 propages the track through the MDC system
 p      == momentum
 upos   == initial position
 udir   == initial direction
 hitxyz == hits in chambers
 kind   == type of variation
Float_t rkgtrk(Float_t , Float_t , Double_t* , Double_t* , Int_t kind = 0)
 one step of track tracing from the position upos in the direction of udir
void rkeqfw(Double_t* , Float_t , Double_t* , Float_t* )
 calculates 2nd derivative
void traceToVertex(HMdcSizesCells* )
 propogates the track backwards from first MDC till Z=zVertex plane
 should be called only after RK-minimisation is done
void traceToMETA(HGeomVector& , HGeomVector& , HGeomVector* , HGeomVector* )
 propagates the track from the last fitted MDC position till track intersection
 with META plane (is defined by META-hit and normal vector to rod's plane
 should be called only after RK-minimisation is done
Bool_t findIntersectionPoint(Double_t* , Double_t* , Double_t* , Double_t* , Double_t* )
 upos, udir - "moving point" current position and movement direction vector
 planeR0[3] some point on the plane to which intersection is supposed to happen
 planeNorm[3] perpendicular vector to the plane
 pointIntersect[3] - output - the intersection point of "moving point" with plane
Bool_t decompose(TMatrixD& lu, Double_t& sign, Double_t tol, Int_t& nrZeros)
 THis part is copid from ROOT TDecompLU::Decompose() to get
 rid of error message!
 Crout/Doolittle algorithm of LU decomposing a square matrix, with implicit partial
 pivoting.  The decomposition is stored in fLU: U is explicit in the upper triag
 and L is in multiplier form in the subdiagionals .
 Row permutations are mapped out in fIndex. fSign, used for calculating the
 determinant, is +/- 1 for even/odd row permutations. .
HRungeKutta()
virtual ~HRungeKutta()
{}
void setFieldFactor(Float_t fpol)
{fieldScalFact = fpol;}
Float_t getPfit()
{return pfit;}
Float_t getChi2()
{return chi2/Float_t(ndf);}
Int_t getNMaxMod()
{return nMaxMod;}
Float_t getXfit(Int_t iMdc)
 fitted points on MDC in Segment Coord System, Mdc={1,2,3,4}
Float_t getYfit(Int_t iMdc)
Float_t getZfit(Int_t iMdc)
Float_t getXhit(Int_t iMdc)
 hit points on MDC (from segments) in Segment Coord System, Mdc={1,2,3,4}
Float_t getYhit(Int_t iMdc)
Float_t getXfithit(Int_t iMdc)
 difference between of fitted points and hit points
Float_t getYfithit(Int_t iMdc)
Float_t getXtrackFirstMDCFitPos()
 position and direction on first MDC after RungeKutta fit
{ return fit[0][0]; }
Float_t getYtrackFirstMDCFitPos()
{ return fit[0][1]; }
Float_t getZtrackFirstMDCFitPos()
{ return fit[0][2]; }
Float_t getDXtrackFirstMDCFitPos()
{ return dirAtFirstMDC[0]; }
Float_t getDYtrackFirstMDCFitPos()
{ return dirAtFirstMDC[1]; }
Float_t getDZtrackFirstMDCFitPos()
{ return dirAtFirstMDC[2]; }
Float_t getXtrackLastMDCFitPos()
 position and direction on last MDC after RungeKutta fit
{ return fit[nMaxMod-1][0]; }
Float_t getYtrackLastMDCFitPos()
{ return fit[nMaxMod-1][1]; }
Float_t getZtrackLastMDCFitPos()
{ return fit[nMaxMod-1][2]; }
Float_t getDXtrackLastMDCFitPos()
{ return dirAtLastMDC[0]; }
Float_t getDYtrackLastMDCFitPos()
{ return dirAtLastMDC[1]; }
Float_t getDZtrackLastMDCFitPos()
{ return dirAtLastMDC[2]; }
Float_t getXtrackOnMETA()
 position and direction on META after RungeKutta fit
{ return trackPosOnMETA[0];}
Float_t getYtrackOnMETA()
{ return trackPosOnMETA[1];}
Float_t getZtrackOnMETA()
{ return trackPosOnMETA[2];}
Float_t getTrackLength()
{ return trackLength; }
Float_t getZSeg1()
{ return zSeg1; }
Float_t getRSeg1()
{ return rSeg1; }
Float_t getThetaSeg1()
{ return thetaSeg1; }
Float_t getPhiSeg1()
{ return phiSeg1; }
Float_t getZSeg2()
{ return zSeg2; }
Float_t getRSeg2()
{ return rSeg2; }
Float_t getThetaSeg2()
{ return thetaSeg2; }
Float_t getPhiSeg2()
{ return phiSeg2; }
void setMTol(Double_t tol)
{ mTol=tol; }
Double_t getMTol()
{ return mTol; }

Last change: Sat May 22 13:12:26 2010
Last generated: 2010-05-22 13:12

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.