Belle II Software  release-08-01-10
B2A301-Dstar2D0Pi-Reconstruction.py
1 #!/usr/bin/env python3
2 
3 
10 
11 
23 
24 import basf2 as b2
25 import modularAnalysis as ma
26 import variables.collections as vc
27 import variables.utils as vu
28 import stdCharged as stdc
29 
30 # create path
31 my_path = b2.create_path()
32 
33 # load input ROOT file
34 ma.inputMdst(filename=b2.find_file('Dst2D0pi.root', 'examples', False),
35  path=my_path)
36 
37 
38 # use standard final state particle lists
39 #
40 # creates "pi+:all" ParticleList (and c.c.)
41 stdc.stdPi(listtype='all', path=my_path)
42 # creates "pi+:loose" ParticleList (and c.c.)
43 stdc.stdPi(listtype='loose', path=my_path)
44 # creates "K+:loose" ParticleList (and c.c.)
45 stdc.stdK(listtype='loose', path=my_path)
46 
47 # reconstruct D0 -> K- pi+ decay
48 # keep only candidates with 1.8 < M(Kpi) < 1.9 GeV
49 ma.reconstructDecay(decayString='D0:kpi -> K-:loose pi+:loose', cut='1.8 < M < 1.9', path=my_path)
50 
51 # reconstruct D*+ -> D0 pi+ decay
52 # keep only candidates with Q = M(D0pi) - M(D0) - M(pi) < 20 MeV
53 ma.reconstructDecay(decayString='D*+ -> D0:kpi pi+:all', cut='0.0 < Q < 0.2', path=my_path)
54 
55 # perform MC matching (MC truth association)
56 ma.matchMCTruth(list_name='D*+', path=my_path)
57 
58 # Select variables that we want to store to ntuple
59 dstar_vars = vc.inv_mass + vc.mc_truth
60 
61 # We now want to select variables for all of the final state hadrons in the
62 # decay products, that is, the K- and the two pi+.
63 # You already know how to define these variables with the help of the
64 # ``daughter`` metavariable: If we consider D^* -> D0 pi+, then we could access
65 # information about the pion as daughter(1, variable).
66 # Creating aliases for all of these variables would fill the next 100 lines
67 # though, so we instead use the ``create_aliases_for_selected`` helper function:
68 # We specify a list of variables and then a decay string, with particles
69 # selected with a leading ``^``.
70 # Again, for more information on how to create aliases, head over to
71 # VariableManager/variableAliases.py.
72 fs_hadron_vars = vu.create_aliases_for_selected(
73  list_of_variables=vc.pid + vc.track + vc.mc_truth,
74  decay_string='D*+ -> [D0 -> ^K- ^pi+] ^pi+')
75 
76 d0_vars = vu.create_aliases_for_selected(
77  list_of_variables=vc.inv_mass + vc.mc_truth,
78  decay_string='D*+ -> ^D0 pi+',
79  prefix='D0')
80 
81 
82 # Saving variables to ntuple
83 output_file = 'B2A301-Dstar2D0Pi-Reconstruction.root'
84 ma.variablesToNtuple('D*+', dstar_vars + d0_vars + fs_hadron_vars,
85  filename=output_file, treename='dsttree', path=my_path)
86 
87 # Process the events
88 b2.process(my_path)
89 
90 # print out the summary
91 print(b2.statistics)