Skip to content

B2OC: throughput improvements in B2OC, mainly in b2chh and b2chhh, fix BdToDstpPbarPK spruce line decay descriptor

This merge covers various throughput improvements in B2OC. The main change is a reordering of inputs in the _make_b2chhh and _make_b2chh combiners, the combiners started with the more abundant particles in order to perform certain cuts but together with the control flow optimization it's better to move the most rare input first. The functions were changed and all input lists and descriptors using it was shuffled. This was tested locally to ensure that the number of final combinations is still the same. For throughput gains, the improvement varies but reductions of around 50-80% can be seen across most of the combiners affected.

Additionally, descriptors on the form of ["B+ -> D0 D+", "B- -> D0 D-"] have been changed to ["B+ -> D0 D+, B- -> D0 D-"]. With the change in Rec!4347 (merged), descriptors can now be written comma-separated, thereby skipping the merger and moving the loop over descriptors into the combiner instead of running two separate ones. As an example, in the line: Hlt2B2OC_BuToD0Dp_D0ToHH_DpToHHH, two combiners and one merger ran with a total timing of ~0.46s. With the change this is reduce to just one combiner with a total timing of ~0.12s. These numbers have quite some uncertainty but reduction of around 66% could be expected.

Here are both output files of the test ran locally, both over 20k events:

run_2025_patches_n20000.out.gz

run_b2ocimprovements_n20000.out.gz

This MR is also fixing the decay descriptor of the SpruceB2OC_BdToDstpPbarPK_DstpToD0Pi_D0ToHHHH line.

Edited by Alessandro Bertolin

Merge request reports

Loading