Belle II Software  release-08-01-10
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(b2test_utils.require_file('analysis/tests/mdst.root'),
65  path=my_path)
66 
67 stdc.stdPi(listtype='all', path=my_path)
68 stdc.stdPi(listtype='good', path=my_path)
69 stdc.stdK(listtype='all', path=my_path)
70 stdc.stdK(listtype='good', path=my_path)
71 stdc.stdMu(listtype='all', path=my_path)
72 stdc.stdMu(listtype='good', path=my_path)
73 
74 ma.reconstructDecay('D0:kpi -> K-:good pi+:good', '', path=my_path)
75 ma.matchMCTruth('D0:kpi', path=my_path)
76 ma.applyCuts('D0:kpi', 'abs(mcPDG)==421', path=my_path)
77 vx.raveFit('D0:kpi', 0.0, path=my_path)
78 
79 ma.reconstructDecay('J/psi:mumu -> mu+:good mu-:good', '', path=my_path)
80 vx.raveFit('J/psi:mumu', 0.0, path=my_path)
81 
82 # TAGGING
83 ma.reconstructDecay('B+:tag -> anti-D0:kpi pi+:all', '', path=my_path)
84 ma.matchMCTruth('B+:tag', path=my_path)
85 ma.applyCuts('B+:tag', 'isSignalAcceptMissingNeutrino>0.5', path=my_path)
86 vx.raveFit('B+:tag', 0.0, path=my_path)
87 
88 # SIGNAL
89 ma.reconstructDecay('B-:sigT -> J/psi:mumu K-:good pi+:good pi-:good', '', path=my_path)
90 ma.matchMCTruth('B-:sigT', path=my_path)
91 ma.applyCuts('B-:sigT', 'abs(mcPDG)==521', path=my_path)
92 
93 ma.reconstructDecay('Upsilon(4S):sig -> B+:tag B-:sigT', '', path=my_path)
94 
95 mytestmodule2 = b2.register_module('BtubeCreator')
96 # select the daughter which will be used as reference to create Btube.
97 # Order of daughters should be identical to decay string used in
98 # reconstructDecay
99 my_path.add_module(mytestmodule2, listName='Upsilon(4S):sig', decayString='Upsilon(4S):sig -> ^B+:tag B-:sigT')
100 vx.raveFit('B-:sigT', 0.0, constraint='btube', path=my_path)
101 # Saving variables to ntuple
102 output_file = 'test.root'
103 true_vars = ['truex', 'truey', 'truez']
104 avf_vars = ['avf00', 'avf01', 'avf02', 'avf10', 'avf11', 'avf12', 'avf20', 'avf21', 'avf22', 'avfPx', 'avfPy', 'avfPz', 'avfE']
105 tube_vars = [
106  'TubeX',
107  'TubeY',
108  'TubeZ',
109  'Tube00',
110  'Tube01',
111  'Tube02',
112  'Tube10',
113  'Tube11',
114  'Tube12',
115  'Tube20',
116  'Tube21',
117  'Tube22',
118  'tube_dir_X',
119  'tube_dir_Y',
120  'tube_dir_Z',
121  'tube_B_aparent_Momentum_from_creatorB']
122 
123 common_vars = vc.kinematics + vc.vertex + vc.mc_vertex + vc.mc_truth + \
124  vc.mc_kinematics + ['InvM', 'mcPxCms', 'mcPyCms', 'mcPzCms', 'mcECms']
125 D_vars_tagside = vu.create_aliases_for_selected(
126  list_of_variables=common_vars,
127  decay_string='B+:tag -> ^anti-D0:kpi pi+:all',
128  prefix='D_tagside')
129 U4S_vars_sig = vu.create_aliases_for_selected(
130  list_of_variables=common_vars + tube_vars + true_vars,
131  decay_string='Upsilon(4S):sig -> B+:tag ^B-:sigT',
132  prefix='sigB')
133 U4S_vars_tag = vu.create_aliases_for_selected(
134  list_of_variables=common_vars + avf_vars + true_vars,
135  decay_string='Upsilon(4S):sig -> ^B+:tag B-:sigT',
136  prefix='tagB')
137 U4S_vars = common_vars + U4S_vars_tag + U4S_vars_sig + D_vars_tagside
138 ma.variablesToNtuple('Upsilon(4S):sig', U4S_vars,
139  filename=output_file, treename='u4stree', path=my_path)
140 ma.variablesToNtuple('B+:tag', common_vars,
141  filename=output_file, treename='tagtree', path=my_path)
142 
144  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:189
def safe_process(*args, **kwargs)
Definition: __init__.py:236