rivet is hosted by Hepforge, IPPP Durham

Rivet analyses reference

UA5_1988_I263399

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_I263399.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_I263399 : public Analysis {
 12  public:
 13
 14    UA5_1988_I263399()
 15      : Analysis("UA5_1988_I263399")
 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 Estimate1D to be able to output errors
 50      if (isCompatibleWithSqrtS(200.0*GeV)) {
 51        book(_hist_correl, 2, 1, 1);
 52        book(_hist_correl_asym, 3, 1, 1);
 53      } else if (isCompatibleWithSqrtS(546.0*GeV)) {
 54        book(_hist_correl, 2, 1, 2);
 55        book(_hist_correl_asym, 3, 1, 2);
 56      } else if (isCompatibleWithSqrtS(900.0*GeV)) {
 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      // Fill the DPS
105      pair<double,double> corr;
106      corr = correlation_helper(n_10f, n_10b, _sumWPassed);
107      _hist_correl->bin(1).set(corr.first, corr.second);
108      corr = correlation_helper(n_15f, n_15b, _sumWPassed);
109      _hist_correl->bin(2).set(corr.first, corr.second);
110      corr = correlation_helper(n_20f, n_20b, _sumWPassed);
111      _hist_correl->bin(3).set(corr.first, corr.second);
112      corr = correlation_helper(n_25f, n_25b, _sumWPassed);
113      _hist_correl->bin(4).set(corr.first, corr.second);
114      corr = correlation_helper(n_30f, n_30b, _sumWPassed);
115      _hist_correl->bin(5).set(corr.first, corr.second);
116      corr = correlation_helper(n_35f, n_35b, _sumWPassed);
117      _hist_correl->bin(6).set(corr.first, corr.second);
118      corr = correlation_helper(n_40f, n_40b, _sumWPassed);
119      _hist_correl->bin(7).set(corr.first, corr.second);
120
121      // Fill gap-center histo (Fig 15)
122      //
123      // The first bin contains the c_str strengths of
124      // the gap size histo that has ane eta gap of two
125      //
126      // Fill in correlation strength for assymetric intervals,
127      // see Tab. 5
128      // Fill the DPS
129      corr = correlation_helper(n_20f, n_20b, _sumWPassed);
130      _hist_correl_asym->bin(1).set(corr.first, corr.second);
131      corr = correlation_helper(n_25f, n_15b, _sumWPassed);
132      _hist_correl_asym->bin(2).set(corr.first, corr.second);
133      corr = correlation_helper(n_30f, n_10b, _sumWPassed);
134      _hist_correl_asym->bin(3).set(corr.first, corr.second);
135      corr = correlation_helper(n_35f, n_05 , _sumWPassed);
136      _hist_correl_asym->bin(4).set(corr.first, corr.second);
137      corr = correlation_helper(n_40f, n_10f, _sumWPassed);
138      _hist_correl_asym->bin(5).set(corr.first, corr.second);
139
140    }
141
142    /// @}
143
144
145  private:
146
147    /// Helper function to fill correlation points into scatter plot
148    pair<double,double> correlation_helper(const vector<int>& nf, const vector<int>& nb, CounterPtr sumWPassed) {
149      return make_pair(correlation(nf, nb),  correlation_err(nf, nb)/sqrt(sumWPassed->val()));
150    }
151
152    /// Counter
153    CounterPtr _sumWPassed;
154
155
156    /// @name Vectors for storing the number of particles in the different eta intervals per event.
157    /// @todo A better way is needed to make this re-entrant
158    /// @{
159    vector<int> n_10f, n_15f, n_20f, n_25f, n_30f, n_35f, n_40f;
160    vector<int> n_10b, n_15b, n_20b, n_25b, n_30b, n_35b, n_40b;
161    vector<int> n_05;
162    /// @}
163
164
165    /// @name Histograms
166    /// @{
167    // Symmetric eta intervals
168    Estimate1DPtr _hist_correl;
169    // For asymmetric eta intervals
170    Estimate1DPtr _hist_correl_asym;
171    /// @}
172
173  };
174
175
176  RIVET_DECLARE_ALIASED_PLUGIN(UA5_1988_I263399, UA5_1988_S1867512);
177
178}