29 vertex.GetCovarianceMatrix( fC );
31 fNDF = 2*
vertex.GetNContributors() - 3;
33 fAtProductionVertex = 0;
48 void KFVertex::SetBeamConstraint( Double_t x, Double_t y, Double_t z,
49 Double_t errX, Double_t errY, Double_t errZ )
64 void KFVertex::SetBeamConstraintOff()
69 void KFVertex::ConstructPrimaryVertex(
const KFParticle *vDaughters[],
70 int NDaughters, Bool_t vtxFlag[],
75 if( NDaughters<2 )
return;
76 double constrP[3]={fP[0], fP[1], fP[2]};
77 double constrC[6]={fC[0], fC[1], fC[2], fC[3], fC[4], fC[5]};
79 Construct( vDaughters, NDaughters, 0, -1, fIsConstrained );
83 for(
int i=0; i<NDaughters; i++ ) vtxFlag[i] = 1;
85 Int_t nRest = NDaughters;
88 Double_t worstChi = 0.;
89 Int_t worstDaughter = 0;
90 for( Int_t it=0; it<NDaughters; it++ ){
91 if( !vtxFlag[it] )
continue;
94 Double_t chi = p.GetDeviationFromVertex( tmp );
100 if( worstChi < ChiCut )
break;
102 vtxFlag[worstDaughter] = 0;
103 *
this -= *(vDaughters[worstDaughter]);
108 SetVtxGuess( fP[0], fP[1], fP[2] );
109 if( fIsConstrained ){
113 for(
int i=0; i<6; i++ ) fC[i] = constrC[i];
117 for(
int i=0; i<NDaughters; i++ ){
118 if( vtxFlag[i] ) vDaughtersNew[nDaughtersNew++] = vDaughters[i];
120 Construct( vDaughtersNew, nDaughtersNew, 0, -1, fIsConstrained );
121 delete[] vDaughtersNew;
124 if( nRest<=2 && GetChi2()>ChiCut*ChiCut*GetNDF() ){
125 for(
int i=0; i<NDaughters; i++ ) vtxFlag[i] = 0;
Double32_t fVtxGuess[3]
Flag shows that the particle error along its trajectory is taken from production vertex.