Rivet analyses
Pseudorapidity distributions in pp̄ (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. * pp̄ 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_I233599.cc
// -*- C++ -*-
#include "Rivet/Analysis.hh"
#include "Rivet/Projections/Beam.hh"
#include "Rivet/Projections/TriggerUA5.hh"
#include "Rivet/Projections/ChargedFinalState.hh"
namespace Rivet {
/// UA5 \f$ \eta \f$ distributions at 200 and 900 GeV
class UA5_1986_I233599 : public Analysis {
public:
/// Constructor
RIVET_DEFAULT_ANALYSIS_CTOR(UA5_1986_I233599);
/// @name Analysis methods
/// @{
/// Set up projections and histograms
void init() {
declare(TriggerUA5(), "Trigger");
declare(Beam(), "Beams");
declare(ChargedFinalState(Cuts::abseta < 5.0), "CFS50");
for (double eVal : allowedEnergies()) {
int en(eVal);
if (isCompatibleWithSqrtS(eVal)) _sqs = en;
book(_c[en+10], "_sumWtrigNSD"+toString(en));
book(_c[en+20], "_sumWtrig"+toString(en));
unsigned int offset = 2*int(en == 900);
book(_h[en+10], 1, 1, 1+offset);
book(_h[en+20], 1, 1, 2+offset);
for (size_t i = 0; i < (en==900? 9 : 6); ++i) {
book(_c[en+i], "TMP/sumWn"+toString(en+i));
book(_h[en+i], 2+int(en==900), 1, i+1);
}
}
raiseBeamErrorIf(_sqs < 0);
}
/// 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, (_sqs==900? 8 : 5));
// Update weights
_c[_sqs+20]->fill();
if (isNSD) {
_c[_sqs+10]->fill();
if (num_idx >= 0) _c[_sqs+num_idx]->fill();
}
// Fill histos
for (const Particle& p : cfs50.particles()) {
const double eta = p.abseta();
_h[_sqs+20]->fill(eta);
if (!isNSD) continue;
_h[_sqs+10]->fill(eta);
if (num_idx >= 0) _h[_sqs+num_idx]->fill(eta);
}
}
/// Scale histos
void finalize() {
for (const auto& item : _c) {
const double w = item.second->val();
if (!isZero(w)) scale(_h[item.first], 0.5/w);
}
}
private:
/// @name Weight counters
/// @{
map<int,CounterPtr> _c;
/// @}
/// @name Histograms
/// @{
map<int,Histo1DPtr> _h;
/// @}
int _sqs = -1;
};
RIVET_DECLARE_ALIASED_PLUGIN(UA5_1986_I233599, UA5_1986_S1583476);
}Aliases: - UA5_1986_S1583476