rivet is hosted by Hepforge, IPPP Durham

Rivet analyses reference

CMD2_2005_I676548

Form-factor for $\omega\to\pi^0e^+e^-$
Experiment: CMD2 (VEPP-2M)
Inspire ID: 676548
Status: VALIDATED NOHEPDATA
Authors:
  • Peter Richardson
References:
  • Phys.Lett.B 613 (2005) 29-38
Beams: * *
Beam energies: ANY
Run details:
  • Any process producing omega mesons with both the dalitz decay and radiative decay for normalization, originally e+e-

Measurement of the form factor $\left|F_{\omega\pi^0}(q^2)\right|$ for the decay $\omega\to\pi^0e^+e^-$.

Source code: CMD2_2005_I676548.cc
  1// -*- C++ -*-
  2#include "Rivet/Analysis.hh"
  3#include "Rivet/Projections/UnstableParticles.hh"
  4
  5namespace Rivet {
  6
  7
  8  /// @brief omega -> pi0 e+e-
  9  class CMD2_2005_I676548 : public Analysis {
 10  public:
 11
 12    /// Constructor
 13    RIVET_DEFAULT_ANALYSIS_CTOR(CMD2_2005_I676548);
 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(Cuts::pid==223), "UFS");
 23      // Book histograms
 24      book(_h_omega, 2, 1, 1);
 25      book(_weight_omega,"TMP/weight_omega");
 26    }
 27
 28    void findDecayProducts(const Particle & mother, unsigned int & nstable, unsigned int & npi, 
 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::PI0) {
 44          ++npi;
 45          ++nstable;
 46        }
 47        else if (id == PID::GAMMA && p.children().empty() ) {
 48          ++ngamma;
 49          ++nstable;
 50        }
 51        else if ( !p.children().empty() ) {
 52          findDecayProducts(p, nstable, npi,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      const double me     = 0.5109989461*MeV;
 63      const double momega = 782.65*MeV;
 64      const double mpi    = 134.9770*MeV;
 65      // Loop over eta and omega mesons
 66      for (const Particle& p : apply<UnstableParticles>(event, "UFS").particles()) {
 67       	unsigned nstable(0),npi(0),nep(0),nem(0),ngamma(0);
 68       	FourMomentum ptot;
 69      	findDecayProducts(p,nstable,npi,nep,nem,ngamma,ptot);
 70        if (nstable==3 && nem==1 && nep==1 && npi==1) {
 71          const double q = ptot.mass();
 72          const double beta = sqrt(1.-4*sqr(me/q));
 73          const double p = sqrt(sqr(1.+sqr(q)/(sqr(momega)-sqr(mpi)))-4.*sqr(momega*q/(sqr(momega)-sqr(mpi))));
 74          const double fact = beta*GeV/q*(1.+2.*sqr(me/q))*pow(p,3);
 75          _h_omega->fill(q/GeV,1./fact);
 76        }
 77        else if(nstable==2 && ngamma ==1 && npi==1) {
 78          _weight_omega->fill();
 79        }
 80      }
 81    }
 82
 83
 84    /// Normalise histograms etc., after the run
 85    void finalize() {
 86      const double alpha= 7.2973525664e-3;
 87      scale(_h_omega, 1.5 *M_PI/alpha/ *_weight_omega);
 88    }
 89
 90    /// @}
 91
 92
 93    /// @name Histograms
 94    /// @{
 95    Histo1DPtr _h_omega;
 96    CounterPtr _weight_omega;
 97    /// @}
 98
 99
100  };
101
102
103  RIVET_DECLARE_PLUGIN(CMD2_2005_I676548);
104
105}