Belle II Software  release-05-01-25
test_Btube.py
1 import basf2 as b2
2 import modularAnalysis as ma
3 import variables.collections as vc
4 import variables.utils as vu
5 import vertex as vx
6 import stdCharged as stdc
7 import sys
8 import b2test_utils
9 
10 from basf2 import conditions
11 from variables import variables
12 from ROOT import Belle2
13 from ROOT import TFile
14 from ROOT import TNtuple
15 
16 variables.addAlias('TubeX', 'extraInfo(TubePosX)')
17 variables.addAlias('TubeY', 'extraInfo(TubePosY)')
18 variables.addAlias('TubeZ', 'extraInfo(TubePosZ)')
19 variables.addAlias('Tube00', 'extraInfo(TubeCov00)')
20 variables.addAlias('Tube01', 'extraInfo(TubeCov01)')
21 variables.addAlias('Tube02', 'extraInfo(TubeCov02)')
22 variables.addAlias('Tube10', 'extraInfo(TubeCov10)')
23 variables.addAlias('Tube11', 'extraInfo(TubeCov11)')
24 variables.addAlias('Tube12', 'extraInfo(TubeCov12)')
25 variables.addAlias('Tube20', 'extraInfo(TubeCov20)')
26 variables.addAlias('Tube21', 'extraInfo(TubeCov21)')
27 variables.addAlias('Tube22', 'extraInfo(TubeCov22)')
28 
29 variables.addAlias('avf00', 'extraInfo(prod_vtx_cov00)')
30 variables.addAlias('avf01', 'extraInfo(prod_vtx_cov01)')
31 variables.addAlias('avf02', 'extraInfo(prod_vtx_cov02)')
32 variables.addAlias('avf10', 'extraInfo(prod_vtx_cov10)')
33 variables.addAlias('avf11', 'extraInfo(prod_vtx_cov11)')
34 variables.addAlias('avf12', 'extraInfo(prod_vtx_cov12)')
35 variables.addAlias('avf20', 'extraInfo(prod_vtx_cov20)')
36 variables.addAlias('avf21', 'extraInfo(prod_vtx_cov21)')
37 variables.addAlias('avf22', 'extraInfo(prod_vtx_cov22)')
38 
39 variables.addAlias('avfPx', 'extraInfo(Px_after_avf)')
40 variables.addAlias('avfPy', 'extraInfo(Py_after_avf)')
41 variables.addAlias('avfPz', 'extraInfo(Pz_after_avf)')
42 variables.addAlias('avfE', 'extraInfo(E_after_avf)')
43 
44 variables.addAlias('mcPxCms', 'useCMSFrame(mcPX)')
45 variables.addAlias('mcPyCms', 'useCMSFrame(mcPY)')
46 variables.addAlias('mcPzCms', 'useCMSFrame(mcPZ)')
47 variables.addAlias('mcECms', 'useCMSFrame(mcE)')
48 
49 variables.addAlias('tube_dir_X', 'extraInfo(TubeDirX)')
50 variables.addAlias('tube_dir_Y', 'extraInfo(TubeDirY)')
51 variables.addAlias('tube_dir_Z', 'extraInfo(TubeDirZ)')
52 
53 variables.addAlias('truex', 'matchedMC(x)')
54 variables.addAlias('truey', 'matchedMC(y)')
55 variables.addAlias('truez', 'matchedMC(z)')
56 # create path
57 my_path = b2.create_path()
58 
59 # load input ROOT file
60 
61 ma.inputMdst('default',
62  b2test_utils.require_file('analysis/tests/mdst.root'),
63  path=my_path)
64 
65 stdc.stdPi(listtype='all', path=my_path)
66 stdc.stdPi(listtype='good', path=my_path)
67 stdc.stdK(listtype='all', path=my_path)
68 stdc.stdK(listtype='good', path=my_path)
69 stdc.stdMu(listtype='all', path=my_path)
70 stdc.stdMu(listtype='good', path=my_path)
71 
72 ma.reconstructDecay('D0:kpi -> K-:good pi+:good', '', path=my_path)
73 ma.matchMCTruth('D0:kpi', path=my_path)
74 ma.applyCuts('D0:kpi', 'abs(mcPDG)==421', path=my_path)
75 vx.raveFit('D0:kpi', 0.0, path=my_path)
76 
77 ma.reconstructDecay('J/psi:mumu -> mu+:good mu-:good', '', path=my_path)
78 vx.raveFit('J/psi:mumu', 0.0, path=my_path)
79 
80 # TAGGING
81 ma.reconstructDecay('B+:tag -> anti-D0:kpi pi+:all', '', path=my_path)
82 ma.matchMCTruth('B+:tag', path=my_path)
83 ma.applyCuts('B+:tag', 'isSignalAcceptMissingNeutrino>0.5', path=my_path)
84 vx.raveFit('B+:tag', 0.0, path=my_path)
85 
86 # SIGNAL
87 ma.reconstructDecay('B-:sigT -> J/psi:mumu K-:good pi+:good pi-:good', '', path=my_path)
88 ma.matchMCTruth('B-:sigT', path=my_path)
89 ma.applyCuts('B-:sigT', 'abs(mcPDG)==521', path=my_path)
90 
91 ma.reconstructDecay('Upsilon(4S):sig -> B+:tag B-:sigT', '', path=my_path)
92 
93 mytestmodule2 = ma.register_module('BtubeCreator')
94 # select the daughter which will be used as reference to create Btube.
95 # Order of daughters should be identical to decay string used in
96 # reconstructDecay
97 my_path.add_module(mytestmodule2, listName='Upsilon(4S):sig', decayString='Upsilon(4S):sig -> ^B+:tag B-:sigT')
98 vx.raveFit('B-:sigT', 0.0, constraint='btube', path=my_path)
99 # Saving variables to ntuple
100 output_file = 'test.root'
101 true_vars = ['truex', 'truey', 'truez']
102 avf_vars = ['avf00', 'avf01', 'avf02', 'avf10', 'avf11', 'avf12', 'avf20', 'avf21', 'avf22', 'avfPx', 'avfPy', 'avfPz', 'avfE']
103 tube_vars = [
104  'TubeX',
105  'TubeY',
106  'TubeZ',
107  'Tube00',
108  'Tube01',
109  'Tube02',
110  'Tube10',
111  'Tube11',
112  'Tube12',
113  'Tube20',
114  'Tube21',
115  'Tube22',
116  'tube_dir_X',
117  'tube_dir_Y',
118  'tube_dir_Z']
119 
120 common_vars = vc.kinematics + vc.vertex + vc.mc_vertex + vc.mc_truth + \
121  vc.mc_kinematics + ['InvM', 'mcPxCms', 'mcPyCms', 'mcPzCms', 'mcECms']
122 D_vars_tagside = vu.create_aliases_for_selected(
123  list_of_variables=common_vars,
124  decay_string='B+:tag -> ^anti-D0:kpi pi+:all',
125  prefix='D_tagside')
126 U4S_vars_sig = vu.create_aliases_for_selected(
127  list_of_variables=common_vars + tube_vars + true_vars,
128  decay_string='Upsilon(4S):sig -> B+:tag ^B-:sigT',
129  prefix='sigB')
130 U4S_vars_tag = vu.create_aliases_for_selected(
131  list_of_variables=common_vars + avf_vars + true_vars,
132  decay_string='Upsilon(4S):sig -> ^B+:tag B-:sigT',
133  prefix='tagB')
134 U4S_vars = common_vars + U4S_vars_tag + U4S_vars_sig + D_vars_tagside
135 ma.variablesToNtuple('Upsilon(4S):sig', U4S_vars,
136  filename=output_file, treename='u4stree', path=my_path)
137 ma.variablesToNtuple('B+:tag', common_vars,
138  filename=output_file, treename='tagtree', path=my_path)
139 
variables.utils
Definition: utils.py:1
b2test_utils.clean_working_directory
def clean_working_directory()
Definition: __init__.py:176
b2test_utils.safe_process
def safe_process(*args, **kwargs)
Definition: __init__.py:224
b2test_utils.require_file
def require_file(filename, data_type="", py_case=None)
Definition: __init__.py:47
variables.collections
Definition: collections.py:1