rivet is hosted by Hepforge, IPPP Durham

Rivet analyses reference

CRYSTAL_BALL_1982_I168793

$\gamma\gamma\to \pi^0\pi^0$ for centre-of-mass energies between 0.72 and 1.8 GeV
Experiment: CRYSTAL_BALL (PEP)
Inspire ID: 168793
Status: VALIDATED
Authors:
  • Peter Richardson
References:
  • Phys.Rev.D 41 (1990) 3324, 1990
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 \pi^0\pi^0$ for $0.72 \text{GeV} < W < 1.8 \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 kaon scattering angle are measured.

Source code: CRYSTAL_BALL_1982_I168793.cc
 1// -*- C++ -*-
 2#include "Rivet/Analysis.hh"
 3#include "Rivet/Projections/FinalState.hh"
 4
 5namespace Rivet {
 6
 7
 8  /// @brief Diphoton to hadrons at centre-of-mass energies between 0.72 and 1.8 GeV
 9  class CRYSTAL_BALL_1982_I168793 : public Analysis {
10  public:
11
12    /// Constructor
13    RIVET_DEFAULT_ANALYSIS_CTOR(CRYSTAL_BALL_1982_I168793);
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(FinalState(), "FS");
23      // histos
24      if (inRange(sqrtS()/GeV,0.72,1.8)) {
25        book(_mult, "TMP/mult", refData(1, 1, 1));
26        if (inRange(sqrtS()/GeV,1.04,1.48)) book(_h_cTheta,2,1,1);
27      }
28      else
29       	throw Error("Invalid CMS energy for CRYSTAL_BALL_1990_I294492");
30    }
31
32
33    /// Perform the per-event analysis
34    void analyze(const Event& event) {
35      Particles part = apply<FinalState>(event,"FS").particles();
36      if (part.size()!=2) vetoEvent;
37      for (const Particle & p : part) {
38        if (p.pid()!=PID::PI0) vetoEvent;
39      }
40      const double cTheta = abs(part[0].momentum().z()/part[0].momentum().p3().mod());
41      if (cTheta<=0.7) _mult->fill(sqrtS()/GeV);
42      if (_h_cTheta ) _h_cTheta->fill(cTheta);
43    }
44
45
46    /// Normalise histograms etc., after the run
47    void finalize() {
48      const double fact = crossSection()/nanobarn/sumOfWeights();
49      if (_h_cTheta) scale(_h_cTheta,fact);
50      scale(_mult, fact);
51      Estimate1DPtr tmp;
52      book(tmp,1,1,1);
53      barchart(_mult,tmp);
54    }
55
56    /// @}
57
58
59    /// @name Histograms
60    /// @{
61    Histo1DPtr _mult, _h_cTheta;
62    /// @}
63
64
65  };
66
67
68  RIVET_DECLARE_PLUGIN(CRYSTAL_BALL_1982_I168793);
69
70}