//
void AttachPoints(const AliTrackPointArray* points, Int_t pfirst=-1,Int_t plast=-1);
Bool_t SetFirstLast(Int_t pfirst=-1,Int_t plast=-1);
- AliTrackPointArray* GetPoints() const {return (AliTrackPointArray*)fPoints;}
+ AliTrackPointArray* GetPoints() const {return (AliTrackPointArray*)fkPoints;}
//
void SetBz(Double_t bz) {fBz = bz;}
Double_t GetBz() const {return fBz;}
+ Bool_t IsHelix() const {return fParAxis<0;}
Bool_t IsFieldON() const {return TMath::Abs(fBz)>1e-5;}
Bool_t IsTypeCosmics() const {return TestBit(kCosmicsBit);}
Bool_t IsTypeCollision() const {return !IsTypeCosmics();}
void GetResiduals(Double_t *res, Int_t ipnt) const;
void GetResiduals(Double_t *resPCA, const Double_t* xyz, const Double_t* covI=0) const;
Double_t GetPosition( Double_t *xyzPCA, const Double_t* xyz, const Double_t* covI=0) const;
- Double_t GetPosition( Double_t *xyzPCA, const AliTrackPoint *pntCovInv) const;
- void GetResiduals(Double_t *xyzPCA, const AliTrackPoint *pntCovInv) const;
+ Double_t GetPosition( Double_t *xyzPCA, const AliTrackPoint *pntCovInv,Bool_t useErr=kFALSE) const;
+ void GetResiduals(Double_t *xyzPCA, const AliTrackPoint *pntCovInv,Bool_t useErr=kFALSE) const;
void GetPosition(Double_t *xyz, Double_t t) const;
void GetPosition(Double_t *xyz, Int_t pnt) const;
void GetDirCos(Double_t *dircos, Double_t t) const;
Double_t GetPCA2PlaneInfo(Double_t *xyz, Double_t *dir=0, Int_t axis=kY, Double_t axval=0) const;
+ void GetT0Info(Double_t *xyz, Double_t *dir=0) const;
Double_t CalcChi2NDF() const;
Double_t GetChi2NDF() const {return fChi2NDF;}
Double_t GetParPCA(const double *xyz, const double *covI=0) const;
+ Double_t CalcParPCA(Int_t ipnt) const;
+ Bool_t CalcErrorMatrix();
//
void GetDResDParamsLine (Double_t *dXYZdP, const Double_t *xyz, const Double_t *covI=0) const;
void GetDResDParamsLine (Double_t *dXYZdP, Int_t ipnt) const;
Int_t GetNParams() const {return IsFieldON() ? 5:4;}
Bool_t InvertPointsCovMat();
//
- Int_t* GetElsId() const {return fElsId;}
+ Int_t* GetElsId() const {return fElsId;}
Double_t* GetElsDR() const {return fElsDR;}
//
Double_t* GetCovI(Int_t ip) const {return fCovI + ip*6;}
Double_t GetLineOffset(Int_t axis) const;
Double_t GetLineSlope(Int_t axis) const;
//
+ Bool_t IsSwitched2Line() const {return fSwitch2Line;}
Bool_t IsELossON() const {return TestBit(kELossBit)&&IsFieldON();}
Bool_t IsFitDone() const {return TestBit(kFitDoneBit);}
Bool_t IsCovInv() const {return TestBit(kCovInvBit);}
Double_t GetEps() const {return fEps;}
Double_t GetMass() const {return fMass;}
//
+ Double_t GetPt() const;
+ Double_t GetP() const;
+
+ //
+ void Switch2Line(Bool_t v=kTRUE) {fSwitch2Line = v;}
+ void SetMaxRforHelix(Double_t r) {fMaxRforHelix = r>0 ? r : 1e9;}
void SetCharge(Int_t q=1) {fCharge = q<0 ? -1:1;}
void SetELossON(Bool_t v=kTRUE) {SetBit(kELossBit,v);}
void SetTypeCosmics(Bool_t v=kTRUE) {SetBit(kCosmicsBit,v);}
//
protected:
void InitAux();
- Double_t GetMachinePrec();
Int_t ChoseParAxis() const;
Double_t GetParPCALine(const Double_t *xyz, const Double_t *covI=0) const;
Double_t GetParPCAHelix(const Double_t *xyz, const Double_t *covI=0) const;
Double_t GetDRofELoss(Double_t t,Double_t cdip,Double_t rhoL,
const Double_t *normS, Double_t &p,Double_t &e) const;
static Bool_t IsZero(Double_t v,Double_t threshold = 1e-16) {return TMath::Abs(v)<threshold; }
-
+ static Double_t GetMachinePrec();
//
protected:
- const AliTrackPointArray *fPoints; // current points
+ const AliTrackPointArray *fkPoints; // current points
AliParamSolver* fParSol; // solver for parametric linearized systems
//
Double_t fBz; // magnetic field
Int_t fIter; // real number of iterations
Double_t fEps; // precision
Double_t fMass; // assumed particle mass for ELoss Calculation
+ Bool_t fSwitch2Line; // decided to switch to line
+ Double_t fMaxRforHelix; // above this radius use straight line fit
//
const Int_t *fkAxID; // axis IDs
const Int_t *fkAxCID; // axis combinations IDs
inline Double_t* AliITSTPArrayFit::GetPoint(Int_t ip) const
{
static double xyz[3];
- xyz[kX] = fPoints->GetX()[ip];
- xyz[kY] = fPoints->GetY()[ip];
- xyz[kZ] = fPoints->GetZ()[ip];
+ xyz[kX] = fkPoints->GetX()[ip];
+ xyz[kY] = fkPoints->GetY()[ip];
+ xyz[kZ] = fkPoints->GetZ()[ip];
return &xyz[0];
}
#endif
+