In the typical workflow for a tracking system, the tracker needs to determine
if a detection can be associated with any of the existing tracks. If the tracker only
maintains one track, the assignment can be done by evaluating the validation gate around the
predicted measurement and deciding if the measurement falls within the *validation
gate*. In the measurement space, the validation gate is a spatial boundary,
such as a 2-D ellipse or a 3-D ellipsoid, centered at the predicted measurement. The
validation gate is defined using the probability information (state estimation and
covariance, for example) of the existing track, such that the correct or ideal detections
have high likelihood (97% probability, for example) of falling within this validation gate.

However, if a tracker maintains multiple tracks, the data association process becomes more
complicated, because one detection can fall within the validation gates of multiple tracks.
For example, in the following figure, tracks *T*_{1}
and *T*_{2} are actively maintained in the tracker, and
each of them has its own validation gate. Since the detection
*D*_{2} is in the intersection of the validation
gates of both *T*_{1} and
*T*_{2}, the two tracks
(*T*_{1} and
*T*_{2}) are connected and form a
*cluster*. A cluster is a set of connected tracks and their
associated detections.

To represent the association relationship in a cluster, the validation matrix is commonly
used. Each row of the validation matrix corresponds to a detection while each column
corresponds to a track. To account for the eventuality of each detection being clutter, a
first column is added and usually referred to as "Track 0" or
*T*_{0}. If detection
*D*_{i} is inside the
validation gate of track *D*_{j},
then the (*j*, *i*+1) entry of the validation matrix is 1.
Otherwise, it is zero. For the cluster shown in the figure, the validation matrix Ω
is

Note that all the elements in the first column of Ω are 1, because any detection can be
clutter or false alarm. One important step in the logic of joint probabilistic data
association (JPDA) is to obtain all the feasible independent joint events in a cluster. Two
assumptions for the feasible joint events are:

Based on these two assumptions, feasible joint events (FJEs) can be formulated. Each FJE is
mapped to an FJE matrix Ω_{p} from the initial
validation matrix Ω. For example, with the validation matrix Ω, eight FJE matrices can be
obtained:

As a direct consequence of the two assumptions, the Ω_{p} matrices have
exactly one "1" value per row. Also, except for the first column which maps to clutter,
there can be at most one "1" per column. When the number of connected tracks grows in a
cluster, the number of FJE increases rapidly. The `jpdaEvents`

function
uses an efficient depth-first search algorithm to generate all the feasible joint event
matrices.