rivet is hosted by Hepforge, IPPP Durham

Rivet analyses reference

CLEO_1999_I508944

Measurement of Semi-Leptonic Tau Decays into $\pi^\pm\pi^0$
Experiment: CLEO (CESR)
Inspire ID: 508944
Status: VALIDATED
Authors:
  • Peter Richardson
References:
  • Phys.Rev. D61 (2000) 112002
  • hep-ex/9910046
Beams: * *
Beam energies: ANY
Run details:
  • Tau production, can be any process but original data was in $e^+ e^-$ at the $\Upsilon(4S)$ resonance

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}