Define logic for truth matching procedure
We want to avoid needing to toggling the truth matching on/off in the analysis config. The following logic should support running this on all samples, with a series of fall-throughs in case the target truth particle containers do not hold all of the content assumed for specific processes.
flowchart TD;
Start-->HasTruthBSM("Has HH/SH in TruthBSM container?");
HasTruthBSM-- No -->CheckSMBosons("Has HH in TruthBosons container?");
HasTruthBSM-- Yes -->DoTruthBSM("Label based on TruthBSM");
CheckSMBosons-- No -->DoNothing("Do nothing, avoid downstream truth labelling");
CheckSMBosons-- Yes -->DoTruthBosons("Label based on TruthBosons");
Possibly to discuss: Is it useful to have a DSID list that can be checked vs EventInfo to require that known SM HH samples have HH, etc? It would only have to be updated upon addition of new samples, and causing jobs to break if this is not satisfied ought to make any unexpected behaviour easy to spot.
This would modify the behaviour to:
flowchart TD;
Start-->HasTruthBSM("Has HH/SH in TruthBSM container?");
HasTruthBSM-- No -->CheckDatasetBSM("Verify that this is not in BSM DSID list");
CheckDatasetBSM --> CheckSMBosons("Has HH in TruthBosons container?");
HasTruthBSM-- Yes -->DoTruthBSM("Label based on TruthBSM");
CheckSMBosons-- No -->CheckDatasetSM("Verify that this is not in SM-like HH DSID list");
CheckDatasetSM-->DoNothing("Do nothing, avoid downstream truth labelling");
CheckSMBosons-- Yes -->DoTruthBosons("Label based on TruthBosons");
Note: SM-like probably means non-resonant HH, including kappa_lambda, kappa_2V variations