rivet is hosted by Hepforge, IPPP Durham

Rivet analyses reference

BELLE_2009_I822474

$\gamma\gamma\to\eta\pi^0$ for centre-of-mass energies between 0.84 and 4.0 GeV
Experiment: BELLE (KEKB)
Inspire ID: 822474
Status: VALIDATED
Authors:
  • Peter Richardson
References:
  • Phys.Rev.D 80 (2009) 032001, 2009
Beams: 22 22
Beam energies: ANY
Run details:
  • gamma gamma to hadrons, pi0 must be set stable

Measurement of the differential cross section for $\gamma\gamma\to\eta\pi^0$ for $0.84 \text{GeV} < W < 4.0 \text{GeV}$. Both the cross section as a function of the centre-of-mass energy of the photonic collision, and the differential cross section with respect to the pion scattering angle are measured.

Source code: BELLE_2009_I822474.cc
  1// -*- C++ -*-
  2#include "Rivet/Analysis.hh"
  3#include "Rivet/Projections/FinalState.hh"
  4#include "Rivet/Projections/UnstableParticles.hh"
  5
  6namespace Rivet {
  7
  8
  9  /// @brief gamma gamma -> eta pi0
 10  class BELLE_2009_I822474 : public Analysis {
 11  public:
 12
 13    /// Constructor
 14    RIVET_DEFAULT_ANALYSIS_CTOR(BELLE_2009_I822474);
 15
 16
 17    /// @name Analysis methods
 18    /// @{
 19
 20    /// Book histograms and initialise projections before the run
 21    void init() {
 22      // Initialise and register projections
 23      declare(FinalState(), "FS");
 24      declare(UnstableParticles(), "UFS");
 25      // book histos
 26      if (inRange(sqrtS()/GeV,0.84,4.)) {
 27        book(_sigmaEtaPi,"TMP/nEtaPi",refData(1,1,1));
 28        double sMin=0.84, step=0.02;
 29        unsigned int ihist=2;
 30        while (sMin<4.) {
 31          if (inRange(sqrtS()/GeV, sMin, sMin+step)) {
 32            break;
 33          }
 34          sMin+=step;
 35          ihist+=1;
 36          if (fuzzyEquals(1.6, sMin)) step=0.04;
 37          else if (fuzzyEquals(2.4, sMin)) step=0.1;
 38        }
 39        book(_h_cTheta,ihist,1,1);
 40      }
 41      else {
 42        throw Error("Invalid CMS energy for BELLE_2009_I822474");
 43      }
 44    }
 45
 46    void findChildren(const Particle & p,map<long,int> & nRes, int &ncount) {
 47      for (const Particle &child : p.children()) {
 48        if (child.children().empty()) {
 49          nRes[child.pid()]-=1;
 50          --ncount;
 51        }
 52        else {
 53          findChildren(child,nRes,ncount);
 54        }
 55      }
 56    }
 57
 58    /// Perform the per-event analysis
 59    void analyze(const Event& event) {
 60      const FinalState& fs = apply<FinalState>(event, "FS");
 61      // find the final-state particles
 62      map<long,int> nCount;
 63      int ntotal(0);
 64      for (const Particle& p : fs.particles()) {
 65        nCount[p.pid()] += 1;
 66        ++ntotal;
 67      }
 68      const FinalState& ufs = apply<FinalState>(event, "UFS");
 69      for (const Particle& p : ufs.particles(Cuts::pid==PID::ETA)) {
 70        if (p.children().empty()) continue;
 71        map<long,int> nRes=nCount;
 72        int ncount = ntotal;
 73        findChildren(p,nRes,ncount);
 74        if (ncount !=1 ) continue;
 75        bool matched = true;
 76        for (const auto& val : nRes) {
 77          if (val.first==PID::PI0) {
 78            if (val.second!=1) {
 79              matched = false;
 80              break;
 81            }
 82          }
 83          else if (val.second!=0) {
 84            matched = false;
 85            break;
 86          }
 87        }
 88        if (matched) {
 89          double cTheta = abs(p.momentum().z()/p.momentum().p3().mod());
 90          if (cTheta<=0.8)    _sigmaEtaPi->fill(sqrtS());
 91          if (_h_cTheta ) _h_cTheta ->fill(cTheta);
 92          break;
 93        }
 94      }
 95    }
 96
 97
 98    /// Normalise histograms etc., after the run
 99    void finalize() {
100      const double fact = crossSection()/nanobarn/sumOfWeights();
101      if(_h_cTheta ) scale(_h_cTheta ,fact);
102      scale(_sigmaEtaPi,fact);
103      Estimate1DPtr tmp;
104      book(tmp,1, 1, 1);
105      barchart(_sigmaEtaPi,tmp);
106    }
107
108    /// @}
109
110
111    /// @name Histograms
112    /// @{
113    Histo1DPtr _sigmaEtaPi, _h_cTheta;
114    /// @}
115
116
117  };
118
119
120  RIVET_DECLARE_PLUGIN(BELLE_2009_I822474);
121
122}