rivet is hosted by Hepforge, IPPP Durham

Rivet analyses reference

KLOE2_2014_I1317236

Form factor for the decay $\phi\to\eta e^+e^-$
Experiment: KLOE2 (DAPHNE)
Inspire ID: 1317236
Status: VALIDATED
Authors:
  • Peter Richardson
References:
  • Phys.Lett. B742 (2015) 1-6
Beams: * *
Beam energies: ANY
Run details:
  • phi production with both the dalitz decay and radiative decay for normalization

Measurement of the form factor $\left|F_{\phi\eta }(q^2)\right|$ for the decay $\phi\to\eta e^+e^-$ by the KLOE experiment at DAPHNE

Source code: KLOE2_2014_I1317236.cc
  1// -*- C++ -*-
  2#include "Rivet/Analysis.hh"
  3#include "Rivet/Projections/UnstableParticles.hh"
  4
  5namespace Rivet {
  6
  7
  8  /// @brief  form factor for phi-> eta
  9  class KLOE2_2014_I1317236 : public Analysis {
 10  public:
 11
 12    /// Constructor
 13    RIVET_DEFAULT_ANALYSIS_CTOR(KLOE2_2014_I1317236);
 14
 15
 16    /// @name Analysis methods
 17    /// @{
 18
 19    /// Book histograms and initialise projections before the run
 20    void init() {
 21      // Initialise and register projections
 22      declare(UnstableParticles(), "UFS");
 23      // Book histograms
 24      book(_h_m, 1, 1, 1);
 25      book(_weight,"TMP/weight");
 26    }
 27
 28    void findDecayProducts(const Particle & mother, unsigned int & nstable, unsigned int & neta,
 29                           unsigned int & nep, unsigned int & nem, unsigned int & ngamma,
 30			   FourMomentum & ptot) {
 31      for(const Particle & p : mother.children()) {
 32        int id = p.pid();
 33        if (id == PID::EMINUS ) {
 34	  ++nem;
 35          ++nstable;
 36	  ptot += p.momentum();
 37	}
 38        else if (id == PID::EPLUS) {
 39          ++nep;
 40          ++nstable;
 41	  ptot += p.momentum();
 42        }
 43        else if (id == PID::ETA) {
 44	  ++neta;
 45          ++nstable;
 46        }
 47	else if (id == PID::GAMMA) {
 48	  ++ngamma;
 49	  ++nstable;
 50	}
 51        else if ( !p.children().empty() ) {
 52          findDecayProducts(p, nstable, neta,nep,nem,ngamma,ptot);
 53        }
 54        else
 55          ++nstable;
 56      }
 57    }
 58
 59
 60    /// Perform the per-event analysis
 61    void analyze(const Event& event) {
 62      static double me   = 0.5109989461*MeV;
 63      static double mphi = 1019.461*MeV;
 64      static double meta  = 547.862*MeV;
 65
 66      // Loop over phi mesons
 67      for(const Particle& p : apply<UnstableParticles>(event, "UFS").particles(Cuts::pid==333)) {
 68	unsigned nstable(0),neta(0),nep(0),nem(0),ngamma(0);
 69	FourMomentum ptot;
 70	findDecayProducts(p,nstable,neta,nep,nem,ngamma,ptot);
 71	if(nstable==3 && nem==1 && nem==1 && neta==1) {
 72	  double q = ptot.mass();
 73	  double beta = sqrt(1.-4*sqr(me/q));
 74	  double p = sqrt(sqr(1.+sqr(q)/(sqr(mphi)-sqr(meta)))-4.*sqr(mphi*q/(sqr(mphi)-sqr(meta))));
 75	  double fact = beta*MeV/q*(1.+2.*sqr(me/q))*pow(p,3);
 76	  _h_m->fill(q/MeV,1./fact);
 77	}
 78	else if(nstable==2 && ngamma ==1 && neta==1) {
 79	  _weight->fill();
 80	}
 81      }
 82    }
 83
 84
 85    /// Normalise histograms etc., after the run
 86    void finalize() {
 87      static double alpha= 7.2973525664e-3;
 88      scale(_h_m, 1.5*M_PI/alpha/ *_weight);
 89    }
 90
 91    /// @}
 92
 93
 94    /// @name Histograms
 95    /// @{
 96    Histo1DPtr _h_m;
 97    CounterPtr _weight;
 98    /// @}
 99
100
101  };
102
103
104  RIVET_DECLARE_PLUGIN(KLOE2_2014_I1317236);
105
106
107}