HybridGaussianProductFactor is a specialized DecisionTree used internally during hybrid elimination. It represents a collection of GaussianFactorGraphs, each associated with a specific assignment of a set of discrete variables, along with a scalar value accumulated for that assignment.
Specifically, it’s a DecisionTree<Key, GaussianFactorGraphValuePair>, where GaussianFactorGraphValuePair is std::pair<GaussianFactorGraph, double>.
Its primary role is to hold the intermediate results when eliminating a continuous variable that has discrete variables in its separator/conditional parents. When eliminating such a variable, the resulting factor on the separator involves:
A set of purely continuous factors (a
GaussianFactorGraph).A scalar term (representing accumulated constants or log-likelihoods). This pair depends on the assignment of the discrete separator variables. The
HybridGaussianProductFactorstores these pairs in a decision tree structure indexed by the discrete keys.
While crucial internally for elimination algorithms like EliminateHybrid, direct user interaction with HybridGaussianProductFactor is less common compared to HybridGaussianFactor or HybridGaussianConditional. It can be thought of as the precursor structure from which a HybridGaussianFactor or HybridGaussianConditional is formed after elimination.