Printing Decay Trees

This example shows how to print the decay tree of a candidate.

from PyConf.application import configure, configure_input
from PyConf.application import make_odin
from PyConf.control_flow import CompositeNode, NodeLogic
from PyConf.Algorithms import PrintDecayTree, PrintHeader

from DaVinci import Options
from DaVinci.common_particles import make_std_loose_jpsi2mumu


def print_decay_tree(options: Options):
    config = configure_input(options)
    jpsis = make_std_loose_jpsi2mumu()

    pdt = PrintDecayTree(name="PrintJpsis", Input=jpsis)

    node = CompositeNode(
        "PrintJpsiNode", children=[jpsis, pdt], combine_logic=NodeLogic.NONLAZY_AND
    )

    config.update(configure(options, node))
    return config


def print_header(options: Options):
    config = configure_input(options)
    ph = PrintHeader(name="PrintHeader", ODINLocation=make_odin())

    node = CompositeNode("PHNode", children=[ph])

    config.update(configure(options, node))
    return config

To run the example:

lbexec DaVinciExamples.debugging:print_decay_tree "$DAVINCIEXAMPLESROOT/example_data/Upgrade_Bd2KstarMuMu_ldst.yaml"

For reference, these are the options of this example

input_files: root://eoslhcb.cern.ch//eos/lhcb/grid/prod/lhcb/MC/Upgrade/LDST/00076720/0000/00076720_000000{01,02,04,27,36,37,38,39,43,51,57,68}_1.ldst
input_type: ROOT
simulation: true
conddb_tag: sim-20171127-vc-md100
dddb_tag: dddb-20171126
conditions_version: master
geometry_version: run3/trunk
input_process: Brunel
persistreco_version: 0.0
lumi: False
write_fsr: False