]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - TOF/AliTOFtrack.cxx
c Version 1.38
[u/mrichter/AliRoot.git] / TOF / AliTOFtrack.cxx
index 85290531aa2015a6cab38070b07c68aa91edce6d..104c5e3831fd9ad5d80ba7f41fc57dd63ea509f6 100644 (file)
@@ -28,7 +28,6 @@
 #include "AliESDtrack.h" 
 #include "AliTracker.h" 
 
-#include "AliTOFGeometryV5.h"
 #include "AliTOFGeometry.h"
 #include "AliTOFtrack.h" 
 
@@ -38,8 +37,7 @@ ClassImp(AliTOFtrack)
 AliTOFtrack::AliTOFtrack() : 
   AliKalmanTrack(),
   fSeedInd(-1),
-  fSeedLab(-1),
-  fTOFgeometry(0)
+  fSeedLab(-1)
 {
   //
   // Default constructor.
@@ -50,8 +48,7 @@ AliTOFtrack::AliTOFtrack() :
 AliTOFtrack::AliTOFtrack(const AliTOFtrack& t) : 
   AliKalmanTrack(t),
   fSeedInd(t.fSeedInd),
-  fSeedLab(t.fSeedLab),
-  fTOFgeometry(new AliTOFGeometryV5()) 
+  fSeedLab(t.fSeedLab) 
 {
   //
   // Copy constructor.
@@ -62,8 +59,7 @@ AliTOFtrack::AliTOFtrack(const AliTOFtrack& t) :
 AliTOFtrack::AliTOFtrack(const AliESDtrack& t) :
   AliKalmanTrack(), 
   fSeedInd(-1),
-  fSeedLab(-1),
-  fTOFgeometry(new AliTOFGeometryV5()) 
+  fSeedLab(-1) 
 {
   //
   // Constructor from AliESDtrack
@@ -82,27 +78,31 @@ AliTOFtrack::AliTOFtrack(const AliESDtrack& t) :
 }              
 
 //____________________________________________________________________________
-AliTOFtrack& AliTOFtrack::operator=(const AliTOFtrack &source)
+AliTOFtrack& AliTOFtrack::operator=(const AliTOFtrack &/*source*/)
 {
   // ass. op.
 
-  this->fTOFgeometry=source.fTOFgeometry;
   return *this;
 
 }
 
 //_____________________________________________________________________________
 Bool_t AliTOFtrack::PropagateTo(Double_t xk,Double_t x0,Double_t rho)
-{
+ {
+  //
   // Propagates a track of particle with mass=pm to a reference plane 
   // defined by x=xk through media of density=rho and radiationLength=x0
+  //
 
   if (xk == GetX()) return kTRUE;
   
   Double_t oldX=GetX(), oldY=GetY(), oldZ=GetZ();
 
-  Double_t bz=GetBz();
-  if (!AliExternalTrackParam::PropagateTo(xk,bz)) return kFALSE;
+  Double_t b[3];GetBxByBz(b);
+  if (!AliExternalTrackParam::PropagateToBxByBz(xk,b)) return kFALSE;
+  // OLD used code
+  //Double_t bz=GetBz();
+  //if (!AliExternalTrackParam::PropagateTo(xk,bz)) return kFALSE;
 
   Double_t d = TMath::Sqrt((GetX()-oldX)*(GetX()-oldX) + 
                            (GetY()-oldY)*(GetY()-oldY) + 
@@ -134,9 +134,9 @@ Bool_t AliTOFtrack::PropagateToInnerTOF()
   // defined by x=xk through media of density=rho and radiationLength=x0
 
 
-  Double_t ymax=fTOFgeometry->RinTOF()*TMath::Tan(0.5*AliTOFGeometry::GetAlpha());
+  Double_t ymax=AliTOFGeometry::RinTOF()*TMath::Tan(0.5*AliTOFGeometry::GetAlpha());
   Bool_t skip = kFALSE;
-  Double_t y=GetYat(fTOFgeometry->RinTOF(),skip);
+  Double_t y=GetYat(AliTOFGeometry::RinTOF(),skip);
   if (skip) {
     return kFALSE;
   }
@@ -152,7 +152,7 @@ Bool_t AliTOFtrack::PropagateToInnerTOF()
   
   
   Double_t x = GetX();
-  Int_t nsteps=Int_t((370.-x)/0.5); // 0.5 cm Steps
+  Int_t nsteps=Int_t((AliTOFGeometry::Rmin()-x)/0.5); // 0.5 cm Steps
   for (Int_t istep=0;istep<nsteps;istep++){
     Float_t xp = x+istep*0.5; 
     Double_t param[2];  
@@ -161,12 +161,43 @@ Bool_t AliTOFtrack::PropagateToInnerTOF()
     
   }
   
-  if(!PropagateTo(fTOFgeometry->RinTOF()))return 0;
+  if(!PropagateTo(AliTOFGeometry::RinTOF()))return 0;
   
   return kTRUE;
   
 }     
 
+//_________________________________________________________________________
+Double_t AliTOFtrack::GetPredictedChi2(const AliCluster3D *c) const {
+  //
+  // Estimate the chi2 of the space point "c" with its cov. matrix elements
+  //
+
+  Double_t p[3]={c->GetX(), c->GetY(), c->GetZ()};
+  Double_t covyz[3]={c->GetSigmaY2(), c->GetSigmaYZ(), c->GetSigmaZ2()};
+  Double_t covxyz[3]={c->GetSigmaX2(), c->GetSigmaXY(), c->GetSigmaXZ()};
+  return AliExternalTrackParam::GetPredictedChi2(p, covyz, covxyz);
+}
+//_________________________________________________________________________
+Bool_t AliTOFtrack::PropagateTo(const AliCluster3D *c) {
+  //
+  // Propagates a track to the plane containing cluster 'c'
+  //
+  Double_t oldX=GetX(), oldY=GetY(), oldZ=GetZ();
+  Double_t p[3]={c->GetX(), c->GetY(), c->GetZ()};
+  Double_t covyz[3]={c->GetSigmaY2(), c->GetSigmaYZ(), c->GetSigmaZ2()};
+  Double_t covxyz[3]={c->GetSigmaX2(), c->GetSigmaXY(), c->GetSigmaXZ()};
+  Double_t bz=GetBz();
+  if (!AliExternalTrackParam::PropagateTo(p, covyz, covxyz, bz)) return kFALSE;
+  if (IsStartedTimeIntegral()) {
+    Double_t d = TMath::Sqrt((GetX()-oldX)*(GetX()-oldX) +
+                            (GetY()-oldY)*(GetY()-oldY) +
+                            (GetZ()-oldZ)*(GetZ()-oldZ));
+    if (GetX()<oldX) d=-d;
+    AddTimeStep(d);
+  }
+  return kTRUE;
+}
 //_________________________________________________________________________
 Double_t AliTOFtrack::GetYat(Double_t xk, Bool_t & skip) const {     
 //-----------------------------------------------------------------
@@ -191,14 +222,6 @@ Int_t AliTOFtrack::Compare(const TObject *o) const {
   return 0;
 }
 
-Double_t AliTOFtrack::GetBz() const {
-  //
-  // returns Bz component of the magnetic field (kG)
-  //
-  if (AliTracker::UniformField()) return AliTracker::GetBz();
-  Double_t r[3]; GetXYZ(r);
-  return AliTracker::GetBz(r);
-}
 
 //_____________________________________________________________________________
 void AliTOFtrack::GetPropagationParameters(Double_t *param) {