rivet is hosted by Hepforge, IPPP Durham

Rivet analyses reference

BELLE_2008_I786560

Measurement of Semi-Leptonic Tau Decays into $\pi^\pm\pi^0$
Experiment: Belle (KEKB)
Inspire ID: 786560
Status: VALIDATED
Authors:
  • Peter Richardson
References: Beams: e+ e-
Beam energies: (3.5, 8.0) GeV
Run details:
  • Tau production, can be any process but original data was in $e^+ e^-$ at the $\Upsilon(4S)$ resonance, with CoM boosts of 8.0 GeV ($e^-$) and 3.5 GeV ($e^+$)

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}