rivet is hosted by Hepforge, IPPP Durham

Rivet analyses reference

TASSO_1982_I180755

$\gamma\gamma\to \rho^0\rho^0$ between 1.2 and 2.0 GeV
Experiment: TASSO (PETRA)
Inspire ID: 180755
Status: VALIDATED
Authors:
  • Peter Richardson
References:
  • Z.Phys.C 16 (1982) 13, 1982
Beams: 22 22
Beam energies: ANY
Run details:
  • gamma gamma to hadrons, pi0 mesons must be set stable

Measurement of the differential cross section for $\gamma\gamma\to \rho^0\rho^0$ for $1.2 \text{GeV} < W < 2.0 \text{GeV}$. The cross section is measured as a function of the centre-of-mass energy of the photonic collision using the $2\pi^+2\pi^-$ final state.

Source code: TASSO_1982_I180755.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 -> rho0 rho0
 10  class TASSO_1982_I180755 : public Analysis {
 11  public:
 12
 13    /// Constructor
 14    RIVET_DEFAULT_ANALYSIS_CTOR(TASSO_1982_I180755);
 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,1.2,2.0)) {
 27        book(_nRho, "TMP/nrho", refData(1, 1, 1));
 28      }
 29      else {
 30       throw Error("Invalid CMS energy for TASSO_1982_I180755");
 31      }
 32    }
 33
 34    void findChildren(const Particle& p, map<long,int>& nRes, int& ncount) {
 35      for (const Particle &child : p.children()) {
 36        if (child.children().empty()) {
 37          nRes[child.pid()]-=1;
 38          --ncount;
 39        }
 40        else {
 41          findChildren(child,nRes,ncount);
 42        }
 43      }
 44    }
 45
 46    /// Perform the per-event analysis
 47    void analyze(const Event& event) {
 48      const FinalState& fs = apply<FinalState>(event, "FS");
 49      // find the final-state particles
 50      map<long,int> nCount;
 51      int ntotal(0);
 52      for (const Particle& p : fs.particles()) {
 53        nCount[p.pid()] += 1;
 54        ++ntotal;
 55      }
 56      // find any rho mesons
 57      Particles rho=apply<UnstableParticles>(event, "UFS").particles(Cuts::pid==113);
 58      for (unsigned int ix=0; ix<rho.size(); ++ix) {
 59       	if (rho[ix].children().empty()) continue;
 60       	map<long,int> nRes=nCount;
 61       	int ncount = ntotal;
 62       	findChildren(rho[ix],nRes,ncount);
 63        bool matched = false;
 64        for (unsigned int iy=ix+1; iy<rho.size(); ++iy) {
 65          if (rho[iy].children().empty()) continue;
 66          map<long,int> nRes2=nRes;
 67          int ncount2 = ncount;
 68          findChildren(rho[iy],nRes2,ncount2);
 69          if (ncount2 !=0 ) continue;
 70          matched=true;
 71          for (const auto& val : nRes2) {
 72            if (val.second!=0) {
 73              matched = false;
 74              break;
 75            }
 76          }
 77          if (matched) {
 78            break;
 79          }
 80        }
 81        if (matched) {
 82          _nRho->fill(sqrtS()/GeV);
 83          break;
 84        }
 85      }
 86    }
 87
 88
 89    /// Normalise histograms etc., after the run
 90    void finalize() {
 91      scale(_nRho, crossSection()/nanobarn/sumOfWeights());
 92      Estimate1DPtr tmp;
 93      book(tmp,1,1,1);
 94      barchart(_nRho,tmp);
 95    }
 96
 97    /// @}
 98
 99
100    /// @name Histograms
101    /// @{
102    Histo1DPtr _nRho;
103    /// @}
104
105
106  };
107
108
109  RIVET_DECLARE_PLUGIN(TASSO_1982_I180755);
110
111}