rivet is hosted by Hepforge, IPPP Durham

Rivet analyses reference

TASSO_1980_I153656

$\pi^\pm$, $K^\pm$ and $p,\bar{p}$ spectra in $e^+e^-$ at 12 and 30 GeV
Experiment: TASSO (Petra)
Inspire ID: 153656
Status: VALIDATED
Authors:
  • Peter Richardson
References:
  • Phys.Lett. B94 (1980) 444-449, 1980
Beams: e+ e-
Beam energies: (6.0, 6.0); (15.0, 15.0) GeV
Run details:
  • e+ e- to hadrons. Beam energy must be specified as analysis option "ENERGY" when rivet-merging samples.

Measurement of the $\pi^\pm$, $K^\pm$ and $p,\bar{p}$ spectra in $e^+e^-$ collisions for centre-of-mass energies of 12 and 30 GeV by the TASSO experiment at Petra. Beam energy must be specified as analysis option "ENERGY" when rivet-merging samples.

Source code: TASSO_1980_I153656.cc
  1// -*- C++ -*-
  2#include "Rivet/Analysis.hh"
  3#include "Rivet/Projections/ChargedFinalState.hh"
  4#include "Rivet/Projections/Beam.hh"
  5
  6namespace Rivet {
  7
  8
  9  /// @brief pi, K and proton spectra at 12 and 30 GeV
 10  class TASSO_1980_I153656 : public Analysis {
 11  public:
 12
 13    /// Constructor
 14    RIVET_DEFAULT_ANALYSIS_CTOR(TASSO_1980_I153656);
 15
 16
 17    /// @name Analysis methods
 18    //@{
 19
 20    /// Book histograms and initialise projections before the run
 21    void init() {
 22
 23      // Initialise and register projections
 24      declare(Beam(), "Beams");
 25      declare(ChargedFinalState(), "FS");
 26
 27      // Book histograms
 28      _iHist=-1;
 29      sqs = 1.;
 30      if(isCompatibleWithSqrtS(12.)) {
 31	_iHist = 0;
 32	sqs = 12.;
 33      }
 34      else if (isCompatibleWithSqrtS(30.)) {
 35	_iHist = 1;
 36	sqs = 30.;
 37      }
 38      else
 39	MSG_ERROR("Beam energy " << sqrtS() << " GeV not supported!");
 40
 41      book(_h_p_pi,3*_iHist+2,1,1);
 42      book(_h_x_pi,3*_iHist+2,1,2);
 43      book(_h_p_K ,3*_iHist+3,1,1);
 44      book(_h_x_K ,3*_iHist+3,1,2);
 45      book(_h_p_p ,3*_iHist+4,1,1);
 46      book(_h_x_p ,3*_iHist+4,1,2);
 47
 48      book(_n_pi,"TMP/n_pi",refData(3*_iHist+ 8,1,1));
 49      book(_d_pi,"TMP/d_pi",refData(3*_iHist+ 8,1,1));
 50      book(_n_K ,"TMP/n_K" ,refData(3*_iHist+ 9,1,1));
 51      book(_d_K ,"TMP/d_K" ,refData(3*_iHist+ 9,1,1));
 52      book(_n_p ,"TMP/n_p" ,refData(3*_iHist+10,1,1));
 53      book(_d_p ,"TMP/d_p" ,refData(3*_iHist+10,1,1));
 54
 55    }
 56
 57
 58    /// Perform the per-event analysis
 59    void analyze(const Event& event) {
 60      // First, veto on leptonic events by requiring at least 4 charged FS particles
 61      const ChargedFinalState& fs = apply<ChargedFinalState>(event, "FS");
 62      const size_t numParticles = fs.particles().size();
 63
 64      // Even if we only generate hadronic events, we still need a cut on numCharged >= 2.
 65      if (numParticles < 2) {
 66        MSG_DEBUG("Failed leptonic event cut");
 67        vetoEvent;
 68      }
 69      MSG_DEBUG("Passed leptonic event cut");
 70
 71      // Get beams and average beam momentum
 72      const ParticlePair& beams = apply<Beam>(event, "Beams").beams();
 73      const double meanBeamMom = ( beams.first.p3().mod() +
 74                                   beams.second.p3().mod() ) / 2.0;
 75      MSG_DEBUG("Avg beam momentum = " << meanBeamMom);
 76      
 77      for( const Particle& p : fs.particles()) {
 78	double modp = p.p3().mod();
 79	_d_pi->fill(modp);
 80	_d_K->fill(modp);
 81	_d_p ->fill(modp);
 82	double beta = modp/p.E();
 83	double xE = p.E()/meanBeamMom;
 84	if(abs(p.pid())==211) {
 85	  _h_p_pi->fill(modp);
 86	  _h_x_pi->fill(xE  , 1./beta);
 87	  _n_pi->fill(modp);
 88	}
 89	else if(abs(p.pid())==321) {
 90	  _h_p_K->fill(modp);
 91	  _h_x_K->fill(xE  ,1./beta);
 92	  _n_K->fill(modp);
 93	}
 94	else if(abs(p.pid())==2212) {
 95	  _h_p_p->fill(modp);
 96	  _h_x_p->fill(xE  ,1./beta);
 97	  _n_p ->fill(modp);
 98	}
 99
100      }
101    }
102
103
104    /// Normalise histograms etc., after the run
105    void finalize() {
106
107      scale(_h_p_pi , crossSection()/nanobarn/sumOfWeights());
108      scale(_h_x_pi , sqr(sqs)*crossSection()/microbarn/sumOfWeights());
109      scale(_h_p_K  , crossSection()/nanobarn/sumOfWeights());
110      scale(_h_x_K  , sqr(sqs)*crossSection()/microbarn/sumOfWeights());
111      scale(_h_p_p  , crossSection()/nanobarn/sumOfWeights());
112      scale(_h_x_p  , sqr(sqs)*crossSection()/microbarn/sumOfWeights());
113
114      Scatter2DPtr temp1,temp2,temp3;
115      book(temp1,3*_iHist+ 8,1,1);
116      book(temp2,3*_iHist+ 9,1,1);
117      book(temp3,3*_iHist+10,1,1);
118      
119      divide(_n_pi,_d_pi, temp1);
120      divide(_n_K ,_d_K , temp2);
121      divide(_n_p ,_d_p , temp3);
122    }
123
124    //@}
125
126
127    /// @name Histograms
128    //@{
129    Histo1DPtr _h_p_pi, _h_x_pi, _h_p_K, _h_x_K, _h_p_p, _h_x_p;
130    Histo1DPtr _n_pi,_d_pi,_n_K,_d_K,_n_p,_d_p;
131    int _iHist;
132    double sqs;
133    //@}
134
135
136  };
137
138
139  // The hook for the plugin system
140  RIVET_DECLARE_PLUGIN(TASSO_1980_I153656);
141
142
143}