Belle II Software development
B_generic_apply.py
1#!/usr/bin/env python3
2
3
10
11import fei
12import basf2 as b2
13import modularAnalysis as ma
14
15# Create path
16path = b2.create_path()
17
18# Load input ROOT file
19ma.inputMdst(filename=b2.find_file('mdst16.root', 'validation', False),
20 path=path)
21
22# Add the necessary database
23b2.conditions.prepend_globaltag(ma.getAnalysisGlobaltag())
24
25# Get FEI default channels.
26# Utilise the arguments to toggle on and off certain channels
27particles = fei.get_default_channels()
28
29# Set up FEI configuration specifying the FEI prefix
30configuration = fei.config.FeiConfiguration(prefix='FEIv4_2021_MC14_release_05_01_12', training=False, monitor=False, cache=0)
31
32# Get FEI path
33feistate = fei.get_path(particles, configuration)
34
35# Add FEI path to the path to be processed
36path.add_path(feistate.path)
37
38# Add MC matching when applying to MC. This is required for variables like isSignal and mcErrors below
39path.add_module('MCMatcherParticles', listName='B+:generic', looseMCMatching=True)
40path.add_module('MCMatcherParticles', listName='B+:semileptonic', looseMCMatching=True)
41path.add_module('MCMatcherParticles', listName='B0:generic', looseMCMatching=True)
42path.add_module('MCMatcherParticles', listName='B0:semileptonic', looseMCMatching=True)
43
44commonVariables = ['mcErrors', 'extraInfo(decayModeID)', 'extraInfo(uniqueSignal)', 'extraInfo(SignalProbability)']
45genericVariables = ['Mbc', 'deltaE', 'isSignal'] + commonVariables
46semiLeptonicVariables = ['cosThetaBetweenParticleAndNominalB', 'isSignalAcceptMissingNeutrino'] + commonVariables
47
48# Store tag-side variables of interest.
49ma.variablesToNtuple('B+:generic',
50 genericVariables,
51 treename='Bplus',
52 filename='B_charged_hadronic.root',
53 path=path)
54ma.variablesToNtuple('B+:semileptonic',
55 semiLeptonicVariables,
56 treename='BplusSL',
57 filename='B_charged_semileptonic.root',
58 path=path)
59
60ma.variablesToNtuple('B0:generic',
61 genericVariables,
62 treename='B0',
63 filename='B_mixed_hadronic.root',
64 path=path)
65ma.variablesToNtuple('B0:semileptonic',
66 semiLeptonicVariables,
67 treename='B0SL',
68 filename='B_mixed_semileptonic.root',
69 path=path)
70
71# Process 100 events
72b2.process(path, max_event=100)
73print(b2.statistics)