rivet is hosted by Hepforge, IPPP Durham

Rivet analyses reference

EHS_1988_I265504

Charged-particle production in $K^+ p$, $\pi^+ p$ and $pp$ interactions at $250 \text{GeV}/c$
Experiment: EHS (SPS)
Inspire ID: 265504
Status: VALIDATED
Authors:
  • Felix Riehn
References:
  • Z.Phys.C39 (1988), 311
Beams: p+ p+, 0 p+, 0 p+
Beam energies: (250.0, 0.0); (250.0, 0.0); (250.0, 0.0) GeV
Run details:
  • Inelastic interactions in CM frame, excluding slow protons in the lab. frame with p < 1.2 GeV/$c$

Measurement of charged particle production spectra in longitudinal and transverse momentum as well as rapidity by the EHS/NA22 collaboration at the SPS. Experiment was done with a fixed hydrogen target and beams of $p$, $\pi^+$ and $K^+$ with $250\,\text{GeV}/c$. Measured spectra are for positively charged hadrons $C^+$ and negative charge pions $\pi^-$. $C^+$ excludes slow protons with $p < 1.2\,\text{GeV}/c$ in the laboratory. Final spectra are in center-of-mass variables: $x_\mathrm{F}$, $y$ and $p_\mathrm{T}$.

Source code: EHS_1988_I265504.cc
  1// -*- C++ -*-
  2#include "Rivet/Analysis.hh"
  3#include "Rivet/Projections/Beam.hh"
  4#include "Rivet/Projections/ChargedFinalState.hh"
  5#include "Rivet/Event.hh"
  6
  7namespace Rivet {
  8
  9
 10  class EHS_1988_I265504 : public Analysis {
 11  public:
 12
 13    /// Constructor
 14    RIVET_DEFAULT_ANALYSIS_CTOR(EHS_1988_I265504);
 15
 16
 17    /// @name Analysis methods
 18    //@{
 19
 20    /// Book histograms and initialise projections before the run
 21    void init() {
 22
 23      declare(ChargedFinalState(), "CFS");
 24      declare(Beam(),"Beam");
 25
 26      switch ( beamIds().first ) {
 27      case PID::PIPLUS:
 28        book(_h_cpos_xF ,1, 1, 1);
 29        book(_h_cpos_eta ,3, 1, 1);
 30        book(_h_cpos_pT2 ,5, 1, 1);
 31        book(_h_cneg_xF ,2, 1, 1);
 32        book(_h_cneg_eta ,4, 1, 1);
 33        book(_h_cneg_pT2 ,6, 1, 1);
 34        break;
 35
 36      case PID::KPLUS:
 37        book(_h_cpos_xF ,1, 1, 2);
 38        book(_h_cpos_eta ,3, 1, 2);
 39        book(_h_cpos_pT2 ,5, 1, 2);
 40        book(_h_cneg_xF ,2, 1, 2);
 41        book(_h_cneg_eta ,4, 1, 2);
 42        book(_h_cneg_pT2 ,6, 1, 2);
 43        break;
 44
 45      case PID::PROTON:
 46        book(_h_cpos_xF ,1, 1, 3);
 47        book(_h_cpos_eta ,3, 1, 3);
 48        book(_h_cpos_pT2 ,5, 1, 3);
 49        book(_h_cneg_xF ,2, 1, 3);
 50        book(_h_cneg_eta ,4, 1, 3);
 51        book(_h_cneg_pT2 ,6, 1, 3);
 52        break;
 53      }
 54
 55      // Calculate boost from lab to CM frame
 56      _beamboost = cmsTransform( beams() );
 57      MSG_DEBUG("Boost vector: " << _beamboost );
 58
 59      // Transform beam into CMS frame
 60      Particle _beam_cm = beams().first;
 61      _beam_cm.transformBy(_beamboost);
 62      // Beam momentum in CM frame defines Feynman-x
 63      _pz_max = _beam_cm.pz();
 64
 65    }
 66
 67
 68    /// Perform the per-event analysis
 69    void analyze(const Event& event) {
 70
 71      const FinalState& fs = apply<FinalState>(event, "CFS");
 72      for (const Particle& p: fs.particles()) {
 73        // Only interested in pi- or positively charged
 74        if (p.charge() < 0 && p.pid() != PID::PIMINUS) continue;
 75        // Slow proton cut: reject lab momenta < 1.2GeV
 76        if (p.pid() == PID::PROTON && p.p() < 1.2*GeV) continue;
 77        // Transform to cm frame
 78        const FourMomentum pcm = _beamboost.transform(p);
 79        const double xF = pcm.pz()/_pz_max;
 80
 81        if (p.charge() > 0) {
 82          _h_cpos_xF->fill( xF );
 83          _h_cpos_pT2->fill( p.pT2() );
 84          _h_cpos_eta->fill( pcm.eta() );
 85        } else if (p.pid() == PID::PIMINUS) {
 86          _h_cneg_xF->fill( xF );
 87          _h_cneg_pT2->fill( p.pT2() );
 88          _h_cneg_eta->fill( pcm.eta() );
 89        }
 90      }
 91    }
 92
 93
 94    /// Normalise histograms etc., after the run
 95    void finalize() {
 96      const double sf = crossSection()/millibarn/sumOfWeights();
 97      scale(_h_cpos_xF, sf); scale(_h_cpos_pT2, sf);
 98      scale(_h_cpos_eta, sf); scale(_h_cneg_xF, sf);
 99      scale(_h_cneg_eta, sf); scale(_h_cneg_pT2, sf);
100    }
101
102    //@}
103
104
105    /// @name Histograms
106    //@{
107    LorentzTransform _beamboost;
108    double _pz_max;
109    Histo1DPtr _h_cpos_xF, _h_cpos_eta, _h_cpos_pT2;
110    Histo1DPtr _h_cneg_xF, _h_cneg_eta, _h_cneg_pT2;
111    //@}
112
113  };
114
115
116  // The hook for the plugin system
117  RIVET_DECLARE_PLUGIN(EHS_1988_I265504);
118
119}