Rivet analyses referenceCLEO_1999_I508944Measurement of Semi-Leptonic Tau Decays into $\pi^\pm\pi^0$Experiment: CLEO (CESR) Inspire ID: 508944 Status: VALIDATED Authors:
Beam energies: ANY Run details:
Measurement of the invariant mass spectrum of the $\pi^-\pi^0$ system in $\tau\to\pi^-\pi^0\nu_\tau$ measured by CLEO at CESR. Source code: CLEO_1999_I508944.cc 1// -*- C++ -*-
2#include "Rivet/Analysis.hh"
3#include "Rivet/Projections/UnstableParticles.hh"
4
5namespace Rivet {
6
7
8 /// @brief tau -> pi-pi0 nu_tau
9 class CLEO_1999_I508944 : public Analysis {
10 public:
11
12 /// Constructor
13 RIVET_DEFAULT_ANALYSIS_CTOR(CLEO_1999_I508944);
14
15
16 /// @name Analysis methods
17 /// @{
18
19 /// Book histograms and initialise projections before the run
20 void init() {
21 declare(UnstableParticles(), "UFS");
22 book(_hist_pipi, 1, 1, 1);
23 }
24
25
26 /// Perform the per-event analysis
27 void analyze(const Event& event) {
28 // Find the taus
29 Particles taus;
30 const UnstableParticles& ufs = apply<UnstableParticles>(event, "UFS");
31 for (const Particle& p : ufs.particles()) {
32 if (p.abspid() != PID::TAU) continue;
33 Particles pip, pim, pi0;
34 unsigned int nstable = 0;
35 // get the boost to the rest frame
36 // find the decay products we want
37 findDecayProducts(p, nstable, pip, pim, pi0);
38 if (p.pid() < 0) {
39 swap(pip, pim);
40 }
41 if (nstable != 3) continue;
42 // pipi
43 if (pim.size() == 1 && pi0.size() == 1)
44 _hist_pipi->fill((pi0[0].momentum()+pim[0].momentum()).mass());
45 }
46 }
47
48 void findDecayProducts(const Particle & mother,
49 unsigned int & nstable,
50 Particles& pip, Particles& pim,
51 Particles& pi0) {
52 for(const Particle & p : mother.children()) {
53 long id = p.pid();
54 if (id == PID::PI0 ) {
55 pi0.push_back(p);
56 ++nstable;
57 }
58 else if (id == PID::PIPLUS) {
59 pip.push_back(p);
60 ++nstable;
61 }
62 else if (id == PID::PIMINUS) {
63 pim.push_back(p);
64 ++nstable;
65 }
66 else if (id == PID::K0S || id == PID::KPLUS ||
67 id == PID::KMINUS) {
68 ++nstable;
69 }
70 else if ( !p.children().empty() ) {
71 findDecayProducts(p, nstable, pip, pim, pi0);
72 }
73 else
74 ++nstable;
75 }
76 }
77
78 /// Normalise histograms etc., after the run
79 void finalize() {
80
81 normalize(_hist_pipi);
82
83 }
84
85 /// @}
86
87
88 /// @name Histograms
89 /// @{
90 Histo1DPtr _hist_pipi;
91 /// @}
92
93
94 };
95
96
97 RIVET_DECLARE_PLUGIN(CLEO_1999_I508944);
98
99
100}
|