Rivet analyses referenceCLEO_1995_I396711Mass spectrum in hadronic $\tau$ decaysExperiment: CLEO (CESR) Inspire ID: 396711 Status: VALIDATED NOHEPDATA Authors:
Beam energies: ANY Run details:
Measurement of the mass spectrum in hadronic $\tau$ decays. The decay were read from figure 1 in the paper which is fully corrected. Source code: CLEO_1995_I396711.cc 1// -*- C++ -*-
2#include "Rivet/Analysis.hh"
3#include "Rivet/Projections/UnstableParticles.hh"
4
5namespace Rivet {
6
7
8 /// @brieftau -> hadrons
9 class CLEO_1995_I396711 : public Analysis {
10 public:
11
12 /// Constructor
13 RIVET_DEFAULT_ANALYSIS_CTOR(CLEO_1995_I396711);
14
15
16 /// @name Analysis methods
17 /// @{
18
19 /// Book histograms and initialise projections before the run
20 void init() {
21 declare(UnstableParticles(Cuts::abspid==PID::TAU), "UFS");
22 book(_h, 1, 1, 1);
23 }
24
25
26 void findDecayProducts(const Particle& mother, Particles& hadrons) {
27 for (const Particle& p : mother.children()) {
28 long id = p.abspid();
29 if (id == PID::PI0 || id==311 || id==310 || id==130) {
30 hadrons.push_back(p);
31 }
32 else if (!p.children().empty()) {
33 findDecayProducts(p, hadrons);
34 }
35 else if (id>16) {
36 hadrons.push_back(p);
37 }
38 }
39 }
40
41 /// Perform the per-event analysis
42 void analyze(const Event& event) {
43 const UnstableParticles& ufs = apply<UnstableParticles>(event, "UFS");
44 for (const Particle& p : ufs.particles(Cuts::abspid==PID::TAU)) {
45 Particles hadrons;
46 // find the decay products we want
47 findDecayProducts(p, hadrons);
48 if (hadrons.size()<=1) continue;
49 FourMomentum ptotal;
50 for (const Particle& p2 : hadrons) ptotal+=p2.momentum();
51 _h->fill(ptotal.mass2());
52 }
53 }
54
55
56 /// Normalise histograms etc., after the run
57 void finalize() {
58 normalize(_h,1.,false);
59 }
60
61 /// @}
62
63
64 /// @name Histograms
65 /// @{
66 Histo1DPtr _h;
67 /// @}
68
69
70 };
71
72
73 RIVET_DECLARE_PLUGIN(CLEO_1995_I396711);
74
75}
|