rivet is hosted by Hepforge, IPPP Durham

Rivet analyses reference

CLEOIII_2005_I675005

Hadronic mass spectra in four hadron $\tau^-$ decays with $K^\pm$
Experiment: CLEOIII (CESR)
Inspire ID: 675005
Status: VALIDATED NOHEPDATA
Authors:
  • Peter Richardson
References:
  • Phys.Rev.Lett. 94 (2005) 241802
Beams: * *
Beam energies: ANY
Run details:
  • Any process producting tau leptons, originally e+e-

Measurement of the hadronic mass spectrum in $\tau^-\to K^-\pi^+\pi^-\pi^0\nu_\tau$ (excluding $\omega$ and $K^-\omega\nu_\tau$) and $\tau^-\to K^-K^+\pi^-\pi^0\nu_\tau$ decays. The background subtracted, efficiency corrected data were read from Figure 2 in the paper.

Source code: CLEOIII_2005_I675005.cc
  1// -*- C++ -*-
  2#include "Rivet/Analysis.hh"
  3#include "Rivet/Projections/UnstableParticles.hh"
  4#include "Rivet/Projections/DecayedParticles.hh"
  5
  6namespace Rivet {
  7
  8
  9  /// @brief Hadronic mass spectra in four hadron tau- decays with K+/-
 10  class CLEOIII_2005_I675005 : public Analysis {
 11  public:
 12
 13    /// Constructor
 14    RIVET_DEFAULT_ANALYSIS_CTOR(CLEOIII_2005_I675005);
 15
 16
 17    /// @name Analysis methods
 18    /// @{
 19
 20    /// Book histograms and initialise projections before the run
 21    void init() {
 22      // Initialise and register projections
 23      UnstableParticles ufs = UnstableParticles(Cuts::abspid==15);
 24      declare(ufs, "UFS");
 25      DecayedParticles TAU(ufs);
 26      TAU.addStable(310);
 27      TAU.addStable(223);
 28      TAU.addStable(111);
 29      declare(TAU, "TAU");
 30      // histos
 31      for (unsigned int ix=0; ix<3; ++ix) {
 32	      book(_h[ix], 1, 1, 1+ix);
 33      }
 34    }
 35
 36
 37    /// Perform the per-event analysis
 38    void analyze(const Event& event) {
 39      DecayedParticles TAU = apply<DecayedParticles>(event, "TAU");
 40      // loop over particles
 41      for (unsigned int ix=0;ix<TAU.decaying().size();++ix) {
 42      	int sign = 1, imode=0;
 43      	if (TAU.decaying()[ix].pid()>0 &&
 44      	  TAU.modeMatches(ix,5,mode1)) {
 45          sign=1;
 46          imode=0;
 47        }
 48      	else if (TAU.decaying()[ix].pid()<0 &&
 49      		TAU.modeMatches(ix,5,mode1CC)) {
 50          sign=-1;
 51          imode=0;
 52        }
 53        else if(TAU.decaying()[ix].pid()>0 &&
 54      	  TAU.modeMatches(ix,3,mode2)) {
 55          sign=1;
 56          imode=1;
 57        }
 58      	else if (TAU.decaying()[ix].pid()<0 &&
 59      		TAU.modeMatches(ix,3,mode2CC)) {
 60          sign=-1;
 61          imode=1;
 62        }
 63        else if(TAU.decaying()[ix].pid()>0 &&
 64                 TAU.modeMatches(ix,5,mode3)) {
 65          sign=1;
 66          imode=2;
 67        }
 68      	else if (TAU.decaying()[ix].pid()<0 &&
 69      		TAU.modeMatches(ix,5,mode3CC)) {
 70          sign=-1;
 71          imode=2;
 72        }
 73      	else {
 74      	  continue;
 75        }
 76      	const Particle& nu = TAU.decayProducts()[ix].at(16*sign)[0];
 77        const double mass = (TAU.decaying()[ix].mom()-nu.mom()).mass();
 78        _h[imode]->fill(mass);
 79      }
 80    }
 81
 82
 83    /// Normalise histograms etc., after the run
 84    void finalize() {
 85      normalize(_h, 1.0, false);
 86    }
 87
 88    /// @}
 89
 90
 91    /// @name Histograms
 92    /// @{
 93    Histo1DPtr _h[3];
 94    const map<PdgId,unsigned int> mode1   = { {-321,1}, { 211,1}, {-211,1}, {111,1}, { 16,1}};
 95    const map<PdgId,unsigned int> mode1CC = { { 321,1}, { 211,1}, {-211,1}, {111,1}, {-16,1}};
 96    const map<PdgId,unsigned int> mode2   = { {-321,1}, { 223,1}, { 16,1}};
 97    const map<PdgId,unsigned int> mode2CC = { { 321,1}, { 223,1}, {-16,1}};
 98    const map<PdgId,unsigned int> mode3   = { { 321,1}, {-321,1}, {-211,1}, {111,1}, { 16,1}};
 99    const map<PdgId,unsigned int> mode3CC = { { 321,1}, {-321,1}, { 211,1}, {111,1}, {-16,1}};
100    /// @}
101
102
103  };
104
105
106  RIVET_DECLARE_PLUGIN(CLEOIII_2005_I675005);
107
108}