13 List of functions to skim events containing :math:`B\\to X_c + h` decays,
14 where :math:`X_c` stays for :math:`D^0`, :math:`D^{\\pm}`, :math:`D^{*0}` and :math:`D^{*\\pm}`,
15 and :math:`h` stays for :math:`\\pi^{\\pm}`, :math:`K^{\\pm}`, :math:`\\rho^{\\pm}` and :math:`a_1^{\\pm}`.
18 import modularAnalysis
as ma
19 from skim.standardlists.charm
import (loadD0_hh_loose, loadD0_Kshh_loose,
20 loadD0_Kspi0_loose, loadD0_Kspipipi0,
21 loadKForBtoHadrons, loadPiForBtoHadrons,
22 loadStdD0_Kpi, loadStdD0_Kpipi0,
23 loadStdD0_Kpipipi, loadStdDplus_Kpipi,
25 loadStdDstar0_D0pi0_Kpi,
26 loadStdDstar0_D0pi0_Kpipi0,
27 loadStdDstar0_D0pi0_Kpipipi,
28 loadStdDstarPlus_D0pi_Kpi,
29 loadStdDstarPlus_D0pi_Kpipi0,
30 loadStdDstarPlus_D0pi_Kpipipi,
31 loadStdDstarPlus_Dpi0_Kpipi,
32 loadCharmlessD0_Kpipi0)
33 from skim.standardlists.lightmesons
import (loadStdAllRhoPlus,
34 loadStdPi0ForBToHadrons)
35 from skim.standardlists.charmless
import (loadStdPi0ForBToCharmless)
36 from skim.standardlists.charmless
import (loadStdVeryLooseTracks)
37 from skim
import BaseSkim, fancy_skim_header
38 from stdCharged
import stdK, stdPi
39 from stdPi0s
import loadStdSkimPi0, stdPi0s
40 from stdV0s
import stdKshorts
42 __liaison__ =
"Yi Zhang <yi.zhang2@desy.de>"
43 _VALIDATION_SAMPLE =
"mdst14.root"
49 Reconstructed decay modes:
51 * :math:`B^{+}\\to \\overline{D}^{0} (\\to K_{\\rm S}^0 \\pi^0) \\pi^+`,
52 * :math:`B^{+}\\to \\overline{D}^{0} (\\to K_{\\rm S}^0 \\pi^0) K^+`,
56 * ``1.5 < M_D0 < 2.2``
58 * ``abs(deltaE) < 0.3``
61 This skim uses `skim.standardlists.charm.loadD0_Kspi0_loose`, where :math:`D^0`
64 __authors__ = [
"Minakshi Nayak"]
66 __contact__ = __liaison__
67 __category__ =
"physics, hadronic B to charm"
69 ApplyHLTHadronCut =
True
70 validation_sample = _VALIDATION_SAMPLE
73 stdK(
"all", path=path)
74 stdPi(
"all", path=path)
76 loadStdPi0ForBToHadrons(path=path)
77 loadD0_Kspi0_loose(path=path)
80 Bcuts =
"Mbc > 5.2 and abs(deltaE) < 0.3"
82 BsigChannels = [
"anti-D0:Kspi0 pi+:all",
83 "anti-D0:Kspi0 K+:all"]
85 for chID, channel
in enumerate(BsigChannels):
86 ma.reconstructDecay(
"B+:BtoD0h_Kspi0" + str(chID) +
" -> " + channel, Bcuts, chID, path=path)
87 BsigList.append(
"B+:BtoD0h_Kspi0" + str(chID))
92 loadStdSkimPi0(path=path)
93 stdPi0s(listtype=
'eff50_May2020Fit', path=path, loadPhotonBeamBackgroundMVA=
False)
95 ma.reconstructDecay(
'D0 -> K_S0:merged pi0:eff50_May2020Fit',
'1.84 < M < 1.89', path=path)
96 ma.reconstructDecay(
'B-:ch3 ->D0 K-:all',
'5.24 < Mbc < 5.3 and abs(deltaE) < 0.15', path=path)
99 ma.variablesToHistogram(
100 filename=f
'{self}_Validation.root',
101 decayString=
'B-:ch3',
103 (
'Mbc', 100, 5.2, 5.3),
104 (
'deltaE', 100, -1, 1),
105 (
'daughter(0, InvM)', 100, 1.8, 1.9)],
107 (
'Mbc', 50, 5.23, 5.31,
'deltaE', 50, -0.7, 0.7)], path=path)
113 Reconstructed decay modes:
115 * :math:`B^{+}\\to \\overline{D}^{0} (\\to K_{\\rm S}^0 \\pi^+ \\pi^- \\pi^0) \\pi^+`,
116 * :math:`B^{+}\\to \\overline{D}^{0} (\\to K_{\\rm S}^0 \\pi^+ \\pi^- \\pi^0) K^+`,
120 * ``1.8 < M_D0 < 1.9``
122 * ``abs(deltaE) < 0.2``
125 This skim uses `skim.standardlists.charm.loadD0_Kspipipi0`, where :math:`D^0`
126 channels are defined.
129 __authors__ = [
"Niharika Rout"]
131 __contact__ = __liaison__
132 __category__ =
"physics, hadronic B to charm"
134 ApplyHLTHadronCut =
True
135 produce_on_tau_samples =
False
136 validation_sample = _VALIDATION_SAMPLE
139 stdK(
"all", path=path)
140 stdPi(
"all", path=path)
141 stdPi0s(
"eff40_May2020Fit", path=path, loadPhotonBeamBackgroundMVA=
False)
142 stdKshorts(path=path)
143 loadStdPi0ForBToHadrons(path=path)
144 loadPiForBtoHadrons(path=path)
145 loadD0_Kspipipi0(path=path)
148 Bcuts =
"Mbc > 5.25 and abs(deltaE) < 0.2"
150 BsigChannels = [
"anti-D0:Kspipipi0 pi+:all",
151 "anti-D0:Kspipipi0 K+:all"
154 for chID, channel
in enumerate(BsigChannels):
155 ma.reconstructDecay(
"B+:BtoD0h_Kspipipi0" + str(chID) +
" -> " + channel, Bcuts, chID, path=path)
156 BsigList.append(
"B+:BtoD0h_Kspipipi0" + str(chID))
161 stdPi(
'all', path=path)
162 stdK(
'all', path=path)
163 loadStdSkimPi0(path=path)
164 stdKshorts(path=path)
165 stdPi0s(listtype=
'eff40_May2020Fit', path=path, loadPhotonBeamBackgroundMVA=
False)
167 ma.reconstructDecay(
'D0 -> K_S0:merged pi-:all pi+:all pi0:eff40_May2020Fit',
'1.84 < M < 1.89', path=path)
168 ma.reconstructDecay(
'B-:ch3 ->D0 K-:all',
'5.24 < Mbc < 5.3 and abs(deltaE) < 0.15', path=path)
171 ma.variablesToHistogram(
172 filename=f
'{self}_Validation.root',
173 decayString=
'B-:ch3',
175 (
'Mbc', 100, 5.2, 5.3),
176 (
'deltaE', 100, -1, 1),
177 (
'daughter(0, InvM)', 100, 1.8, 1.9)],
179 (
'Mbc', 50, 5.23, 5.31,
'deltaE', 50, -0.7, 0.7)], path=path)
185 Reconstructed decay modes:
187 * :math:`B^{0}\\to D^{-} (D^{0} \\to K^+ \\pi^- \\pi^-) \\pi^+`
192 * ``abs(deltaE) < 0.3``
195 This skim uses `skim.standardlists.charm.loadStdDplus_Kpipi`, where :math:`D^-`
199 __authors__ = [
"Chiara La Licata"]
201 __contact__ = __liaison__
202 __category__ =
"physics, hadronic B to charm"
204 ApplyHLTHadronCut =
True
207 loadPiForBtoHadrons(path=path)
208 loadKForBtoHadrons(path=path)
209 loadStdDplus_Kpipi(path=path)
212 Bcuts =
"5.2 < Mbc and abs(deltaE) < 0.3"
213 ma.reconstructDecay(
"B0:Dpi_Kpipi -> D-:Kpipi pi+:GoodTrack", Bcuts, 0, path=path)
215 return [
"B0:Dpi_Kpipi"]
221 Reconstructed decay modes:
223 * :math:`B^{0}\\to D^{-} (\\to K_{\\rm S}^0 \\pi^-) \\pi^+`,
227 * ``1.8 < M_D < 1.9``
229 * ``abs(deltaE) < 0.3``
232 This skim uses `stdV0s.stdKshorts` and
233 `skim.standardlists.charm.loadStdDplus_Kpipi`, where :math:`D^0` channels are defined.
236 __authors__ = [
"Fernando Abudinen",
"Chiara La Licata"]
238 __contact__ = __liaison__
239 __category__ =
"physics, hadronic B to charm"
241 ApplyHLTHadronCut =
True
242 produce_on_tau_samples =
False
245 stdKshorts(path=path)
246 loadStdPi0ForBToHadrons(path=path)
247 loadPiForBtoHadrons(path=path)
248 loadStdDplus_Kspi(path=path)
251 Bcuts =
"Mbc > 5.2 and abs(deltaE) < 0.3"
252 ma.reconstructDecay(
"B0:B0toDpi_Kspi -> D-:Kspi pi+:GoodTrack", Bcuts, 1, path=path)
254 return [
"B0:B0toDpi_Kspi"]
260 Reconstructed decay modes:
262 * :math:`B^{0}\\to D^{*-} (D^{0} \\to K^+ \\pi^-) \\pi^+`
267 * ``abs(deltaE) < 0.3``
270 This skim uses `skim.standardlists.charm.loadStdDstarPlus_D0pi_Kpi`, where the
271 :math:`D^{*-}` channel is defined.
274 __authors__ = [
"Chiara La Licata"]
276 __contact__ = __liaison__
277 __category__ =
"physics, hadronic B to charm"
279 ApplyHLTHadronCut =
True
280 produce_on_tau_samples =
False
283 loadPiForBtoHadrons(path=path)
284 loadKForBtoHadrons(path=path)
285 loadStdD0_Kpi(path=path)
286 loadStdDstarPlus_D0pi_Kpi(path=path)
289 Bcuts =
"5.2 < Mbc and abs(deltaE) < 0.3"
290 ma.reconstructDecay(
"B0:Dstarpi_Kpi -> D*-:D0_Kpi pi+:GoodTrack", Bcuts, 0, path=path)
292 return [
"B0:Dstarpi_Kpi"]
298 Reconstructed decay modes:
300 * :math:`B^{0}\\to \\overline{D}^{*-} (\\to \\overline{D}^{0}
301 (\\to K^+ \\pi^- \\pi^- \\pi^+, K^+\\pi^-\\pi^0) \\pi^-) \\pi^+`
306 * ``abs(deltaE) < 0.3``
309 __authors__ = [
"Chiara La Licata"]
311 __contact__ = __liaison__
312 __category__ =
"physics, hadronic B to charm"
314 ApplyHLTHadronCut =
True
315 produce_on_tau_samples =
False
318 loadStdPi0ForBToHadrons(path=path)
319 loadPiForBtoHadrons(path=path)
320 loadKForBtoHadrons(path=path)
321 loadStdD0_Kpipi0(path=path)
322 loadStdD0_Kpipipi(path=path)
323 loadStdDstarPlus_D0pi_Kpipi0(path=path)
324 loadStdDstarPlus_D0pi_Kpipipi(path=path)
327 Bcuts =
"5.2 < Mbc and abs(deltaE) < 0.3"
329 "D*-:D0_Kpipipi pi+:GoodTrack",
330 "D*-:D0_Kpipi0 pi+:GoodTrack"
334 for chID, channel
in enumerate(BsigChannels):
335 ma.reconstructDecay(
"B0:Dstarpi_Kpipipi_Kpipi0" + str(chID) +
" -> " + channel, Bcuts, chID, path=path)
336 BsigList.append(
"B0:Dstarpi_Kpipipi_Kpipi0" + str(chID))
344 Reconstructed decay modes:
346 * :math:`B^{0}\\to D^{-} (\\to K^+ \\pi^- \\pi^-) \\rho^+`,
350 * ``1.8 < M_D < 1.9``
351 * ``0.47 < M_rho < 1.07``
353 * ``abs(deltaE) < 0.3``
356 This skim uses `skim.standardlists.charm.loadStdDplus_Kpipi`, where :math:`D^0` channels
357 are defined, and `skim.standardlists.lightmesons.loadStdAllRhoPlus`.
360 __authors__ = [
"Fernando Abudinen"]
362 __contact__ = __liaison__
363 __category__ =
"physics, hadronic B to charm"
365 ApplyHLTHadronCut =
True
368 stdPi(
"all", path=path)
369 loadPiForBtoHadrons(path=path)
370 loadKForBtoHadrons(path=path)
371 loadStdDplus_Kpipi(path=path)
372 loadStdPi0ForBToHadrons(path=path)
373 loadStdAllRhoPlus(path=path)
376 Bcuts =
"Mbc > 5.2 and abs(deltaE) < 0.3"
377 ma.reconstructDecay(
"B0:B0toDrho_Kpipi -> D-:Kpipi rho+:all", Bcuts, 1, path=path)
379 return [
"B0:B0toDrho_Kpipi"]
385 Reconstructed decay modes:
387 * :math:`B^{0}\\to D^{-} (\\to K_{\\rm S}^0 \\pi^-) \\rho^+`,
391 * ``1.8 < M_D < 1.9``
392 * ``0.47 < M_rho < 1.07``
394 * ``abs(deltaE) < 0.3``
397 This skim uses `stdV0s.stdKshorts` and
398 `skim.standardlists.charm.loadStdDplus_Kspi`, where :math:`D^0` channels are defined, and
399 `skim.standardlists.lightmesons.loadStdAllRhoPlus`.
402 __authors__ = [
"Fernando Abudinen"]
404 __contact__ = __liaison__
405 __category__ =
"physics, hadronic B to charm"
407 ApplyHLTHadronCut =
True
408 produce_on_tau_samples =
False
411 stdPi(
"all", path=path)
412 stdKshorts(path=path)
413 loadPiForBtoHadrons(path=path)
414 loadStdDplus_Kspi(path=path)
415 loadStdPi0ForBToHadrons(path=path)
416 loadStdAllRhoPlus(path=path)
419 Bcuts =
"Mbc > 5.2 and abs(deltaE) < 0.3"
421 ma.reconstructDecay(
"B0:B0toDrho_Kspi -> D-:Kspi rho+:all", Bcuts, 1, path=path)
423 return [
"B0:B0toDrho_Kspi"]
429 Reconstructed decay modes:
431 * :math:`B^{0}\\to D^{*-} (\\to \\overline{D}^{0} (\\to K^+ \\pi^-) \\pi^-) \\rho^+`,
435 * ``1.7 < M_D < 2.0``
436 * ``0.47 < M_rho < 1.07``
437 * ``DM_Dstar_D < 0.16``
439 * ``abs(deltaE) < 0.3``
442 This skim uses `skim.standardlists.charm.loadStdD0_Kpi` and
443 `skim.standardlists.charm.loadStdDstarPlus_D0pi_Kpi` where :math:`D^0` channels are
444 defined, and `skim.standardlists.lightmesons.loadStdAllRhoPlus`.
447 __authors__ = [
"Fernando Abudinen"]
449 __contact__ = __liaison__
450 __category__ =
"physics, hadronic B to charm"
452 ApplyHLTHadronCut =
True
453 produce_on_tau_samples =
False
456 stdPi(
"all", path=path)
457 loadStdPi0ForBToHadrons(path=path)
458 loadStdAllRhoPlus(path=path)
459 loadPiForBtoHadrons(path=path)
460 loadKForBtoHadrons(path=path)
461 loadStdD0_Kpi(path=path)
462 loadStdDstarPlus_D0pi_Kpi(path=path)
465 Bcuts =
"Mbc > 5.2 and abs(deltaE) < 0.3"
466 ma.reconstructDecay(
"B0:BtoDstarRho_D0pi_Kpi -> D*-:D0_Kpi rho+:all", Bcuts, 1, path=path)
468 return [
"B0:BtoDstarRho_D0pi_Kpi"]
474 Reconstructed decay modes:
476 * :math:`B^{0}\\to D^{*-} (\\to \\overline{D}^{0}
477 (\\to K^+2\\pi^-\\pi^+, K^+\\pi^-\\pi^0)\\pi^-) \\rho^+`,
481 * ``1.7 < M_D < 2.0``
482 * ``0.47 < M_rho < 1.07``
483 * ``DM_Dstar_D < 0.16``
485 * ``abs(deltaE) < 0.3``
488 This skim uses `skim.standardlists.charm.loadStdD0_Kpipi0`,
489 `skim.standardlists.charm.loadStdD0_Kpipipi`,
490 `skim.standardlists.charm.loadStdDstarPlus_D0pi_Kpipi0` and
491 `skim.standardlists.charm.loadStdDstarPlus_D0pi_Kpipipi` where :math:`D^0`
492 channels are defined, and `skim.standardlists.lightmesons.loadStdAllRhoPlus`.
495 __authors__ = [
"Fernando Abudinen"]
497 __contact__ = __liaison__
498 __category__ =
"physics, hadronic B to charm"
500 ApplyHLTHadronCut =
True
501 produce_on_tau_samples =
False
504 stdPi(
"all", path=path)
505 loadStdPi0ForBToHadrons(path=path)
506 loadStdAllRhoPlus(path=path)
507 loadPiForBtoHadrons(path=path)
508 loadKForBtoHadrons(path=path)
509 loadStdD0_Kpipi0(path=path)
510 loadStdD0_Kpipipi(path=path)
511 loadStdDstarPlus_D0pi_Kpipi0(path=path)
512 loadStdDstarPlus_D0pi_Kpipipi(path=path)
515 Bcuts =
"Mbc > 5.2 and abs(deltaE) < 0.3"
518 "D*-:D0_Kpipipi rho+:all",
519 "D*-:D0_Kpipi0 rho+:all",
522 for chID, channel
in enumerate(BsigChannels):
523 ma.reconstructDecay(
"B+:B0toDstarRho" + str(chID) +
" -> " + channel, Bcuts, chID, path=path, allowChargeViolation=
True)
524 BsigList.append(
"B+:B0toDstarRho" + str(chID))
532 Skim list definitions for all charged B to charm 2 body decays.
534 Reconstructed decay modes:
536 * :math:`B^{+}\\to \\overline{D}^{0} (\\to K^+ \\pi^-) \\pi^+`,
537 * :math:`B^{+}\\to \\overline{D}^{0} (\\to K^- \\pi^+) \\pi^+`,
538 * :math:`B^{+}\\to \\overline{D}^{0} (\\to \\pi^+ \\pi^-) \\pi^+`,
539 * :math:`B^{+}\\to \\overline{D}^{0} (\\to K^+ K^-) \\pi^+`,
540 * :math:`B^{+}\\to \\overline{D}^{0} (\\to K^+ \\pi^-) K^+`,
541 * :math:`B^{+}\\to \\overline{D}^{0} (\\to K^- \\pi^+) K^+`,
542 * :math:`B^{+}\\to \\overline{D}^{0} (\\to \\pi^+ \\pi^-) K^+`,
543 * :math:`B^{+}\\to \\overline{D}^{0} (\\to K^+ K^-) K^+`,
547 * ``1.5 < M_D0 < 2.2``
549 * ``abs(deltaE) < 0.3``
552 This skim uses `skim.standardlists.charm.loadD0_hh_loose`, where :math:`D^0`
553 channels are defined.
556 __authors__ = [
"Hulya Atmacan"]
558 __contact__ = __liaison__
559 __category__ =
"physics, hadronic B to charm"
561 ApplyHLTHadronCut =
True
562 validation_sample = _VALIDATION_SAMPLE
565 loadPiForBtoHadrons(path=path)
566 loadKForBtoHadrons(path=path)
567 loadD0_hh_loose(path=path)
570 Bcuts =
"Mbc > 5.2 and abs(deltaE) < 0.3"
573 "anti-D0:hh pi+:GoodTrack",
574 "anti-D0:hh K+:GoodTrack"
577 for chID, channel
in enumerate(BsigChannels):
578 ma.reconstructDecay(
"B+:BtoD0h_hh" + str(chID) +
" -> " + channel, Bcuts, chID, path=path)
579 BsigList.append(
"B+:BtoD0h_hh" + str(chID))
584 stdPi(
'all', path=path)
585 stdK(
'all', path=path)
587 ma.reconstructDecay(
'D0 -> K-:all pi+:all',
'1.84 < M < 1.89', path=path)
588 ma.reconstructDecay(
'B-:ch3 ->D0 K-:all',
'5.24 < Mbc < 5.3 and abs(deltaE) < 0.15', path=path)
591 ma.variablesToHistogram(
592 filename=f
'{self}_Validation.root',
593 decayString=
'B-:ch3',
595 (
'Mbc', 100, 5.2, 5.3),
596 (
'deltaE', 100, -1, 1),
597 (
'daughter(0, InvM)', 100, 1.8, 1.9)],
599 (
'Mbc', 50, 5.23, 5.31,
'deltaE', 50, -0.7, 0.7)], path=path)
605 Skim list definitions for all charged B to charm 3 body decays.
607 Reconstructed decay modes:
609 * :math:`B^{+}\\to \\overline{D}^{0} (\\to K^+ \\pi^-) \\pi^+`,
610 * :math:`B^{+}\\to \\overline{D}^{0} (\\to K^+ \\pi^-) K^+`,
614 * ``1.7 < M_D0 < 2.0``
616 * ``abs(deltaE) < 0.5``
619 This skim uses `skim.standardlists.charm.loadStdD0_Kpi`, where :math:`D^0`
620 channels are defined.
623 __authors__ = [
"Niharika Rout"]
625 __contact__ = __liaison__
626 __category__ =
"physics, hadronic B to charm"
628 ApplyHLTHadronCut =
True
631 loadPiForBtoHadrons(path=path)
632 loadKForBtoHadrons(path=path)
633 loadStdD0_Kpi(path=path)
636 Bcuts =
"Mbc > 5.2 and abs(deltaE) < 0.5"
638 BsigChannels = [
"anti-D0:Kpi pi+:GoodTrack",
639 "anti-D0:Kpi K+:GoodTrack"
642 for chID, channel
in enumerate(BsigChannels):
643 ma.reconstructDecay(
"B+:BtoD0h_Kpi" + str(chID) +
" -> " + channel, Bcuts, chID, path=path)
644 BsigList.append(
"B+:BtoD0h_Kpi" + str(chID))
652 Reconstructed decay modes:
654 * :math:`B^{+}\\to \\overline{D}^{0} (\\to K^+ pi^- pi^- pi^+, \\to K^+ pi^- pi^0) \\pi^+`,
655 * :math:`B^{+}\\to \\overline{D}^{0} (\\to K^+ pi^- pi^- pi^+, \\to K^+ pi^- pi^0) K^+`,
656 * :math:`B^{+}\\to \\overline{D}^{*0} (\\to \\overline{D}^{0} (\\to K^+2\\pi^-\\pi^+, K^+\\pi^-\\pi^0)
658 * :math:`B^{+}\\to \\overline{D}^{*0} (\\to \\overline{D}^{0} (\\to K^+2\\pi^-\\pi^+, K^+\\pi^-\\pi^0)
663 * ``1.7 < M_D0 < 2.0``
665 * ``abs(deltaE) < 0.3``
668 This skim uses `skim.standardlists.charm.loadStdD0_Kpipipi` and
669 `skim.standardlists.charm.loadStdD0_Kpipi0`, where :math:`D^0` channels are
673 __authors__ = [
"Chiara La Licata"]
675 __contact__ = __liaison__
676 __category__ =
"physics, hadronic B to charm"
678 ApplyHLTHadronCut =
True
681 loadStdPi0ForBToHadrons(path=path)
682 loadPiForBtoHadrons(path=path)
683 loadKForBtoHadrons(path=path)
684 loadStdD0_Kpipi0(path=path)
685 loadStdD0_Kpipipi(path=path)
686 loadStdDstar0_D0pi0_Kpipipi(path=path)
687 loadStdDstar0_D0pi0_Kpipi0(path=path)
690 Bcuts =
"Mbc > 5.2 and abs(deltaE) < 0.3"
692 BsigChannels = [
"anti-D0:Kpipipi pi+:GoodTrack",
693 "anti-D0:Kpipipi K+:GoodTrack",
694 "anti-D0:Kpipi0 pi+:GoodTrack",
695 "anti-D0:Kpipi0 K+:GoodTrack",
696 "anti-D*0:D0_Kpipipi pi+:GoodTrack",
697 "anti-D*0:D0_Kpipipi K+:GoodTrack",
698 "anti-D*0:D0_Kpipi0 pi+:GoodTrack",
699 "anti-D*0:D0_Kpipi0 K+:GoodTrack"
702 for chID, channel
in enumerate(BsigChannels):
703 ma.reconstructDecay(
"B+:BtoD0h_Khh_Khpi0" + str(chID) +
" -> " + channel, Bcuts, chID, path=path)
704 BsigList.append(
"B+:BtoD0h_Khh_Khpi0" + str(chID))
706 ma.copyLists(outputListName=
"B+:BtoD0h_merged", inputListNames=BsigList, path=path)
709 ma.rankByHighest(particleList=
"B+:BtoD0h_merged", variable=
"cos(mdstIndex)", numBest=3,
710 outputVariable=
"cosMdstIndex_rank", path=path)
712 return [
"B+:BtoD0h_merged"]
718 Reconstructed decay modes:
720 * :math:`B^{+}\\to \\overline{D}^{0} (\\to K_{\\rm S}^0 K^+ \\pi^-) \\pi^+`,
721 * :math:`B^{+}\\to \\overline{D}^{0} (\\to K_{\\rm S}^0 K^- \\pi^+) \\pi^+`,
722 * :math:`B^{+}\\to \\overline{D}^{0} (\\to K_{\\rm S}^0 \\pi^+ \\pi^-) \\pi^+`,
723 * :math:`B^{+}\\to \\overline{D}^{0} (\\to K_{\\rm S}^0 K^+ K^-) \\pi^+`,
724 * :math:`B^{+}\\to \\overline{D}^{0} (\\to K_{\\rm S}^0 K^+ \\pi^-) K^+`,
725 * :math:`B^{+}\\to \\overline{D}^{0} (\\to K_{\\rm S}^0 K^- \\pi^+) K^+`,
726 * :math:`B^{+}\\to \\overline{D}^{0} (\\to K_{\\rm S}^0 \\pi^+ \\pi^-) K^+`,
727 * :math:`B^{+}\\to \\overline{D}^{0} (\\to K_{\\rm S}^0 K^+ K^-) K^+`,
731 * ``1.5 < M_D0 < 2.2``
733 * ``abs(deltaE) < 0.3``
736 This skim uses `skim.standardlists.charm.loadD0_Kshh_loose`, where :math:`D^0`
737 channels are defined.
740 __authors__ = [
"Minakshi Nayak"]
742 __contact__ = __liaison__
743 __category__ =
"physics, hadronic B to charm"
745 ApplyHLTHadronCut =
True
746 validation_sample = _VALIDATION_SAMPLE
749 stdKshorts(path=path)
750 loadPiForBtoHadrons(path=path)
751 loadKForBtoHadrons(path=path)
752 loadD0_Kshh_loose(path=path)
755 Bcuts =
"Mbc > 5.2 and abs(deltaE) < 0.3"
757 BsigChannels = [
"anti-D0:Kshh pi+:GoodTrack",
758 "anti-D0:Kshh K+:GoodTrack"
761 for chID, channel
in enumerate(BsigChannels):
762 ma.reconstructDecay(
"B+:BtoD0h_Kshh" + str(chID) +
" -> " + channel, Bcuts, chID, path=path)
763 BsigList.append(
"B+:BtoD0h_Kshh" + str(chID))
768 stdPi(
'all', path=path)
769 stdK(
'all', path=path)
771 ma.reconstructDecay(
'D0 -> K_S0:merged pi+:all pi-:all',
'1.84 < M < 1.89', path=path)
772 ma.reconstructDecay(
'B-:ch3 ->D0 K-:all',
'5.24 < Mbc < 5.3 and abs(deltaE) < 0.15', path=path)
776 ma.variablesToHistogram(
777 filename=f
'{self}_Validation.root',
778 decayString=
'B-:ch3',
780 (
'Mbc', 100, 5.2, 5.3),
781 (
'deltaE', 100, -1, 1),
782 (
'daughter(0, InvM)', 100, 1.8, 1.9)],
784 (
'Mbc', 50, 5.23, 5.31,
'deltaE', 50, -0.7, 0.7)], path=path)
790 Reconstructed decay modes:
792 * :math:`B^{+}\\to \\overline{D}^{0} (\\to K^+ \\pi^-) \\rho^+`,
793 * :math:`B^{+}\\to \\overline{D}^{*0} (\\to \\overline{D}^{0} (\\to K^+ \\pi^-) \\pi^0) \\rho^+`,
797 * ``1.7 < M_D0 < 2.0``
798 * ``0.47 < M_rho < 1.07``
799 * ``DM_Dstar_D < 0.16``
801 * ``abs(deltaE) < 0.3``
804 This skim uses `skim.standardlists.charm.loadStdD0_Kpi` and
805 `skim.standardlists.charm.loadStdDstar0_D0pi0_Kpi`, where :math:`D^0` channels
806 are defined, and `skim.standardlists.lightmesons.loadStdAllRhoPlus`.
809 __authors__ = [
"Fernando Abudinen"]
811 __contact__ = __liaison__
812 __category__ =
"physics, hadronic B to charm"
814 ApplyHLTHadronCut =
True
817 stdPi(
"all", path=path)
818 loadStdPi0ForBToHadrons(path=path)
819 loadStdAllRhoPlus(path=path)
820 loadPiForBtoHadrons(path=path)
821 loadKForBtoHadrons(path=path)
822 loadStdD0_Kpi(path=path)
823 loadStdDstar0_D0pi0_Kpi(path=path)
826 Bcuts =
"Mbc > 5.2 and abs(deltaE) < 0.3"
828 BsigChannels = [
"anti-D0:Kpi rho+:all",
829 "anti-D*0:D0_Kpi rho+:all"]
831 for chID, channel
in enumerate(BsigChannels):
832 ma.reconstructDecay(
"B+:BtoD0rho_Kpi" + str(chID) +
" -> " + channel, Bcuts, chID, path=path)
833 BsigList.append(
"B+:BtoD0rho_Kpi" + str(chID))
841 Reconstructed decay modes:
843 * :math:`B^{+}\\to \\overline{D}^{0} (\\to K^+2\\pi^-\\pi^+, K^+\\pi^-\\pi^0) \\rho^+`
844 * :math:`B^{+}\\to \\overline{D}^{*0} (\\to \\overline{D}^{0} (\\to K^+2 \\pi^-
845 \\pi^+, K^+\\pi^-\\pi^0) \\pi^0) \\rho^+`
849 * ``1.7 < M_D0 < 2.0``
850 * ``DM_Dstar_D < 0.16``
851 * ``0.6 < M_rho < 0.9``
852 * ``cosHel_rho < 0.90``
854 * ``abs(deltaE) < 0.3``
857 This skim uses `skim.standardlists.charm.loadStdD0_Kpipi0`,
858 `skim.standardlists.charm.loadStdD0_Kpipipi`,
859 `skim.standardlists.charm.loadStdDstar0_D0pi0_Kpipi0`, and
860 `skim.standardlists.charm.loadStdDstar0_D0pi0_Kpipipi`, where :math:`D^0`
861 channels are defined, and `skim.standardlists.lightmesons.loadStdAllRhoPlus`.
864 This skim saves only three randomly-chosen :math:`B^{+}` candidates in a
865 ``B+:BtoD0rho_merged`` list, since the candidate multiplicity of this skim is
868 __authors__ = [
"Fernando Abudinen"]
870 __contact__ = __liaison__
871 __category__ =
"physics, hadronic B to charm"
873 ApplyHLTHadronCut =
True
876 stdPi(
"all", path=path)
877 loadStdPi0ForBToHadrons(path=path)
878 loadStdAllRhoPlus(path=path)
879 loadPiForBtoHadrons(path=path)
880 loadKForBtoHadrons(path=path)
881 loadStdD0_Kpipi0(path=path)
882 loadStdD0_Kpipipi(path=path)
883 loadStdDstar0_D0pi0_Kpipi0(path=path)
884 loadStdDstar0_D0pi0_Kpipipi(path=path)
887 Bcuts =
"Mbc > 5.2 and abs(deltaE) < 0.3 and cosHelicityAngle(1,0) < 0.9 and 0.6 <= daughter(1,M) <= 0.9"
890 "anti-D0:Kpipipi rho+:all",
891 "anti-D0:Kpipi0 rho+:all",
892 "anti-D*0:D0_Kpipipi rho+:all",
893 "anti-D*0:D0_Kpipi0 rho+:all"
896 for chID, channel
in enumerate(BsigChannels):
897 ma.reconstructDecay(
"B+:BtoD0rho_merged" + str(chID) +
" -> " + channel, Bcuts, chID, path=path)
898 BsigList.append(
"B+:BtoD0rho_merged" + str(chID))
900 ma.copyLists(outputListName=
"B+:BtoD0rho_merged", inputListNames=BsigList, path=path)
903 ma.rankByHighest(particleList=
"B+:BtoD0rho_merged", variable=
"cos(mdstIndex)", numBest=3,
904 outputVariable=
"cosMdstIndex_rank", path=path)
906 return [
"B+:BtoD0rho_merged"]
912 Reconstructed decay modes:
914 * :math:`B^{0}\\to D^{+}(\\to K^- \\pi^+ \\pi^+) D^{-}(\\to K^+ \\pi^- \\pi^-)`
915 * :math:`B^{0}\\to D^{+}(\\to K^- \\pi^+ \\pi^+) D^{-}(\\to K_{\\rm S}^0 \\pi^-)`
916 * :math:`B^{0}\\to D^{+}(\\to K_{\\rm S}^0 \\pi^-) D^{-}(\\to K_{\\rm S}^0 \\pi^-)`
921 * ``abs(deltaE) < 0.3``
922 * ``1.8 < M_D < 1.9``
925 This skim uses `skim.standardlists.charm.loadStdDplus_Kpipi` and
926 `skim.standardlists.charm.loadStdDplus_Kspi`, where :math:`D^-`
930 produce_on_tau_samples =
False
932 __authors__ = [
"Chiara La Licata"]
934 __contact__ = __liaison__
935 __category__ =
"physics, hadronic B to charm"
937 ApplyHLTHadronCut =
True
940 stdKshorts(path=path)
941 loadPiForBtoHadrons(path=path)
942 loadKForBtoHadrons(path=path)
943 loadStdDplus_Kpipi(path=path)
944 loadStdDplus_Kspi(path=path)
947 Bcuts =
"5.2 < Mbc and abs(deltaE) < 0.3"
955 for chID, channel
in enumerate(BsigChannels):
956 ma.reconstructDecay(
"B0:B0toDD" + str(chID) +
" -> " + channel, Bcuts, chID, path=path)
957 BsigList.append(
"B0:B0toDD" + str(chID))
965 Reconstructed decay modes:
967 * :math:`B^{0}\\to \\overline{D}^{*-} (\\to \\overline{D}^{0}
968 (\\to K^+ \\pi^-, \\to K^+ \\pi^- \\pi^- \\pi^+, K^+ \\pi^- \\pi^0) \\pi^-) \\D^+(\\to K^- \\pi^+ \\pi^+)`
969 * :math:`B^{0}\\to \\overline{D}^{*-} (\\to D^{-} \\pi^0) \\D^+(\\to K^- \\pi^+ \\pi^+)`
974 * ``abs(deltaE) < 0.3``
975 * ``DM_Dstar_D < 0.16``
976 * ``1.8 < M_D < 1.9``
979 __authors__ = [
"Chiara La Licata"]
981 __contact__ = __liaison__
982 __category__ =
"physics, hadronic B to charm"
984 ApplyHLTHadronCut =
True
985 produce_on_tau_samples =
False
988 loadStdPi0ForBToHadrons(path=path)
989 loadPiForBtoHadrons(path=path)
990 loadKForBtoHadrons(path=path)
991 loadStdD0_Kpi(path=path)
992 loadStdD0_Kpipi0(path=path)
993 loadStdD0_Kpipipi(path=path)
994 loadStdDplus_Kpipi(path=path)
995 loadStdDstarPlus_D0pi_Kpi(path=path)
996 loadStdDstarPlus_D0pi_Kpipipi(path=path)
997 loadStdDstarPlus_D0pi_Kpipi0(path=path)
998 loadStdDstarPlus_Dpi0_Kpipi(path=path)
1001 Bcuts =
"5.2 < Mbc and abs(deltaE) < 0.3"
1003 "D*+:D0_Kpi D-:Kpipi",
1004 "D*+:D0_Kpipipi D-:Kpipi",
1005 "D*+:D0_Kpipi0 D-:Kpipi",
1006 "D*+:Dpi0_Kpipi D-:Kpipi"
1010 for chID, channel
in enumerate(BsigChannels):
1011 ma.reconstructDecay(
"B0:B0toDstarD" + str(chID) +
" -> " + channel, Bcuts, chID, path=path)
1012 BsigList.append(
"B0:B0toDstarD" + str(chID))
1020 Reconstructed decay modes:
1022 * :math:`B^{0}\\to \\bar{D}^{0} (\\to K^+ \\pi^- \\pi^0) \\pi^0`
1027 * ``abs(deltaE) < 0.5``
1030 This skim uses `skim.standardlists.charm.loadStdD0_Kpipi0`, where the
1031 :math:`\\bar{D}^{0}` channel is defined.
1034 __authors__ = [
"Francis Pham"]
1035 __description__ =
""
1036 __contact__ = __liaison__
1037 __category__ =
"physics, hadronic B to charm"
1039 ApplyHLTHadronCut =
True
1040 produce_on_tau_samples =
False
1043 loadStdPi0ForBToCharmless(path=path)
1044 loadStdVeryLooseTracks(
'K', path=path)
1045 loadStdVeryLooseTracks(
'pi', path=path)
1046 loadCharmlessD0_Kpipi0(path=path)
1049 Bcuts =
"5.2 < Mbc and abs(deltaE) < 0.5"
1051 ma.reconstructDecay(
"B0:D0Kpipi0_pi0 -> anti-D0:Kpipi0 pi0:charmlessFit", Bcuts, path=path)
1053 return [
"B0:D0Kpipi0_pi0"]
def build_lists(self, path)
def load_standard_lists(self, path)
def build_lists(self, path)
def load_standard_lists(self, path)
def build_lists(self, path)
def load_standard_lists(self, path)
def build_lists(self, path)
def load_standard_lists(self, path)
def build_lists(self, path)
def load_standard_lists(self, path)
def build_lists(self, path)
def load_standard_lists(self, path)
def build_lists(self, path)
def load_standard_lists(self, path)
def build_lists(self, path)
def load_standard_lists(self, path)
def build_lists(self, path)
def load_standard_lists(self, path)
def build_lists(self, path)
def load_standard_lists(self, path)
def build_lists(self, path)
def load_standard_lists(self, path)
def build_lists(self, path)
def load_standard_lists(self, path)
def build_lists(self, path)
def load_standard_lists(self, path)
def build_lists(self, path)
def validation_histograms(self, path)
def load_standard_lists(self, path)
def build_lists(self, path)
def validation_histograms(self, path)
def load_standard_lists(self, path)
def build_lists(self, path)
def validation_histograms(self, path)
def load_standard_lists(self, path)
def build_lists(self, path)
def validation_histograms(self, path)
def load_standard_lists(self, path)
def build_lists(self, path)
def load_standard_lists(self, path)
def build_lists(self, path)
def load_standard_lists(self, path)