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();
+}
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;
// 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
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;
// 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]);
}
// 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];
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;
*****************************************************************************/
#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;
}
//
}
+
+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();
+}
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;}
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 {
}
-// //____________________________________________________________________________
-// 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()
{
}
-//____________________________________________________________________________
-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
{
//_____________________________________________________________________________
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();
}
//_____________________________________________________________________________
};
+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