Belle II Software  release-06-02-00
b2biiMonitors.py
1 #!/usr/bin/env python3
2 # -*- coding: utf-8 -*-
3 
4 
11 
12 import basf2 as b2
13 from modularAnalysis import fillParticleList
14 from modularAnalysis import copyParticles
15 from modularAnalysis import copyList
16 from modularAnalysis import cutAndCopyLists
17 from modularAnalysis import matchMCTruth
18 
19 from vertex import kFit
20 
21 
22 def addBeamParamsConversionMonitors(outputRootFile='b2biiBeamParamsConversionMonitors.root', path=None):
23  """
24  In each event saves HER, LER, CMS, x-angle to histograms for monitoring purpuses: e.g. to be compared with
25  same distributions obtained within BASF.
26 
27  @param outputRootFile name of the output ROOT file to which the histograms are saved.
28  @param path modules are added to this path
29  """
30 
31  # register VariablesToHistogram and fill it with monitored variables
32  beam2hist = b2.register_module('VariablesToHistogram')
33  beam2hist.param('particleList', '')
34 
35  # define variables that are monitored and specify
36  # the corresponding histogram (#bins, low, high)
37  # ('variable_name', number_of_bins, x_low, x_high)
38  beam2hist_expno = ('expNum', 100, 0.0, 99.0)
39  beam2hist_runno = ('modulo(runNum,1000)', 1000, 0.0, 999.0)
40  beam2hist_evtno = ('modulo(evtNum,10000)', 10000, 0.0, 9999.0)
41 
42  beam2hist_Eher = ('Eher', 13000, 7.100, 8.400)
43  beam2hist_Eler = ('Eler', 6000, 3.100, 3.700)
44  beam2hist_Ecms = ('Ecms', 17000, 9.200, 10.900)
45  beam2hist_Xang = ('XAngle', 100, 0.01, 0.03)
46 
47  beam2hist_ipx = ('IPX', 100, -0.5, 0.5)
48  beam2hist_ipy = ('IPY', 100, -0.5, 0.5)
49  beam2hist_ipz = ('IPZ', 100, -5.0, 5.0)
50 
51  beam2hist_iperr00 = ('IPCov(0,0)', 100, 0.0, 0.000500)
52  beam2hist_iperr01 = ('IPCov(0,1)', 100, 0.0, 0.000001)
53  beam2hist_iperr02 = ('IPCov(0,2)', 100, 0.0, 0.010000)
54  beam2hist_iperr11 = ('IPCov(1,1)', 100, 0.0, 0.000001)
55  beam2hist_iperr12 = ('IPCov(1,2)', 100, 0.0, 0.000001)
56  beam2hist_iperr22 = ('IPCov(2,2)', 100, 0.0, 0.500000)
57 
58  beam2hist.param('variables',
59  [beam2hist_expno,
60  beam2hist_runno,
61  beam2hist_evtno,
62  beam2hist_Eher,
63  beam2hist_Eler,
64  beam2hist_Ecms,
65  beam2hist_Xang,
66  beam2hist_ipx,
67  beam2hist_ipy,
68  beam2hist_ipz,
69  beam2hist_iperr00,
70  beam2hist_iperr01,
71  beam2hist_iperr02,
72  beam2hist_iperr11,
73  beam2hist_iperr12,
74  beam2hist_iperr22])
75 
76  beam2hist.param('fileName', outputRootFile)
77  path.add_module(beam2hist)
78 
79 
80 def addKshortConversionMonitors(outputRootFile='b2biiKshortConversionMonitors.root', path=None):
81  """
82  Creates copies of KShort particles from 'K_S0:mdst' ParticleList and fills them to a new ParticleList called
83  'K_S0:b2bii_monitor'. For each KShort candidate several quantities are stored to histograms with 'VariablesToHistogram' module
84  for monitoring purpuses: e.g. to be compared with same distributions obtained within BASF.
85 
86  @param outputRootFile name of the output ROOT file to which the histograms are saved.
87  @param path modules are added to this path
88  """
89  # copy KShorts from 'K_S0:mdst' list. We don't want to mess with them.
90  copyParticles('K_S0:b2bii_monitor', 'K_S0:mdst', False, path)
91  kFit('K_S0:b2bii_monitor', -1, path=path)
92  matchMCTruth('K_S0:b2bii_monitor', path)
93 
94  # register VariablesToHistogram and fill it with monitored variables
95  kshorts2hist = b2.register_module('VariablesToHistogram')
96  kshorts2hist.param('particleList', 'K_S0:mdst')
97  fittdKS2hist = b2.register_module('VariablesToHistogram')
98  fittdKS2hist.param('particleList', 'K_S0:b2bii_monitor')
99 
100  # define variables that are monitored and specify
101  # the corresponding histogram (#bins, low, high)
102  # ('variable_name', number_of_bins, x_low, x_high)
103  kshorts2hist_mass = ('M', 100, 0.46, 0.53)
104  kshorts2hist_px = ('px', 100, -2.5, 2.5)
105  kshorts2hist_py = ('py', 100, -2.5, 2.5)
106  kshorts2hist_pz = ('pz', 100, -1.5, 3.5)
107  kshorts2hist_e = ('E', 100, 0.0, 4.0)
108  kshorts2hist_x = ('x', 100, -50.0, 50.0)
109  kshorts2hist_y = ('y', 100, -50.0, 50.0)
110  kshorts2hist_z = ('z', 100, -50.0, 50.0)
111 
112  kshorts2hist_d0px = ('daughter(0,px)', 100, -2.0, 2.0)
113  kshorts2hist_d0py = ('daughter(0,py)', 100, -2.0, 2.0)
114  kshorts2hist_d0pz = ('daughter(0,pz)', 100, -2.0, 3.0)
115  kshorts2hist_d0e = ('daughter(0,E)', 100, 0.0, 3.0)
116  kshorts2hist_d0x = ('daughter(0,x)', 100, -50.0, 50.0)
117  kshorts2hist_d0y = ('daughter(0,y)', 100, -50.0, 50.0)
118  kshorts2hist_d0z = ('daughter(0,z)', 100, -50.0, 50.0)
119 
120  kshorts2hist_d1px = ('daughter(1,px)', 100, -2.0, 2.0)
121  kshorts2hist_d1py = ('daughter(1,py)', 100, -2.0, 2.0)
122  kshorts2hist_d1pz = ('daughter(1,pz)', 100, -2.0, 3.0)
123  kshorts2hist_d1e = ('daughter(1,E)', 100, 0.0, 3.0)
124  kshorts2hist_d1x = ('daughter(1,x)', 100, -50.0, 50.0)
125  kshorts2hist_d1y = ('daughter(1,y)', 100, -50.0, 50.0)
126  kshorts2hist_d1z = ('daughter(1,z)', 100, -50.0, 50.0)
127 
128  kshorts2hist_gks = ('extraInfo(goodKs)', 120, -1.1, 1.1)
129  kshorts2hist_vlike = ('extraInfo(ksnbVLike)', 120, -1.1, 1.1)
130  kshorts2hist_nolam = ('extraInfo(ksnbNoLam)', 120, -1.1, 1.1)
131  kshorts2hist_stnrd = ('extraInfo(ksnbStandard)', 120, -1.1, 1.1)
132 
133  kshorts2hist.param('variables', [kshorts2hist_mass, kshorts2hist_px, kshorts2hist_py, kshorts2hist_pz,
134  kshorts2hist_e, kshorts2hist_x, kshorts2hist_y, kshorts2hist_z,
135  kshorts2hist_d0px, kshorts2hist_d0py, kshorts2hist_d0pz, kshorts2hist_d0e,
136  kshorts2hist_d0x, kshorts2hist_d0y, kshorts2hist_d0z,
137  kshorts2hist_d1px, kshorts2hist_d1py, kshorts2hist_d1pz, kshorts2hist_d1e,
138  kshorts2hist_d1x, kshorts2hist_d1y, kshorts2hist_d1z,
139  kshorts2hist_gks, kshorts2hist_vlike, kshorts2hist_nolam, kshorts2hist_stnrd])
140 
141  fittdKS2hist_mass = ('M', 100, 0.46, 0.53)
142  fittdKS2hist_px = ('px', 100, -2.5, 2.5)
143  fittdKS2hist_py = ('py', 100, -2.5, 2.5)
144  fittdKS2hist_pz = ('pz', 100, -1.5, 3.5)
145  fittdKS2hist_e = ('E', 100, 0.0, 4.0)
146  fittdKS2hist_x = ('x', 100, -50.0, 50.0)
147  fittdKS2hist_y = ('y', 100, -50.0, 50.0)
148  fittdKS2hist_z = ('z', 100, -50.0, 50.0)
149 
150  fittdKS2hist_pvale = ('chiProb', 120, -1.1, 1.1)
151 
152  fittdKS2hist_err00 = ('momVertCovM(0,0)', 100, 0.0, 0.00010)
153  fittdKS2hist_err01 = ('momVertCovM(0,1)', 100, 0.0, 0.00005)
154  fittdKS2hist_err02 = ('momVertCovM(0,2)', 100, 0.0, 0.00005)
155  fittdKS2hist_err03 = ('momVertCovM(0,3)', 100, 0.0, 0.00010)
156  fittdKS2hist_err04 = ('momVertCovM(0,4)', 100, 0.0, 0.00020)
157  fittdKS2hist_err05 = ('momVertCovM(0,5)', 100, 0.0, 0.00050)
158  fittdKS2hist_err06 = ('momVertCovM(0,6)', 100, 0.0, 0.00100)
159  fittdKS2hist_err11 = ('momVertCovM(1,1)', 100, 0.0, 0.00010)
160  fittdKS2hist_err12 = ('momVertCovM(1,2)', 100, 0.0, 0.00005)
161  fittdKS2hist_err13 = ('momVertCovM(1,3)', 100, 0.0, 0.00010)
162  fittdKS2hist_err14 = ('momVertCovM(1,4)', 100, 0.0, 0.00050)
163  fittdKS2hist_err15 = ('momVertCovM(1,5)', 100, 0.0, 0.00020)
164  fittdKS2hist_err16 = ('momVertCovM(1,6)', 100, 0.0, 0.00100)
165  fittdKS2hist_err22 = ('momVertCovM(2,2)', 100, 0.0, 0.00020)
166  fittdKS2hist_err23 = ('momVertCovM(2,3)', 100, 0.0, 0.00020)
167  fittdKS2hist_err24 = ('momVertCovM(2,4)', 100, 0.0, 0.00050)
168  fittdKS2hist_err25 = ('momVertCovM(2,5)', 100, 0.0, 0.00050)
169  fittdKS2hist_err26 = ('momVertCovM(2,6)', 100, 0.0, 0.00005)
170  fittdKS2hist_err33 = ('momVertCovM(3,3)', 100, 0.0, 0.00030)
171  fittdKS2hist_err34 = ('momVertCovM(3,4)', 100, 0.0, 0.00050)
172  fittdKS2hist_err35 = ('momVertCovM(3,5)', 100, 0.0, 0.00050)
173  fittdKS2hist_err36 = ('momVertCovM(3,6)', 100, 0.0, 0.00050)
174  fittdKS2hist_err44 = ('momVertCovM(4,4)', 100, 0.0, 0.00100)
175  fittdKS2hist_err45 = ('momVertCovM(4,5)', 100, 0.0, 0.00100)
176  fittdKS2hist_err46 = ('momVertCovM(4,6)', 100, 0.0, 0.00100)
177  fittdKS2hist_err55 = ('momVertCovM(5,5)', 100, 0.0, 0.00100)
178  fittdKS2hist_err56 = ('momVertCovM(5,6)', 100, 0.0, 0.00100)
179  fittdKS2hist_err66 = ('momVertCovM(6,6)', 100, 0.0, 0.00100)
180 
181  # mc truth information
182  fittdKS2hist_ksd0MCPDG = ('abs(daughter(0,mcPDG))', 250, 0.0, 2499.0)
183  fittdKS2hist_ksd1MCPDG = ('abs(daughter(1,mcPDG))', 250, 0.0, 2499.0)
184  fittdKS2hist_ksd0MCP = ('daughter(0,mcP)', 100, 0.0, 3.5)
185  fittdKS2hist_ksd1MCP = ('daughter(1,mcP)', 100, 0.0, 3.5)
186 
187  fittdKS2hist.param('variables', [fittdKS2hist_mass, fittdKS2hist_px, fittdKS2hist_py, fittdKS2hist_pz,
188  fittdKS2hist_e, fittdKS2hist_x, fittdKS2hist_y, fittdKS2hist_z,
189  fittdKS2hist_pvale,
190  fittdKS2hist_err00, fittdKS2hist_err01, fittdKS2hist_err02, fittdKS2hist_err03,
191  fittdKS2hist_err04, fittdKS2hist_err05, fittdKS2hist_err06,
192  fittdKS2hist_err11, fittdKS2hist_err12, fittdKS2hist_err13,
193  fittdKS2hist_err14, fittdKS2hist_err15, fittdKS2hist_err16,
194  fittdKS2hist_err22, fittdKS2hist_err23, fittdKS2hist_err24,
195  fittdKS2hist_err25, fittdKS2hist_err26,
196  fittdKS2hist_err33, fittdKS2hist_err34, fittdKS2hist_err35, fittdKS2hist_err36,
197  fittdKS2hist_err44, fittdKS2hist_err45, fittdKS2hist_err46,
198  fittdKS2hist_err55, fittdKS2hist_err56,
199  fittdKS2hist_err66,
200  fittdKS2hist_ksd0MCPDG, fittdKS2hist_ksd1MCPDG,
201  fittdKS2hist_ksd0MCP, fittdKS2hist_ksd1MCP])
202 
203  kshorts2hist.param('fileName', outputRootFile)
204  outputRootFileAVF = outputRootFile.replace(".root", "-AVF.root")
205  fittdKS2hist.param('fileName', outputRootFileAVF)
206  path.add_module(kshorts2hist)
207  path.add_module(fittdKS2hist)
208 
209 
210 def addKlongConversionMonitors(outputRootFile='b2biiKlongConversionMonitors.root', path=None):
211  """
212  Creates copies of KLong particles from 'K_L0:mdst' ParticleList and fills them to a new ParticleList called
213  'K_L0:b2bii_monitor'. For each Klong candidate several quantities are stored to histograms with 'VariablesToHistogram' module
214  for monitoring purpuses: e.g. to be compared with same distributions obtained within BASF.
215 
216  @param outputRootFile name of the output ROOT file to which the histograms are saved.
217  @param path modules are added to this path
218  """
219 
220  matchMCTruth('K_L0:mdst', path)
221 
222  # register VariablesToHistogram and fill it with monitored variables
223  klong2hist = b2.register_module('VariablesToHistogram')
224  klong2hist.param('particleList', 'K_L0:mdst')
225 
226  # define variables that are monitored and specify
227  # the corresponding histogram (#bins, low, high)
228  # ('variable_name', number_of_bins, x_low, x_high)
229  klong2hist_pos_x = ('klmClusterPositionX', 100, -3.0, 3.0)
230  klong2hist_pos_y = ('klmClusterPositionY', 100, -3.0, 3.0)
231  klong2hist_pos_z = ('klmClusterPositionZ', 100, -3.0, 3.0)
232  klong2hist_layers = ('klmClusterLayers', 100, 0.0, 35.0)
233  klong2hist_innermost_layer = ('klmClusterInnermostLayer', 100, 0.0, 35.0)
234 
235  # (vague) mc truth missing
236  # mcPDG, mE, mPX, mPY, mPZ
237  klong2hist_mcPDG = ('mcPDG', 1000, 0, 1000)
238  klong2hist_mE = ('mcE', 100, 0.0, 6.0)
239  klong2hist_mPX = ('mcPX', 100, -5.0, 5.0)
240  klong2hist_mPY = ('mcPY', 100, -5.0, 5.0)
241  klong2hist_mPZ = ('mcPZ', 100, -5.0, 5.0)
242  klong2hist.param('variables', [klong2hist_pos_x, klong2hist_pos_y, klong2hist_pos_z,
243  klong2hist_layers, klong2hist_innermost_layer,
244  klong2hist_mcPDG, klong2hist_mE, klong2hist_mPX, klong2hist_mPY, klong2hist_mPZ
245  ])
246 
247  klong2hist.param('fileName', outputRootFile)
248 
249  path.add_module(klong2hist)
250 
251 
252 def addLambda0ConversionMonitors(outputRootFile='b2biiLambda0ConversionMonitors.root', path=None):
253  """
254  Creates copies of Lambda0 particles from 'Lambda0:mdst' ParticleList and c.c. and fills them to a new ParticleList called
255  'Lambda0:b2bii_monitor'. For each Lambda0 candidate several quantities are stored to histograms with 'VariablesToHistogram'
256  module for monitoring purpuses: e.g. to be compared with same distributions obtained within BASF.
257 
258  @param outputRootFile name of the output ROOT file to which the histograms are saved.
259  @param path modules are added to this path
260  """
261 
262  copyParticles('Lambda0:b2bii_monitor', 'Lambda0:mdst', False, path)
263  kFit('Lambda0:b2bii_monitor', -1, path=path)
264  matchMCTruth('Lambda0:b2bii_monitor', path)
265 
266  # register VariablesToHistogram and fill it with monitored variables
267  lambdas2hist = b2.register_module('VariablesToHistogram')
268  lambdas2hist.param('particleList', 'Lambda0:mdst')
269  fittdL02hist = b2.register_module('VariablesToHistogram')
270  fittdL02hist.param('particleList', 'Lambda0:b2bii_monitor')
271 
272  # define variables that are monitored and specify
273  # the corresponding histogram (#bins, low, high)
274  # ('variable_name', number_of_bins, x_low, x_high)
275  lambdas2hist_mass = ('M', 100, 1.095, 1.135)
276  lambdas2hist_px = ('px', 100, -2.5, 2.5)
277  lambdas2hist_py = ('py', 100, -2.5, 2.5)
278  lambdas2hist_pz = ('pz', 100, -1.5, 3.5)
279  lambdas2hist_e = ('E', 100, 0.0, 4.0)
280  lambdas2hist_x = ('x', 100, -50.0, 50.0)
281  lambdas2hist_y = ('y', 100, -50.0, 50.0)
282  lambdas2hist_z = ('z', 100, -50.0, 50.0)
283 
284  lambdas2hist_d0px = ('daughter(0,px)', 100, -2.0, 2.0)
285  lambdas2hist_d0py = ('daughter(0,py)', 100, -2.0, 2.0)
286  lambdas2hist_d0pz = ('daughter(0,pz)', 100, -2.0, 3.0)
287  lambdas2hist_d0e = ('daughter(0,E)', 100, 0.0, 3.0)
288  lambdas2hist_d0x = ('daughter(0,x)', 100, -50.0, 50.0)
289  lambdas2hist_d0y = ('daughter(0,y)', 100, -50.0, 50.0)
290  lambdas2hist_d0z = ('daughter(0,z)', 100, -50.0, 50.0)
291 
292  lambdas2hist_d1px = ('daughter(1,px)', 100, -2.0, 2.0)
293  lambdas2hist_d1py = ('daughter(1,py)', 100, -2.0, 2.0)
294  lambdas2hist_d1pz = ('daughter(1,pz)', 100, -2.0, 3.0)
295  lambdas2hist_d1e = ('daughter(1,E)', 100, 0.0, 3.0)
296  lambdas2hist_d1x = ('daughter(1,x)', 100, -50.0, 50.0)
297  lambdas2hist_d1y = ('daughter(1,y)', 100, -50.0, 50.0)
298  lambdas2hist_d1z = ('daughter(1,z)', 100, -50.0, 50.0)
299 
300  lambdas2hist.param('variables', [lambdas2hist_mass, lambdas2hist_px, lambdas2hist_py, lambdas2hist_pz,
301  lambdas2hist_e, lambdas2hist_x, lambdas2hist_y, lambdas2hist_z,
302  lambdas2hist_d0px, lambdas2hist_d0py, lambdas2hist_d0pz, lambdas2hist_d0e,
303  lambdas2hist_d0x, lambdas2hist_d0y, lambdas2hist_d0z,
304  lambdas2hist_d1px, lambdas2hist_d1py, lambdas2hist_d1pz, lambdas2hist_d1e,
305  lambdas2hist_d1x, lambdas2hist_d1y, lambdas2hist_d1z])
306 
307  fittdL02hist_mass = ('M', 100, 1.095, 1.135)
308  fittdL02hist_px = ('px', 100, -2.5, 2.5)
309  fittdL02hist_py = ('py', 100, -2.5, 2.5)
310  fittdL02hist_pz = ('pz', 100, -1.5, 3.5)
311  fittdL02hist_e = ('E', 100, 0.0, 4.0)
312  fittdL02hist_x = ('x', 100, -50.0, 50.0)
313  fittdL02hist_y = ('y', 100, -50.0, 50.0)
314  fittdL02hist_z = ('z', 100, -50.0, 50.0)
315 
316  fittdL02hist_pvale = ('chiProb', 120, -1.1, 1.1)
317 
318  fittdL02hist_err00 = ('momVertCovM(0,0)', 100, 0.0, 0.00010)
319  fittdL02hist_err01 = ('momVertCovM(0,1)', 100, 0.0, 0.00005)
320  fittdL02hist_err02 = ('momVertCovM(0,2)', 100, 0.0, 0.00005)
321  fittdL02hist_err03 = ('momVertCovM(0,3)', 100, 0.0, 0.00010)
322  fittdL02hist_err04 = ('momVertCovM(0,4)', 100, 0.0, 0.00020)
323  fittdL02hist_err05 = ('momVertCovM(0,5)', 100, 0.0, 0.00050)
324  fittdL02hist_err06 = ('momVertCovM(0,6)', 100, 0.0, 0.00100)
325  fittdL02hist_err11 = ('momVertCovM(1,1)', 100, 0.0, 0.00010)
326  fittdL02hist_err12 = ('momVertCovM(1,2)', 100, 0.0, 0.00005)
327  fittdL02hist_err13 = ('momVertCovM(1,3)', 100, 0.0, 0.00010)
328  fittdL02hist_err14 = ('momVertCovM(1,4)', 100, 0.0, 0.00050)
329  fittdL02hist_err15 = ('momVertCovM(1,5)', 100, 0.0, 0.00020)
330  fittdL02hist_err16 = ('momVertCovM(1,6)', 100, 0.0, 0.00100)
331  fittdL02hist_err22 = ('momVertCovM(2,2)', 100, 0.0, 0.00020)
332  fittdL02hist_err23 = ('momVertCovM(2,3)', 100, 0.0, 0.00020)
333  fittdL02hist_err24 = ('momVertCovM(2,4)', 100, 0.0, 0.00050)
334  fittdL02hist_err25 = ('momVertCovM(2,5)', 100, 0.0, 0.00050)
335  fittdL02hist_err26 = ('momVertCovM(2,6)', 100, 0.0, 0.00005)
336  fittdL02hist_err33 = ('momVertCovM(3,3)', 100, 0.0, 0.00030)
337  fittdL02hist_err34 = ('momVertCovM(3,4)', 100, 0.0, 0.00050)
338  fittdL02hist_err35 = ('momVertCovM(3,5)', 100, 0.0, 0.00050)
339  fittdL02hist_err36 = ('momVertCovM(3,6)', 100, 0.0, 0.00050)
340  fittdL02hist_err44 = ('momVertCovM(4,4)', 100, 0.0, 0.00100)
341  fittdL02hist_err45 = ('momVertCovM(4,5)', 100, 0.0, 0.00100)
342  fittdL02hist_err46 = ('momVertCovM(4,6)', 100, 0.0, 0.00100)
343  fittdL02hist_err55 = ('momVertCovM(5,5)', 100, 0.0, 0.00100)
344  fittdL02hist_err56 = ('momVertCovM(5,6)', 100, 0.0, 0.00100)
345  fittdL02hist_err66 = ('momVertCovM(6,6)', 100, 0.0, 0.00100)
346 
347  # mc truth information
348  fittdL02hist_ksd0MCPDG = ('abs(daughter(0,mcPDG))', 250, 0.0, 2499.0)
349  fittdL02hist_ksd1MCPDG = ('abs(daughter(1,mcPDG))', 250, 0.0, 2499.0)
350  fittdL02hist_ksd0MCP = ('daughter(0,mcP)', 100, 0.0, 3.5)
351  fittdL02hist_ksd1MCP = ('daughter(1,mcP)', 100, 0.0, 3.5)
352 
353  fittdL02hist.param('variables', [fittdL02hist_mass, fittdL02hist_px, fittdL02hist_py, fittdL02hist_pz,
354  fittdL02hist_e, fittdL02hist_x, fittdL02hist_y, fittdL02hist_z,
355  fittdL02hist_pvale,
356  fittdL02hist_err00, fittdL02hist_err01, fittdL02hist_err02, fittdL02hist_err03,
357  fittdL02hist_err04, fittdL02hist_err05, fittdL02hist_err06,
358  fittdL02hist_err11, fittdL02hist_err12, fittdL02hist_err13,
359  fittdL02hist_err14, fittdL02hist_err15, fittdL02hist_err16,
360  fittdL02hist_err22, fittdL02hist_err23, fittdL02hist_err24,
361  fittdL02hist_err25, fittdL02hist_err26,
362  fittdL02hist_err33, fittdL02hist_err34, fittdL02hist_err35, fittdL02hist_err36,
363  fittdL02hist_err44, fittdL02hist_err45, fittdL02hist_err46,
364  fittdL02hist_err55, fittdL02hist_err56,
365  fittdL02hist_err66,
366  fittdL02hist_ksd0MCPDG, fittdL02hist_ksd1MCPDG,
367  fittdL02hist_ksd0MCP, fittdL02hist_ksd1MCP])
368 
369  lambdas2hist.param('fileName', outputRootFile)
370  outputRootFileAVF = outputRootFile.replace(".root", "-AVF.root")
371  fittdL02hist.param('fileName', outputRootFileAVF)
372  path.add_module(lambdas2hist)
373  path.add_module(fittdL02hist)
374 
375 
376 def addConvertedPhotonConversionMonitors(outputRootFile='b2biiConvertedPhotonConversionMonitors.root', path=None):
377  """
378  Creates copies of gamma particles from 'gamma:v0mdst' ParticleList and fills them to a new ParticleList called
379  'gamma:v0_b2bii_monitor'. For each gamma candidate several quantities are stored to histograms with 'VariablesToHistogram'
380  module for monitoring purpuses: e.g. to be compared with same distributions obtained within BASF.
381 
382  @param outputRootFile name of the output ROOT file to which the histograms are saved.
383  @param path modules are added to this path
384  """
385 
386  copyParticles('gamma:v0_b2bii_monitor', 'gamma:v0mdst', False, path)
387  kFit('gamma:v0_b2bii_monitor', -1, path=path)
388  matchMCTruth('gamma:v0_b2bii_monitor', path)
389 
390  # register VariablesTohistogram and fill it with monitored variables
391  convgam2hist = b2.register_module('VariablesToHistogram')
392  convgam2hist.param('particleList', 'gamma:v0mdst')
393  fittdCG2hist = b2.register_module('VariablesToHistogram')
394  fittdCG2hist.param('particleList', 'gamma:v0_b2bii_monitor')
395 
396  # define variables that are monitored and specify
397  # the corresponding histogram (#bins, low, high)
398  # ('variable_name', number_of_bins, x_low, x_high)
399  convgam2hist_mass = ('M', 100, 0.0, 0.050)
400  convgam2hist_px = ('px', 100, -2.5, 2.5)
401  convgam2hist_py = ('py', 100, -2.5, 2.5)
402  convgam2hist_pz = ('pz', 100, -1.5, 3.5)
403  convgam2hist_e = ('E', 100, 0.0, 4.0)
404  convgam2hist_x = ('x', 100, -50.0, 50.0)
405  convgam2hist_y = ('y', 100, -50.0, 50.0)
406  convgam2hist_z = ('z', 100, -50.0, 50.0)
407 
408  convgam2hist_d0px = ('daughter(0,px)', 100, -2.0, 2.0)
409  convgam2hist_d0py = ('daughter(0,py)', 100, -2.0, 2.0)
410  convgam2hist_d0pz = ('daughter(0,pz)', 100, -2.0, 3.0)
411  convgam2hist_d0e = ('daughter(0,E)', 100, 0.0, 3.0)
412  convgam2hist_d0x = ('daughter(0,x)', 100, -50.0, 50.0)
413  convgam2hist_d0y = ('daughter(0,y)', 100, -50.0, 50.0)
414  convgam2hist_d0z = ('daughter(0,z)', 100, -50.0, 50.0)
415 
416  convgam2hist_d1px = ('daughter(1,px)', 100, -2.0, 2.0)
417  convgam2hist_d1py = ('daughter(1,py)', 100, -2.0, 2.0)
418  convgam2hist_d1pz = ('daughter(1,pz)', 100, -2.0, 3.0)
419  convgam2hist_d1e = ('daughter(1,E)', 100, 0.0, 3.0)
420  convgam2hist_d1x = ('daughter(1,x)', 100, -50.0, 50.0)
421  convgam2hist_d1y = ('daughter(1,y)', 100, -50.0, 50.0)
422  convgam2hist_d1z = ('daughter(1,z)', 100, -50.0, 50.0)
423 
424  convgam2hist.param('variables', [convgam2hist_mass, convgam2hist_px, convgam2hist_py, convgam2hist_pz,
425  convgam2hist_e, convgam2hist_x, convgam2hist_y, convgam2hist_z,
426  convgam2hist_d0px, convgam2hist_d0py, convgam2hist_d0pz, convgam2hist_d0e,
427  convgam2hist_d0x, convgam2hist_d0y, convgam2hist_d0z,
428  convgam2hist_d1px, convgam2hist_d1py, convgam2hist_d1pz, convgam2hist_d1e,
429  convgam2hist_d1x, convgam2hist_d1y, convgam2hist_d1z])
430 
431  fittdCG2hist_mass = ('M', 100, 0.0, 0.050)
432  fittdCG2hist_px = ('px', 100, -2.5, 2.5)
433  fittdCG2hist_py = ('py', 100, -2.5, 2.5)
434  fittdCG2hist_pz = ('pz', 100, -1.5, 3.5)
435  fittdCG2hist_e = ('E', 100, 0.0, 4.0)
436  fittdCG2hist_x = ('x', 100, -50.0, 50.0)
437  fittdCG2hist_y = ('y', 100, -50.0, 50.0)
438  fittdCG2hist_z = ('z', 100, -50.0, 50.0)
439 
440  fittdCG2hist_pvale = ('chiProb', 120, -1.1, 1.1)
441 
442  fittdCG2hist_err00 = ('momVertCovM(0,0)', 100, 0.0, 0.00010)
443  fittdCG2hist_err01 = ('momVertCovM(0,1)', 100, 0.0, 0.00005)
444  fittdCG2hist_err02 = ('momVertCovM(0,2)', 100, 0.0, 0.00005)
445  fittdCG2hist_err03 = ('momVertCovM(0,3)', 100, 0.0, 0.00010)
446  fittdCG2hist_err04 = ('momVertCovM(0,4)', 100, 0.0, 0.00020)
447  fittdCG2hist_err05 = ('momVertCovM(0,5)', 100, 0.0, 0.00050)
448  fittdCG2hist_err06 = ('momVertCovM(0,6)', 100, 0.0, 0.00100)
449  fittdCG2hist_err11 = ('momVertCovM(1,1)', 100, 0.0, 0.00010)
450  fittdCG2hist_err12 = ('momVertCovM(1,2)', 100, 0.0, 0.00005)
451  fittdCG2hist_err13 = ('momVertCovM(1,3)', 100, 0.0, 0.00010)
452  fittdCG2hist_err14 = ('momVertCovM(1,4)', 100, 0.0, 0.00050)
453  fittdCG2hist_err15 = ('momVertCovM(1,5)', 100, 0.0, 0.00020)
454  fittdCG2hist_err16 = ('momVertCovM(1,6)', 100, 0.0, 0.00100)
455  fittdCG2hist_err22 = ('momVertCovM(2,2)', 100, 0.0, 0.00020)
456  fittdCG2hist_err23 = ('momVertCovM(2,3)', 100, 0.0, 0.00020)
457  fittdCG2hist_err24 = ('momVertCovM(2,4)', 100, 0.0, 0.00050)
458  fittdCG2hist_err25 = ('momVertCovM(2,5)', 100, 0.0, 0.00050)
459  fittdCG2hist_err26 = ('momVertCovM(2,6)', 100, 0.0, 0.00005)
460  fittdCG2hist_err33 = ('momVertCovM(3,3)', 100, 0.0, 0.00030)
461  fittdCG2hist_err34 = ('momVertCovM(3,4)', 100, 0.0, 0.00050)
462  fittdCG2hist_err35 = ('momVertCovM(3,5)', 100, 0.0, 0.00050)
463  fittdCG2hist_err36 = ('momVertCovM(3,6)', 100, 0.0, 0.00050)
464  fittdCG2hist_err44 = ('momVertCovM(4,4)', 100, 0.0, 0.00100)
465  fittdCG2hist_err45 = ('momVertCovM(4,5)', 100, 0.0, 0.00100)
466  fittdCG2hist_err46 = ('momVertCovM(4,6)', 100, 0.0, 0.00100)
467  fittdCG2hist_err55 = ('momVertCovM(5,5)', 100, 0.0, 0.00100)
468  fittdCG2hist_err56 = ('momVertCovM(5,6)', 100, 0.0, 0.00100)
469  fittdCG2hist_err66 = ('momVertCovM(6,6)', 100, 0.0, 0.00100)
470 
471  # mc truth information
472  fittdCG2hist_ksd0MCPDG = ('abs(daughter(0,mcPDG))', 250, 0.0, 2499.0)
473  fittdCG2hist_ksd1MCPDG = ('abs(daughter(1,mcPDG))', 250, 0.0, 2499.0)
474  fittdCG2hist_ksd0MCP = ('daughter(0,mcP)', 100, 0.0, 3.5)
475  fittdCG2hist_ksd1MCP = ('daughter(1,mcP)', 100, 0.0, 3.5)
476 
477  fittdCG2hist.param('variables', [fittdCG2hist_mass, fittdCG2hist_px, fittdCG2hist_py, fittdCG2hist_pz,
478  fittdCG2hist_e, fittdCG2hist_x, fittdCG2hist_y, fittdCG2hist_z,
479  fittdCG2hist_pvale,
480  fittdCG2hist_err00, fittdCG2hist_err01, fittdCG2hist_err02, fittdCG2hist_err03,
481  fittdCG2hist_err04, fittdCG2hist_err05, fittdCG2hist_err06,
482  fittdCG2hist_err11, fittdCG2hist_err12, fittdCG2hist_err13,
483  fittdCG2hist_err14, fittdCG2hist_err15, fittdCG2hist_err16,
484  fittdCG2hist_err22, fittdCG2hist_err23, fittdCG2hist_err24,
485  fittdCG2hist_err25, fittdCG2hist_err26,
486  fittdCG2hist_err33, fittdCG2hist_err34, fittdCG2hist_err35, fittdCG2hist_err36,
487  fittdCG2hist_err44, fittdCG2hist_err45, fittdCG2hist_err46,
488  fittdCG2hist_err55, fittdCG2hist_err56,
489  fittdCG2hist_err66,
490  fittdCG2hist_ksd0MCPDG, fittdCG2hist_ksd1MCPDG,
491  fittdCG2hist_ksd0MCP, fittdCG2hist_ksd1MCP])
492 
493  convgam2hist.param('fileName', outputRootFile)
494  outputRootFileAVF = outputRootFile.replace(".root", "-AVF.root")
495  fittdCG2hist.param('fileName', outputRootFileAVF)
496  path.add_module(convgam2hist)
497  path.add_module(fittdCG2hist)
498 
499 
500 def addTrackConversionMonitors(outputRootFile='b2biiTrackConversionMonitors.root', path=None):
501  """
502  Creates 'pi+:b2bii_monitor' ParticleLists and fills it with all converted charged tracks as charged pions.
503  For each charged pion (track) several quantities are stored to histograms with 'VariablesToHistogram' module
504  for monitoring purpuses: e.g. to be compared with same distributions obtained within BASF.
505 
506  @param outputRootFile name of the output ROOT file to which the histograms are saved.
507  @param path modules are added to this path
508  """
509 
510  # create charged pions from all charged tracks
511  fillParticleList('pi+:b2bii_monitor', '', False, path)
512 
513  # register VariablesToHistogram and fill it with monitored variables
514  tracks2hist = b2.register_module('VariablesToHistogram')
515  tracks2hist.param('particleList', 'pi+:b2bii_monitor')
516 
517  # define variables that are monitored and specify
518  # the corresponding histogram (#bins, low, high)
519  # ('variable_name', number_of_bins, x_low, x_high)
520  tracks2hist_KPID = ('atcPIDBelle(3,2)', 110, -0.05, 1.05)
521  tracks2hist_PRKID = ('atcPIDBelle(4,3)', 110, -0.05, 1.05)
522  tracks2hist_PRPID = ('atcPIDBelle(4,2)', 110, -0.05, 1.05)
523  tracks2hist_EID = ('eIDBelle', 110, -0.05, 1.05)
524  tracks2hist_MUID = ('muIDBelle', 110, -0.05, 1.05)
525  tracks2hist_MUIDQ = ('muIDBelleQuality', 110, -0.05, 1.05)
526 
527  tracks2hist_px = ('px', 100, -3.0, 3.0)
528  tracks2hist_py = ('py', 100, -3.0, 3.0)
529  tracks2hist_pz = ('pz', 100, -3.0, 3.0)
530  tracks2hist_E = ('E', 100, 0.0, 4.0)
531  tracks2hist_x = ('x', 100, -5.0, 5.0)
532  tracks2hist_y = ('y', 100, -5.0, 5.0)
533  tracks2hist_z = ('z', 100, -5.0, 5.0)
534 
535  tracks2hist_Err00 = ('momVertCovM(0,0)', 100, -0.0001, 0.0001)
536  tracks2hist_Err01 = ('momVertCovM(0,1)', 100, -0.0001, 0.0001)
537  tracks2hist_Err02 = ('momVertCovM(0,2)', 100, -0.0001, 0.0001)
538  tracks2hist_Err03 = ('momVertCovM(0,3)', 100, -0.0001, 0.0001)
539  tracks2hist_Err04 = ('momVertCovM(0,4)', 100, -0.0001, 0.0001)
540  tracks2hist_Err05 = ('momVertCovM(0,5)', 100, -0.0001, 0.0001)
541  tracks2hist_Err06 = ('momVertCovM(0,6)', 100, -0.0001, 0.0001)
542  tracks2hist_Err11 = ('momVertCovM(1,1)', 100, -0.0001, 0.0001)
543  tracks2hist_Err12 = ('momVertCovM(1,2)', 100, -0.0001, 0.0001)
544  tracks2hist_Err13 = ('momVertCovM(1,3)', 100, -0.0001, 0.0001)
545  tracks2hist_Err14 = ('momVertCovM(1,4)', 100, -0.0001, 0.0001)
546  tracks2hist_Err15 = ('momVertCovM(1,5)', 100, -0.0001, 0.0001)
547  tracks2hist_Err16 = ('momVertCovM(1,6)', 100, -0.0001, 0.0001)
548  tracks2hist_Err22 = ('momVertCovM(2,2)', 100, -0.0001, 0.0001)
549  tracks2hist_Err23 = ('momVertCovM(2,3)', 100, -0.0001, 0.0001)
550  tracks2hist_Err24 = ('momVertCovM(2,4)', 100, -0.0001, 0.0001)
551  tracks2hist_Err25 = ('momVertCovM(2,5)', 100, -0.0001, 0.0001)
552  tracks2hist_Err26 = ('momVertCovM(2,6)', 100, -0.0001, 0.0001)
553  tracks2hist_Err33 = ('momVertCovM(3,3)', 100, -0.0001, 0.0001)
554  tracks2hist_Err34 = ('momVertCovM(3,4)', 100, -0.0001, 0.0001)
555  tracks2hist_Err35 = ('momVertCovM(3,5)', 100, -0.0001, 0.0001)
556  tracks2hist_Err36 = ('momVertCovM(3,6)', 100, -0.0001, 0.0001)
557  tracks2hist_Err44 = ('momVertCovM(4,4)', 100, -0.0001, 0.0001)
558  tracks2hist_Err45 = ('momVertCovM(4,5)', 100, -0.0001, 0.0001)
559  tracks2hist_Err46 = ('momVertCovM(4,6)', 100, -0.0001, 0.0001)
560  tracks2hist_Err55 = ('momVertCovM(5,5)', 100, -0.0001, 0.0001)
561  tracks2hist_Err56 = ('momVertCovM(5,6)', 100, -0.0001, 0.0001)
562  tracks2hist_Err66 = ('momVertCovM(6,6)', 100, -0.0001, 0.0001)
563 
564  tracks2hist.param('variables',
565  [tracks2hist_KPID, tracks2hist_PRKID, tracks2hist_PRPID,
566  tracks2hist_EID, tracks2hist_MUID, tracks2hist_MUIDQ,
567 
568  tracks2hist_px, tracks2hist_py, tracks2hist_pz, tracks2hist_E,
569  tracks2hist_x, tracks2hist_y, tracks2hist_z,
570 
571  tracks2hist_Err00, tracks2hist_Err01, tracks2hist_Err02, tracks2hist_Err03,
572  tracks2hist_Err04, tracks2hist_Err05, tracks2hist_Err06, tracks2hist_Err11,
573  tracks2hist_Err12, tracks2hist_Err13, tracks2hist_Err14, tracks2hist_Err15,
574  tracks2hist_Err16, tracks2hist_Err22, tracks2hist_Err23, tracks2hist_Err24,
575  tracks2hist_Err25, tracks2hist_Err26, tracks2hist_Err33, tracks2hist_Err34,
576  tracks2hist_Err35, tracks2hist_Err36, tracks2hist_Err44, tracks2hist_Err45,
577  tracks2hist_Err46, tracks2hist_Err55, tracks2hist_Err56, tracks2hist_Err66])
578 
579  tracks2hist.param('fileName', outputRootFile)
580  path.add_module(tracks2hist)
581 
582 
583 def addNeutralsConversionMonitors(gammaOutputRootFile='b2biiGammaConversionMonitors.root',
584  neutralPiOutputRootFile='b2biiPi0ConversionMonitors.root',
585  MCneutralPiOutputRootFile='b2biiMCPi0ConversionMonitors.root',
586  path=None):
587  """
588  Creates 'gamma:b2bii_monitor' and 'pi0:b2bii_monitor' from already existing 'gamma:mdst' and
589  'pi0:mdst' ParticleList and fills it with all converted neutral gammas.
590  For each object several quantities are stored to histograms with 'VariablesToHistogram' module
591  for monitoring purpuses: e.g. to be compared with same distributions obtained within BASF.
592 
593  @param outputRootFile name of the output ROOT file to which the histograms are saved.
594  @param path modules are added to this path
595  """
596 
597  # load gammas and pi0, copy pi0s from 'pi0:mdst' list. We don't want to mess with them.
598  copyList('gamma:b2bii_monitor', 'gamma:mdst', False, path)
599  copyParticles('pi0:b2bii_monitor', 'pi0:mdst', False, path)
600  kFit('pi0:b2bii_monitor', -1, 'mass', path=path)
601  matchMCTruth('gamma:b2bii_monitor', path)
602  matchMCTruth('pi0:b2bii_monitor', path)
603 
604  cutAndCopyLists('pi0:b2bii_monitorMC', 'pi0:b2bii_monitor', 'mcPDG == 111', path=path)
605 
606  # register VariablesToHistogram and fill them with monitored variables
607  gamma2hist = b2.register_module('VariablesToHistogram')
608  gamma2hist.param('particleList', 'gamma:b2bii_monitor')
609  neutralPi2hist = b2.register_module('VariablesToHistogram')
610  neutralPi2hist.param('particleList', 'pi0:b2bii_monitor')
611 
612  MCneutralPi2hist = b2.register_module('VariablesToHistogram')
613  MCneutralPi2hist.param('particleList', 'pi0:b2bii_monitorMC')
614 
615  # define variables that are monitored and specify
616  # the corresponding histogram (#bins, low, high)
617  # ('variable_name', number_of_bins, x_low, x_high)
618 
619 
622 
623  # Position and momentum
624  gamma2hist_x = ('x', 100, -1.0, 1.0)
625  gamma2hist_y = ('y', 100, -1.0, 1.0)
626  gamma2hist_z = ('z', 100, -1.0, 1.0)
627  gamma2hist_px = ('px', 100, -1.5, 1.5)
628  gamma2hist_py = ('py', 100, -1.5, 1.5)
629  gamma2hist_pz = ('pz', 100, -1.0, 2.5)
630  gamma2hist_truepx = ('mcPX', 100, -1.5, 1.5)
631  gamma2hist_truepy = ('mcPY', 100, -1.5, 1.5)
632  gamma2hist_truepz = ('mcPZ', 100, -1.0, 2.5)
633  gamma2hist_trueE = ('mcE', 100, 0.0, 3.0)
634 
635  # Cluster variables
636  gamma2hist_E = ('E', 100, 0.0, 3.0)
637  gamma2hist_Theta = ('clusterTheta', 100, 0.0, 3.14)
638  gamma2hist_Phi = ('clusterPhi', 100, -3.14, 3.14)
639  gamma2hist_R = ('clusterR', 100, 120, 260)
640 
641  # Auxiliary variables
642  gamma2hist_Edep = ('clusterUncorrE', 100, 0.0, 0.1)
643  # gamma2hist_Time= ('clusterTiming', 100, ?, ?)
644  gamma2hist_Emax = ('clusterHighestE', 100, 0.0, 2.0)
645  gamma2hist_E9E25 = ('clusterE9E25', 100, 0.0, 1.0)
646  gamma2hist_noC = ('clusterNHits', 100, 0.0, 30.0)
647  gamma2hist_Quality = ('clusterBelleQuality', 10, 0.0, 20.0)
648  gamma2hist_Width = ('clusterLAT', 100, 0.0, 50.0)
649 
650  gamma2hist_Err00 = ('momVertCovM(0,0)', 100, -0.0005, 0.0005)
651  gamma2hist_Err10 = ('momVertCovM(1,0)', 100, -0.0005, 0.0005)
652  gamma2hist_Err11 = ('momVertCovM(1,1)', 100, -0.0005, 0.0005)
653  gamma2hist_Err20 = ('momVertCovM(2,0)', 100, -0.0005, 0.0005)
654  gamma2hist_Err21 = ('momVertCovM(2,1)', 100, -0.0005, 0.0005)
655  gamma2hist_Err22 = ('momVertCovM(2,2)', 100, -0.0005, 0.0005)
656  gamma2hist_Err30 = ('momVertCovM(3,0)', 100, -0.0005, 0.0005)
657  gamma2hist_Err31 = ('momVertCovM(3,1)', 100, -0.0005, 0.0005)
658  gamma2hist_Err32 = ('momVertCovM(3,2)', 100, -0.0005, 0.0005)
659  gamma2hist_Err33 = ('momVertCovM(3,3)', 100, -0.0005, 0.0005)
660  gamma2hist_Err40 = ('momVertCovM(4,0)', 100, -0.0005, 0.0005)
661  gamma2hist_Err41 = ('momVertCovM(4,1)', 100, -0.0005, 0.0005)
662  gamma2hist_Err42 = ('momVertCovM(4,2)', 100, -0.0005, 0.0005)
663  gamma2hist_Err43 = ('momVertCovM(4,3)', 100, -0.0005, 0.0005)
664  gamma2hist_Err44 = ('momVertCovM(4,4)', 100, 0.99, 1.01)
665  gamma2hist_Err50 = ('momVertCovM(5,0)', 100, -0.0005, 0.0005)
666  gamma2hist_Err51 = ('momVertCovM(5,1)', 100, -0.0005, 0.0005)
667  gamma2hist_Err52 = ('momVertCovM(5,2)', 100, -0.0005, 0.0005)
668  gamma2hist_Err53 = ('momVertCovM(5,3)', 100, -0.0005, 0.0005)
669  gamma2hist_Err54 = ('momVertCovM(5,4)', 100, -0.0005, 0.0005)
670  gamma2hist_Err55 = ('momVertCovM(5,5)', 100, 0.99, 1.01)
671  gamma2hist_Err60 = ('momVertCovM(6,0)', 100, -0.0005, 0.0005)
672  gamma2hist_Err61 = ('momVertCovM(6,1)', 100, -0.0005, 0.0005)
673  gamma2hist_Err62 = ('momVertCovM(6,2)', 100, -0.0005, 0.0005)
674  gamma2hist_Err63 = ('momVertCovM(6,3)', 100, -0.0005, 0.0005)
675  gamma2hist_Err64 = ('momVertCovM(6,4)', 100, -0.0005, 0.0005)
676  gamma2hist_Err65 = ('momVertCovM(6,5)', 100, -0.0005, 0.0005)
677  gamma2hist_Err66 = ('momVertCovM(6,6)', 100, 0.99, 1.01)
678 
679  gamma2hist.param('variables',
680  [gamma2hist_x,
681  gamma2hist_y,
682  gamma2hist_z,
683  gamma2hist_px,
684  gamma2hist_py,
685  gamma2hist_pz,
686  gamma2hist_truepx,
687  gamma2hist_truepy,
688  gamma2hist_truepz,
689  gamma2hist_trueE,
690  gamma2hist_E,
691  gamma2hist_Theta,
692  gamma2hist_Phi,
693  gamma2hist_R,
694  gamma2hist_Edep,
695  gamma2hist_Emax,
696  gamma2hist_E9E25,
697  gamma2hist_noC,
698  gamma2hist_Quality,
699  gamma2hist_Width,
700  gamma2hist_Err00,
701  gamma2hist_Err10,
702  gamma2hist_Err11,
703  gamma2hist_Err20,
704  gamma2hist_Err21,
705  gamma2hist_Err22,
706  gamma2hist_Err30,
707  gamma2hist_Err31,
708  gamma2hist_Err32,
709  gamma2hist_Err33,
710  gamma2hist_Err40,
711  gamma2hist_Err41,
712  gamma2hist_Err42,
713  gamma2hist_Err43,
714  gamma2hist_Err44,
715  gamma2hist_Err50,
716  gamma2hist_Err51,
717  gamma2hist_Err52,
718  gamma2hist_Err53,
719  gamma2hist_Err54,
720  gamma2hist_Err55,
721  gamma2hist_Err60,
722  gamma2hist_Err61,
723  gamma2hist_Err62,
724  gamma2hist_Err63,
725  gamma2hist_Err64,
726  gamma2hist_Err65,
727  gamma2hist_Err66])
728 
729 
732 
733  # Position and momentum
734  neutralPi2hist_x = ('x', 100, -1.0, 1.0)
735  neutralPi2hist_y = ('y', 100, -1.0, 1.0)
736  neutralPi2hist_z = ('z', 100, -1.0, 1.0)
737  neutralPi2hist_px = ('px', 100, -2.0, 2.0)
738  neutralPi2hist_py = ('py', 100, -2.0, 2.0)
739  neutralPi2hist_pz = ('pz', 100, -1.0, 2.5)
740  neutralPi2hist_E = ('E', 100, 0.0, 3.0)
741  neutralPi2hist_InvM = ('M', 100, 0.1344, 0.136)
742  neutralPi2hist_M = ('InvM', 50, 0.08, 0.18)
743 
744  neutralPi2hist_truepx = ('mcPX', 100, -2.0, 2.0)
745  neutralPi2hist_truepy = ('mcPY', 100, -2.0, 2.0)
746  neutralPi2hist_truepz = ('mcPZ', 100, -1.0, 2.5)
747  neutralPi2hist_trueE = ('mcE', 100, 0.0, 3.0)
748 
749  neutralPi2hist_d1x = ('daughter(0,x)', 100, -1.0, 1.0)
750  neutralPi2hist_d1y = ('daughter(0,y)', 100, -1.0, 1.0)
751  neutralPi2hist_d1z = ('daughter(0,z)', 100, -1.0, 1.0)
752  neutralPi2hist_d1px = ('daughter(0,px)', 100, -1.5, 1.5)
753  neutralPi2hist_d1py = ('daughter(0,py)', 100, -1.5, 1.5)
754  neutralPi2hist_d1pz = ('daughter(0,pz)', 100, -1.0, 2.5)
755  neutralPi2hist_d1e = ('daughter(0,E)', 100, 0.0, 3)
756 
757  neutralPi2hist_d2x = ('daughter(1,x)', 100, -1.0, 1.0)
758  neutralPi2hist_d2y = ('daughter(1,y)', 100, -1.0, 1.0)
759  neutralPi2hist_d2z = ('daughter(1,z)', 100, -1.0, 1.0)
760  neutralPi2hist_d2px = ('daughter(1,px)', 100, -1.5, 1.5)
761  neutralPi2hist_d2py = ('daughter(1,py)', 100, -1.5, 1.5)
762  neutralPi2hist_d2pz = ('daughter(1,pz)', 100, -1.0, 2.5)
763  neutralPi2hist_d2e = ('daughter(1,E)', 100, 0.0, 3)
764 
765  neutralPi2hist_Err00 = ('momVertCovM(0,0)', 100, -0.0005, 0.0005)
766  neutralPi2hist_Err10 = ('momVertCovM(1,0)', 100, -0.0005, 0.0005)
767  neutralPi2hist_Err11 = ('momVertCovM(1,1)', 100, -0.0005, 0.0005)
768  neutralPi2hist_Err20 = ('momVertCovM(2,0)', 100, -0.0005, 0.0005)
769  neutralPi2hist_Err21 = ('momVertCovM(2,1)', 100, -0.0005, 0.0005)
770  neutralPi2hist_Err22 = ('momVertCovM(2,2)', 100, -0.0005, 0.0005)
771  neutralPi2hist_Err30 = ('momVertCovM(3,0)', 100, -0.0005, 0.0005)
772  neutralPi2hist_Err31 = ('momVertCovM(3,1)', 100, -0.0005, 0.0005)
773  neutralPi2hist_Err32 = ('momVertCovM(3,2)', 100, -0.0005, 0.0005)
774  neutralPi2hist_Err33 = ('momVertCovM(3,3)', 100, -0.0005, 0.0005)
775  neutralPi2hist_Err40 = ('momVertCovM(4,0)', 100, -0.0005, 0.0005)
776  neutralPi2hist_Err41 = ('momVertCovM(4,1)', 100, -0.0005, 0.0005)
777  neutralPi2hist_Err42 = ('momVertCovM(4,2)', 100, -0.0005, 0.0005)
778  neutralPi2hist_Err43 = ('momVertCovM(4,3)', 100, -0.0005, 0.0005)
779  neutralPi2hist_Err44 = ('momVertCovM(4,4)', 100, -100.0, 100.0)
780  neutralPi2hist_Err50 = ('momVertCovM(5,0)', 100, -0.0005, 0.0005)
781  neutralPi2hist_Err51 = ('momVertCovM(5,1)', 100, -0.0005, 0.0005)
782  neutralPi2hist_Err52 = ('momVertCovM(5,2)', 100, -0.0005, 0.0005)
783  neutralPi2hist_Err53 = ('momVertCovM(5,3)', 100, -0.0005, 0.0005)
784  neutralPi2hist_Err54 = ('momVertCovM(5,4)', 100, -100.0, 100.0)
785  neutralPi2hist_Err55 = ('momVertCovM(5,5)', 100, -100.0, 100.0)
786  neutralPi2hist_Err60 = ('momVertCovM(6,0)', 100, -0.0005, 0.0005)
787  neutralPi2hist_Err61 = ('momVertCovM(6,1)', 100, -0.0005, 0.0005)
788  neutralPi2hist_Err62 = ('momVertCovM(6,2)', 100, -0.0005, 0.0005)
789  neutralPi2hist_Err63 = ('momVertCovM(6,3)', 100, -0.0005, 0.0005)
790  neutralPi2hist_Err64 = ('momVertCovM(6,4)', 100, -100.0, 100.0)
791  neutralPi2hist_Err65 = ('momVertCovM(6,5)', 100, -100.0, 100.0)
792  neutralPi2hist_Err66 = ('momVertCovM(6,6)', 100, -100.0, 100.0)
793 
794  neutralPi2hist.param('variables',
795  [neutralPi2hist_x,
796  neutralPi2hist_y,
797  neutralPi2hist_z,
798  neutralPi2hist_px,
799  neutralPi2hist_py,
800  neutralPi2hist_pz,
801  neutralPi2hist_E,
802  neutralPi2hist_M,
803  neutralPi2hist_InvM,
804  neutralPi2hist_d1x,
805  neutralPi2hist_d1y,
806  neutralPi2hist_d1z,
807  neutralPi2hist_d1px,
808  neutralPi2hist_d1py,
809  neutralPi2hist_d1pz,
810  neutralPi2hist_d1e,
811  neutralPi2hist_d2x,
812  neutralPi2hist_d2y,
813  neutralPi2hist_d2z,
814  neutralPi2hist_d2px,
815  neutralPi2hist_d2py,
816  neutralPi2hist_d2pz,
817  neutralPi2hist_d2e,
818  neutralPi2hist_Err00,
819  neutralPi2hist_Err10,
820  neutralPi2hist_Err11,
821  neutralPi2hist_Err20,
822  neutralPi2hist_Err21,
823  neutralPi2hist_Err22,
824  neutralPi2hist_Err30,
825  neutralPi2hist_Err31,
826  neutralPi2hist_Err32,
827  neutralPi2hist_Err33,
828  neutralPi2hist_Err40,
829  neutralPi2hist_Err41,
830  neutralPi2hist_Err42,
831  neutralPi2hist_Err43,
832  neutralPi2hist_Err44,
833  neutralPi2hist_Err50,
834  neutralPi2hist_Err51,
835  neutralPi2hist_Err52,
836  neutralPi2hist_Err53,
837  neutralPi2hist_Err54,
838  neutralPi2hist_Err55,
839  neutralPi2hist_Err60,
840  neutralPi2hist_Err61,
841  neutralPi2hist_Err62,
842  neutralPi2hist_Err63,
843  neutralPi2hist_Err64,
844  neutralPi2hist_Err65,
845  neutralPi2hist_Err66])
846 
847  MCneutralPi2hist.param('variables', [neutralPi2hist_truepx, neutralPi2hist_truepy, neutralPi2hist_truepz, neutralPi2hist_trueE])
848 
849  gamma2hist.param('fileName', gammaOutputRootFile)
850  neutralPi2hist.param('fileName', neutralPiOutputRootFile)
851  MCneutralPi2hist.param('fileName', MCneutralPiOutputRootFile)
852 
853  path.add_module(gamma2hist)
854  path.add_module(neutralPi2hist)
855  path.add_module(MCneutralPi2hist)
856 
857 
858 def addMCParticlesConversionMonitors(outputRootFile='b2biiMCParticlesConversionMonitors.root', path=None):
859  """
860  'HistoManager' and 'B2BIIMCParticlesMonitor' modules create and fill the monitoring
861  histograms using all MCParticles.
862  @param outputRootFile name of the output ROOT file to which the histograms are saved.
863  @param path modules are added to this path
864  """
865 
866  histo = b2.register_module("HistoManager")
867  MCParticles2hist = b2.register_module('B2BIIMCParticlesMonitor')
868 
869  histo.param("histoFileName", outputRootFile)
870 
871  path.add_module(histo)
872  path.add_module(MCParticles2hist)