FairRoot/PandaRoot
KFParticleFinder.h
Go to the documentation of this file.
1 #ifndef KFParticleFinder_h
2 #define KFParticleFinder_h
3 
4 #include "KFParticle.h"
5 #include "KFParticleSIMD.h"
6 #include "KFPTrack.h"
7 
8 #include <vector>
9 
10 #ifdef NonhomogeniousField
11 class L1FieldRegion;
12 #endif
13 class KFParticleSIMD;
14 
16 {
17  public:
18 
21 
33 
34  static void FindParticles(std::vector<KFPTrack>& vRTracks, std::vector<float>& ChiToPrimVtx,
35 #ifdef NonhomogeniousField
36  std::vector<L1FieldRegion>& vField,
37 #endif
38  std::vector<KFParticle>& Particles,
39  KFParticleSIMD& PrimVtx, const std::vector<int>& vTrackPDG, const float cuts[2][3] = DefaultCuts);
40 
41  static void ExtrapolateToPV(std::vector<KFParticle>& vParticles, KFParticleSIMD& PrimVtx);
43 
44  static void Find2DaughterDecay(std::vector<KFPTrack>& vTracks,
45 #ifdef NonhomogeniousField
46  const std::vector<L1FieldRegion>& vField,
47 #endif
48  std::vector<KFParticle>& Particles,
49  const int DaughterNegPDG,
50  const int DaughterPosPDG,
51  const int MotherPDG,
52  std::vector<short>& idNeg,
53  std::vector<short>& idPos,
54  KFParticleSIMD& PrimVtx,
55  const float* cuts = 0,
56  bool isPrimary = 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);
63 
64  static void Find2DaughterDecay(std::vector<KFPTrack>& vTracks,
65 #ifdef NonhomogeniousField
66  const std::vector<L1FieldRegion>& vField,
67 #endif
68  std::vector<KFParticle>& Particles,
69  const int DaughterNegPDG,
70  const int DaughterPosPDG,
71  const int MotherPDG,
72  std::vector<short>& idNeg,
73  std::vector<short>& idPos,
74  KFParticleSIMD& PrimVtx,
75  const float* cuts,
76  bool isPrimary,
77  const float PtCut,
78  const float Chi2PrimCut = -100.f,
79  std::vector<float>* ChiToPrimVtx = 0,
80  const float* PCut = 0);
81 
82  static void FindTrackV0Decay(const int MotherPDG,
83  std::vector<KFParticle>& Particles,
84  std::vector<KFParticle>& vV0,
85  std::vector<KFPTrack>& vTracks,
86 #ifdef NonhomogeniousField
87  const std::vector<L1FieldRegion>& field,
88 #endif
89  const int DaughterPDG,
90  std::vector<short>& idTrack,
91  KFParticleSIMD& PrimVtx,
92  const float* cuts = 0,
93  bool isPrimary = 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);
99 
100  static void FindHyperons(int PDG,
101  KFParticleSIMD vDaughters[2],
102  std::vector<int>& daughterIds,
103  std::vector<KFParticle>& vLambdaSec,
104  std::vector<KFParticle>& vHyperon,
105  KFParticleSIMD& PrimVtx,
106  const float *cuts = 0,
107  int startIndex=0);
108 
109  static void FindDMesLambdac(std::vector<KFPTrack>& vTracks,
110 #ifdef NonhomogeniousField
111  const std::vector<L1FieldRegion>& vField,
112 #endif
113  std::vector<KFParticle>& Particles,
114  const int DaughterPDG[5], //pi, K_b, pi_b, K, p
115  const int MotherPDG[8],
116  std::vector<short>* idTrack[5], //pi, K_b, pi_b, K, p
117  KFParticleSIMD& PrimVtx,
118  const float cuts[8][8],
119  std::vector<float> ChiToPrimVtx);
120 
121  static void CombineTrackPart(std::vector<KFPTrack>& vTracks,
122 #ifdef NonhomogeniousField
123  const std::vector<L1FieldRegion>& vField,
124 #endif
125  std::vector<KFParticle>& Particles,
126  KFParticle& part,
127  const int DaughterPDG,
128  const int MotherPDG,
129  std::vector<short>& id,
130  const float* cuts,
131  const unsigned short startIndex = 0,
132  const bool IsSamePart = 0);
133 
134  static void SelectParticleCandidates(std::vector<KFParticle>& Particles,
135  std::vector<KFParticle>& vCandidates,
136  KFParticleSIMD& PrimVtx,
137  const float cuts[5]);
138 
139  private:
140 
141  static const float DefaultCuts[2][3];
142 };
143 
144 #endif /* !KFParticleFinder_h */
145 
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)
TString cuts[MAX]
Definition: autocutx.C:35
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)
TFile * f
Definition: bump_analys.C:12
TPad * p2
Definition: hist-t7.C:117
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)
TPad * p1
Definition: hist-t7.C:116