Belle II Software  release-08-01-10
B2A403-KFit-VertexFit.py
1 #!/usr/bin/env python3
2 
3 
10 
11 
30 
31 import basf2 as b2
32 from modularAnalysis import inputMdst
33 from modularAnalysis import reconstructDecay
34 from modularAnalysis import matchMCTruth
35 from vertex import kFit
36 from stdCharged import stdPi, stdK
37 from modularAnalysis import variablesToNtuple
38 import variables.collections as vc
39 import variables.utils as vu
40 
41 # create path
42 my_path = b2.create_path()
43 
44 # load input ROOT file
45 inputMdst(filename=b2.find_file('B02pi0D0_D2kpi_B2Dstarpi_Dstar2Dpi_D2kpi.root', 'examples', False),
46  path=my_path)
47 
48 
49 # use standard final state particle lists
50 #
51 # creates "pi+:all" ParticleList (and c.c.)
52 stdPi('all', path=my_path)
53 # creates "pi+:loose" ParticleList (and c.c.)
54 stdPi('loose', path=my_path)
55 # creates "K+:loose" ParticleList (and c.c.)
56 stdK('loose', path=my_path)
57 
58 # reconstruct D0 -> K- pi+ decay
59 # keep only candidates with 1.8 < M(Kpi) < 1.9 GeV
60 reconstructDecay('D0:kpi -> K-:loose pi+:loose', '1.8 < M < 1.9', path=my_path)
61 
62 # Perform D0 vertex fit.
63 # Reject the candidates with failed fit.
64 kFit('D0:kpi', 0.0, path=my_path)
65 
66 # reconstruct D*+ -> D0 pi+ decay
67 # keep only candidates with Q = M(D0pi) - M(D0) - M(pi) < 20 MeV
68 # and D* CMS momentum > 2.5 GeV
69 reconstructDecay('D*+ -> D0:kpi pi+:all', '0.0 <= Q < 0.02 and 2.5 < useCMSFrame(p) < 5.5', path=my_path)
70 
71 # perform MC matching (MC truth association)
72 matchMCTruth('D*+', path=my_path)
73 
74 # perform D*+ vertex fit
75 # keep candidates only passing C.L. value of the fit > 0.0 (no cut)
76 kFit('D*+', 0.0, path=my_path)
77 
78 # Select variables that we want to store to ntuple
79 
80 dstar_vars = vc.inv_mass + vc.mc_truth
81 
82 fs_hadron_vars = vu.create_aliases_for_selected(
83  vc.pid + vc.track + vc.mc_truth,
84  'D*+ -> [D0 -> ^K- ^pi+] ^pi+')
85 
86 d0_vars = vu.create_aliases_for_selected(
87  vc.inv_mass + vc.mc_truth,
88  'D*+ -> ^D0 pi+', 'D0')
89 
90 
91 # Saving variables to ntuple
92 output_file = 'B2A403-KFit-VertexFit.root'
93 variablesToNtuple('D*+', dstar_vars + d0_vars + fs_hadron_vars,
94  filename=output_file, treename='dsttree', path=my_path)
95 
96 # Process the events
97 b2.process(my_path)
98 
99 # print out the summary
100 print(b2.statistics)