Return the most probable momentum if the magnetic field is too weak and the momentum...
authorhristov <hristov@f7af4fe6-9843-0410-8265-dc069ae4e863>
Sat, 6 May 2006 20:09:18 +0000 (20:09 +0000)
committerhristov <hristov@f7af4fe6-9843-0410-8265-dc069ae4e863>
Sat, 6 May 2006 20:09:18 +0000 (20:09 +0000)
ITS/AliITStrackV2.cxx
ITS/AliITStrackV2.h
STEER/AliESDtrack.cxx
STEER/AliExternalTrackParam.cxx
STEER/AliExternalTrackParam.h
TPC/AliTPCtrack.cxx
TPC/AliTPCtrack.h
TRD/AliTRDtrack.cxx
TRD/AliTRDtrack.h

index 1ee79a2562f0a18114bdc3096a096bf46efb8c93..60834d30969a9ff5fecc2df77163e79ee2bfa672 100644 (file)
@@ -760,3 +760,13 @@ PropagateToDCA(AliKalmanTrack *p, Double_t d, Double_t x0) {
 
   return dca;
 } 
+
+Double_t AliITStrackV2::Get1Pt() const {
+  //--------------------------------------------------------------
+  // Returns the inverse Pt (1/GeV/c)
+  // (or 1/"most probable pt", if the field is too weak)
+  //--------------------------------------------------------------
+  if (TMath::Abs(GetLocalConvConst()) > kVeryBigConvConst)
+      return 1./kMostProbableMomentum/TMath::Sqrt(1.+ GetTgl()*GetTgl());
+  return (TMath::Sign(1e-9,fP4) + fP4)*GetLocalConvConst();
+}
index c416063d4a41a619a8aad431e1e2a2a5f00f7cf9..d3fa37d81beff41fd3dfc2f5c810f3cbd5d46d85 100644 (file)
@@ -65,9 +65,7 @@ public:
   Double_t GetSnp()  const {return fP2;}
   Double_t GetTgl()  const {return fP3;}
   Double_t GetC()    const {return fP4;}
-  Double_t Get1Pt() const {
-      return (TMath::Sign(1e-9,fP4) + fP4)*GetLocalConvConst();
-  }
+  Double_t Get1Pt() const;
   Double_t GetD(Double_t x=0, Double_t y=0) const;
   Double_t GetZat(Double_t x=0) const;
 
@@ -118,7 +116,8 @@ void AliITStrackV2::GetExternalParameters(Double_t& xr, Double_t x[5]) const {
   // This function return external ITS track representation
   //---------------------------------------------------------------------
      xr=fX;          
-     x[0]=GetY(); x[1]=GetZ(); x[2]=GetSnp(); x[3]=GetTgl(); x[4]=Get1Pt();
+     x[0]=GetY(); x[1]=GetZ(); x[2]=GetSnp(); x[3]=GetTgl();
+     x[4]=(TMath::Sign(1e-9,fP4) + fP4)*GetLocalConvConst();
 }
 
 inline
index d9ff234de1c6c7050596286eab438f32f9ee527f..dbb51329bda836129ae2d483983e5f4a6897fb74 100644 (file)
@@ -830,7 +830,9 @@ Bool_t AliESDtrack::RelateToVertex
   if (d > maxd) return kFALSE; 
 
   //Propagate to the DCA
-  Double_t crv=0.299792458e-3*b*GetParameter()[4];
+  Double_t crv=kB2C*b*GetParameter()[4];
+  if (TMath::Abs(b) < kAlmost0Field) crv=0.;
+
   Double_t tgfv=-(crv*x - snp)/(crv*y + TMath::Sqrt(1.-snp*snp));
   sn=tgfv/TMath::Sqrt(1.+ tgfv*tgfv);
   if (TMath::Abs(tgfv)>0.) cs = sn/tgfv;
index 15e5ced21dcc30b986766e28202cd01cd00d0f6f..5840784cdde72aa3b3f927bff547f570c293adaa 100644 (file)
@@ -91,7 +91,7 @@ Double_t AliExternalTrackParam::GetP() const {
   // This function returns the track momentum
   // Results for (nearly) straight tracks are meaningless !
   //---------------------------------------------------------------------
-  if (TMath::Abs(fP[4])<=0) return 1e+33;
+  if (TMath::Abs(fP[4])<=0) return kVeryBig;
   return TMath::Sqrt(1.+ fP[3]*fP[3])/TMath::Abs(fP[4]);
 }
 
@@ -109,6 +109,7 @@ Double_t AliExternalTrackParam::GetD(Double_t x,Double_t y,Double_t b) const {
   // with respect to a point with global coordinates (x,y)
   // in the magnetic field "b" (kG)
   //------------------------------------------------------------------
+  if (TMath::Abs(b) < kAlmost0Field) return GetLinearD(x,y);
   Double_t rp4=kB2C*b*fP[4];
 
   Double_t xt=fX, yt=fP[0];
@@ -236,6 +237,8 @@ Bool_t AliExternalTrackParam::PropagateTo(Double_t xk, Double_t b) {
   if (TMath::Abs(dx)<=0)  return kTRUE;
 
   Double_t crv=kB2C*b*fP[4];
+  if (TMath::Abs(b) < kAlmost0Field) crv=0.;
+
   Double_t f1=fP[2], f2=f1 + crv*dx;
   if (TMath::Abs(f1) >= kAlmost1) return kFALSE;
   if (TMath::Abs(f2) >= kAlmost1) return kFALSE;
index 599099704106d33fa65bd8cec1785295a6cb8158..7d42e69220e14214145099baabc27b3df8b3c1d7 100644 (file)
  *****************************************************************************/
 #include "TObject.h"
 
-const Double_t kB2C=0.299792458e-3;
 const Double_t kAlmost1=0.999;
 const Double_t kAlmost0=1e-33;
 const Double_t kVeryBig=1./kAlmost0;
 
+const Double_t kB2C=0.299792458e-3;
+const Double_t kAlmost0Field=1.e-13;
+const Double_t kVeryBigConvConst=1/kB2C/kAlmost0Field;
+const Double_t kMostProbableMomentum=0.35;
+
 class AliKalmanTrack;
 class AliStrLine;
 class AliESDVertex;
index 3a3a36950748bbe155b572a0a07636a2a6b9e597..d6733b39e26e7f795ec30237d19028935e322937 100644 (file)
@@ -740,3 +740,13 @@ void  AliTPCtrack::UpdatePoints()
   }
   //
 }
+
+Double_t AliTPCtrack::Get1Pt() const {
+  //--------------------------------------------------------------
+  // Returns the inverse Pt (1/GeV/c)
+  // (or 1/"most probable pt", if the field is too weak)
+  //--------------------------------------------------------------
+  if (TMath::Abs(GetLocalConvConst()) > kVeryBigConvConst)
+      return 1./kMostProbableMomentum/TMath::Sqrt(1.+ GetTgl()*GetTgl());
+  return (TMath::Sign(1e-9,fP4) + fP4)*GetLocalConvConst();
+}
index 3fff581633d2fbda3e00f3c5bb45c80ab4c300ed..472830825c4dda65440765ba1660b2e42c1bc047 100644 (file)
@@ -50,9 +50,7 @@ public:
   Double_t GetY()   const {return fP0;}
   Double_t GetZ()   const {return fP1;}
   Double_t GetSnp() const {return fX*fP4 - fP2;}
-  Double_t Get1Pt() const {
-    return (TMath::Sign(1e-9,fP4) + fP4)*GetLocalConvConst();
-  }
+  Double_t Get1Pt() const;
   Double_t GetTgl() const {return fP3;}
 
   Double_t GetSigmaY2() const {return fC00;}
@@ -161,7 +159,8 @@ inline
 void AliTPCtrack::GetExternalParameters(Double_t& xr, Double_t x[5]) const {
   // This function return external TPC track representation
      xr=fX;
-     x[0]=GetY(); x[1]=GetZ(); x[2]=GetSnp(); x[3]=GetTgl(); x[4]=Get1Pt();
+     x[0]=GetY(); x[1]=GetZ(); x[2]=GetSnp(); x[3]=GetTgl();
+     x[4]=(TMath::Sign(1e-9,fP4) + fP4)*GetLocalConvConst();
 }
 
 inline void AliTPCtrack::GetXYZ(Float_t r[3]) const {
index bae91573ddac120eb8a1544291def8f36bc63286..488ec45ec54d0ad3624f3b65b17ebd48376a2259 100644 (file)
@@ -420,40 +420,6 @@ AliTRDtrack &AliTRDtrack::operator=(const AliTRDtrack &t)
 
 }
 
-// //____________________________________________________________________________
-// AliTRDtrack * AliTRDtrack::MakeTrack(const AliTrackReference *ref, Double_t mass)
-// {
-//   //
-//   // Make dummy track from the track reference 
-//   // negative mass means opposite charge 
-//   //
-//   Double_t xx[5];
-//   Double_t cc[15];
-//   for (Int_t i=0;i<15;i++) cc[i]=0;
-//   Double_t x = ref->X(), y = ref->Y(), z = ref->Z();
-//   Double_t alpha = TMath::ATan2(y,x);
-//   Double_t xr = TMath::Sqrt(x*x+y*y);
-//   xx[0] = 0;
-//   xx[1] = z;
-//   xx[3] = ref->Pz()/ref->Pt();
-//   Float_t b[3];
-//   Float_t xyz[3]={x,y,z};
-//   Float_t convConst = 0;
-//   (AliKalmanTrack::GetFieldMap())->Field(xyz,b);
-//   convConst=1000/0.299792458/(1e-13 - b[2]);
-//   xx[4] = 1./(convConst*ref->Pt());
-//   if (mass<0) xx[4]*=-1.;  // negative mass - negative direction
-//   Double_t lcos = (x*ref->Px()+y*ref->Py())/(xr*ref->Pt());
-//   Double_t lsin = TMath::Sin(TMath::ACos(lcos));
-//   if (mass<0) lsin*=-1.;
-//   xx[2]   = xr*xx[4]-lsin;
-//   AliTRDcluster cl;
-//   AliTRDtrack * track = new  AliTRDtrack(&cl,100,xx,cc,xr,alpha);
-//   track->SetMass(TMath::Abs(mass));
-//   track->StartTimeIntegral();  
-//   return track;
-// }
-
 //____________________________________________________________________________
 Float_t AliTRDtrack::StatusForTOF()
 {
@@ -477,22 +443,6 @@ Float_t AliTRDtrack::StatusForTOF()
 
 }
             
-//____________________________________________________________________________
-void AliTRDtrack::GetExternalParameters(Double_t& xr, Double_t x[5]) const 
-{
-  //
-  // This function returns external TRD track representation
-  //
-
-  xr   = fX;
-  x[0] = GetY();
-  x[1] = GetZ();
-  x[2] = GetSnp();
-  x[3] = GetTgl();
-  x[4] = Get1Pt();
-
-}           
-
 //_____________________________________________________________________________
 void AliTRDtrack::GetExternalCovariance(Double_t cc[15]) const 
 {
@@ -1442,12 +1392,13 @@ Int_t AliTRDtrack::GetSector() const
 //_____________________________________________________________________________
 Double_t  AliTRDtrack::Get1Pt() const                       
 { 
-  //
-  // Returns 1 / pt
-  //
-
-  return (TMath::Sign(1e-9,fC) + fC)*GetLocalConvConst(); 
-
+  //--------------------------------------------------------------
+  // Returns the inverse Pt (1/GeV/c)
+  // (or 1/"most probable pt", if the field is too weak)
+  //--------------------------------------------------------------
+  if (TMath::Abs(GetLocalConvConst()) > kVeryBigConvConst)
+      return 1./kMostProbableMomentum/TMath::Sqrt(1.+ GetTgl()*GetTgl());
+  return (TMath::Sign(1e-9,fC) + fC)*GetLocalConvConst();
 }
 
 //_____________________________________________________________________________
index 37f958af26043db7db92aeab578c760e26723d31..535ff43468bdf7fba15fc88786c215fdf858ba35 100644 (file)
@@ -172,4 +172,15 @@ class AliTRDtrack : public AliKalmanTrack {
 
 };                     
 
+inline
+void AliTRDtrack::GetExternalParameters(Double_t& xr, Double_t x[5]) const 
+{
+  //
+  // This function returns external TRD track representation
+  //
+  xr   = fX;
+  x[0] = GetY();  x[1] = GetZ();  x[2] = GetSnp();  x[3] = GetTgl();
+  x[4] = (TMath::Sign(1e-9,fC) + fC)*GetLocalConvConst();
+}           
+
 #endif