rivet is hosted by Hepforge, IPPP Durham

Rivet analyses reference

SND_2000_I527094

Mass spectrum of $\pi^0\pi^0$ in $\phi\to\pi^0\pi^0\gamma$ decays
Experiment: SND (VEPP-2M)
Inspire ID: 527094
Status: VALIDATED
Authors:
  • Peter Richardson
References:
  • Phys.Lett. B485 (2000) 349-356
Beams: * *
Beam energies: ANY
Run details:
  • Any process producing phi mesons

Mass spectra for $\pi^0\pi^0$ in $\phi$ decays to $\pi^0\pi^0\gamma$ measured by SND.

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