subroutine kvtx_two_vertex_life(kQ, num_neut, list_neut, * update_tracks, luse_z, * z1z2, Vz1z2, z10, Vz10, * ctau, sig_ctau, chisq, error) * * begin_doc * * Determine two vertex locations and the proper lifetime of primary * particle H in the process * * H --> Q + N1 + N2 + ... * * where Q has position information and the neutral N's do not. Let H * emerge from a vertex z1 (having a prior covariance matrix) and decay * at the unknown vertex z2. We want to determine the following 7 * quantities: * * z1(1-3) Primary vertex * z2(1-3) Secondary vertex * ctau_H c*tau of particle H in going from z1 to z2 * * There are 6 constraints: * * (1-3) H intersects primary vertex at z1 * (4-6) Q intersects H at z2. * * The vertex z1 is updated by the fit while 5 unknown parameters have * to be determined: z2(1-3), ctau_H and the arc length s_Q from z2 to * particle Q. The number of degrees of freedom is therefore 2*3 - 5 = 1. * * Input Parameters: * kQ integer variable * Track number of particle with position information * * num_neut integer variable * Number of neutral tracks * * list_neut(*) integer array * List of neutrals * * update_tracks integer variable * 0 ==> don't update input track parameters * 1 ==> update input track parameters * 2 ==> update input track parameters & covariance matrices * and replace the original unconstrainted parameters * by the new ones. ***** This is a dangerous option. * * luse_vtx logical variable * TRUE ==> use z1z2(1-6) as starting vertices * FALSE ==> use z10(1-3) as primary, determine secondary * * z1z2(6) double precision array * Initial values of z1(1-3), z2(1-3) * * z10(3) double precision array * Prior primary vertex (z1) * * Vz10(3) double precision array * 3x3 covariance matrix of z10 * * Output Parameters: * z1z2(6) double precision array * Final values of z1(1-3), z2(1-3) * * Vz1z2(6,6) double precision array * Covariance matrix of z1z2 * * ctau double precision variable * c*tau of primary particle H * * sig_ctau double precision variable * Error on ctau * * chisq double precision variable * Chisquare of fit * * error integer variable * 0 if all OK * >0 if error * * Other routines: * * Notes: * * * Author: Paul R Avery Created: Sat Nov 07 07:05:06 EST 1998 * * Major revisions: * * end_doc