rivet is hosted by Hepforge, IPPP Durham

Rivet analyses reference

UA5_1988_S1867512

Charged particle correlations in UA5 $p\bar{p}$ NSD events at $\sqrt{s} = 200$, 546 and 900 GeV
Experiment: UA5 (CERN SPS)
Inspire ID: 263399
Status: VALIDATED
Authors:
  • Holger Schulz
References:
  • Z.Phys.C37:191-213,1988
Beams: p- p+
Beam energies: (100.0, 100.0); (273.0, 273.0); (450.0, 450.0) GeV
Run details:
  • ppbar events. Non-single diffractive events need to be switched on. The trigger implementation is the same as in UA5_1989_S1926373. Important: Only the correlation strengths with symmetric eta bins should be used for tuning. Beam energy must be specified as analysis option "ENERGY" (200, 546 or 900 GeV) when rivet-merging samples.

Data on two-particle pseudorapidity and multiplicity correlations of charged particles for non single-diffractive $p\\bar{p}$ collisions at c.m. energies of 200, 546 and 900 GeV. Pseudorapidity correlations are interpreted in terms of a cluster model, which has been motivated by this and other experiments, require on average about two charged particles per cluster. The decay width of the clusters in pseudorapidity is approximately independent of multiplicity and of c.m. energy. The investigations of correlations in terms of pseudorapidity gaps confirm the picture of cluster production. The strength of forward--backward multiplicity correlations increases linearly with ins and depends strongly on position and size of the pseudorapidity gap separating the forward and backward interval. All our correlation studies can be understood in terms of a cluster model in which clusters contain on average about two charged particles, i.e. are of similar magnitude to earlier estimates from the ISR. Beam energy must be specified as analysis option "ENERGY" (200, 546 or 900 GeV) when rivet-merging samples.

Source code: UA5_1988_S1867512.cc
  1// -*- C++ -*-
  2#include "Rivet/Analysis.hh"
  3#include "Rivet/Projections/ChargedFinalState.hh"
  4#include "Rivet/Projections/Beam.hh"
  5#include "Rivet/Projections/TriggerUA5.hh"
  6
  7namespace Rivet {
  8
  9
 10  /// @brief UA5 charged particle correlations at 200, 546 and 900 GeV
 11  class UA5_1988_S1867512 : public Analysis {
 12  public:
 13
 14    UA5_1988_S1867512()
 15      : Analysis("UA5_1988_S1867512")
 16    {    }
 17
 18
 19    /// @name Analysis methods
 20    //@{
 21
 22    void init() {
 23      // Projections
 24      declare(TriggerUA5(), "Trigger");
 25
 26      // Symmetric eta interval
 27      declare(ChargedFinalState((Cuts::etaIn(-0.5, 0.5))), "CFS05");
 28
 29      // Asymmetric intervals first
 30      // Forward eta intervals
 31      declare(ChargedFinalState((Cuts::etaIn(0.0, 1.0))), "CFS10F");
 32      declare(ChargedFinalState((Cuts::etaIn(0.5, 1.5))), "CFS15F");
 33      declare(ChargedFinalState((Cuts::etaIn(1.0, 2.0))), "CFS20F");
 34      declare(ChargedFinalState((Cuts::etaIn(1.5, 2.5))), "CFS25F");
 35      declare(ChargedFinalState((Cuts::etaIn(2.0, 3.0))), "CFS30F");
 36      declare(ChargedFinalState((Cuts::etaIn(2.5, 3.5))), "CFS35F");
 37      declare(ChargedFinalState((Cuts::etaIn(3.0, 4.0))), "CFS40F");
 38
 39      // Backward eta intervals
 40      declare(ChargedFinalState((Cuts::etaIn(-1.0,  0.0))), "CFS10B");
 41      declare(ChargedFinalState((Cuts::etaIn(-1.5, -0.5))), "CFS15B");
 42      declare(ChargedFinalState((Cuts::etaIn(-2.0, -1.0))), "CFS20B");
 43      declare(ChargedFinalState((Cuts::etaIn(-2.5, -1.5))), "CFS25B");
 44      declare(ChargedFinalState((Cuts::etaIn(-3.0, -2.0))), "CFS30B");
 45      declare(ChargedFinalState((Cuts::etaIn(-3.5, -2.5))), "CFS35B");
 46      declare(ChargedFinalState((Cuts::etaIn(-4.0, -3.0))), "CFS40B");
 47
 48      // Histogram booking, we have sqrt(s) = 200, 546 and 900 GeV
 49      // TODO use Scatter2D to be able to output errors
 50      if (isCompatibleWithSqrtS(200.0)) {
 51        book(_hist_correl, 2, 1, 1);
 52        book(_hist_correl_asym, 3, 1, 1);
 53      } else if (isCompatibleWithSqrtS(546.0)) {
 54        book(_hist_correl, 2, 1, 2);
 55        book(_hist_correl_asym, 3, 1, 2);
 56      } else if (isCompatibleWithSqrtS(900.0)) {
 57        book(_hist_correl, 2, 1, 3);
 58        book(_hist_correl_asym, 3, 1, 3);
 59      }
 60
 61      book(_sumWPassed, "sumW");
 62    }
 63
 64
 65    void analyze(const Event& event) {
 66      // Trigger
 67      const bool trigger = apply<TriggerUA5>(event, "Trigger").nsdDecision();
 68      if (!trigger) vetoEvent;
 69      _sumWPassed->fill();
 70
 71      // Count forward/backward particles
 72      n_10f.push_back(apply<ChargedFinalState>(event, "CFS10F").size());
 73      n_15f.push_back(apply<ChargedFinalState>(event, "CFS15F").size());
 74      n_20f.push_back(apply<ChargedFinalState>(event, "CFS20F").size());
 75      n_25f.push_back(apply<ChargedFinalState>(event, "CFS25F").size());
 76      n_30f.push_back(apply<ChargedFinalState>(event, "CFS30F").size());
 77      n_35f.push_back(apply<ChargedFinalState>(event, "CFS35F").size());
 78      n_40f.push_back(apply<ChargedFinalState>(event, "CFS40F").size());
 79      //
 80      n_10b.push_back(apply<ChargedFinalState>(event, "CFS10B").size());
 81      n_15b.push_back(apply<ChargedFinalState>(event, "CFS15B").size());
 82      n_20b.push_back(apply<ChargedFinalState>(event, "CFS20B").size());
 83      n_25b.push_back(apply<ChargedFinalState>(event, "CFS25B").size());
 84      n_30b.push_back(apply<ChargedFinalState>(event, "CFS30B").size());
 85      n_35b.push_back(apply<ChargedFinalState>(event, "CFS35B").size());
 86      n_40b.push_back(apply<ChargedFinalState>(event, "CFS40B").size());
 87      //
 88      n_05 .push_back(apply<ChargedFinalState>(event, "CFS05").size());
 89    }
 90
 91
 92    void finalize() {
 93      // The correlation strength is defined in formulas
 94      // 4.1 and 4.2
 95
 96      // Fill histos, gap width histo comes first
 97      //      * Set the errors as Delta b / sqrt(sumWPassed) with
 98      //      Delta b being the absolute uncertainty of b according to
 99      //      Gaussian error-propagation (linear limit) and assuming
100      //      Poissonian uncertainties for the number of particles in
101      //      the eta-intervals
102      //
103
104      // Define vectors to be able to fill Scatter2Ds
105      vector<Point2D> points;
106      // Fill the y-value vector
107      points.push_back(correlation_helper(0, 0.5, n_10f, n_10b, _sumWPassed));
108      points.push_back(correlation_helper(1, 0.5, n_15f, n_15b, _sumWPassed));
109      points.push_back(correlation_helper(2, 0.5, n_20f, n_20b, _sumWPassed));
110      points.push_back(correlation_helper(3, 0.5, n_25f, n_25b, _sumWPassed));
111      points.push_back(correlation_helper(4, 0.5, n_30f, n_30b, _sumWPassed));
112      points.push_back(correlation_helper(5, 0.5, n_35f, n_35b, _sumWPassed));
113      points.push_back(correlation_helper(6, 0.5, n_40f, n_40b, _sumWPassed));
114
115      // Fill the DPS
116      _hist_correl->addPoints(points);
117
118      // Fill gap-center histo (Fig 15)
119      //
120      // The first bin contains the c_str strengths of
121      // the gap size histo that has ane eta gap of two
122      //
123      // Now do the other histo -- clear already defined vectors first
124      points.clear();
125
126      points.push_back(correlation_helper(0,   0.25, n_20f, n_20b, _sumWPassed));
127      points.push_back(correlation_helper(0.5, 0.25, n_25f, n_15b, _sumWPassed));
128      points.push_back(correlation_helper(1,   0.25, n_30f, n_10b, _sumWPassed));
129      points.push_back(correlation_helper(1.5, 0.25, n_35f, n_05 , _sumWPassed));
130      points.push_back(correlation_helper(2,   0.25, n_40f, n_10f, _sumWPassed));
131
132      // Fill in correlation strength for assymetric intervals,
133      // see Tab. 5
134      // Fill the DPS
135      _hist_correl_asym->addPoints(points);
136    }
137
138    //@}
139
140
141  private:
142
143    /// Helper function to fill correlation points into scatter plot
144    Point2D correlation_helper(double x, double xerr, const vector<int>& nf, const vector<int>& nb, CounterPtr sumWPassed) {
145      return Point2D(x, correlation(nf, nb), xerr, correlation_err(nf, nb)/sqrt(sumWPassed->val()));
146    }
147
148    /// Counter
149    CounterPtr _sumWPassed;
150
151
152    /// @name Vectors for storing the number of particles in the different eta intervals per event.
153    /// @todo A better way is needed to make this re-entrant
154    /// @{
155    vector<int> n_10f, n_15f, n_20f, n_25f, n_30f, n_35f, n_40f;
156    vector<int> n_10b, n_15b, n_20b, n_25b, n_30b, n_35b, n_40b;
157    vector<int> n_05;
158    /// @}
159
160
161    /// @name Histograms
162    /// @{
163    // Symmetric eta intervals
164    Scatter2DPtr _hist_correl;
165    // For asymmetric eta intervals
166    Scatter2DPtr _hist_correl_asym;
167    /// @}
168
169  };
170
171
172  RIVET_DECLARE_ALIASED_PLUGIN(UA5_1988_S1867512, UA5_1988_I263399);
173
174}