18#define NonhomogeneousField
21#ifndef KFPARTICLESIMD_H
22#define KFPARTICLESIMD_H
27#ifdef HomogeneousField
32#ifdef NonhomogeneousField
51#ifdef HomogeneousField
54#ifdef NonhomogeneousField
88#ifdef HomogeneousField
98#ifdef NonhomogeneousField
254 const KFParticleSIMD *ProdVtx=0, Float_t Mass=-1, Bool_t IsConstrained=0,
255 Bool_t isAtVtxGuess = 0);
277#ifdef HomogeneousField
278 void TransportToVertex(
const AliVVertex &
v );
311#ifdef HomogeneousField
321#ifdef HomogeneousField
331#ifdef HomogeneousField
337#ifdef HomogeneousField
347#ifdef HomogeneousField
381#ifdef HomogeneousField
382 static fvec GetFieldAlice();
395#ifdef HomogeneousField
398#ifdef NonhomogeneousField
411#ifdef HomogeneousField
421 #ifdef NonhomogeneousField
436 #ifdef NonhomogeneousField
534 return ((!mask) & par);
541 return ((!mask) & par);
548 return ((!mask) & par);
555 return ((!mask) & par);
562 return ((!mask) & par);
569 return ((!mask) & par);
576 return ((!mask) & par);
583 return ((!mask) & par);
590 return ((!mask) & par);
597 return ((!mask) & par);
645 ret = (mask & ret) + ((!mask) & err);
654 ret = (mask & ret) + ((!mask) & err);
663 ret = (mask & ret) + ((!mask) & err);
672 ret = (mask & ret) + ((!mask) & err);
681 ret = (mask & ret) + ((!mask) & err);
690 ret = (mask & ret) + ((!mask) & err);
699 ret = (mask & ret) + ((!mask) & err);
708 ret = (mask & ret) + ((!mask) & err);
717 ret = (mask & ret) + ((!mask) & err);
726 ret = (mask & ret) + ((!mask) & err);
889 const KFParticleSIMD *ProdVtx, Float_t Mass, Bool_t IsConstrained,
890 Bool_t isAtVtxGuess )
895 #ifdef NonhomogeneousField
898 fvec zField[3] = {0,
fP[2]/2,
fP[2]};
900 for(
int iPoint=0; iPoint<3; iPoint++)
902 for(
int iD=0; iD<nDaughters; ++iD)
905 field[iPoint].
x += b.
x;
906 field[iPoint].
y += b.
y;
907 field[iPoint].
z += b.
z;
909 field[iPoint].
x /= nDaughters;
910 field[iPoint].
y /= nDaughters;
911 field[iPoint].
z /= nDaughters;
914 fField.
Set( field[2], zField[2], field[1], zField[1], field[0], zField[0] );
932#ifdef HomogeneousField
933inline void KFParticleSIMD::TransportToVertex(
const AliVVertex &
v )
952#ifdef HomogeneousField
955#ifdef NonhomogeneousField
974 const fvec Cv[] )
const
988#ifdef HomogeneousField
1019#ifdef HomogeneousField
1020inline fvec KFParticleSIMD::GetFieldAlice()
1026#ifdef HomogeneousField
1030 B[2] = GetFieldAlice();
1034#ifdef NonhomogeneousField
1053#ifdef HomogeneousField
1056#ifdef NonhomogeneousField
1064#ifdef HomogeneousField
1067#ifdef NonhomogeneousField
1075#ifdef HomogeneousField
#define NonhomogeneousField
friend F32vec4 sqrt(const F32vec4 &a)
friend F32vec4 fabs(const F32vec4 &a)
void GetDStoParticleBz(fvec Bz, const KFParticleBaseSIMD &p, fvec &dS, fvec &dS1) const
void TransportToProductionVertex()
void TransportToDecayVertex()
void SubtractFromParticle(KFParticleBaseSIMD &Vtx) const
fvec & Covariance(Int_t i)
void ConstructGammaBz(const KFParticleBaseSIMD &daughter1, const KFParticleBaseSIMD &daughter2, fvec Bz)
fvec GetDeviationFromParticle(const KFParticleBaseSIMD &p) const
fvec GetDistanceFromParticle(const KFParticleBaseSIMD &p) const
void operator+=(const KFParticleBaseSIMD &Daughter)
fvec & Parameter(Int_t i)
fvec GetMomentum(fvec &P, fvec &SigmaP) const
void SetMassConstraint(fvec Mass, fvec SigmaMass=0)
fvec GetR(fvec &R, fvec &SigmaR) const
void AddDaughter(const KFParticleBaseSIMD &Daughter, Bool_t isAtVtxGuess=0)
Bool_t fAtProductionVertex
fvec GetDistanceFromVertex(const fvec vtx[]) const
void TransportCBM(fvec dS, fvec P[], fvec C[]) const
fvec GetDecayLength(fvec &L, fvec &SigmaL) const
fvec GetDecayLengthXY(fvec &L, fvec &SigmaL) const
void SetVtxGuess(fvec x, fvec y, fvec z)
fvec GetCovariance(Int_t i) const
fvec GetDeviationFromVertex(const fvec v[], const fvec Cv[]=0) const
fvec GetLifeTime(fvec &T, fvec &SigmaT) const
void GetDStoParticleCBM(const KFParticleBaseSIMD &p, fvec &dS, fvec &dS1) const
fvec GetDStoPointCBM(const fvec xyz[]) const
fvec GetDStoPointBz(fvec Bz, const fvec xyz[]) const
void SetProductionVertex(const KFParticleBaseSIMD &Vtx)
void Construct(const KFParticleBaseSIMD *vDaughters[], Int_t nDaughters, const KFParticleBaseSIMD *ProdVtx=0, Float_t Mass=-1, Bool_t IsConstrained=0, Bool_t isAtVtxGuess=0)
fvec GetParameter(Int_t i) const
fvec GetPt(fvec &Pt, fvec &SigmaPt) const
void SubtractFromVertex(KFParticleBaseSIMD &Vtx) const
void TransportBz(fvec Bz, fvec dS, fvec P[], fvec C[]) const
fvec GetPhi(fvec &Phi, fvec &SigmaPhi) const
void TransportToDS(fvec dS)
const fvec & Chi2() const
fvec GetEta(fvec &Eta, fvec &SigmaEta) const
fvec GetMass(fvec &M, fvec &SigmaM) const
fvec GetDistanceFromParticleXY(const KFParticleSIMD &p) const
fvec GetCovariance(int i) const
void TransportToDecayVertex()
fvec GetAngle(const KFParticleSIMD &p) const
void TransportToDS(fvec dS)
void GetFieldValue(const fvec xyz[], fvec B[]) const
fvec GetDeviationFromVertexXY(const fvec v[], const fvec Cv[]=0) const
void SubtractFromParticle(KFParticleSIMD &v) const
void GetDStoParticle(const KFParticleSIMD &p, fvec &DS, fvec &DSp) const
void Construct(const KFParticleSIMD *vDaughters[], int nDaughters, const KFParticleSIMD *ProdVtx=0, Float_t Mass=-1, Bool_t IsConstrained=0, Bool_t isAtVtxGuess=0)
fvec GetDStoPoint(const fvec xyz[]) const
void Create(const fvec Param[], const fvec Cov[], Int_t Charge, fvec mass)
fvec GetDeviationFromVertex(const fvec v[], const fvec Cv[]=0) const
static void GetExternalTrackParam(const KFParticleBaseSIMD &p, fvec &X, fvec &Alpha, fvec P[5])
fvec GetDistanceFromParticle(const KFParticleSIMD &p) const
void SubtractFromVertex(KFParticleSIMD &v) const
void SetProductionVertex(const KFParticleSIMD &Vtx)
void TransportToProductionVertex()
void Transport(fvec dS, fvec P[], fvec C[]) const
void TransportToParticle(const KFParticleSIMD &p)
void operator+=(const KFParticleSIMD &Daughter)
fvec GetDeviationFromParticle(const KFParticleSIMD &p) const
fvec GetDeviationFromParticleXY(const KFParticleSIMD &p) const
fvec GetAngleRZ(const KFParticleSIMD &p) const
fvec GetAngleXY(const KFParticleSIMD &p) const
fvec GetPseudoProperDecayTime(const KFParticleSIMD &primVertex, const fvec &mass, fvec *timeErr2=0) const
fvec GetErrLifeTime() const
void SetVtxGuess(fvec x, fvec y, fvec z)
fvec GetErrMomentum() const
void TransportToPoint(const fvec xyz[])
Bool_t GetAtProductionVertex() const
fvec * CovarianceMatrix()
void GetKFParticle(KFParticle &Part, int iPart=0)
fvec GetDistanceFromVertex(const fvec vtx[]) const
fvec GetDistanceFromVertexXY(const fvec vtx[], fvec &val, fvec &err) const
void ConstructGamma(const KFParticleSIMD &daughter1, const KFParticleSIMD &daughter2)
fvec GetParameter(int i) const
const fvec & Chi2() const
void SetField(const L1FieldRegion &field, bool isOneEntry=0, const int iVec=0)
fvec GetDecayLengthXY() const
void GetDStoParticleXY(const KFParticleBaseSIMD &p, fvec &DS, fvec &DSp) const
void SetMassConstraint(fvec Mass, fvec SigmaMass=0)
fvec GetErrDecayLengthXY() const
fvec GetErrDecayLength() const
fvec GetDecayLength() const
void AddDaughter(const KFParticleSIMD &Daughter)
void SetOneEntry(const int i0, const L1FieldRegion &f1, const int i1)
L1FieldValue Get(const fvec z)
void Set(const L1FieldValue &B0, const fvec B0z, const L1FieldValue &B1, const fvec B1z, const L1FieldValue &B2, const fvec B2z)