Rivet is hosted by Hepforge, IPPP Durham

Rivet analyses reference

UA5_1986_S1583476

Pseudorapidity distributions in $p\bar{p}$ (NSD, NSD+SD) events at $\sqrt{s} = 200$ and 900 GeV
Experiment: UA5 (CERN SPS)
Inspire ID: 233599
Status: VALIDATED
Authors:
  • Andy Buckley
  • Holger Schulz
  • Christophe Vaillant
References:
  • Eur. Phys. J. C33, 1, 1986
Beams: p- p+
Beam energies: (100.0, 100.0); (450.0, 450.0) GeV
Run details:
  • Single- and double-diffractive, plus non-diffractive inelastic, events. * $p\bar{p}$ collider, $\sqrt{s} = 200$ or 900 GeV. * The trigger implementation for NSD events is the same as in, e.g., the UA5_1989 analysis. No further cuts are needed.

This study comprises measurements of pseudorapidity distributions measured with the UA5 detector at 200 and 900 GeV center of momentum energy. There are distributions for non-single diffractive (NSD) events and also for the combination of single- and double-diffractive events. The NSD distributions are further studied for certain ranges of the events charged multiplicity.

Source code: UA5_1986_S1583476.cc
  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
// -*- C++ -*-
#include "Rivet/Analysis.hh"
#include "Rivet/Projections/ChargedFinalState.hh"
#include "Rivet/Projections/Beam.hh"
#include "Rivet/Projections/TriggerUA5.hh"

namespace Rivet {


  /// @brief UA5 \f$ \eta \f$ distributions at 200 and 900 GeV
  class UA5_1986_S1583476 : public Analysis {
  public:

    /// Constructor
    UA5_1986_S1583476() : Analysis("UA5_1986_S1583476") {
      _sumWTrig = 0;
      _sumWTrigNSD = 0;
    }


    /// @name Analysis methods
    //@{

    /// Set up projections and histograms
    void init() {
      declare(TriggerUA5(), "Trigger");
      declare(Beam(), "Beams");
      declare(ChargedFinalState(-5.0, 5.0), "CFS50");

      // Histograms
      if (fuzzyEquals(sqrtS()/GeV, 200.0, 1E-4)) {
        _hist_eta_nsd       = bookHisto1D(1,1,1);
        _hist_eta_inelastic = bookHisto1D(1,1,2);
        for (int i = 1; i <= 6; ++i) {
          _sumWn += 0.0;
          _hists_eta_nsd += bookHisto1D(2,1,i);
        }
      } else if (fuzzyEquals(sqrtS()/GeV, 900.0, 1E-4)) {
        _hist_eta_nsd       = bookHisto1D(1,1,3);
        _hist_eta_inelastic = bookHisto1D(1,1,4);
        for (int i = 1; i <= 9; ++i) {
          _sumWn += 0.0;
          _hists_eta_nsd += bookHisto1D(3,1,i);
        }
      }
    }


    /// Fill eta histograms (in Nch bins)
    void analyze(const Event& event) {
      // Trigger
      const TriggerUA5& trigger = apply<TriggerUA5>(event, "Trigger");
      if (!trigger.sdDecision()) vetoEvent;
      const bool isNSD = trigger.nsdDecision();

      // Get the index corresponding to the max Nch range histo/sum(w) vector index
      const ChargedFinalState& cfs50 = apply<ChargedFinalState>(event, "CFS50");
      const int numP = cfs50.size();
      const int ni = (int)floor(static_cast<float>(numP-2)/10.0);
      const int num_idx = min(ni, (int)_sumWn.size()-1);
      MSG_TRACE("Multiplicity index: " << numP << " charged particles -> #" << num_idx);

      // Update weights
      const double weight = event.weight();
      _sumWTrig += weight;
      if (isNSD) {
        _sumWTrigNSD += weight;
        if (num_idx >= 0) _sumWn[num_idx] += weight;
      }

      // Fill histos
      foreach (const Particle& p, cfs50.particles()) {
        const double eta = p.abseta();
        _hist_eta_inelastic->fill(eta, weight);
        if (isNSD) {
          _hist_eta_nsd->fill(eta, weight);
          if (num_idx >= 0) _hists_eta_nsd[num_idx]->fill(eta, weight);
        }
      }
    }


    /// Scale histos
    void finalize() {
      MSG_DEBUG("sumW_NSD,inel = " << _sumWTrigNSD << ", " << _sumWTrig);
      scale(_hist_eta_nsd, 0.5/_sumWTrigNSD);
      scale(_hist_eta_inelastic, 0.5/_sumWTrig);
      //
      MSG_DEBUG("sumW[n] = " << _sumWn);
      for (size_t i = 0; i < _hists_eta_nsd.size(); ++i) {
        scale(_hists_eta_nsd[i], 0.5/_sumWn[i]);
      }
    }


  private:

    /// @name Weight counters
    //@{
    double _sumWTrig;
    double _sumWTrigNSD;
    vector<double> _sumWn;
    //@}

    /// @name Histograms
    //@{
    Histo1DPtr _hist_eta_nsd;
    Histo1DPtr _hist_eta_inelastic;
    vector<Histo1DPtr> _hists_eta_nsd;
    //@}

  };



  // The hook for the plugin system
  DECLARE_RIVET_PLUGIN(UA5_1986_S1583476);

}