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