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. * Beam energy must be specified as analysis option "ENERGY" (200 or 900 GeV) when rivet-merging samples.

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. Beam energy must be specified as analysis option "ENERGY" when rivet-merge'ing samples.

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
120
121
// -*- C++ -*-
#include "Rivet/Analysis.hh"
#include "Rivet/Projections/ChargedFinalState.hh"
#include "Rivet/Projections/Beam.hh"
#include "Rivet/Projections/TriggerUA5.hh"

namespace Rivet {


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

    /// Constructor
    RIVET_DEFAULT_ANALYSIS_CTOR(UA5_1986_S1583476);


    /// @name Analysis methods
    //@{

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

      // Histograms
      if (isCompatibleWithSqrtS(200.0)) {
        book(_hist_eta_nsd       ,1,1,1);
        book(_hist_eta_inelastic ,1,1,2);
        _hists_eta_nsd.resize(6);
        for (int i = 1; i <= 6; ++i) {
          _sumWn.push_back({});
          book(_sumWn.back(), "TMP/sumWn"+to_str(i));
          book(_hists_eta_nsd[i-1],2,1,i);
        }
      } else if (isCompatibleWithSqrtS(900.0)) {
        book(_hist_eta_nsd       ,1,1,3);
        book(_hist_eta_inelastic ,1,1,4);
        _hists_eta_nsd.resize(9);
        for (int i = 1; i <= 9; ++i) {
          _sumWn.push_back({});
          book(_sumWn.back(), "TMP/sumWn"+to_str(i));
          book(_hists_eta_nsd[i-1],3,1,i);
        }
      }
      book(_sumWTrig, "sumWtrig");
      book(_sumWTrigNSD, "sumWtrigNSD");

    }


    /// 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
      _sumWTrig->fill();
      if (isNSD) {
        _sumWTrigNSD->fill();
        if (num_idx >= 0) _sumWn[num_idx]->fill();
      }

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


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


  private:

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

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

  };



  RIVET_DECLARE_ALIASED_PLUGIN(UA5_1986_S1583476, UA5_1986_I233599);

}