All the mht* files contain code for a very elaborate tracking algorithm by the name of Multi Hypothesis Multi Target Tracking.
This algorithm is based around a delayed decision method that instead of propagating just the most probable hypothesis propagates all probable hypothesis reserving decisions for a latter time when more information may remove ambiguities.
The mht algorithm runs on top of a tree structure with reference material here.
The binary for this algorithm is created using the mht.cpp file.
The code present in this file preforms only a set of basic data conversion functions.
When new data is received the dataHandler() function is called; this function converts the ros format to a vector of PointPtr using pointCloud2ToVector().
This vector is converted into a set of measurements via clustering using createObjects().
This vector of MeasurementPtr will be the input for the Mht::iterate() main function.
The current main function is called Mht::iterate().
The main tasks of this functions are as follows:
The most up to date list of targets can be extracted by going through each branch of the tree and selecting the best hypothesis from that branch. That hypothesis will contain a set of targets that are not conflicting with each other.