Hi,
The vertex fitters (PndKinVtxFitter/PndKalmanVtxFitter) operate on a minimum of two charged tracks. For anything else you may use PndVtxPoca, which analytically calculates the vertex. From the top of my head:
PndVtxPoca pocafinder;
for (int j=0; j<lambda0.GetLength(); ++j)
{
PndKinVtxFitter vertexfitterLambda0 (lambda0[j]);
vertexfitterLambda0.Fit();
RhoCandidate * lambda0Fit = lambda0[j]->GetFit();
for (int j=0; j<antiLambda0.GetLength(); ++j)
{
PndKinVtxFitter vertexfitterAntiLambda0 (antiLambda0[j]);
vertexfitterAntiLambda0.Fit();
RhoCandidate * antiLambda0Fit = antiLambda0[j]->GetFit();
TVector3 pbarpvertex;
crossCheck.Combine(lambda0Fit, antiLambda0Fit);
crossCheck.SetType(88888);
double doca = pocafinderGetPocaVtx(pbarpvertex,crossCheck);
// now you have a vertex written to pbarpvertex and a measure of the distances between the trajectories (i.e. a quality criterium)
}
}
If you have charged(!) particles combining to crossCheck, you may want to update the four-momentum along the helix to the vertex via the analysis:
bool check = theAnalysis->PropagateToPoint(crossCheck, pbarpvertex);
Cheers
Ralf