Belle II Software development
B2A420-OrcaKinFit.py
1#!/usr/bin/env python3
2
3
10
11
22
23import basf2 as b2
24from modularAnalysis import inputMdst
25from modularAnalysis import fillParticleList
26from modularAnalysis import reconstructDecay
27from modularAnalysis import matchMCTruth
28from kinfit import fitKinematic4C
29from modularAnalysis import variablesToNtuple
30import variables.collections as vc
31import variables.utils as vu
32
33# create path
34mypath = b2.create_path()
35
36# Input file(s).
37inputMdst(filename=b2.find_file('B2A424-SimulateMuonPairs.root', 'examples', False),
38 path=mypath)
39
40# use standard final state particle lists for muons
41fillParticleList('mu-:z0', 'chiProb > 0.001 and p > 1.0', path=mypath)
42fillParticleList('mu-:z0fit', 'chiProb > 0.001 and p > 1.0', path=mypath)
43
44# reconstruct Z -> mu+ mu-
45reconstructDecay('Z0:mm_rec -> mu+:z0 mu-:z0', '9.0 < M < 11.0', path=mypath)
46reconstructDecay('Z0:mm_kinfit -> mu+:z0fit mu-:z0fit', '9.0 < M < 11.0', path=mypath)
47
48# MC truth matching
49matchMCTruth('Z0:mm_rec', path=mypath)
50matchMCTruth('Z0:mm_kinfit', path=mypath)
51
52# kinematic 4C hard fit
53fitKinematic4C('Z0:mm_kinfit', path=mypath)
54
55# Select variables that we want to store to ntuple
56muvars = vc.kinematics + vc.mc_truth + vc.mc_kinematics + vc.momentum_uncertainty
57z0vars = vc.inv_mass + vc.kinematics + vc.mc_kinematics + vc.mc_truth + \
58 vu.create_aliases_for_selected(muvars, 'Z0 -> ^mu+ ^mu-')
59
60z0uvars = z0vars + ['OrcaKinFitProb', 'OrcaKinFitChi2', 'OrcaKinFitErrorCode']
61
62
63# Saving variables to ntuple
64output_file = 'B2A420-OrcaKinFit.root'
65variablesToNtuple('Z0:mm_rec', z0vars,
66 filename=output_file, treename='Z0_mm_rec', path=mypath)
67variablesToNtuple('Z0:mm_kinfit', z0uvars,
68 filename=output_file, treename='Z0_mm_kinfit', path=mypath)
69
70
71# Process the events
72b2.process(mypath)
73
74# print out the summary
75print(b2.statistics)