rivet is hosted by Hepforge, IPPP Durham

Rivet analyses reference

TASSO_1983_I191417

$\gamma\gamma\to p \bar{p}$ for centre-of-mass energies between 2 and 3.1 GeV
Experiment: TASSO (PETRA)
Inspire ID: 191417
Status: VALIDATED
Authors:
  • Peter Richardson
References:
  • Phys.Lett.B 130 (1983) 449-453
Beams: 22 22
Beam energies: ANY
Run details:
  • gamma gamma to hadrons

Measurement of the differential cross section for $\gamma\gamma\to p \bar{p}$ for $2 \text{GeV} < W < 3.1 \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 proton scattering angle are measured.

Source code: TASSO_1983_I191417.cc
  1// -*- C++ -*-
  2#include "Rivet/Analysis.hh"
  3#include "Rivet/Projections/FinalState.hh"
  4
  5namespace Rivet {
  6
  7
  8  /// @brief gamma gamma -> p pbar
  9  class TASSO_1983_I191417 : public Analysis {
 10  public:
 11
 12    /// Constructor
 13    RIVET_DEFAULT_ANALYSIS_CTOR(TASSO_1983_I191417);
 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      // book histos
 24      if (inRange(sqrtS()/GeV,2.,3.1)) {
 25        if (sqrtS()<=2.4) {
 26          book(_h_cTheta,2,1,1);
 27        }
 28        else if (sqrtS()<=2.8) {
 29          book(_h_cTheta,2,1,2);
 30        }
 31       	book(_cProton, 1, 1, 1);
 32      }
 33      else {
 34        throw Error("Invalid CMS energy for TASSO_1983_I191417");
 35      }
 36
 37      _ecms = "OTHER"s;
 38      for (const string& edge : _cProton.binning().edges<0>()) {
 39        if (isCompatibleWithSqrtS(std::stod(edge)*GeV)) {
 40          _ecms = edge;
 41          break;
 42        }
 43      }
 44      _axis = YODA::Axis<double>({0., 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7});
 45    }
 46
 47
 48    /// Perform the per-event analysis
 49    void analyze(const Event& event) {
 50      if(_h_cTheta && _edges.empty()) _edges=_h_cTheta->xEdges();
 51      Particles part = apply<FinalState>(event,"FS").particles();
 52      if (part.size()!=2) vetoEvent;
 53      double cTheta(0.);
 54      bool foundP(false),foundM(false);
 55      for (const Particle& p : part) {
 56        if (p.pid()==PID::PROTON) {
 57          foundP=true;
 58          cTheta = abs(p.momentum().z()/p.momentum().p3().mod());
 59        }
 60        else if (p.pid()==PID::ANTIPROTON) {
 61          foundM=true;
 62        }
 63      }
 64      if (!foundP || !foundM)  vetoEvent;
 65      if (cTheta<=0.6) _cProton->fill(_ecms);
 66      if (_h_cTheta) {
 67        const size_t idx = _axis.index(cTheta);
 68        if (0 < idx && idx < _axis.numBins())
 69          _h_cTheta->fill(_edges[idx-1]);
 70        else 
 71          _h_cTheta->fill("OTHER"s);
 72      }
 73    }
 74
 75
 76    /// Normalise histograms etc., after the run
 77    void finalize() {
 78      const double fact = crossSection()/nanobarn/sumOfWeights();
 79      if (_h_cTheta) {
 80        scale(_h_cTheta,fact);
 81        for(auto & b : _h_cTheta->bins()) {
 82          const size_t idx = b.index();
 83          b.scaleW(1./_axis.width(idx));
 84        }
 85      }
 86      scale(_cProton, fact);
 87    }
 88
 89    /// @}
 90
 91
 92    /// @name Histograms
 93    /// @{
 94    BinnedHistoPtr<string> _h_cTheta, _cProton;
 95    string _ecms;
 96    vector<string> _edges;
 97    YODA::Axis<double> _axis;
 98    /// @}
 99
100
101  };
102
103
104  RIVET_DECLARE_PLUGIN(TASSO_1983_I191417);
105
106}