Skip to content

Solve conflicts when producing both extra outputs IDTIDE and IDTRKVALID.

There are two conflicts to be solved: both outputs require identical algorithms to run to produce additional xAOD object; for both outputs identical decorations are applied by the two corresponding DF kernels. One problem can be solved by ensuring that the extra algorithms are only scheduled once and for common events (i.e. all events) rather than just preselected events. The decoration problem can be solved either by adding an unambiguous prefix to the decoration, or relying on the avalanche scheduler to schedule an algorithm contained in multiple sequences only once per event. The latter requires to move the problematic decorations to an extra algorithm which is placed in two sequences.

I decided on the latter approach:

Introduce extra kernels which run the common tools of IDTIDE and IDTRKVALID.

  • The IDTIDE and IDTRAKVALID kernels are split into kernels which run thinning and augmentation tools specific to one or the other format, and kernels which run the tools which are common to the two formats.

  • Ensure that the configurations of common augmentation tools enable the decorations needed for both formats when both formats are enabled.

  • Select output aux elements explicitly to ensure that output does not change when enabling the other format additionally.

  • Select output items for IDTIDE and IDTRKVALID by full storegate key rather than just by type, to not get undesired items. Also specify all aux elements explicitly to only get the desired decorations.

  • Disable unused inputs.

This approach has the disadvantage that it will not work with serial athena i.e. there is likely still a conflict when trying to produce formats in serial athena. And slightly more decorations are done for all events, since a common tool is used to create decorations for both IDTIDE and IDTRKVALID and IDTIDE requires some extra decorations. In my tests I see that this new approach seems a bit slower O(3%).

Merge request reports