]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - STEER/STEERBase/AliExternalTrackParam.h
Merge branch 'master' of http://git.cern.ch/pub/AliRoot
[u/mrichter/AliRoot.git] / STEER / STEERBase / AliExternalTrackParam.h
index ce4b033742049a49098191997d868874023622ad..d3ad96091c49d18adfb81d8fd8419f028aaea5cd 100644 (file)
@@ -45,10 +45,12 @@ class AliExternalTrackParam: public AliVTrack {
                        Double_t cv[21],Short_t sign);
   virtual ~AliExternalTrackParam(){}
   void CopyFromVTrack(const AliVTrack *vTrack);
-
+  
   template <typename T>
   void Set(T x, T alpha, const T param[5], const T covar[15]) {
     //  Sets the parameters
+    if      (alpha < -TMath::Pi()) alpha += 2*TMath::Pi();
+    else if (alpha >= TMath::Pi()) alpha -= 2*TMath::Pi();
     fX=x; fAlpha=alpha;
     for (Int_t i = 0; i < 5; i++)  fP[i] = param[i];
     for (Int_t i = 0; i < 15; i++) fC[i] = covar[i];
@@ -68,7 +70,8 @@ class AliExternalTrackParam: public AliVTrack {
 
   const Double_t *GetParameter() const {return fP;}
   const Double_t *GetCovariance() const {return fC;}
-
+  virtual  Bool_t IsStartedTimeIntegral() const {return kFALSE;}
+  virtual  void   AddTimeStep(Double_t ) {} // dummy method, real stuff is done in AliKalmanTrack
   Double_t GetAlpha() const {return fAlpha;}
   Double_t GetX() const {return fX;}
   Double_t GetY()    const {return fP[0];}
@@ -183,7 +186,9 @@ class AliExternalTrackParam: public AliVTrack {
   Double_t *GetResiduals(Double_t *p,Double_t *cov,Bool_t updated=kTRUE) const;
   Bool_t Update(Double_t p[2],Double_t cov[3]);
   Bool_t Rotate(Double_t alpha);
+  Bool_t Invert();
   Bool_t PropagateTo(Double_t x, Double_t b);
+  Bool_t PropagateParamOnlyTo(Double_t xk, Double_t b);
   Bool_t Propagate(Double_t alpha, Double_t x, Double_t b);
   Bool_t PropagateBxByBz(Double_t alpha, Double_t x, Double_t b[3]);
   void   Propagate(Double_t len,Double_t x[3],Double_t p[3],Double_t bz) const;
@@ -212,6 +217,8 @@ class AliExternalTrackParam: public AliVTrack {
   Bool_t GetZAt(Double_t x,  Double_t b,  Double_t &z) const;
   void Print(Option_t* option = "") const;
   Double_t GetSnpAt(Double_t x,Double_t b) const;
+  Bool_t GetXatLabR(Double_t r,Double_t &x, Double_t bz, Int_t dir=0) const;
+  Bool_t GetXYZatR(Double_t xr,Double_t bz, Double_t *xyz=0, Double_t* alpSect=0) const;
 
   //Deprecated
   Bool_t CorrectForMaterial(Double_t d, Double_t x0, Double_t mass,
@@ -242,7 +249,7 @@ class AliExternalTrackParam: public AliVTrack {
  private:
   Double_t &Par(Int_t i) {return fP[i];}
   Double_t &Cov(Int_t i) {return fC[i];}
- private:
+ protected:
   Double32_t           fX;     // X coordinate for the point of parametrisation
   Double32_t           fAlpha; // Local <-->global coor.system rotation angle
   Double32_t           fP[5];  // The track parameters