ROOT logo
AliRoot » TRD » AliTRDtrackerV1::AliTRDtrackFitterRieman

class AliTRDtrackerV1::AliTRDtrackFitterRieman


Track finder

Authors:
Alex Bercuci <A.Bercuci@gsi.de>
Markus Fasel <M.Fasel@gsi.de>


Function Members (Methods)

Data Members

private:
TMatrixD*fCovarPolYPolynomial Covariance Matrix Estimation (y-direction)
TMatrixD*fCovarPolZPolynomial Covariance Matrix Estimation (z-direction)
Double_tfParameters[5]Track Model Parameter
Double_tfSumPolY[5]Sums for polynomial Covariance Matrix Estimation (y-direction)
Double_tfSumPolZ[3]Sums for polynomial Covariance Matrix Estimation (z-direction)
Double_tfSysClusterErrorSystematic cluster Error
TLinearFitter*fTrackFitterFitter for linearized track model
AliTRDseedV1*fTracklets[6]Tracklet container
Double_tfXrefReference x position for fit in z-Direction
AliTRDtrackerV1::AliTRDLeastSquare*fZfitterLinear fitter in z-Direction

Class Charts

Inheritance Chart:
AliTRDtrackerV1::AliTRDtrackFitterRieman

Function documentation

AliTRDtrackFitterRieman()
 Default constructor

~AliTRDtrackFitterRieman()
 Destructor

void Reset()
 Reset the Fitter

void SetTracklet(Int_t il, AliTRDseedV1 *const tracklet)
 Add tracklet into the fitter

Double_t Eval()
 Perform the fit
 1. Apply linear transformation and store points in the fitter
 2. Evaluate the fit
 3. Check if the result of the fit in z-direction is reasonable
 if not
 3a. Fix the parameters 3 and 4 with the results of a simple least
     square fit
 3b. Redo the fit with the fixed parameters
 4. Store fit results (parameters and errors)

void UpdateFitters(const AliTRDseedV1 *const tracklet)
 Does the transformations and updates the fitters
 The following transformation is applied

Bool_t CheckAcceptable(Double_t offset, Double_t slope)
 Check whether z-results are acceptable
 Definition: Distance between tracklet fit and track fit has to be
 less then half a padlength
 Point of comparision is at the anode wire

Double_t GetYat(Double_t x) const
 Calculate y position out of the track parameters
 y:     R^2 = (x - x0)^2 + (y - y0)^2
     =>   y = y0 +/- Sqrt(R^2 - (x - x0)^2)
          R = Sqrt() = 1/Curvature
     =>   y = y0 +/- Sqrt(1/Curvature^2 - (x - x0)^2)

Double_t GetZat(Double_t x) const
 Return z position for a given x position
 Simple linear function

Double_t GetDyDxAt(Double_t x) const
 Calculate dydx at a given radial position out of the track parameters
 dy:      R^2 = (x - x0)^2 + (y - y0)^2
     =>     y = +/- Sqrt(R^2 - (x - x0)^2) + y0
     => dy/dx = (x - x0)/Sqrt(R^2 - (x - x0)^2)
 Curvature: cr = 1/R = a/Sqrt(1 + b^2 - c*a)
     => dy/dx =  (x - x0)/(1/(cr^2) - (x - x0)^2)

Double_t GetCurvature() const
 Calculate track curvature


void GetCovAt(Double_t x, Double_t* cov) const
 Error Definition according to gauss error propagation

Double_t CalculateReferenceX()
 Calculates the reference x-position for the tilted Rieman fit defined as middle
 of the stack (middle between layers 2 and 3). For the calculation all the tracklets
 are taken into account

 Parameters:	- Array of tracklets(AliTRDseedV1)

 Output:		- The reference x-position(Float_t)

AliTRDLeastSquare& operator=(const AliTRDtrackerV1::AliTRDtrackFitterRieman& )
AliTRDtrackFitterRieman()
Double_t GetDzDx() const
{ return fParameters[4]; }
void SetRiemanFitter(TLinearFitter *const fitter)
{ fTrackFitter = fitter; }
void SetSysClusterError(Double_t err)
{ fSysClusterError = err; }