31 #define HomogeneousField 33 #ifndef ALIKFPARTICLE_H 34 #define ALIKFPARTICLE_H 40 #ifdef HomogeneousField 45 #ifdef NonhomogeneousField 46 class CbmKFTrackInterface;
47 class CbmKFVertexInterface;
58 #ifdef HomogeneousField 80 void Create(
const Double_t Param[],
const Double_t Cov[], Int_t Charge, Double_t mass );
82 #ifdef HomogeneousField 92 #ifdef NonhomogeneousField 93 KFParticle(CbmKFTrackInterface *Track, Double_t *z0 = 0, Int_t *qHypo = 0, Int_t *PID = 0);
107 void SetVtxGuess(Double_t x, Double_t y, Double_t z);
115 Double_t
GetX()
const;
116 Double_t
GetY()
const;
117 Double_t
GetZ()
const;
118 Double_t
GetPx()
const;
119 Double_t
GetPy()
const;
120 Double_t
GetPz()
const;
121 Double_t
GetE()
const;
122 Double_t
GetS()
const;
130 #ifdef NonhomogeneousField 131 float *GetFieldCoeff() {
return fieldRegion; }
132 void SetFieldCoeff(
float c,
int i) { fieldRegion[
i] = c; }
135 const Double_t &
X()
const {
return fP[0]; }
136 const Double_t &
Y()
const {
return fP[1]; }
137 const Double_t &
Z()
const {
return fP[2]; }
138 const Double_t &
Px()
const {
return fP[3]; }
139 const Double_t &
Py()
const {
return fP[4]; }
140 const Double_t &
Pz()
const {
return fP[5]; }
141 const Double_t &
E()
const {
return fP[6]; }
142 const Double_t &
S()
const {
return fP[7]; }
143 const Int_t &
Q()
const {
return fQ; }
153 Double_t
GetP()
const;
154 Double_t
GetPt()
const;
162 Double_t
GetR()
const;
188 int GetP(Double_t &P, Double_t &SigmaP)
const;
189 int GetPt(Double_t &Pt, Double_t &SigmaPt)
const;
190 int GetEta(Double_t &Eta, Double_t &SigmaEta)
const;
191 int GetPhi(Double_t &Phi, Double_t &SigmaPhi)
const;
192 int GetMomentum(Double_t &P, Double_t &SigmaP)
const;
193 int GetMass(Double_t &M, Double_t &SigmaM)
const;
196 int GetLifeTime(Double_t &T, Double_t &SigmaT)
const;
197 int GetR(Double_t &R, Double_t &SigmaR)
const;
250 void Construct(
const KFParticle *vDaughters[],
int nDaughters,
const KFParticle *ProdVtx =
nullptr, Double_t Mass = -1, Bool_t IsConstrained = 0);
272 #ifdef HomogeneousField 303 #ifdef HomogeneousField 313 #ifdef HomogeneousField 323 #ifdef HomogeneousField 329 #ifdef HomogeneousField 339 #ifdef HomogeneousField 364 void GetFieldValue(
const Double_t xyz[], Double_t B[])
const;
372 #ifdef HomogeneousField 378 void Transport(Double_t dS, Double_t P[], Double_t C[])
const;
384 #ifdef HomogeneousField 385 static Double_t fgBz;
387 #ifdef NonhomogeneousField 388 float fieldRegion[10];
400 #ifdef HomogeneousField 900 #ifdef HomogeneousField 920 #ifdef HomogeneousField 923 #ifdef NonhomogeneousField 952 #ifdef HomogeneousField 978 #ifdef HomogeneousField 985 #ifdef HomogeneousField 993 #ifdef NonhomogeneousField 1008 #ifdef HomogeneousField 1011 #ifdef NonhomogeneousField 1019 #ifdef HomogeneousField 1022 #ifdef NonhomogeneousField 1029 #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