Skip to content

Add B2OC HLT2 lines

Alessandro Bertolin requested to merge Moore-B2OC into master

Purpose

Move a number of selections from the old B2OC stripping module into the new framework (for now, not caring about which will live in HLT2 and which will go after a topo trigger). The lines live in a B2OpenCharm submodule of the HLT2 lines.

The current B2OC stripping has more than 800 lines. To remain within CPU/rate limits, these are currently handled in a single module that ensures that lines sharing a given D decay all use a single Combiner, as far as possible. This is still necessary in the upgrade, but can be achieved without relying on one huge mega-builder, when using the upgrade selection framework.

Planned code structure

The lines are defined in a B2OpenCharm submodule of the HLT2 lines module, and look like the example D02HH line:

@register_line_builder(all_lines)
@configurable
def BdToDmKp_DmToHHH_line(name='Hlt2B2OC_BdToDmKp_DmToHHHLine', prescale=1):
    bachelor = basic.make_kaons()
    d = d_builder.make_dplus_to_hhh()
    return HltLine(
        name=name,
        prescale=prescale,
        algs=upfront_reconstruction() + prefilters() +
        [b_builder.make_bzero_to_dminus_Kplus(d=d, bachelor=bachelor)])

They are defined in multiple files, each of which defines some sensible "family" of selections.

In order to ensure that all lines sharing a given D decay use exactly the same configuration, so that the combination (automatically) is only run once, we provide each D decay in a DBuilder. It defines a default version of each decay that ideally covers almost all use cases. If necessary, the default cuts are easy to override in the line definition by overriding the relevant function arguments (= so all special cases need not be anticipated in the DBuilder, which avoids a lot of the complexity of the current stripping module. Of course, this should be done as little as possible, to not use unnecessary resources)

A Basic builder serves the same purpose but defines a default selection of tracks and two-body decays (to as large a degree as possible, the ones in standard_particles should be used). Here, sensible default cuts for the B2OC selections can be defined.

A BBuilder defines B decays. These are less often reused, as a given line typically corresponds to a specific decay chain. It does, however, provide a central place to define default cuts, and a central place to put MVA code in the future.

Near future work plan

  1. Agree on a reasonable overall structure of the code, with input from HLT experts and B2OC analysts, and commit to master
  2. Once the overall structure is agreed on, have O(10) B2OC analysts add lines for their specific analyses and learn from that (incl. more detailed cut tuning)

Status

A few lines have been added to define the proposed structure. The cuts are very loose for (some of the existing stripping cuts are to be added, for example there is no BDT yet)

Edited by Mikkel Bjorn

Merge request reports