]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - TRD/AliTRDtrackV1.cxx
- data member was shadowed (fTree)
[u/mrichter/AliRoot.git] / TRD / AliTRDtrackV1.cxx
index 58dba391030fd6be9566abf1f311b33916ce7e79..7f072e68d37acba48a6d178ecbcb70fd3bdaeb7c 100644 (file)
@@ -143,7 +143,7 @@ AliTRDtrackV1::AliTRDtrackV1(const AliESDtrack &t) : AliKalmanTrack()
 }
 
 //_______________________________________________________________
-AliTRDtrackV1::AliTRDtrackV1(const AliTRDseedV1 * const trklts, const Double_t p[5], const Double_t cov[15]
+AliTRDtrackV1::AliTRDtrackV1(AliTRDseedV1 * const trklts, const Double_t p[5], const Double_t cov[15]
              , Double_t x, Double_t alpha) : AliKalmanTrack()
   ,fStatus(0)
   ,fDE(0.)
@@ -184,16 +184,20 @@ AliTRDtrackV1::AliTRDtrackV1(const AliTRDseedV1 * const trklts, const Double_t p
   Double_t mostProbablePt=AliExternalTrackParam::GetMostProbablePt();
   Double_t p0=TMath::Sign(1/mostProbablePt,pp[4]);
   Double_t w0=cc[14]/(cc[14] + p0*p0), w1=p0*p0/(cc[14] + p0*p0);
+  AliDebug(4, Form("Pt mixing : w0[%4.2f] 1/pt0[%5.3f] w1[%4.2f] 1/pt[%5.3f]", w0, 1./p0, w1, 1./pp[4]));
   pp[4] = w0*p0 + w1*pp[4];
+
+
   cc[10]*=w1; cc[11]*=w1; cc[12]*=w1; cc[13]*=w1; cc[14]*=w1;
 
        Set(x,alpha,pp,cc);
+  AliDebug(2, Form("Init @ x[%6.2f] pt[%5.3f]", x, 1./pp[4]));
   Int_t ncls = 0;
        for(int iplane=0; iplane<kNplane; iplane++){
     fTrackletIndex[iplane] = 0xffff;
                if(!trklts[iplane].IsOK()) fTracklet[iplane] = NULL;
     else{ 
-      fTracklet[iplane] = const_cast<AliTRDseedV1 *>(&trklts[iplane]);
+      fTracklet[iplane] = &trklts[iplane];
       ncls += fTracklet[iplane]->GetN();
     }
        }
@@ -543,37 +547,28 @@ Bool_t AliTRDtrackV1::PropagateTo(Double_t xk, Double_t xx0, Double_t xrho)
   // "xrho" - thickness*density    [g/cm^2] 
   // 
 
-  if (xk == GetX()) {
-    return kTRUE;
-  }
-
-  Double_t oldX = GetX();
-  Double_t oldY = GetY();
-  Double_t oldZ = GetZ();
-
-  Double_t bz   = GetBz();
-
-  if (!AliExternalTrackParam::PropagateTo(xk,bz)) {
-    return kFALSE;
-  }
-
-  Double_t x = GetX();
-  Double_t y = GetY();
-  Double_t z = GetZ();
+  if (xk == GetX()) return kTRUE;
 
-  if (oldX < xk) {
+  Double_t xyz0[3] = {GetX(), GetY(), GetZ()}, // track position BEFORE propagation 
+           b[3];    // magnetic field 
+  GetBxByBz(b);
+  if(!AliExternalTrackParam::PropagateToBxByBz(xk,b)) return kFALSE;
+  // local track position AFTER propagation 
+  Double_t xyz1[3] = {GetX(), GetY(), GetZ()};
+  if(xyz0[0] < xk) {
     xrho = -xrho;
     if (IsStartedTimeIntegral()) {
-      Double_t l2  = TMath::Sqrt((x-oldX)*(x-oldX
-                               + (y-oldY)*(y-oldY
-                               + (z-oldZ)*(z-oldZ));
-      Double_t crv = AliExternalTrackParam::GetC(bz);
+      Double_t l2  = TMath::Sqrt((xyz1[0]-xyz0[0])*(xyz1[0]-xyz0[0]
+                               + (xyz1[1]-xyz0[1])*(xyz1[1]-xyz0[1]
+                               + (xyz1[2]-xyz0[2])*(xyz1[2]-xyz0[2]));
+      Double_t crv = AliExternalTrackParam::GetC(b[3]);
       if (TMath::Abs(l2*crv) > 0.0001) {
         // Make correction for curvature if neccesary
-        l2 = 0.5 * TMath::Sqrt((x-oldX)*(x-oldX
-                             + (y-oldY)*(y-oldY));
+        l2 = 0.5 * TMath::Sqrt((xyz1[0]-xyz0[0])*(xyz1[0]-xyz0[0]
+                             + (xyz1[1]-xyz0[1])*(xyz1[1]-xyz0[1]));
         l2 = 2.0 * TMath::ASin(l2 * crv) / crv;
-        l2 = TMath::Sqrt(l2*l2 + (z-oldZ)*(z-oldZ));
+        l2 = TMath::Sqrt(l2*l2 + (xyz1[2]-xyz0[2])*(xyz1[2]-xyz0[2]));
       }
       AddTimeStep(l2);
     }
@@ -685,7 +680,6 @@ void AliTRDtrackV1::Print(Option_t *o) const
   AliInfo(Form("x[%7.2f] t[%7.4f] alpha[%f] mass[%f]", GetX(), GetIntegratedLength(), GetAlpha(), fMass));
   AliInfo(Form("Ntr[%1d] NtrPID[%1d] Ncl[%3d] lab[%3d]", GetNumberOfTracklets(), GetNumberOfTrackletsPID(), fN, fLab));
 
-  if(strcmp(o, "a")!=0) return;
   printf("|X| = (");
   const Double_t *curP = GetParameter();
   for (Int_t i = 0; i < 5; i++) printf("%7.2f ", curP[i]);
@@ -700,6 +694,7 @@ void AliTRDtrackV1::Print(Option_t *o) const
       k=-1; j--;
     }
   }
+  if(strcmp(o, "a")!=0) return;
 
   for(Int_t ip=0; ip<kNplane; ip++){
     if(!fTracklet[ip]) continue;
@@ -793,6 +788,7 @@ Bool_t  AliTRDtrackV1::Update(Double_t *p, Double_t *cov, Double_t chi2)
   //
   // Update track 
   //
+  AliDebug(2, Form("Point:\n  p=[%6.2f %6.2f]\n  V=[%6.2f %6.2f]\n    [%6.2f %6.2f]", p[0], p[1], cov[0], cov[1], cov[1], cov[2]));
   if(!AliExternalTrackParam::Update(p, cov)) return kFALSE;
 
   // Register info to track
@@ -808,7 +804,7 @@ void AliTRDtrackV1::UpdateESDtrack(AliESDtrack *track)
   // Update the TRD PID information in the ESD track
   //
 
-  Int_t nslices = fkReconstructor->IsEightSlices() ? (Int_t)AliTRDpidUtil::kNNslices : (Int_t)AliTRDpidUtil::kLQslices;
+  Int_t nslices = fkReconstructor->GetRecoParam()->IsEightSlices() ? (Int_t)AliTRDpidUtil::kNNslices : (Int_t)AliTRDpidUtil::kLQslices;
   // number of tracklets used for PID calculation
   UChar_t nPID = GetNumberOfTrackletsPID();
   // number of tracklets attached to the track