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)