rivet is hosted by Hepforge, IPPP Durham

Rivet analyses reference

PLUTO_1980_I154270

Hadronic charged multiplicity measurement between 12 and 31.3 GeV
Experiment: PLUTO (PETRA)
Inspire ID: 154270
Status: VALIDATED
Authors:
  • Peter Richardson
References:
  • Phys.Lett. 95B (1980) 313-317
Beams: e+ e-
Beam energies: (4.7, 4.7); (6.0, 6.0); (6.5, 6.5); (8.5, 8.5); (11.0, 11.0); (13.8, 13.8); (15.1, 15.1); (15.3, 15.3); (15.7, 15.7) GeV
Run details:
  • Hadronic e+ e- events generated below the Z pole. Beam energy must be specified as analysis option "ENERGY" when rivet-merging samples.

The charged particle multiplicity distribution of hadronic $e^+e^-$ events as measured between 12 and 31.3 GeV using the PLUTO detector at PETRA. The decay products of weakly decaying strange hadrons, e.g. $K^0_s$ and $\Lambda^0$, are not included in the measurement. Beam energy must be specified as analysis option "ENERGY" when rivet-merging samples.

Source code: PLUTO_1980_I154270.cc
 1// -*- C++ -*-
 2#include "Rivet/Analysis.hh"
 3#include "Rivet/Projections/FinalState.hh"
 4#include "Rivet/Projections/ChargedFinalState.hh"
 5
 6namespace Rivet {
 7
 8
 9  /// @brief Hadronic charged multiplicity measurement between 12 and 31.3 GeV
10  class PLUTO_1980_I154270 : public Analysis {
11  public:
12
13    /// Constructor
14    RIVET_DEFAULT_ANALYSIS_CTOR(PLUTO_1980_I154270);
15
16
17    /// @name Analysis methods
18    /// @{
19
20    /// Book histograms and initialise projections before the run
21    void init() {
22      const ChargedFinalState cfs;
23      declare(cfs, "CFS");
24      for (const string label : {"9.4", "12.0", "13.0", "17.0", "22.0", "27.6", "30.2", "30.7", "31.3"}) {
25        const double sqrts = std::stod(label);
26        if (isCompatibleWithSqrtS(sqrts*GeV))  Ecm = label;
27      }
28      if (Ecm != "") {
29        book(_mult, 1, 1, 1);
30      }
31      else {
32        MSG_WARNING("CoM energy of events sqrt(s) = " << sqrtS()/GeV << " doesn't match any available analysis energy .");
33      }
34    }
35
36
37    /// Perform the per-event analysis
38    void analyze(const Event& event) {
39      const FinalState& cfs = apply<FinalState>(event, "CFS");
40      MSG_DEBUG("Total charged multiplicity = " << cfs.size());
41      unsigned int nPart(0);
42      for (const Particle& p : cfs.particles()) {
43        // check if prompt or not
44        ConstGenParticlePtr pmother = p.genParticle();
45        ConstGenVertexPtr ivertex = pmother->production_vertex();
46        bool prompt = true;
47        while (ivertex) {
48          vector<ConstGenParticlePtr> inparts = HepMCUtils::particles(ivertex, Relatives::PARENTS);
49          int n_inparts = inparts.size();
50          if (n_inparts < 1)  break;
51          pmother = inparts[0]; // first mother particle
52          int mother_pid = abs(pmother->pdg_id());
53          if (mother_pid==PID::K0S || mother_pid==PID::LAMBDA) {
54            prompt = false;
55            break;
56          }
57          else if (mother_pid<6) {
58            break;
59          }
60          ivertex = pmother->production_vertex();
61        }
62        if (prompt) ++nPart;
63      }
64      _mult->fill(Ecm, nPart);
65    }
66
67
68    /// Normalise histograms etc., after the run
69    void finalize() {
70      scale(_mult, 1./sumOfWeights());
71    }
72
73    /// @}
74
75
76  private:
77
78    BinnedProfilePtr<string> _mult;
79    string Ecm = "";
80
81  };
82
83
84  RIVET_DECLARE_PLUGIN(PLUTO_1980_I154270);
85
86}