Belle II Software  release-06-02-00
test_DistanceCalculator.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 
55 variables.addAlias('truex', 'matchedMC(x)')
56 variables.addAlias('truey', 'matchedMC(y)')
57 variables.addAlias('truez', 'matchedMC(z)')
58 
59 variables.addAlias('Distance', 'extraInfo(CalculatedDistance)')
60 variables.addAlias('DistanceError', 'extraInfo(CalculatedDistanceError)')
61 variables.addAlias('DistanceVector_X', 'extraInfo(CalculatedDistanceVector_X)')
62 variables.addAlias('DistanceVector_Y', 'extraInfo(CalculatedDistanceVector_Y)')
63 variables.addAlias('DistanceVector_Z', 'extraInfo(CalculatedDistanceVector_Z)')
64 variables.addAlias('DistanceCovMatrixXX', 'extraInfo(CalculatedDistanceCovMatrixXX)')
65 variables.addAlias('DistanceCovMatrixXY', 'extraInfo(CalculatedDistanceCovMatrixXY)')
66 variables.addAlias('DistanceCovMatrixXZ', 'extraInfo(CalculatedDistanceCovMatrixXZ)')
67 variables.addAlias('DistanceCovMatrixYX', 'extraInfo(CalculatedDistanceCovMatrixYX)')
68 variables.addAlias('DistanceCovMatrixYY', 'extraInfo(CalculatedDistanceCovMatrixYY)')
69 variables.addAlias('DistanceCovMatrixYZ', 'extraInfo(CalculatedDistanceCovMatrixYZ)')
70 variables.addAlias('DistanceCovMatrixZX', 'extraInfo(CalculatedDistanceCovMatrixZX)')
71 variables.addAlias('DistanceCovMatrixZY', 'extraInfo(CalculatedDistanceCovMatrixZY)')
72 variables.addAlias('DistanceCovMatrixZZ', 'extraInfo(CalculatedDistanceCovMatrixZZ)')
73 # create path
74 my_path = b2.create_path()
75 
76 # load input ROOT file
77 
78 ma.inputMdst('default',
79  b2test_utils.require_file('analysis/tests/mdst.root'),
80  path=my_path)
81 
82 stdc.stdPi(listtype='all', path=my_path)
83 stdc.stdPi(listtype='good', path=my_path)
84 stdc.stdK(listtype='all', path=my_path)
85 stdc.stdK(listtype='good', path=my_path)
86 stdc.stdMu(listtype='all', path=my_path)
87 stdc.stdMu(listtype='good', path=my_path)
88 
89 ma.reconstructDecay('D0:kpi -> K-:good pi+:good', '', path=my_path)
90 ma.matchMCTruth('D0:kpi', path=my_path)
91 ma.applyCuts('D0:kpi', 'abs(mcPDG)==421', path=my_path)
92 vx.raveFit('D0:kpi', 0.0, path=my_path)
93 
94 ma.reconstructDecay('J/psi:mumu -> mu+:good mu-:good', '', path=my_path)
95 vx.raveFit('J/psi:mumu', 0.0, path=my_path)
96 
97 # TAGGING
98 ma.reconstructDecay('B+:tag -> anti-D0:kpi pi+:all', '', path=my_path)
99 ma.matchMCTruth('B+:tag', path=my_path)
100 ma.applyCuts('B+:tag', 'isSignalAcceptMissingNeutrino>0.5', path=my_path)
101 vx.raveFit('B+:tag', 0.0, path=my_path)
102 
103 # SIGNAL
104 ma.reconstructDecay('B-:sigT -> J/psi:mumu K-:good pi+:good pi-:good', '', path=my_path)
105 ma.matchMCTruth('B-:sigT', path=my_path)
106 ma.applyCuts('B-:sigT', 'abs(mcPDG)==521', path=my_path)
107 
108 ma.reconstructDecay('Upsilon(4S):sig -> B+:tag B-:sigT', '', path=my_path)
109 
110 mytestmodule2 = b2.register_module('BtubeCreator')
111 my_path.add_module(mytestmodule2,
112  listName='Upsilon(4S):sig',
113  decayString='Upsilon(4S) -> ^B+ B-')
114 vx.raveFit('B-:sigT', 0.0, constraint='btube', path=my_path)
115 
116 ma.calculateDistance('B-:sigT', 'B- -> ^J/psi K- pi+ pi-', "vertexbtube", path=my_path)
117 # Saving variables to ntuple
118 output_file = 'test.root'
119 true_vars = ['truex', 'truey', 'truez']
120 avf_vars = ['avf00', 'avf01', 'avf02', 'avf10', 'avf11', 'avf12', 'avf20', 'avf21', 'avf22', 'avfPx', 'avfPy', 'avfPz', 'avfE']
121 tube_vars = [
122  'TubeX',
123  'TubeY',
124  'TubeZ',
125  'Tube00',
126  'Tube01',
127  'Tube02',
128  'Tube10',
129  'Tube11',
130  'Tube12',
131  'Tube20',
132  'Tube21',
133  'Tube22',
134  'tube_dir_X',
135  'tube_dir_Y',
136  'tube_dir_Z']
137 
138 common_vars = vc.kinematics + vc.vertex + vc.mc_vertex + vc.mc_truth + \
139  vc.mc_kinematics + ['InvM', 'mcPxCms', 'mcPyCms', 'mcPzCms', 'mcECms']
140 distance_vars = [
141  'Distance',
142  'DistanceError',
143  'DistanceVector_X',
144  'DistanceVector_Y',
145  'DistanceVector_Z',
146  'DistanceCovMatrixXX',
147  'DistanceCovMatrixXY',
148  'DistanceCovMatrixXZ',
149  'DistanceCovMatrixYX',
150  'DistanceCovMatrixYY',
151  'DistanceCovMatrixYZ',
152  'DistanceCovMatrixZX',
153  'DistanceCovMatrixZY',
154  'DistanceCovMatrixZZ']
155 Distance_vars_sig = vu.create_aliases_for_selected(
156  list_of_variables=distance_vars,
157  decay_string='Upsilon(4S):sig -> B+:tag ^B-:sigT',
158  prefix='Distance')
159 D_vars_tagside = vu.create_aliases_for_selected(
160  list_of_variables=common_vars,
161  decay_string='B+:tag -> ^anti-D0:kpi pi+:all',
162  prefix='D_tagside')
163 U4S_vars_sig = vu.create_aliases_for_selected(
164  list_of_variables=common_vars + tube_vars + true_vars,
165  decay_string='Upsilon(4S):sig -> B+:tag ^B-:sigT',
166  prefix='sigB')
167 U4S_vars_tag = vu.create_aliases_for_selected(
168  list_of_variables=common_vars + avf_vars + true_vars,
169  decay_string='Upsilon(4S):sig -> ^B+:tag B-:sigT',
170  prefix='tagB')
171 U4S_vars = common_vars + U4S_vars_tag + U4S_vars_sig + D_vars_tagside + Distance_vars_sig
172 ma.variablesToNtuple('Upsilon(4S):sig', U4S_vars,
173  filename=output_file, treename='u4stree', path=my_path)
174 ma.variablesToNtuple('B+:tag', common_vars,
175  filename=output_file, treename='tagtree', path=my_path)
177  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