rivet is hosted by Hepforge, IPPP Durham

Rivet analyses reference

BELLE_2012_I1090664

Cross sections for $\gamma\gamma\to\omega\phi$, $\phi\phi$ and $\omega\omega$
Experiment: BELLE (KEKB)
Inspire ID: 1090664
Status: VALIDATED NOHEPDATA
Authors:
  • Peter Richardson
References:
  • Phys.Rev.Lett. 108 (2012) 232001
Beams: 22 22
Beam energies: ANY
Run details:
  • gamma gamma to hadrons

Measurement of the cross sections for $\gamma\gamma\to\omega\phi$, $\phi\phi$ and $\omega\omega$.

Source code: BELLE_2012_I1090664.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 -> omega phi, omega omega and phi phi
 10  class BELLE_2012_I1090664 : public Analysis {
 11  public:
 12
 13    /// Constructor
 14    RIVET_DEFAULT_ANALYSIS_CTOR(BELLE_2012_I1090664);
 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(Cuts::pid==223 || Cuts::pid==333), "UFS");
 25      // counters
 26      for(unsigned int ix=0; ix<3; ++ix) {
 27        for(unsigned int iy=0; iy<2; ++iy) {
 28          book(_sigma[ix][iy],
 29               "TMP/c_"+toString(ix+1)+"_"+toString(iy+1),
 30               refData(1, ix+1, 1+iy));
 31        }
 32      }
 33    }
 34
 35    void findChildren(const Particle & p,map<long,int> & nRes, int &ncount) {
 36      for (const Particle &child : p.children()) {
 37        if (child.children().empty()) {
 38          nRes[child.pid()]-=1;
 39          --ncount;
 40        }
 41        else {
 42          findChildren(child,nRes,ncount);
 43        }
 44      }
 45    }
 46
 47    /// Perform the per-event analysis
 48    void analyze(const Event& event) {
 49      const FinalState& fs = apply<FinalState>(event, "FS");
 50      // find the final-state particles
 51      map<long,int> nCount;
 52      int ntotal(0);
 53      for (const Particle& p : fs.particles()) {
 54        nCount[p.pid()] += 1;
 55        ++ntotal;
 56      }
 57      // find any rho mesons
 58      Particles mesons=apply<UnstableParticles>(event, "UFS").particles();
 59      for (unsigned int ix=0; ix<mesons.size(); ++ix) {
 60       	if (mesons[ix].children().empty()) continue;
 61       	map<long,int> nRes=nCount;
 62       	int ncount = ntotal;
 63       	findChildren(mesons[ix],nRes,ncount);
 64      	bool matched = false;
 65      	for (unsigned int iy=ix+1; iy<mesons.size(); ++iy) {
 66      	  if (mesons[iy].children().empty()) continue;
 67       	  map<long,int> nRes2=nRes;
 68       	  int ncount2 = ncount;
 69       	  findChildren(mesons[iy],nRes2,ncount2);
 70       	  if (ncount2 !=0 ) continue;
 71       	  matched=true;
 72      	  for (const auto& val : nRes2) {
 73      	    if (val.second!=0) {
 74      	      matched = false;
 75      	      break;
 76      	    }
 77      	  }
 78      	  if (matched) {
 79            if (mesons[ix].pid()!=mesons[iy].pid()) {
 80              for (unsigned int iy=0; iy<2; ++iy) {
 81                _sigma[0][iy]->fill(sqrtS());
 82              }
 83            }
 84            else if (mesons[ix].pid()==333) {
 85              for (unsigned int iy=0; iy<2; ++iy) {
 86                _sigma[1][iy]->fill(sqrtS());
 87              }
 88            }
 89            else if (mesons[ix].pid()==223) {
 90              for (unsigned int iy=0; iy<2; ++iy) {
 91                _sigma[2][iy]->fill(sqrtS());
 92              }
 93            }
 94            break;
 95      	  }
 96      	}
 97      	if (matched) break;
 98      }
 99    }
100
101
102    /// Normalise histograms etc., after the run
103    void finalize() {
104      const double fact = crossSection()/nanobarn/sumOfWeights();
105      // loop over tables in paper
106      for (unsigned int ix=0; ix<3; ++ix) {
107        for (unsigned int iy=0; iy<2; ++iy) {
108          scale(_sigma[ix][iy], fact);
109          Estimate1DPtr tmp;
110          book(tmp, 1, ix+1, 1+iy);
111          barchart(_sigma[ix][iy], tmp);
112        }
113      }
114    }
115
116    /// @}
117
118
119    /// @name Histograms
120    /// @{
121    Histo1DPtr _sigma[3][2];
122    /// @}
123
124
125  };
126
127
128  RIVET_DECLARE_PLUGIN(BELLE_2012_I1090664);
129
130}