Belle II Software  release-05-01-25
charm.py
1 #!/usr/bin/env python3
2 # -*- coding: utf-8 -*-
3 
4 # /***************************************************************************
5 # * BASF2 (Belle Analysis Framework 2) *
6 # * *
7 # * This script contains the definitions of the standard particle lists *
8 # * used in the reconstruction of control channels and analyses for *
9 # * data validation. *
10 # * *
11 # * Contributors: Fernando Abudinen, Chiara La Licata, Niharika Rout. *
12 # * *
13 # ***************************************************************************/
14 
15 """
16 .. Note::
17  The charm standard skim lists here, are for B to charm physics skims. If you are looking
18  for charm physics skims, please check :ref:`skim_physics_charm`.
19 """
20 
21 import modularAnalysis as ma
22 from stdPi0s import stdPi0s
23 
24 
25 def loadPiForBtoHadrons(path):
26  """
27  Creates a ``pi+:GoodTrack`` list, with cuts :math:`|dr|<2~{\\rm cm}` and :math:`|dz|<5~{\\rm cm}`.
28 
29  Parameters
30  path (basf2.Path): Skim path to be processed.
31  """
32  ma.fillParticleList("pi+:GoodTrack", "abs(dr) < 2 and abs(dz) < 5", path=path)
33 
34 
35 def loadPiSkimHighEff(path):
36  """
37  Creates a ``pi+:SkimHighEff`` list, with cuts :math:`|dr|<2~{\\rm cm}` and :math:`|dz|<5~{\\rm cm} and pionID >= 0.01`.
38 
39  Parameters
40  path (basf2.Path): Skim path to be processed.
41  """
42  ma.fillParticleList("pi+:SkimHighEff", "abs(dr) < 2 and abs(dz) < 5 and pionID >= 0.01", path=path)
43 
44 
45 def loadSlowPi(path):
46  """
47  Creates a ``pi+:slowPi`` list, with cuts :math:`|dr|<2~{\\rm cm}` and :math:`|dz|<5~{\\rm cm} and useCMSFrame(p) < 0.4`.
48 
49  Parameters
50  path (basf2.Path): Skim path to be processed.
51  """
52  ma.fillParticleList("pi+:slowPi", "abs(dr) < 2 and abs(dz) < 5 and useCMSFrame(p) < 0.4", path=path)
53 
54 
55 def loadKForBtoHadrons(path):
56  """
57  Creates a ``K+:GoodTrack`` list, with cuts :math:`|dr|<2~{\\rm cm}` and :math:`|dz|<5~{\\rm cm}`.
58 
59  Parameters
60  path (basf2.Path): Skim path to be processed.
61  """
62  ma.fillParticleList("K+:GoodTrack", "abs(dr) < 2 and abs(dz) < 5", path=path)
63 
64 
65 def loadKSkimHighEff(path):
66  """
67  Creates a ``K+:SkimHighEff`` list, with cuts :math:`|dr|<2~{\\rm cm}` and :math:`|dz|<5~{\\rm cm} and kaonID >= 0.01`.
68 
69  Parameters
70  path (basf2.Path): Skim path to be processed.
71  """
72  ma.fillParticleList("K+:SkimHighEff", "abs(dr) < 2 and abs(dz) < 5 and kaonID >= 0.01", path=path)
73 
74 
75 def loadStdD0(path):
76  """
77  Creates a 'D0:all' list, with an invariant mass in the range :math:`1.7 < M < 2.0~{\\rm GeV}/c^2`,
78  from the following particles lists:
79 
80  1. 'K-:GoodTrack pi+:GoodTrack',
81  2. 'K-:GoodTrack pi+:GoodTrack pi+:GoodTrack pi-:GoodTrack',
82  3. 'K-:GoodTrack pi+:GoodTrack pi0:bth_skim',
83  4. 'K_S0:merged pi+:GoodTrack pi-:GoodTrack'.
84 
85  @param path modules are added to this path
86  """
87  D0Cuts = '1.7 < M < 2.0'
88  D0_Channels = ['K-:GoodTrack pi+:GoodTrack',
89  'K-:GoodTrack pi+:GoodTrack pi+:GoodTrack pi-:GoodTrack',
90  'K-:GoodTrack pi+:GoodTrack pi0:bth_skim',
91  'K_S0:merged pi+:GoodTrack pi-:GoodTrack',
92  ]
93 
94  D0List = []
95  for chID, channel in enumerate(D0_Channels):
96  ma.reconstructDecay(decayString='D0:all' + str(chID) + ' -> ' + channel, cut=D0Cuts, dmID=chID, path=path)
97  D0List.append('D0:all' + str(chID))
98  ma.copyLists(outputListName='D0:all', inputListNames=D0List, path=path)
99  return D0List
100 
101 
102 def loadStdD0_Kpi(path=None):
103  """
104  Creates a 'D0:Kpi' list, with an invariant mass in the range :math:`1.7 < M < 2.0~{\\rm GeV}/c^2`,
105  from the following particles lists:
106 
107  1. 'K-:GoodTrack pi+:GoodTrack',
108 
109  @param path modules are added to this path
110  """
111  ma.reconstructDecay(decayString='D0:Kpi -> K-:GoodTrack pi+:GoodTrack', cut='1.7 < M < 2.0', dmID=1, path=path)
112  return ['D0:Kpi']
113 
114 
115 def loadSkimHighEffD0_Kpi(path=None):
116  """
117  Creates a 'D0:Kpi_skimhigheff' list, with an invariant mass in the range :math:`1.8 < M < 2.0~{\\rm GeV}/c^2`,
118  from the following particles lists:
119 
120  1. 'K-:SkimHighEff pi+:SkimHighEff',
121 
122  @param path modules are added to this path
123  """
124  ma.reconstructDecay(decayString='D0:Kpi_skimhigheff -> K-:SkimHighEff pi+:SkimHighEff', cut='1.8 < M < 2.0', dmID=1, path=path)
125  return ['D0:Kpi_skimhigheff']
126 
127 
128 def loadStdD0_Kpipipi(path=None):
129  """
130  Creates a 'D0:Kpipipi' list, with an invariant mass in the range :math:`1.7 < M < 2.0~{\\rm GeV}/c^2`,
131  from the following particles lists:
132 
133  2. 'K-:GoodTrack pi+:GoodTrack pi+:GoodTrack pi-:GoodTrack',
134 
135  @param path modules are added to this path
136  """
137  ma.reconstructDecay(decayString='D0:Kpipipi -> K-:GoodTrack pi+:GoodTrack pi+:GoodTrack pi-:GoodTrack',
138  cut='1.7 < M < 2.0', dmID=2, path=path)
139  return ['D0:Kpipipi']
140 
141 
142 def loadSkimHighEffD0_Kpipipi(path=None):
143  """
144  Creates a 'D0:Kpipipi_skimhigheff' list, with an invariant mass in the range :math:`1.8 < M < 2.0~{\\rm GeV}/c^2`,
145  from the following particles lists:
146 
147  2. 'K-:SkimHighEff pi+:SkimHighEff pi+:SkimHighEff pi-:SkimHighEff',
148 
149  @param path modules are added to this path
150  """
151  ma.reconstructDecay(decayString='D0:Kpipipi_skimhigheff -> K-:SkimHighEff pi+:SkimHighEff pi+:SkimHighEff pi-:SkimHighEff',
152  cut='1.8 < M < 2.0', dmID=2, path=path)
153  return ['D0:Kpipipi_skimhigheff']
154 
155 
156 def loadStdD0_Kpipi0(path=None):
157  """
158  Creates a 'D0:Kpipi0' list, with an invariant mass in the range :math:`1.7 < M < 2.0~{\\rm GeV}/c^2`,
159  from the following particles lists:
160 
161  3. 'K-:GoodTrack pi+:GoodTrack pi0:bth_skim',
162 
163  @param path modules are added to this path
164  """
165  ma.reconstructDecay(decayString='D0:Kpipi0 -> K-:GoodTrack pi+:GoodTrack pi0:bth_skim', cut='1.7 < M < 2.0', dmID=3, path=path)
166  return ['D0:Kpipi0']
167 
168 
169 def loadStdD0_eff20_Kpipi0(path=None):
170  """
171  Creates a 'D0:Kpipi0_eff20' list, with an invariant mass in the range :math:`1.8 < M < 2.0~{\\rm GeV}/c^2`,
172  from the following particles lists:
173 
174  3. 'K-:SkimHighEff pi+:SkimHighEff pi0:eff20_Jan2020',
175 
176  @param path modules are added to this path
177  """
178  ma.reconstructDecay(
179  decayString='D0:Kpipi0_eff20 -> K-:SkimHighEff pi+:SkimHighEff pi0:eff20_Jan2020',
180  cut='1.8 < M < 2.0',
181  dmID=3,
182  path=path)
183  return ['D0:Kpipi0_eff20']
184 
185 
186 def loadStdD0_Kspipi(path=None):
187  """
188  Creates a 'D0:Kspipi' list, with an invariant mass in the range :math:`1.7 < M < 2.0~{\\rm GeV}/c^2`,
189  from the following particles lists:
190 
191  4. 'K_S0:merged pi+:GoodTrack pi-:GoodTrack'.
192 
193  @param path modules are added to this path
194  """
195  ma.reconstructDecay(decayString='D0:Kspipi -> K_S0:merged pi+:GoodTrack pi-:GoodTrack', cut='1.7 < M < 2.0', dmID=4, path=path)
196  return ['D0:Kspipi']
197 
198 
199 def loadD0_hh_loose(path):
200  """
201  Creates a 'D0:hh' list, with an invariant mass in the range :math:`1.5 < M < 2.2~{\\rm GeV}/c^2`,
202  from the following particles lists:
203 
204  1. 'K+:GoodTrack pi-:GoodTrack',
205  2. 'K-:GoodTrack pi+:GoodTrack',
206  3. 'pi+:GoodTrack pi-:GoodTrack',
207  4. 'K+:GoodTrack K-:GoodTrack'.
208 
209  @param path modules are added to this path
210  """
211 
212  Dcuts = '1.5 < M < 2.2'
213  D0_hh_Channels = [
214  'K+:GoodTrack pi-:GoodTrack',
215  'K-:GoodTrack pi+:GoodTrack',
216  'pi+:GoodTrack pi-:GoodTrack',
217  'K+:GoodTrack K-:GoodTrack'
218  ]
219  D0_hh_List = []
220  for chID, channel in enumerate(D0_hh_Channels):
221  ma.reconstructDecay(decayString='D0:D0Bar' + str(chID) + ' -> ' + channel, cut=Dcuts, dmID=chID, path=path)
222  D0_hh_List.append('D0:D0Bar' + str(chID))
223  ma.copyLists(outputListName='D0:hh', inputListNames=D0_hh_List, path=path)
224  return D0_hh_List
225 
226 
227 def loadD0_Kshh_loose(path):
228  """
229  Creates a 'D0:Kshh' list, with an invariant mass in the range :math:`1.5 < M < 2.2~{\\rm GeV}/c^2`,
230  from the following particles lists:
231 
232  1. 'K_S0:merged pi+:GoodTrack pi-:GoodTrack',
233  2. 'K_S0:merged K+:GoodTrack K-:GoodTrack'.
234 
235  @param path modules are added to this path
236  """
237 
238  Dcuts = '1.5 < M < 2.2'
239 
240  D0_Channels = [
241  'K_S0:merged pi+:GoodTrack pi-:GoodTrack',
242  'K_S0:merged K+:GoodTrack K-:GoodTrack'
243  ]
244  D0List = []
245  for chID, channel in enumerate(D0_Channels):
246  ma.reconstructDecay(decayString='D0:Kshh' + str(chID) + ' -> ' + channel, cut=Dcuts, dmID=chID, path=path)
247  D0List.append('D0:Kshh' + str(chID))
248  ma.copyLists(outputListName='D0:Kshh', inputListNames=D0List, path=path)
249  return D0List
250 
251 
252 def loadD0_Kspi0_loose(path):
253  """
254  Creates a 'D0:Kspi0' list, with an invariant mass in the range :math:`1.5 < M < 2.2~{\\rm GeV}/c^2`,
255  from the 'K_S0:merged' and the 'pi0:bth_skim' lists.
256 
257  @param path modules are added to this path
258  """
259 
260  Dcuts = '1.5 < M < 2.2'
261 
262  D0_Channels = [
263  'K_S0:merged pi0:bth_skim'
264  ]
265 
266  D0List = []
267  for chID, channel in enumerate(D0_Channels):
268  ma.reconstructDecay(decayString='D0:Kspi0' + str(chID) + ' -> ' + channel, cut=Dcuts, dmID=chID, path=path)
269  D0List.append('D0:Kspi0' + str(chID))
270  ma.copyLists(outputListName='D0:Kspi0', inputListNames=D0List, path=path)
271  return D0List
272 
273 
274 def loadD0_Kspipipi0(path):
275  """
276  Creates a 'D0:Kspipipi0' list, with an invariant mass in the range :math:`1.5 < M < 2.2~{\\rm GeV}/c^2`,
277  from the 'K_S0:merged', 'pi+:GoodTrack', 'pi-:GoodTrack' and 'pi0:bth_skim' lists.
278 
279  @param path modules are added to this path
280  """
281 
282  Dcuts = '1.8 < M < 1.9'
283 
284  D0_Channels = [
285  'K_S0:merged pi+:GoodTrack pi-:GoodTrack pi0:bth_skim'
286  ]
287  D0List = []
288  for chID, channel in enumerate(D0_Channels):
289  ma.reconstructDecay(decayString='D0:Kspipipi0' + str(chID) + ' -> ' + channel, cut=Dcuts, dmID=chID, path=path)
290  D0List.append('D0:Kspipipi0' + str(chID))
291  ma.copyLists(outputListName='D0:Kspipipi0', inputListNames=D0List, path=path)
292  return D0List
293 
294 
295 def loadStdDplus(path):
296  """
297  Creates a 'D+:all' list, with an invariant mass in the range :math:`1.8 < M < 1.9~{\\rm GeV}/c^2`,
298  from the following particles lists:
299 
300  1. 'K-:GoodTrack pi+:GoodTrack pi+:GoodTrack',
301  2. 'K_S0:merged pi+:GoodTrack',
302  3. 'K_S0:merged pi+:GoodTrack pi0:bth_skim',
303  4. 'K-:GoodTrack pi+:GoodTrack pi+:GoodTrack pi0:bth_skim'.
304 
305  @param path modules are added to this path
306  """
307  DplusCuts = '1.8 < M < 1.9'
308  Dplus_Channels = ['K-:GoodTrack pi+:GoodTrack pi+:GoodTrack',
309  'K_S0:merged pi+:GoodTrack',
310  'K_S0:merged pi+:GoodTrack pi0:bth_skim',
311  'K-:GoodTrack pi+:GoodTrack pi+:GoodTrack pi0:bth_skim',
312  ]
313 
314  DplusList = []
315  for chID, channel in enumerate(Dplus_Channels):
316  ma.reconstructDecay(decayString='D+:all' + str(chID) + ' -> ' + channel, cut=DplusCuts, dmID=chID, path=path)
317  DplusList.append('D+:all' + str(chID))
318  ma.copyLists(outputListName='D+:all', inputListNames=DplusList, path=path)
319  return DplusList
320 
321 
322 def loadStdDplus_Kpipi(path=None):
323  """
324  Creates a 'D+:Kpipi' list, with an invariant mass in the range :math:`1.8 < M < 1.9~{\\rm GeV}/c^2`,
325  from the following particles lists:
326 
327  1. 'K-:GoodTrack pi+:GoodTrack pi+:GoodTrack',
328 
329  @param path modules are added to this path
330  """
331  ma.reconstructDecay(decayString='D+:Kpipi -> K-:GoodTrack pi+:GoodTrack pi+:GoodTrack', cut='1.8 < M < 1.9', dmID=1, path=path)
332  return ['D+:Kpipi']
333 
334 
335 def loadStdDplus_Kspi(path=None):
336  """
337  Creates a 'D+:Kspi' list, with an invariant mass in the range :math:`1.8 < M < 1.9~{\\rm GeV}/c^2`,
338  from the following particles lists:
339 
340  2. 'K_S0:merged pi+:GoodTrack',
341 
342  @param path modules are added to this path
343  """
344  ma.reconstructDecay(decayString='D+:Kspi -> K_S0:merged pi+:GoodTrack', cut='1.8 < M < 1.9', dmID=2, path=path)
345  return ['D+:Kspi']
346 
347 
348 def loadStdDplus_Kspipi0(path=None):
349  """
350  Creates a 'D+:Kspipi0' list, with an invariant mass in the range :math:`1.8 < M < 1.9~{\\rm GeV}/c^2`,
351  from the following particles lists:
352 
353  3. 'K_S0:merged pi+:GoodTrack pi0:bth_skim',
354 
355  @param path modules are added to this path
356  """
357  ma.reconstructDecay(decayString='D+:Kspipi0 -> K_S0:merged pi+:GoodTrack pi0:bth_skim', cut='1.8 < M < 1.9',
358  dmID=3, path=path)
359  return ['D+:Kspipi0']
360 
361 
362 def loadStdDplus_Kpipipi0(path=None):
363  """
364  Creates a 'D+:Kpipipi0' list, with an invariant mass in the range :math:`1.8 < M < 1.9~{\\rm GeV}/c^2`,
365  from the following particles lists:
366 
367  4. 'K-:GoodTrack pi+:GoodTrack pi+:GoodTrack pi0:bth_skim'.
368 
369  @param path modules are added to this path
370  """
371  ma.reconstructDecay(decayString='D+:Kpipipi0 -> K-:GoodTrack pi+:GoodTrack pi+:GoodTrack pi0:bth_skim', cut='1.8 < M < 1.9',
372  dmID=3, path=path)
373  return ['D+:Kpipipi0']
374 
375 
376 def loadStdDstar0(path):
377  """
378  Create a list of 'D*0:all' list, with an invariant mass cut :math:`1.95 < M < 2.05 GeV`, from the following particles lists:
379 
380  - 'D0:all pi0:eff40_Jan2020'
381  - 'D0:all gamma:loose'
382 
383  @param path modules are added to this path
384  """
385  Dstar0Cuts = 'massDifference(0) < 0.16'
386  D_Channels = ['D0:all pi0:eff40_Jan2020',
387  'D0:all gamma:loose']
388 
389  DList = []
390  for chID, channel in enumerate(D_Channels):
391  ma.reconstructDecay(decayString='D*0:std' + str(chID) + ' -> ' + channel, cut=Dstar0Cuts, dmID=chID, path=path)
392  DList.append('D*0:std' + str(chID))
393  ma.copyLists(outputListName='D*0:all', inputListNames=DList, path=path)
394  return DList
395 
396 
397 def loadStdDstar0_D0pi0_all(path=None):
398  """
399  Creates a 'D*0:all' list combining the 'D0:all' and 'pi0:bth_skim' lists by requiring the mass difference between D*0 and D0
400  to be in the range :math:`\\Delta M < 0.16~{\\rm GeV}/c^2`.
401 
402  @param path modules are added to this path
403  """
404  Dstar0Cuts = 'massDifference(0) < 0.16'
405  Dstar0_Channels = ['D0:all pi0:bth_skim',
406  ]
407 
408  Dstar0List = []
409  for chID, channel in enumerate(Dstar0_Channels):
410  ma.reconstructDecay(decayString='D*0:all' + str(chID) + ' -> ' + channel, cut=Dstar0Cuts, dmID=chID, path=path)
411  Dstar0List.append('D*0:all' + str(chID))
412  ma.copyLists(outputListName='D*0:all', inputListNames=Dstar0List, path=path)
413  return Dstar0List
414 
415 
416 def loadStdDstar0_D0pi0_Kpi(path=None):
417  """
418  Creates a 'D*0:D0_Kpi' list combining the 'D0:Kpi' and 'pi0:bth_skim' lists by requiring the mass difference between D*0 and D0
419  to be in the range :math:`\\Delta M < 0.16~{\\rm GeV}/c^2`.
420 
421  @param path modules are added to this path
422  """
423  ma.reconstructDecay(decayString='D*0:D0_Kpi -> D0:Kpi pi0:bth_skim', cut='massDifference(0) < 0.16', dmID=1, path=path)
424  return ['D*0:D0_Kpi']
425 
426 
427 def loadStdDstar0_D0pi0_Kpipipi(path=None):
428  """
429  Creates a 'D*0:D0_Kpipipi' list combining the 'D0:Kpipipi' and 'pi0:bth_skim' lists by requiring the mass difference
430  between D*0 and D0 to be in the range :math:`\\Delta M < 0.16~{\\rm GeV}/c^2`.
431 
432  @param path modules are added to this path
433  """
434  ma.reconstructDecay(decayString='D*0:D0_Kpipipi -> D0:Kpipipi pi0:bth_skim', cut='massDifference(0) < 0.16', dmID=2, path=path)
435  return ['D*0:D0_Kpipipi']
436 
437 
438 def loadStdDstar0_D0pi0_Kpipi0(path=None):
439  """
440  Creates a 'D*0:D0_Kpipi0' list combining the 'D0:Kpipi0' and 'pi0:bth_skim' lists by requiring the mass difference
441  between D*0 and D0 to be in the range :math:`\\Delta M < 0.16~{\\rm GeV}/c^2`.
442 
443  @param path modules are added to this path
444  """
445  ma.reconstructDecay(decayString='D*0:D0_Kpipi0 -> D0:Kpipi0 pi0:bth_skim', cut='massDifference(0) < 0.16', dmID=3, path=path)
446  return ['D*0:D0_Kpipi0']
447 
448 
449 def loadStdDstar0_D0pi0_Kspipi(path=None):
450  """
451  Creates a 'D*0:D0_Kspipi' list combining the 'D0:Kspipi' and 'pi0:bth_skim' lists by requiring the mass difference
452  between D*0 and D0 to be in the range :math:`\\Delta M < 0.16~{\\rm GeV}/c^2`.
453 
454  @param path modules are added to this path
455  """
456  ma.reconstructDecay(decayString='D*0:D0_Kspipi -> D0:Kspipi pi0:bth_skim', cut='massDifference(0) < 0.16', dmID=4, path=path)
457  return ['D*0:D0_Kspipi']
458 
459 
460 def loadStdDstarPlus(path):
461  """
462  Create a list of 'D*++:all' list, with an invariant mass cut :math:`1.95 < M < 2.05 GeV`, from the following particles lists:
463  - 'D0:all pi+:GoodTrack'
464  - 'D+:all pi0:eff40_Jan2020'
465 
466  @param path modules are added to this path
467  """
468  DstarPlusCuts = 'massDifference(0) < 0.16'
469  D_Channels = ['D0:all pi+:GoodTrack',
470  'D+:all pi0:eff40_Jan2020']
471 
472  DList = []
473  for chID, channel in enumerate(D_Channels):
474  ma.reconstructDecay(decayString='D*+:std' + str(chID) + ' -> ' + channel, cut=DstarPlusCuts, dmID=chID, path=path)
475  DList.append('D*+:std' + str(chID))
476  ma.copyLists(outputListName='D*+:all', inputListNames=DList, path=path)
477  return DList
478 
479 
480 def loadStdDstarPlus_D0pi_all(path=None):
481  """
482  Creates a 'D*+:all' list combining the 'D0:all' and 'pi+:GoodTrack' list by requiring the mass difference between D*+ and D0
483  to be in the range :math:`\\Delta M < 0.16~{\\rm GeV}/c^2`.
484 
485  @param path modules are added to this path
486  """
487  DstarPlusCuts = 'massDifference(0) < 0.16'
488  DstarPlus_Channels = ['D0:all pi+:GoodTrack',
489  ]
490 
491  DstarPlusList = []
492  for chID, channel in enumerate(DstarPlus_Channels):
493  ma.reconstructDecay(decayString='D*+:std' + str(chID) + ' -> ' + channel, cut=DstarPlusCuts, dmID=chID, path=path)
494  DstarPlusList.append('D*+:std' + str(chID))
495  ma.copyLists(outputListName='D*+:all', inputListNames=DstarPlusList, path=path)
496  return DstarPlusList
497 
498 
499 def loadStdDstarPlus_D0pi_Kpi(path=None):
500  """
501  Creates a 'D*+:D0_Kpi' list combining the 'D0:Kpi' and 'pi+:GoodTrack' lists by requiring the mass difference between D*0 and D0
502  to be in the range :math:`\\Delta M < 0.16~{\\rm GeV}/c^2`.
503 
504  @param path modules are added to this path
505  """
506  ma.reconstructDecay(decayString='D*+:D0_Kpi -> D0:Kpi pi+:GoodTrack', cut='massDifference(0) < 0.16', dmID=1, path=path)
507  return ['D*+:D0_Kpi']
508 
509 
510 def loadSkimHighEffDstarPlus_D0pi_Kpi(path=None):
511  """
512  Creates a 'D*+:D0_Kpi_skimhigheff' list combining the 'D0:Kpi_skimhigheff' and 'pi+:slowPi' lists by requiring the
513  mass difference between D*0 and D0 to be in the range :math:`\\Delta M < 0.16~{\\rm GeV}/c^2`.
514 
515  @param path modules are added to this path
516  """
517  ma.reconstructDecay(decayString='D*+:D0_Kpi_skimhigheff -> D0:Kpi_skimhigheff pi+:slowPi',
518  cut='massDifference(0) < 0.16', dmID=1, path=path)
519  return ['D*+:D0_Kpi_skimhigheff']
520 
521 
522 def loadStdDstarPlus_D0pi_Kpipipi(path=None):
523  """
524  Creates a 'D*+:D0_Kpipipi' list combining the 'D0:Kpipipi' and 'pi+:GoodTrack' lists by requiring the mass difference
525  between D*0 and D0 to be in the range :math:`\\Delta M < 0.16~{\\rm GeV}/c^2`.
526 
527  @param path modules are added to this path
528  """
529  ma.reconstructDecay(decayString='D*+:D0_Kpipipi -> D0:Kpipipi pi+:GoodTrack', cut='massDifference(0) < 0.16', dmID=2, path=path)
530  return ['D*+:D0_Kpipipi']
531 
532 
533 def loadSkimHighEffDstarPlus_D0pi_Kpipipi(path=None):
534  """
535  Creates a 'D*+:D0_Kpipipi_skimhigheff' list combining the 'D0:Kpipipi_skimhigheff' and 'pi+:slowPi' lists
536  by requiring the mass difference between D*0 and D0 to be in the range :math:`\\Delta M < 0.16~{\\rm GeV}/c^2`.
537 
538  @param path modules are added to this path
539  """
540  ma.reconstructDecay(decayString='D*+:D0_Kpipipi_skimhigheff -> D0:Kpipipi_skimhigheff pi+:slowPi',
541  cut='massDifference(0) < 0.16', dmID=2, path=path)
542  return ['D*+:D0_Kpipipi_skimhigheff']
543 
544 
545 def loadStdDstarPlus_D0pi_Kpipi0(path=None):
546  """
547  Creates a 'D*+:D0_Kpipi0' list combining the 'D0:Kpipi0' and 'pi+:GoodTrack' lists by requiring the mass difference
548  between D*0 and D0 to be in the range :math:`\\Delta M < 0.16~{\\rm GeV}/c^2`.
549 
550  @param path modules are added to this path
551  """
552  ma.reconstructDecay(decayString='D*+:D0_Kpipi0 -> D0:Kpipi0 pi+:GoodTrack', cut='massDifference(0) < 0.16', dmID=3, path=path)
553  return ['D*+:D0_Kpipi0']
554 
555 
556 def loadStdDstarPlus_D0pi_Kpipi0_eff20(path=None):
557  """
558  Creates a 'D*+:D0_Kpipi0_eff20' list combining the 'D0:Kpipi0_eff20' and 'pi+:slowPi' lists by requiring the mass difference
559  between D*0 and D0 to be in the range :math:`\\Delta M < 0.16~{\\rm GeV}/c^2`.
560 
561  @param path modules are added to this path
562  """
563  ma.reconstructDecay(decayString='D*+:D0_Kpipi0_eff20 -> D0:Kpipi0_eff20 pi+:slowPi',
564  cut='massDifference(0) < 0.16', dmID=3, path=path)
565  return ['D*+:D0_Kpipi0_eff20']
566 
567 
568 def loadStdDstarPlus_D0pi_Kspipi(path=None):
569  """
570  Creates a 'D*+:D0_Kspipi' list combining the 'D0:Kspipi' and 'pi+:GoodTrack' lists by requiring the mass difference
571  between D*0 and D0 to be in the range :math:`\\Delta M < 0.16~{\\rm GeV}/c^2`.
572 
573  @param path modules are added to this path
574  """
575  ma.reconstructDecay(decayString='D*+:D0_Kspipi -> D0:Kspipi pi+:GoodTrack', cut='massDifference(0) < 0.16', dmID=4, path=path)
576  return ['D*+:D0_Kspipi']
577 
578 
579 def loadStdDstarPlus_Dpi0_Kpipi(path=None):
580  """
581  Creates a 'D*+:Dpi0_Kpipi' list combining the 'D+:Kpipi' and 'pi0:bth_skim' lists by requiring the mass difference
582  between D*0 and D0 to be in the range :math:`\\Delta M < 0.16~{\\rm GeV}/c^2`.
583 
584  @param path modules are added to this path
585  """
586  ma.reconstructDecay(decayString='D*+:Dpi0_Kpipi -> D+:Kpipi pi0:bth_skim', cut='massDifference(0) < 0.16', dmID=4, path=path)
587  return ['D*+:Dpi0_Kpipi']
588 
589 
590 def loadCharmlessD0_Kpipi0(path=None):
591  """
592  Creates a 'D0:Kpipi0' list, with an invariant mass in the range :math:`1.7 < M < 2.0~{\\rm GeV}/c^2`,
593  from the following particles lists:
594 
595  1. 'K-:SkimVeryLoose pi+:SkimVeryLoose pi0:SkimVeryLoose',
596 
597  @param path modules are added to this path
598  """
599  ma.reconstructDecay(
600  decayString='D0:Kpipi0 -> K-:SkimVeryLoose pi+:SkimVeryLoose pi0:charmlessFit',
601  cut='1.7 < M < 2.0',
602  path=path)
603 
604  return ['D0:Kpipi0']