Add detailed run time testing of the MT trigger navigation
This MR introduces detailed run-time checking of the MT trigger navigation at the end of every Step.
It is for use during development, not online, due to the overhead this level of checking will bring.
- The
printDebugInformation
method is renamedhypoBaseOutputProcessing
as it is now doing more than simply printing. - Note: In the future CombHypo logic may be introduced here too.
- HypoAlgs currently calling the old print fn. are updated - others will be brought into the folder after this MR.
The checks are peformed on every output Decision of the hypo alg. Checks are run recursivly for all parents of the Decision so this tests everything upstream of the HypoAlg too.
- Checks that every InputMaker or Filter produced Decision enforces logical flow (all its passed IDs were passed by at least one parent)
- Checks that every HypoAlg produced decision enforces strict object-merging logical flow (all its passed IDs were present in ALL parents)
- Checks that all IDs correspond to valid Chains
- Checks that there are no duplicate IDs (wasting space)
- Checks that all HypoAlg output Decisions have a feature. Including extra logic to handle ComboHypo algs.
- Checks that all routes through the navigation terminate at an L1 Decision object.
I give the Decision
objects created by the L1Decoder
the name L1
- this looks to me the best way to tell if we have found an initial node in the graph.
I'm happy to report that all of these checks are OK for the HypoAlgs considered so far :)
Ping hypo enthusiasts @tbold, @fpastore, @sgeorge
Ping slices who I make (small one-liner) change in the HypoAlg(s): MET (@jburr, @astruebi), MU (@nakahama, @markowen, @sshaw), EGAMMA (@fernando, @thrynova, @dbakshig )