19 #define HomogeneousField 21 #ifndef ALIKFPARTICLE_H 22 #define ALIKFPARTICLE_H 28 #ifdef HomogeneousField 33 #ifdef NonhomogeneousField 34 class CbmKFTrackInterface;
35 class CbmKFVertexInterface;
46 #ifdef HomogeneousField 68 void Create(
const Double_t Param[],
const Double_t Cov[], Int_t Charge, Double_t mass );
70 #ifdef HomogeneousField 80 #ifdef NonhomogeneousField 81 KFParticle(CbmKFTrackInterface *Track, Double_t *z0 = 0, Int_t *qHypo = 0, Int_t *PID = 0);
95 void SetVtxGuess(Double_t x, Double_t y, Double_t z);
103 Double_t
GetX()
const;
104 Double_t
GetY()
const;
105 Double_t
GetZ()
const;
106 Double_t
GetPx()
const;
107 Double_t
GetPy()
const;
108 Double_t
GetPz()
const;
109 Double_t
GetE()
const;
110 Double_t
GetS()
const;
118 #ifdef NonhomogeneousField 119 float *GetFieldCoeff() {
return fieldRegion; }
120 void SetFieldCoeff(
float c,
int i) { fieldRegion[
i] = c; }
123 const Double_t &
X()
const {
return fP[0]; }
124 const Double_t &
Y()
const {
return fP[1]; }
125 const Double_t &
Z()
const {
return fP[2]; }
126 const Double_t &
Px()
const {
return fP[3]; }
127 const Double_t &
Py()
const {
return fP[4]; }
128 const Double_t &
Pz()
const {
return fP[5]; }
129 const Double_t &
E()
const {
return fP[6]; }
130 const Double_t &
S()
const {
return fP[7]; }
131 const Int_t &
Q()
const {
return fQ; }
141 Double_t
GetP()
const;
142 Double_t
GetPt()
const;
150 Double_t
GetR()
const;
176 int GetP(Double_t &P, Double_t &SigmaP)
const;
177 int GetPt(Double_t &Pt, Double_t &SigmaPt)
const;
178 int GetEta(Double_t &Eta, Double_t &SigmaEta)
const;
179 int GetPhi(Double_t &Phi, Double_t &SigmaPhi)
const;
180 int GetMomentum(Double_t &P, Double_t &SigmaP)
const;
181 int GetMass(Double_t &M, Double_t &SigmaM)
const;
184 int GetLifeTime(Double_t &T, Double_t &SigmaT)
const;
185 int GetR(Double_t &R, Double_t &SigmaR)
const;
238 void Construct(
const KFParticle *vDaughters[],
int nDaughters,
const KFParticle *ProdVtx =
nullptr, Double_t Mass = -1, Bool_t IsConstrained = 0);
260 #ifdef HomogeneousField 291 #ifdef HomogeneousField 301 #ifdef HomogeneousField 311 #ifdef HomogeneousField 317 #ifdef HomogeneousField 327 #ifdef HomogeneousField 352 void GetFieldValue(
const Double_t xyz[], Double_t B[])
const;
360 #ifdef HomogeneousField 366 void Transport(Double_t dS, Double_t P[], Double_t C[])
const;
372 #ifdef HomogeneousField 373 static Double_t fgBz;
375 #ifdef NonhomogeneousField 376 float fieldRegion[10];
388 #ifdef HomogeneousField 888 #ifdef HomogeneousField 908 #ifdef HomogeneousField 911 #ifdef NonhomogeneousField 940 #ifdef HomogeneousField 966 #ifdef HomogeneousField 973 #ifdef HomogeneousField 981 #ifdef NonhomogeneousField 996 #ifdef HomogeneousField 999 #ifdef NonhomogeneousField 1007 #ifdef HomogeneousField 1010 #ifdef NonhomogeneousField 1017 #ifdef HomogeneousField
void GetDStoParticleXY(const KFParticleBase &p, Double_t &DS, Double_t &DSp) const
Double_t GetDistanceFromVertex(const Double_t vtx[]) const
static Double_t GetFieldAlice()
Double_t GetDistanceFromParticle(const KFParticle &p) const
Double_t GetDecayLength() const
Double_t GetMomentum() const
void TransportToProductionVertex()
Double_t GetPseudoProperDecayTime(const KFParticle &primVertex, const Double_t &mass, Double_t *timeErr2=0) const
void TransportToDecayVertex()
Double_t GetErrPx() const
void SetMassConstraint(Double_t Mass, Double_t SigmaMass=0)
void SetProductionVertex(const KFParticle &Vtx)
const Int_t & NDF() const
Double_t GetDecayLengthXY() const
Double_t GetDeviationFromVertex(const Double_t v[], const Double_t Cv[]=0) const
Double_t GetErrPhi() const
Int_t GetMomentum(Double_t &P, Double_t &SigmaP) const
friend F32vec4 sqrt(const F32vec4 &a)
void TransportCBM(Double_t dS, Double_t P[], Double_t C[]) const
Double_t GetErrPz() const
Int_t GetPhi(Double_t &Phi, Double_t &SigmaPhi) const
void ConstructGamma(const KFParticle &daughter1, const KFParticle &daughter2)
Double_t GetDStoPointBz(Double_t Bz, const Double_t xyz[]) const
const Double_t & Pz() const
void SetVtxGuess(Double_t x, Double_t y, Double_t z)
void GetDStoParticleCBM(const KFParticleBase &p, Double_t &dS, Double_t &dS1) const
Double_t * CovarianceMatrix()
Int_t GetMass(Double_t &M, Double_t &SigmaM) const
friend F32vec4 log(const F32vec4 &a)
const Double_t & Chi2() const
const Double_t & Z() const
const Double_t & Py() const
void Transport(Double_t dS, Double_t P[], Double_t C[]) const
Double_t GetAngle(const KFParticle &p) const
void SubtractFromVertex(KFParticleBase &Vtx) const
Double_t & Covariance(int i)
Double_t GetErrLifeTime() const
void SetVtxGuess(Double_t x, Double_t y, Double_t z)
Double_t GetParameter(Int_t i) const
const Double_t & S() const
void operator+=(const KFParticleBase &Daughter)
const Double_t & Chi2() const
const Double_t & X() const
Double_t GetDStoPoint(const Double_t xyz[]) const
Double_t GetCovariance(int i) const
const Double_t & Y() const
Double_t GetErrEta() const
void TransportToPoint(const Double_t xyz[])
const Double_t & Y() const
Bool_t GetAtProductionVertex() const
Double_t GetErrMomentum() const
void TransportToProductionVertex()
Int_t GetEta(Double_t &Eta, Double_t &SigmaEta) const
Int_t GetPt(Double_t &Pt, Double_t &SigmaPt) const
void SetProductionVertex(const KFParticleBase &Vtx)
Double_t GetTheta() const
void GetDStoParticleBz(Double_t Bz, const KFParticleBase &p, Double_t &dS, Double_t &dS1) const
void SetMassConstraint(Double_t Mass, Double_t SigmaMass=0)
Int_t GetDecayLengthXY(Double_t &L, Double_t &SigmaL) const
void TransportToDS(Double_t dS)
void SubtractFromVertex(KFParticle &v) const
Double_t GetErrMass() const
Double_t GetAngleXY(const KFParticle &p) const
const Int_t & NDF() const
const Double_t & Pz() const
void SetAtProductionVertex(Bool_t b)
void SetNDaughters(int n)
Double_t GetDeviationFromVertex(const Double_t v[], const Double_t Cv[]=0) const
Double_t GetDeviationFromParticleXY(const KFParticle &p) const
const Double_t & Py() const
friend F32vec4 fabs(const F32vec4 &a)
Double_t GetCovariance(Int_t i) const
Int_t GetR(Double_t &R, Double_t &SigmaR) const
Double_t GetDeviationFromParticle(const KFParticle &p) const
void TransportToDecayVertex()
const Double_t & Px() const
Double_t GetDStoPointCBM(const Double_t xyz[]) const
Double_t GetParameter(int i) const
friend F32vec4 atan2(const F32vec4 &y, const F32vec4 &x)
const Double_t & E() const
Double_t GetErrDecayLengthXY() const
void TransportToVertex(const KFPVertex &v)
Double_t GetErrPt() const
Double_t GetRapidity() const
Double_t GetDistanceFromVertex(const Double_t vtx[]) const
Double_t GetDistanceFromParticleXY(const KFParticle &p) const
Bool_t GetDistanceFromVertexXY(const Double_t vtx[], Double_t &val, Double_t &err) const
void Construct(const KFParticleBase *vDaughters[], Int_t nDaughters, const KFParticleBase *ProdVtx=nullptr, Double_t Mass=-1, Bool_t IsConstrained=0)
void Construct(const KFParticle *vDaughters[], int nDaughters, const KFParticle *ProdVtx=nullptr, Double_t Mass=-1, Bool_t IsConstrained=0)
void GetDStoParticle(const KFParticle &p, Double_t &DS, Double_t &DSp) const
const Double_t & Px() const
void TransportToDS(Double_t dS)
const Double_t & X() const
Double_t GetAngleRZ(const KFParticle &p) const
Double_t GetDeviationFromParticle(const KFParticleBase &p) const
void operator+=(const KFParticle &Daughter)
Bool_t fAtProductionVertex
Double_t GetLifeTime() const
Double_t GetErrDecayLength() const
void AddDaughter(const KFParticleBase &Daughter)
static void GetExternalTrackParam(const KFParticleBase &p, Double_t &X, Double_t &Alpha, Double_t P[5])
Double_t & Parameter(Int_t i)
void Create(const Double_t Param[], const Double_t Cov[], Int_t Charge, Double_t mass)
std::vector< int > fDaughtersIds
Double_t GetDistanceFromParticle(const KFParticleBase &p) const
static void SetField(Double_t Bz)
Double_t & Parameter(int i)
void GetFieldValue(const Double_t xyz[], Double_t B[]) const
const Double_t & S() const
Double_t GetDeviationFromVertexXY(const Double_t v[], const Double_t Cv[]=0) const
Int_t GetDecayLength(Double_t &L, Double_t &SigmaL) const
const Double_t & E() const
const Double_t & Z() const
void TransportToParticle(const KFParticle &p)
void ConstructGammaBz(const KFParticleBase &daughter1, const KFParticleBase &daughter2, double Bz)
Double_t GetErrPy() const
Double_t & Covariance(Int_t i)
void TransportBz(Double_t Bz, Double_t dS, Double_t P[], Double_t C[]) const
Int_t GetLifeTime(Double_t &T, Double_t &SigmaT) const