Modify Pr::Tracks to know of ancestor relation, add lhcbIDs functions
This MR intends to provide more safety when dealing with ancestors. Up to now only the index into a container was stored, which required knowledge which container to use to retrieve the ancestor. The approach here is to add a pointer to the ancestor and to change the constructors to require the pointer to the ancestor container.
So for example
namespace LHCb::Pr::Upstream {
class Tracks {
...
Tracks(Velo::Tracks const * velo_ancestors);
...
private:
Velo::Tracks const * m_velo_ancestors;
};
As the choice of ancestor(s) is defined, the type can be made explicit, without the need for templates and complicating downstream code.
As a convenience, e.g. LHCb::Pr::Fitted::Forward::Tracks
can now return list of all LHCbID
s contributing to a track, only needing the hit container and the fitted tracks itself as input. This will simplify MC matching or and collecting the full information of a Pr::Track
.