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