Rivet analyses referenceSFM_1984_I196601Charged multiplicity distribution in $pp$ interactions at CERN ISR energiesExperiment: SFM (CERN ISR) Inspire ID: 196601 Status: UNVALIDATED Authors:
Beam energies: (15.2, 15.2); (22.2, 22.2); (26.1, 26.1); (31.1, 31.1) GeV Run details:
WARNING - implemented to the best of abilities, no theory curve in the publication to compare to. Charged multiplicities are measured at $\sqrt{s} = 30.4$, 44.5, 52.2 and 62.2 GeV using a minimum-bias trigger. The data is sub-divided into inelastic as well as non-single-diffractive events. Beeam energy must be specified as analysis option "ENERGY" when rivet-merging samples. Source code: SFM_1984_I196601.cc 1// -*- C++ -*-
2#include "Rivet/Analysis.hh"
3#include "Rivet/Projections/ChargedFinalState.hh"
4
5namespace Rivet {
6
7
8 /// @brief SFM charged multiplicities in NSD and inelastic minbias events
9 class SFM_1984_I196601 : public Analysis {
10 public:
11
12 /// Constructor
13 RIVET_DEFAULT_ANALYSIS_CTOR(SFM_1984_I196601);
14
15
16 /// @name Analysis methods
17 /// @{
18
19 void init() {
20 // Projections
21 //
22 declare(ChargedFinalState(Cuts::absrap<5 && Cuts::pT>250*MeV && Cuts::pT<3*GeV), "FS");
23
24 // Histograms
25 if (isCompatibleWithSqrtS(30.4*GeV, 1E-1)) {
26 book(_hist_multiplicity_inel ,1, 1, 1);
27 book(_hist_multiplicity_nsd ,2, 1, 1);
28 } else if (isCompatibleWithSqrtS(44.5*GeV, 1E-1)) {
29 book(_hist_multiplicity_inel ,1, 1, 2);
30 book(_hist_multiplicity_nsd ,2, 1, 2);
31 } else if (isCompatibleWithSqrtS(52.2*GeV, 1E-1)) {
32 book(_hist_multiplicity_inel ,1, 1, 3);
33 book(_hist_multiplicity_nsd ,2, 1, 3);
34 } else if (isCompatibleWithSqrtS(62.2*GeV, 1E-1)) {
35 book(_hist_multiplicity_inel ,1, 1, 4);
36 book(_hist_multiplicity_nsd ,2, 1, 4);
37 }
38
39 }
40
41
42 // Analyse each event
43 void analyze(const Event& event) {
44 const ChargedFinalState& fs = apply<ChargedFinalState>(event, "FS");
45
46 // Trigger
47 if (fs.particles().size() <1 ) vetoEvent;
48
49 // Event classification:
50 int n_left(0), n_right(0), n_large_x(0);
51 for (const Particle& p : fs.particles()) {
52 // Calculate the particles' Feynman x
53 const double x_feyn = 2.0 * fabs(p.pz())/sqrtS();
54 if (x_feyn > 0.8 ) n_large_x += 1;
55
56 // Pseudorapidity
57 const double eta = p.eta();
58 if (eta > 0.0) n_right += 1;
59 else if (eta < 0.0) n_left += 1;
60 }
61 MSG_DEBUG("N_left: " << n_left << ", "
62 << "N_right: " << n_right << ", "
63 << "N_large_x: " << n_large_x);
64
65
66 // Single diffractive: either one large x particle or 0 particles in the one hemisphere but more than 7 in the other hemisphere
67 bool isDiffractive = (n_large_x == 1) || ( ((n_left==0) && (fs.particles().size() < 7)) || ((n_right==0) && (fs.particles().size() < 7)) );
68
69
70 _hist_multiplicity_inel->fill(fs.particles().size());
71 if (!isDiffractive) _hist_multiplicity_nsd->fill(fs.particles().size());
72 }
73
74
75 void finalize() {
76 normalize(_hist_multiplicity_inel);
77 normalize(_hist_multiplicity_nsd);
78 }
79
80 /// @}
81
82
83 private:
84
85
86 /// @name Histograms
87 /// @{
88 Histo1DPtr _hist_multiplicity_inel;
89 Histo1DPtr _hist_multiplicity_nsd;
90 /// @}
91
92 };
93
94
95
96 RIVET_DECLARE_ALIASED_PLUGIN(SFM_1984_I196601, SFM_1984_S1178091);
97
98}
|