18#define NonhomogeneousField
21#ifndef ALIKFPARTICLE_H
22#define ALIKFPARTICLE_H
27#ifdef HomogeneousField
32#ifdef NonhomogeneousField
48#ifdef HomogeneousField
49 static void SetField( Double_t Bz );
72 void Create(
const Double_t Param[],
const Double_t Cov[], Int_t Charge, Double_t mass );
74#ifdef HomogeneousField
77 KFParticle(
const AliVTrack &track, Int_t PID );
84#ifdef NonhomogeneousField
100 void SetVtxGuess( Double_t x, Double_t y, Double_t z );
108 Double_t
GetX ()
const ;
109 Double_t
GetY ()
const ;
110 Double_t
GetZ ()
const ;
111 Double_t
GetPx ()
const ;
112 Double_t
GetPy ()
const ;
113 Double_t
GetPz ()
const ;
114 Double_t
GetE ()
const ;
115 Double_t
GetS ()
const ;
116 Int_t
GetQ ()
const ;
123#ifdef NonhomogeneousField
128 const Double_t&
X ()
const {
return fP[0]; }
129 const Double_t&
Y ()
const {
return fP[1]; }
130 const Double_t&
Z ()
const {
return fP[2]; }
131 const Double_t&
Px ()
const {
return fP[3]; }
132 const Double_t&
Py ()
const {
return fP[4]; }
133 const Double_t&
Pz ()
const {
return fP[5]; }
134 const Double_t&
E ()
const {
return fP[6]; }
135 const Double_t&
S ()
const {
return fP[7]; }
136 const Int_t &
Q ()
const {
return fQ; }
146 Double_t
GetP ()
const;
147 Double_t
GetPt ()
const;
155 Double_t
GetR ()
const;
181 int GetP ( Double_t &P, Double_t &SigmaP )
const ;
182 int GetPt ( Double_t &Pt, Double_t &SigmaPt )
const ;
183 int GetEta ( Double_t &Eta, Double_t &SigmaEta )
const ;
184 int GetPhi ( Double_t &Phi, Double_t &SigmaPhi )
const ;
185 int GetMomentum ( Double_t &P, Double_t &SigmaP )
const ;
186 int GetMass ( Double_t &M, Double_t &SigmaM )
const ;
189 int GetLifeTime ( Double_t &T, Double_t &SigmaT )
const ;
190 int GetR ( Double_t &R, Double_t &SigmaR )
const ;
246 const KFParticle *ProdVtx=0, Double_t Mass=-1, Bool_t IsConstrained=0 );
268#ifdef HomogeneousField
269 void TransportToVertex(
const AliVVertex &
v );
286 Double_t &DS, Double_t &DSp )
const ;
291 Double_t &DS, Double_t &DSp )
const ;
302#ifdef HomogeneousField
312#ifdef HomogeneousField
320 Bool_t
GetDistanceFromVertexXY(
const Double_t vtx[],
const Double_t Cv[], Double_t &val, Double_t &err )
const ;
322#ifdef HomogeneousField
328#ifdef HomogeneousField
338#ifdef HomogeneousField
371#ifdef HomogeneousField
372 static Double_t GetFieldAlice();
376 void GetFieldValue(
const Double_t xyz[], Double_t B[] )
const ;
378 void Transport( Double_t dS, Double_t P[], Double_t C[] )
const ;
385#ifdef HomogeneousField
386 static Double_t fgBz;
388#ifdef NonhomogeneousField
389 float fieldRegion[10];
403#ifdef HomogeneousField
404inline void KFParticle::SetField( Double_t Bz )
855 const KFParticle *ProdVtx, Double_t Mass, Bool_t IsConstrained )
875#ifdef HomogeneousField
876inline void KFParticle::TransportToVertex(
const AliVVertex &
v )
895#ifdef HomogeneousField
898#ifdef NonhomogeneousField
905 Double_t &DS, Double_t &DSp )
const
917 const Double_t Cv[] )
const
931#ifdef HomogeneousField
957#ifdef HomogeneousField
958inline Double_t KFParticle::GetFieldAlice()
964#ifdef HomogeneousField
968 B[2] = GetFieldAlice();
972#ifdef NonhomogeneousField
976 MF->GetFieldValue( xyz, B );
981 Double_t &DS, Double_t &DSp )
const
987 Double_t &DS, Double_t &DSp )
const
989#ifdef HomogeneousField
992#ifdef NonhomogeneousField
1000#ifdef HomogeneousField
1003#ifdef NonhomogeneousField
1011#ifdef HomogeneousField
static CbmKF * Instance()
BmnNewFieldMap * GetMagneticField()
void SetProductionVertex(const KFParticleBase &Vtx)
Int_t GetPhi(Double_t &Phi, Double_t &SigmaPhi) const
const Double_t & Y() const
const Double_t & S() const
void GetDStoParticleBz(Double_t Bz, const KFParticleBase &p, Double_t &dS, Double_t &dS1) const
Double_t GetDStoPointCBM(const Double_t xyz[]) const
void AddDaughter(const KFParticleBase &Daughter)
Int_t GetLifeTime(Double_t &T, Double_t &SigmaT) const
Int_t GetEta(Double_t &Eta, Double_t &SigmaEta) const
Int_t GetDecayLength(Double_t &L, Double_t &SigmaL) const
Int_t GetR(Double_t &R, Double_t &SigmaR) const
const Double_t & Z() const
void TransportCBM(Double_t dS, Double_t P[], Double_t C[]) const
Int_t GetMomentum(Double_t &P, Double_t &SigmaP) const
void SubtractFromVertex(KFParticleBase &Vtx) const
const Double_t & E() const
Double_t & Parameter(Int_t i)
Bool_t fAtProductionVertex
Double_t GetDistanceFromVertex(const Double_t vtx[]) const
Double_t GetDStoPointBz(Double_t Bz, const Double_t xyz[]) const
void GetDStoParticleCBM(const KFParticleBase &p, Double_t &dS, Double_t &dS1) const
const Double_t & Pz() const
Double_t GetDistanceFromParticle(const KFParticleBase &p) const
void operator+=(const KFParticleBase &Daughter)
Double_t GetDeviationFromParticle(const KFParticleBase &p) const
Double_t GetCovariance(Int_t i) const
void SetVtxGuess(Double_t x, Double_t y, Double_t z)
const Double_t & Chi2() const
const Double_t & Px() const
std::vector< int > fDaughtersIds
Int_t GetMass(Double_t &M, Double_t &SigmaM) const
void TransportToProductionVertex()
void TransportBz(Double_t Bz, Double_t dS, Double_t P[], Double_t C[]) const
const Double_t & X() const
Int_t GetDecayLengthXY(Double_t &L, Double_t &SigmaL) const
Double_t GetParameter(Int_t i) const
const Double_t & Py() const
void Construct(const KFParticleBase *vDaughters[], Int_t nDaughters, const KFParticleBase *ProdVtx=0, Double_t Mass=-1, Bool_t IsConstrained=0)
void SetMassConstraint(Double_t Mass, Double_t SigmaMass=0)
Double_t GetDeviationFromVertex(const Double_t v[], const Double_t Cv[]=0) const
const Int_t & NDF() const
void ConstructGammaBz(const KFParticleBase &daughter1, const KFParticleBase &daughter2, double Bz)
void TransportToDecayVertex()
Double_t & Covariance(Int_t i)
void TransportToDS(Double_t dS)
Int_t GetPt(Double_t &Pt, Double_t &SigmaPt) const
void ConstructGamma(const KFParticle &daughter1, const KFParticle &daughter2)
void GetDStoParticleXY(const KFParticleBase &p, Double_t &DS, Double_t &DSp) const
Bool_t GetDistanceFromVertexXY(const Double_t vtx[], Double_t &val, Double_t &err) const
static void GetExternalTrackParam(const KFParticleBase &p, Double_t &X, Double_t &Alpha, Double_t P[5])
const Double_t & Px() const
void TransportToDecayVertex()
const Double_t & Pz() const
Double_t * CovarianceMatrix()
Double_t GetDeviationFromVertexXY(const Double_t v[], const Double_t Cv[]=0) const
Double_t GetTheta() const
Double_t GetDeviationFromParticleXY(const KFParticle &p) const
void SetAtProductionVertex(Bool_t b)
void GetFieldValue(const Double_t xyz[], Double_t B[]) const
void Transport(Double_t dS, Double_t P[], Double_t C[]) const
const Double_t & Y() const
const Double_t & S() const
Double_t GetErrMomentum() const
const Int_t & NDF() const
void SetProductionVertex(const KFParticle &Vtx)
const Double_t & Py() const
Double_t GetAngle(const KFParticle &p) const
Double_t GetDecayLengthXY() const
Double_t GetDeviationFromVertex(const Double_t v[], const Double_t Cv[]=0) const
Double_t GetPseudoProperDecayTime(const KFParticle &primVertex, const Double_t &mass, Double_t *timeErr2=0) const
Double_t GetErrPhi() const
void SetVtxGuess(Double_t x, Double_t y, Double_t z)
void SetMassConstraint(Double_t Mass, Double_t SigmaMass=0)
const Double_t & E() const
Double_t GetErrEta() const
void TransportToParticle(const KFParticle &p)
void TransportToDS(Double_t dS)
Double_t GetMomentum() const
Double_t GetDistanceFromVertex(const Double_t vtx[]) const
Double_t GetDeviationFromParticle(const KFParticle &p) const
Double_t & Parameter(int i)
Double_t GetDistanceFromParticleXY(const KFParticle &p) const
void SubtractFromVertex(KFParticle &v) const
Double_t GetErrDecayLength() const
Double_t GetAngleXY(const KFParticle &p) const
Double_t GetErrPy() const
Double_t GetAngleRZ(const KFParticle &p) const
const Double_t & X() const
void TransportToProductionVertex()
Double_t GetErrDecayLengthXY() const
Double_t & Covariance(int i)
Bool_t GetAtProductionVertex() const
Double_t GetDStoPoint(const Double_t xyz[]) const
void SetFieldCoeff(float c, int i)
Double_t GetErrMass() const
Double_t GetErrPx() const
const Double_t & Z() const
void SetNDaughters(int n)
Double_t GetDistanceFromParticle(const KFParticle &p) const
void GetDStoParticle(const KFParticle &p, Double_t &DS, Double_t &DSp) const
const Double_t & Chi2() const
Double_t GetCovariance(int i) const
Double_t GetParameter(int i) const
void Construct(const KFParticle *vDaughters[], int nDaughters, const KFParticle *ProdVtx=0, Double_t Mass=-1, Bool_t IsConstrained=0)
Double_t GetDecayLength() const
Double_t GetErrPt() const
void TransportToPoint(const Double_t xyz[])
void operator+=(const KFParticle &Daughter)
Double_t GetErrLifeTime() const
Double_t GetErrPz() const
Double_t GetLifeTime() const
void Create(const Double_t Param[], const Double_t Cov[], Int_t Charge, Double_t mass)
Double_t GetRapidity() const