1 #ifndef KFParticleFinder_h
2 #define KFParticleFinder_h
10 #ifdef NonhomogeniousField
34 static void FindParticles(std::vector<KFPTrack>& vRTracks, std::vector<float>& ChiToPrimVtx,
35 #ifdef NonhomogeniousField
36 std::vector<L1FieldRegion>& vField,
38 std::vector<KFParticle>& Particles,
45 #ifdef NonhomogeniousField
46 const std::vector<L1FieldRegion>& vField,
48 std::vector<KFParticle>& Particles,
49 const int DaughterNegPDG,
50 const int DaughterPosPDG,
52 std::vector<short>& idNeg,
53 std::vector<short>& idPos,
55 const float*
cuts = 0,
57 std::vector<float>* vMotherTopoChi2Ndf = 0,
58 const float* secCuts = 0,
59 const float massMotherPDG = 0,
60 const float massMotherPDGSigma = 0,
61 std::vector<KFParticle>* vMotherPrim = 0,
62 std::vector<KFParticle>* vMotherSec = 0);
65 #ifdef NonhomogeniousField
66 const std::vector<L1FieldRegion>& vField,
68 std::vector<KFParticle>& Particles,
69 const int DaughterNegPDG,
70 const int DaughterPosPDG,
72 std::vector<short>& idNeg,
73 std::vector<short>& idPos,
78 const float Chi2PrimCut = -100.
f,
79 std::vector<float>* ChiToPrimVtx = 0,
80 const float* PCut = 0);
83 std::vector<KFParticle>& Particles,
84 std::vector<KFParticle>& vV0,
85 std::vector<KFPTrack>& vTracks,
86 #ifdef NonhomogeniousField
87 const std::vector<L1FieldRegion>& field,
89 const int DaughterPDG,
90 std::vector<short>& idTrack,
92 const float*
cuts = 0,
94 std::vector<float>* ChiToPrimVtx = 0,
95 std::vector<KFParticle>* vHyperonPrim = 0,
96 float hyperonPrimMass = 0,
97 float hyperonPrimMassErr = 0,
98 std::vector<KFParticle>* vHyperonSec = 0);
102 std::vector<int>& daughterIds,
103 std::vector<KFParticle>& vLambdaSec,
104 std::vector<KFParticle>& vHyperon,
106 const float *
cuts = 0,
110 #ifdef NonhomogeniousField
111 const std::vector<L1FieldRegion>& vField,
113 std::vector<KFParticle>& Particles,
114 const int DaughterPDG[5],
115 const int MotherPDG[8],
116 std::vector<short>* idTrack[5],
118 const float cuts[8][8],
119 std::vector<float> ChiToPrimVtx);
122 #ifdef NonhomogeniousField
123 const std::vector<L1FieldRegion>& vField,
125 std::vector<KFParticle>& Particles,
127 const int DaughterPDG,
129 std::vector<short>&
id,
131 const unsigned short startIndex = 0,
132 const bool IsSamePart = 0);
135 std::vector<KFParticle>& vCandidates,
137 const float cuts[5]);
static void ExtrapolateToPV(std::vector< KFParticle > &vParticles, KFParticleSIMD &PrimVtx)
static void FindTrackV0Decay(const int MotherPDG, std::vector< KFParticle > &Particles, std::vector< KFParticle > &vV0, std::vector< KFPTrack > &vTracks, const int DaughterPDG, std::vector< short > &idTrack, KFParticleSIMD &PrimVtx, const float *cuts=0, bool isPrimary=0, std::vector< float > *ChiToPrimVtx=0, std::vector< KFParticle > *vHyperonPrim=0, float hyperonPrimMass=0, float hyperonPrimMassErr=0, std::vector< KFParticle > *vHyperonSec=0)
static void FindHyperons(int PDG, KFParticleSIMD vDaughters[2], std::vector< int > &daughterIds, std::vector< KFParticle > &vLambdaSec, std::vector< KFParticle > &vHyperon, KFParticleSIMD &PrimVtx, const float *cuts=0, int startIndex=0)
static void SelectParticleCandidates(std::vector< KFParticle > &Particles, std::vector< KFParticle > &vCandidates, KFParticleSIMD &PrimVtx, const float cuts[5])
static fvec GetChi2BetweenParticles(KFParticleSIMD &p1, KFParticleSIMD &p2)
static void FindDMesLambdac(std::vector< KFPTrack > &vTracks, std::vector< KFParticle > &Particles, const int DaughterPDG[5], const int MotherPDG[8], std::vector< short > *idTrack[5], KFParticleSIMD &PrimVtx, const float cuts[8][8], std::vector< float > ChiToPrimVtx)
static const float DefaultCuts[2][3]
static void FindParticles(std::vector< KFPTrack > &vRTracks, std::vector< float > &ChiToPrimVtx, std::vector< KFParticle > &Particles, KFParticleSIMD &PrimVtx, const std::vector< int > &vTrackPDG, const float cuts[2][3]=DefaultCuts)
static void Find2DaughterDecay(std::vector< KFPTrack > &vTracks, std::vector< KFParticle > &Particles, const int DaughterNegPDG, const int DaughterPosPDG, const int MotherPDG, std::vector< short > &idNeg, std::vector< short > &idPos, KFParticleSIMD &PrimVtx, const float *cuts=0, bool isPrimary=0, std::vector< float > *vMotherTopoChi2Ndf=0, const float *secCuts=0, const float massMotherPDG=0, const float massMotherPDGSigma=0, std::vector< KFParticle > *vMotherPrim=0, std::vector< KFParticle > *vMotherSec=0)
static void CombineTrackPart(std::vector< KFPTrack > &vTracks, std::vector< KFParticle > &Particles, KFParticle &part, const int DaughterPDG, const int MotherPDG, std::vector< short > &id, const float *cuts, const unsigned short startIndex=0, const bool IsSamePart=0)