rivet is hosted by Hepforge, IPPP Durham

Rivet analyses reference

SND_2000_I525398

Mass spectrum of $\eta\pi$ in $\phi\to\eta\pi^0\gamma$ decays
Experiment: SND (VEPP-2M)
Inspire ID: 525398
Status: VALIDATED
Authors:
  • Peter Richardson
References:
  • Phys.Lett. B479 (2000) 53-58
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: SND_2000_I525398.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 SND_2000_I525398 : public Analysis {
10  public:
11
12    /// Constructor
13    RIVET_DEFAULT_ANALYSIS_CTOR(SND_2000_I525398);
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/nPhi");
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    /// Normalise histograms etc., after the run
74    void finalize() {
75      // normalise to total no of phi mesons
76      scale( _h_etapi, 1./ *_nPhi);
77    }
78
79    /// @}
80
81
82    /// @name Histograms
83    /// @{
84    Histo1DPtr _h_etapi;
85    CounterPtr _nPhi;
86    /// @}
87
88
89  };
90
91
92  RIVET_DECLARE_PLUGIN(SND_2000_I525398);
93
94
95}