rivet is hosted by Hepforge, IPPP Durham

Rivet analyses reference

KLOE_2009_I818106

Mass spectrum of $\eta\pi$ in $\phi\to\eta\pi^0\gamma$ decays
Experiment: KLOE (DAPHNE)
Inspire ID: 818106
Status: VALIDATED
Authors:
  • Peter Richardson
References:
  • Phys.Lett. B681 (2009) 5-13
Beams: * *
Beam energies: ANY
Run details:
  • Any process producing phi mesons

Mass spectra for $\eta\pi$ in $\phi$ decays to $\eta\pi^0\gamma$ measured by KLOE. Useful for teting the treatment of the a_0(980) meson.

Source code: KLOE_2009_I818106.cc
 1// -*- C++ -*-
 2#include "Rivet/Analysis.hh"
 3#include "Rivet/Projections/UnstableParticles.hh"
 4
 5namespace Rivet {
 6
 7
 8  /// @brief phi -> eta pi0 gamma
 9  class KLOE_2009_I818106 : public Analysis {
10  public:
11
12    /// Constructor
13    RIVET_DEFAULT_ANALYSIS_CTOR(KLOE_2009_I818106);
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(_h_etapi,  1, 1, 1);
23      book(_nPhi, "TMP/PhiCounter");
24    }
25
26    void findDecayProducts(const Particle & mother, unsigned int & nstable,
27                           unsigned int & neta,   unsigned int & npi,
28			   unsigned int & ngamma, FourMomentum & ptot) {
29      for(const Particle & p : mother.children()) {
30        int id = p.pid();
31        if ( id == PID::ETA ) {
32	  ++neta;
33          ++nstable;
34	  ptot += p.momentum();
35	}
36        else if (id == PID::PI0) {
37	  ++npi;
38          ++nstable;
39	  ptot += p.momentum();
40	}
41        else if (id == PID::GAMMA) {
42	  ++ngamma;
43          ++nstable;
44	}
45        else if (id == PID::PIPLUS || id == PID::PIMINUS) {
46          ++nstable;
47        }
48        else if ( !p.children().empty() ) {
49          findDecayProducts(p, nstable, neta, npi, ngamma, ptot);
50        }
51        else
52          ++nstable;
53      }
54    }
55
56    /// Perform the per-event analysis
57    void analyze(const Event& event) {
58
59      // Loop over phis
60      for(const Particle& phi : apply<UnstableParticles>(event, "UFS").particles(Cuts::abspid==PID::PHI)) {
61	_nPhi->fill();
62        unsigned int nstable(0),neta(0),npi(0),ngamma(0);
63      	FourMomentum p_tot(0,0,0,0);
64        findDecayProducts(phi, nstable, neta, npi, ngamma, p_tot);
65       	if(nstable!=3) continue;
66      	if(neta==1 && npi==1 && ngamma==1 ) {
67          _h_etapi->fill(p_tot.mass()/MeV);
68	}
69      }
70
71    }
72
73
74    /// Normalise histograms etc., after the run
75    void finalize() {
76      // normalise to total no of phi mesons
77      // and mult by 10^7 due normalisation in paper
78      scale( _h_etapi, 1./_nPhi->sumW()*1e7);
79    }
80
81    /// @}
82
83
84    /// @name Histograms
85    /// @{
86    Histo1DPtr _h_etapi;
87    CounterPtr _nPhi;
88    /// @}
89
90
91  };
92
93
94  RIVET_DECLARE_PLUGIN(KLOE_2009_I818106);
95
96
97}