1#ifndef CbmKFParticleInterface_h
2#define CbmKFParticleInterface_h
8#include "CbmKFVertex.h"
28 KFPart.SetField(field, isOneEntry, iVec);
41 bool isAtVtxGuess = 0);
135 vector<float>& ChiToPrimVtx,
136 vector<L1FieldRegion>& vField,
137 vector<CbmKFParticle>& Particles,
139 const vector<int>& vTrackPDG,
152 const vector<L1FieldRegion>& vField,
153 vector<CbmKFParticle>& Particles,
154 const int DaughterNegPDG,
155 const int DaughterPosPDG,
157 vector<short>& idNeg,
158 vector<short>& idPos,
160 const float* cuts = 0,
162 vector<float>* vMotherTopoChi2Ndf = 0,
163 const float* secCuts = 0,
164 const float massMotherPDG = 0,
165 const float massMotherPDGSigma = 0,
166 vector<CbmKFParticle>* vMotherPrim = 0,
167 vector<CbmKFParticle>* vMotherSec = 0);
170 const vector<L1FieldRegion>& vField,
171 vector<CbmKFParticle>& Particles,
172 const int DaughterNegPDG,
173 const int DaughterPosPDG,
175 vector<short>& idNeg,
176 vector<short>& idPos,
181 const float Chi2PrimCut = -100.f,
182 vector<float>* ChiToPrimVtx = 0,
183 const float* PCut = 0);
186 vector<CbmKFParticle>& Particles,
187 vector<CbmKFParticle>& vV0,
188 vector<CbmKFTrack>& vTracks,
189 const vector<L1FieldRegion>& field,
190 const int DaughterPDG,
191 vector<short>& idTrack,
193 const float* cuts = 0,
195 vector<float>* ChiToPrimVtx = 0,
196 vector<CbmKFParticle>* vHyperonPrim = 0,
197 float hyperonPrimMass = 0,
198 float hyperonPrimMassErr = 0,
199 vector<CbmKFParticle>* vHyperonSec = 0);
203 vector<int>& daughterIds,
204 vector<CbmKFParticle>& vLambdaSec,
205 vector<CbmKFParticle>& vHyperon,
207 const float* cuts = 0,
212 const vector<L1FieldRegion>& vField,
213 vector<CbmKFParticle>& Particles,
214 const int DaughterPDG[5],
215 const int MotherPDG[8],
216 vector<short>* idTrack[5],
218 const float cuts[8][8],
219 vector<float> ChiToPrimVtx);
223 const vector<L1FieldRegion>& vField,
224 vector<CbmKFParticle>& Particles,
226 const int DaughterPDG,
230 const unsigned short startIndex = 0,
231 const bool IsSamePart = 0);
234 vector<CbmKFParticle>& vCandidates,
236 const float cuts[5]);
void Error(const char *location, const char *msgfmt,...)
void multQSQt(const fvec Q[], fvec S[])
CbmKFVertex GetKFVertexJ(int j)
const fvec * GetParameters() const
void MeasureMass(CbmKFParticle_simd *Particle, fvec r0[], fvec Mass)
const fvec & GetPDG() const
void GetKFVertex(CbmKFVertex *vtx)
static void Find2DaughterDecay(vector< CbmKFTrack > &vTracks, const vector< L1FieldRegion > &vField, vector< CbmKFParticle > &Particles, const int DaughterNegPDG, const int DaughterPosPDG, const int MotherPDG, vector< short > &idNeg, vector< short > &idPos, CbmKFVertex &PrimVtx, const float *cuts=0, bool isPrimary=0, vector< float > *vMotherTopoChi2Ndf=0, const float *secCuts=0, const float massMotherPDG=0, const float massMotherPDGSigma=0, vector< CbmKFParticle > *vMotherPrim=0, vector< CbmKFParticle > *vMotherSec=0)
static void FindParticles(vector< CbmKFTrack > &vRTracks, vector< float > &ChiToPrimVtx, vector< L1FieldRegion > &vField, vector< CbmKFParticle > &Particles, CbmKFVertex &PrimVtx, const vector< int > &vTrackPDG, const float cuts[2][3]=DefaultCuts)
Find particles with 2-body decay channel from input tracks vRTracks with primary vertex PrimVtx:
void Construct(CbmKFTrackInterface *vDaughters[][fvecLen], int NDaughters, CbmKFVertexInterface *Parent=0, float Mass=-1, float CutChi2=-1)
fvec GetCovariance(Int_t i) const
static fvec GetChi2BetweenParticles(CbmKFParticle_simd &p1, CbmKFParticle_simd &p2)
fvec GetCovariance(Int_t i, Int_t j) const
fvec & Cij(Int_t i, Int_t j)
void TransportToDecayVertex()
void SetField(const L1FieldRegion &field, bool isOneEntry=0, const int iVec=0)
fvec & rCovariance(Int_t i, Int_t j)
void SetVtxErrGuess(fvec &d_x, fvec &d_y, fvec &d_z)
void GetMomentum(fvec &P, fvec &Error)
static void SelectParticleCandidates(vector< CbmKFParticle > &Particles, vector< CbmKFParticle > &vCandidates, CbmKFVertex &PrimVtx, const float cuts[5])
static void FindTrackV0Decay(const int MotherPDG, vector< CbmKFParticle > &Particles, vector< CbmKFParticle > &vV0, vector< CbmKFTrack > &vTracks, const vector< L1FieldRegion > &field, const int DaughterPDG, vector< short > &idTrack, CbmKFVertex &PrimVtx, const float *cuts=0, bool isPrimary=0, vector< float > *ChiToPrimVtx=0, vector< CbmKFParticle > *vHyperonPrim=0, float hyperonPrimMass=0, float hyperonPrimMassErr=0, vector< CbmKFParticle > *vHyperonSec=0)
void GetKFParticle(CbmKFParticle &Part, int iPart=0)
fvec & rCovariance(Int_t i)
void TransportToProductionVertex()
fvec GetParameter(Int_t i) const
void multQSQt1(const fvec J[11], fvec S[])
static void FindHyperons(int PDG, CbmKFParticle_simd vDaughters[2], vector< int > &daughterIds, vector< CbmKFParticle > &vLambdaSec, vector< CbmKFParticle > &vHyperon, CbmKFVertex &PrimVtx, const float *cuts=0, int startIndex=0)
CbmKFParticleInterface operator=(const CbmKFParticleInterface &c)
void GetMass(fvec &M, fvec &Error)
void ExtrapolateLine(CbmKFParticle_simd *Particle, fvec r0[], fvec T)
CbmKFParticle_simd KFPart
static Int_t IJ(Int_t i, Int_t j)
~CbmKFParticleInterface()
static const float DefaultCuts[2][3]
void Construct(CbmKFParticle_simd vDaughters[], int NDaughters, CbmKFVertexInterface *Parent=0, float Mass=-1, float CutChi2=-1, bool isAtVtxGuess=0)
static void ExtrapolateToPV(vector< CbmKFParticle > &vParticles, CbmKFVertex &PrimVtx)
static void CombineTrackPart(vector< CbmKFTrack > &vTracks, const vector< L1FieldRegion > &vField, vector< CbmKFParticle > &Particles, CbmKFParticle &part, const int DaughterPDG, const int MotherPDG, vector< short > &id, const float *cuts, const unsigned short startIndex=0, const bool IsSamePart=0)
void Convert(CbmKFParticle_simd *Particle, fvec r0[], bool ToProduction)
void ConstructPVT(vector< CbmKFTrack > &vRTracks)
void MeasureProductionVertex(CbmKFParticle_simd *Particle, fvec r0[], CbmKFVertexInterface *Parent)
void SetVtxGuess(fvec &x, fvec &y, fvec &z)
fvec & rParameter(Int_t i)
fvec GetDStoPoint(const CbmKFParticle_simd &Particle, const fvec xyz[]) const
static void FindDMesLambdac(vector< CbmKFTrack > &vTracks, const vector< L1FieldRegion > &vField, vector< CbmKFParticle > &Particles, const int DaughterPDG[5], const int MotherPDG[8], vector< short > *idTrack[5], CbmKFVertex &PrimVtx, const float cuts[8][8], vector< float > ChiToPrimVtx)
void Extrapolate(CbmKFParticle_simd *Particle, fvec r0[], fvec T)