]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - ITS/AliITStrackV2.cxx
Various fixes in order to compile the DA source code
[u/mrichter/AliRoot.git] / ITS / AliITStrackV2.cxx
index 3377f285f33438f957a500f6f47f27d189e14850..15048d232f9c473dbaa943cd095bba8cc565bf0d 100644 (file)
 #include "AliESDtrack.h"
 #include "AliITStrackV2.h"
 
+const Int_t AliITStrackV2::fgkWARN = 5;
+
 ClassImp(AliITStrackV2)
 
-const Int_t kWARN=5;
 
 //____________________________________________________________________________
 AliITStrackV2::AliITStrackV2() : AliKalmanTrack(),
@@ -194,32 +195,32 @@ Bool_t AliITStrackV2::Invariant() const {
 
   Double_t sP2=GetParameter()[2];
   if (TMath::Abs(sP2) >= kAlmost1){
-     if (n>kWARN) Warning("Invariant","fP2=%f\n",sP2);
+     if (n>fgkWARN) Warning("Invariant","fP2=%f\n",sP2);
      return kFALSE;
   }
   Double_t sC00=GetCovariance()[0];
   if (sC00<=0 || sC00>9.) {
-     if (n>kWARN) Warning("Invariant","fC00=%f\n",sC00); 
+     if (n>fgkWARN) Warning("Invariant","fC00=%f\n",sC00); 
      return kFALSE;
   }
   Double_t sC11=GetCovariance()[2];
   if (sC11<=0 || sC11>9.) {
-     if (n>kWARN) Warning("Invariant","fC11=%f\n",sC11); 
+     if (n>fgkWARN) Warning("Invariant","fC11=%f\n",sC11); 
      return kFALSE;
   }
   Double_t sC22=GetCovariance()[5];
   if (sC22<=0 || sC22>1.) {
-     if (n>kWARN) Warning("Invariant","fC22=%f\n",sC22); 
+     if (n>fgkWARN) Warning("Invariant","fC22=%f\n",sC22); 
      return kFALSE;
   }
   Double_t sC33=GetCovariance()[9];
   if (sC33<=0 || sC33>1.) {
-     if (n>kWARN) Warning("Invariant","fC33=%f\n",sC33); 
+     if (n>fgkWARN) Warning("Invariant","fC33=%f\n",sC33); 
      return kFALSE;
   }
   Double_t sC44=GetCovariance()[14];
   if (sC44<=0 /*|| sC44>6e-5*/) {
-     if (n>kWARN) Warning("Invariant","fC44=%f\n",sC44);
+     if (n>fgkWARN) Warning("Invariant","fC44=%f\n",sC44);
      return kFALSE;
   }
 
@@ -268,7 +269,7 @@ Bool_t AliITStrackV2::Improve(Double_t x0,Double_t xyz[3],Double_t ers[3]) {
     sigma2p += Cov(0)/r2*(1.- dy*dy/r2)*(1.- dy*dy/r2);
     sigma2p += ers[1]*ers[1]/r2;
     sigma2p += 0.25*Cov(14)*cnv*cnv*GetX()*GetX();
-    Double_t eps2p=sigma2p/(Cov(2) + sigma2p);
+    Double_t eps2p=sigma2p/(Cov(5) + sigma2p);
     Par(0) += Cov(3)/(Cov(5) + sigma2p)*(parp - GetSnp());
     Par(2)  = eps2p*GetSnp() + (1 - eps2p)*parp;
     Cov(5) *= eps2p;
@@ -284,7 +285,7 @@ Bool_t AliITStrackV2::Improve(Double_t x0,Double_t xyz[3],Double_t ers[3]) {
     Par(4) += Cov(13)/(Cov(9) + sigma2l)*(parl - Par(3));
     Par(3)  = eps2l*Par(3) + (1-eps2l)*parl;
     Cov(9) *= eps2l; 
-    Cov(13)*= (eps2l/cnv/cnv)
+    Cov(13)*= eps2l
     Cov(7) *= eps2l; 
   }
   if (!Invariant()) return kFALSE;
@@ -337,3 +338,23 @@ Double_t AliITStrackV2::GetBz() const {
   return AliTracker::GetBz(r);
 }
 
+//____________________________________________________________________________
+Bool_t AliITStrackV2::
+GetPhiZat(Double_t rk, Double_t &phik, Double_t &zk) const {
+  //------------------------------------------------------------------
+  // This function returns the global cylindrical (phik,zk) of the track 
+  // position estimated at the radius rk. 
+  // The track curvature is neglected.
+  //------------------------------------------------------------------
+  Double_t d=GetD(0.,0.);
+  if (TMath::Abs(d) > rk) return kFALSE; 
+
+  Double_t r=TMath::Sqrt(GetX()*GetX() + GetY()*GetY());
+  Double_t phi=GetAlpha()+TMath::ASin(GetSnp());
+
+  phik=phi+TMath::ASin(d/rk)-TMath::ASin(d/r);
+  zk=GetZ()+GetTgl()*(TMath::Sqrt(rk*rk-d*d) - TMath::Sqrt(r*r-d*d));
+
+  return kTRUE;
+}
+