Rivet analyses referenceBELLE_2008_I786560Measurement of Semi-Leptonic Tau Decays into $\pi^\pm\pi^0$Experiment: Belle (KEKB) Inspire ID: 786560 Status: VALIDATED Authors:
Beam energies: ANY Run details:
High-statistics measurement of the branching fraction for $\tau\to\pi^-\pi^0\nu_\tau$ and the invariant mass spectrum of the produced $\pi^-\pi^0$ system using 72.2fb$^{-1}$of data recorded with the Belle detector at the KEKB asymmetric-energy $e^+e^-$ collider. Source code: BELLE_2008_I786560.cc 1// -*- C++ -*-
2#include "Rivet/Analysis.hh"
3#include "Rivet/Projections/UnstableParticles.hh"
4
5namespace Rivet {
6
7
8 /// @brief BELLE tau lepton to pi pi
9 /// @author Peter Richardson
10 class BELLE_2008_I786560 : public Analysis {
11 public:
12
13 BELLE_2008_I786560()
14 : Analysis("BELLE_2008_I786560")
15 { }
16
17
18 void init() {
19 declare(UnstableParticles(), "UFS");
20 book(_hist_pipi , 1, 1, 1);
21 book(_weight_total, "TMP/weight_total");
22 book(_weight_pipi, "TMP/weight_pipi");
23 }
24
25
26 void analyze(const Event& e) {
27 // Find the taus
28 Particles taus;
29 const UnstableParticles& ufs = apply<UnstableParticles>(e, "UFS");
30 for (const Particle& p : ufs.particles()) {
31 if (p.abspid() != PID::TAU) continue;
32 _weight_total->fill();
33 Particles pip, pim, pi0;
34 unsigned int nstable = 0;
35 // find the decay products we want
36 findDecayProducts(p, nstable, pip, pim, pi0);
37 if (p.pid() < 0) {
38 swap(pip, pim);
39 }
40 if (nstable != 3) continue;
41 // pipi
42 if (pim.size() == 1 && pi0.size() == 1) {
43 _weight_pipi->fill();
44 _hist_pipi->fill((pi0[0].momentum()+pim[0].momentum()).mass2());
45 }
46 }
47 }
48
49
50 void finalize() {
51 if (_weight_pipi->val() > 0.) scale(_hist_pipi, 1. / *_weight_pipi);
52 }
53
54
55 private:
56
57 /// @{
58
59 // Histograms
60 Histo1DPtr _hist_pipi;
61
62 // Weights counters
63 CounterPtr _weight_total, _weight_pipi;
64
65 /// @}
66
67 void findDecayProducts(const Particle &mother,
68 unsigned int & nstable,
69 Particles& pip, Particles& pim,
70 Particles& pi0) {
71 for (const Particle &p : mother.children()) {
72 long id = p.pid();
73 if (id == PID::PI0 ) {
74 pi0.push_back(p);
75 ++nstable;
76 }
77 else if (id == PID::K0S)
78 ++nstable;
79 else if (id == PID::PIPLUS) {
80 pip.push_back(p);
81 ++nstable;
82 }
83 else if (id == PID::PIMINUS) {
84 pim.push_back(p);
85 ++nstable;
86 }
87 else if (id == PID::KPLUS) {
88 ++nstable;
89 }
90 else if (id == PID::KMINUS) {
91 ++nstable;
92 }
93 else if (!p.children().empty()) {
94 findDecayProducts(p, nstable, pip, pim, pi0);
95 }
96 else ++nstable;
97 }
98 }
99 };
100
101
102 RIVET_DECLARE_PLUGIN(BELLE_2008_I786560);
103
104}
|