]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - ITS/AliITSTPArrayFit.h
warnings fixed
[u/mrichter/AliRoot.git] / ITS / AliITSTPArrayFit.h
index 5cd4385cee450ec4f9c16ef95d31292a00ad9073..d69fcf39691e43eabf5d7c4e26eea1e4c095c86e 100644 (file)
@@ -61,10 +61,11 @@ class AliITSTPArrayFit : public TObject
   //
   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();}
@@ -73,8 +74,8 @@ class AliITSTPArrayFit : public TObject
   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;
@@ -83,6 +84,7 @@ class AliITSTPArrayFit : public TObject
   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;
@@ -113,7 +115,7 @@ class AliITSTPArrayFit : public TObject
   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;}
@@ -125,6 +127,7 @@ class AliITSTPArrayFit : public TObject
   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);}
@@ -134,6 +137,12 @@ class AliITSTPArrayFit : public TObject
   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);}
@@ -154,7 +163,6 @@ class AliITSTPArrayFit : public TObject
   //
  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;
@@ -167,10 +175,10 @@ class AliITSTPArrayFit : public TObject
   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
@@ -187,6 +195,8 @@ class AliITSTPArrayFit : public TObject
   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
@@ -232,9 +242,9 @@ inline Double_t AliITSTPArrayFit::GetParPCA(const double *xyz, const double *cov
 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];
 }
 
@@ -247,3 +257,4 @@ inline Double_t AliITSTPArrayFit::Fit(Int_t extQ,Double_t extPT,Double_t extPTer
 
 
 #endif
+