Add ProtoParticle association algorithms
Introduce a new package, Rec/GlobalRecoMCTools, which is home to three new algorithms and associated tests:
-
MergeLinksByKeysToVector: Takes a list ofLinksByKeysobjects and outputs astd::vector<LinksByKey*>referencing those objects. -
MergeRelationsTables: Takes a list ofRelationWeighted1Dobjects and outputs a single, mergedRelationWeighted1Dobject. -
ProtoParticleAssociator: Takes aProtoParticlecontainer and associations of a 'basic' object to anMCParticleobject, and outputsProtoParticletoMCParticlerelations.
The first two will be used in Moore to produce unified output relations, rather than the more standard one-table-per-container logic we've had in the past.
The last algorithm is used to create direct proto-to-MC tables, using existing tables provided by Brunel. For example, Brunel outputs Track to MCParticle tables, so the ProtoParticleAssociator takes ProtoParticle objects which reference tracks, finds the MC association by going via the Track object, and creates direct proto-to-MC relations. It does something similar in the CaloHypo-to-MCParticle case. This algorithm will be used in Moore to produce proto-to-MC relations for when Moore is running over Brunel output. See Moore#197 (closed) for more discussion on the general strategy for getting truth-matching in to Moore.