Description of mMvdPseudoTrk

The calling sequence for this module (with links to the source code) is:
mMvdPseudoTrk dMvdGeo dMvdPar dMvbPar dMvdNclmp dMvdClmp dMvdTrigControl dMvdPseudoPar dMvdVertexOut

Find the vertex using the pseudo-tracking method. This is one of two methods used in vertex finding with the MVD. This is the faster of the two methods, but it does not work as well at high occupancies.

This algorithm is only used if dMvdTrigCntrl->choice ==1. Otherwise, the module does nothing. dMvdTrigCntrl->choice is set by mMvdOccupancy.

The vertex position and other information is returned in dMvdVertexOut. The software version of 1.XX (currently 1.01) returned in dMvdVertexOut[Nentry].softvertex means the pseudo-tracking method was used. MvdVertexOut[Nentry].vertexcl is intended to be a confidence level for this vertex, but it is currently always set to 1. MvdVertexOut[Nentry].ErrorCode=1 means there were no errors in vertex finding. Negative numbers mean there was an error and the vertex could not be found. The vertex position (cm) is returned in dMvdVertexOut->vertex[0]=x, [1]=y, [2]=z.

Two different algorithms are used to find the vertex position. This module uses one of those algorithms -- the "pseudo-tracking method". Because the MVD barrel (which is used for vertex finding) only has two layers of Si, it can not do real tracking. Instead, the pseudo-tracking algorithm takes every clump (where a clump is a group of adjacent channels in the same row, shell, and panel of the MVD which all have signals above threshold) in both the inner and outer shell and treats every combination of pairs of clumps (one in the inner shell and one in the outer shell) in the same row of the MVD barrel as a potential track. This combination of hits is projected back to the beam axis to find the vertex expected for a track which hit these two locations. For each of these possible vertex locations, a channel in a histogram is incremented. Most pairs of hits do not correspond to a real track. However, when all pairs are considered, the true vertex location appears more frequently than the other locations. A postscript version of the histogram is available here here. This sample histogram is from an older version of the code. In the current code, this (root) histogram is called PseudoZ. The peak channel in this histogram corresponds to the vertex position. When this algorithm finds the correct vertex location (as it does in most cases), it is correct to within a few 100 microns for central Au+Au hijing events. When it gets the wrong answer, it tends to be wrong by many cm. At high occupancy (around 45% in the inner barrel) this method becomes inefficient.

The array of projected track dimensions was dimension Lz. This dimension is calculated using the constant ZRESOLUTION in the source code -- this constant sets the bin size in the vertex-finding array and therefore can set the maximum resolution of the method. Currently is is set to 0.03 cm = 300 microns. The calculated z vertex position is in dMvdVertexOut->vertex[2].

This algorithm also is able to find x and y of the vertex (returned as dMvdVertexOut->vertex[0] and dMvdVertexOut->vertex[1]). These algorithms are similar to those for finding the vertex in z. The histograms showing the data used in the vertex search are called PseudoX and PseudoY.

The code also fills a covariance matrix (VertexOut[NumOut].vertexerr), but it is filled with rough guesses -- only the diagonal terms are non-zero and they are just my estimates of the uncertainty. This part needs work.


John Sullivan
comments to: sullivan@lanl.gov
updated 23-Dec-1999