Rivet analyses referenceAMY_1990_I295160Hadronic charged multiplicity measurement between 50 and 61.4 GeVExperiment: AMY (TRISTAN) Inspire ID: 295160 Status: VALIDATED Authors:
Beam energies: (25.0, 25.0); (26.0, 26.0); (27.5, 27.5); (28.0, 28.0); (28.5, 28.5); (30.0, 30.0); (30.4, 30.4); (30.7, 30.7); (28.5, 28.5) GeV Run details:
The charged particle multiplicity distribution of hadronic $e^+e^-$ events as measured between 50 and 61.4 GeV using the AMY detector at TRISTAN. Beam energy must be specified (in GeV) as analysis option "ENERGY" when rivet-merging samples. Source code: AMY_1990_I295160.cc 1// -*- C++ -*-
2#include "Rivet/Analysis.hh"
3#include "Rivet/Projections/ChargedFinalState.hh"
4
5namespace Rivet {
6
7
8 /// @brief Charged multiplicity below Z pole based on ALEPH Z pole analysis
9 ///
10 /// @author Peter Richardson
11 class AMY_1990_I295160 : public Analysis {
12 public:
13
14 /// Constructor
15 RIVET_DEFAULT_ANALYSIS_CTOR(AMY_1990_I295160);
16
17
18 /// @name Analysis methods
19 /// @{
20
21 /// Book histograms and initialise projections before the run
22 void init() {
23 const ChargedFinalState cfs;
24 declare(cfs, "CFS");
25 unsigned int offset = 0;
26 if(isCompatibleWithSqrtS(50.0*GeV)) {
27 offset = 1;
28 }
29 else if(isCompatibleWithSqrtS(52.0*GeV)) {
30 offset = 2;
31 }
32 else if(isCompatibleWithSqrtS(55.0*GeV)) {
33 offset = 3;
34 }
35 else if(isCompatibleWithSqrtS(56.0*GeV)) {
36 offset = 4;
37 }
38 else if(isCompatibleWithSqrtS(57.0*GeV)) {
39 offset = 5;
40 }
41 else if(isCompatibleWithSqrtS(60.0*GeV)) {
42 offset = 6;
43 }
44 else if(isCompatibleWithSqrtS(60.8*GeV)) {
45 offset = 7;
46 }
47 else if(isCompatibleWithSqrtS(61.4*GeV)) {
48 offset = 8;
49 }
50 else {
51 MSG_WARNING("CoM energy of events sqrt(s) = " << sqrtS()/GeV
52 << " doesn't match any available analysis energy .");
53 }
54 book(_histChTotal, 1, 1, offset);
55 book(_histTotal, 2, 1, 1);
56 if (offset==5) {
57 book(_histChAver, 1, 1, 9);
58 }
59 }
60
61 /// Perform the per-event analysis
62 void analyze(const Event& event) {
63 const string ECMS = _histTotal->bin(ecmsAxis.index(sqrtS()/GeV)).xEdge();
64 const FinalState& cfs = apply<FinalState>(event, "CFS");
65 MSG_DEBUG("Total charged multiplicity = " << cfs.size());
66 _histChTotal->fill(cfs.size());
67 _histTotal->fill(ECMS, cfs.size());
68 if (_histChAver) {
69 _histChAver->fill(cfs.size());
70 _histTotal->fill(string("50.0 - 61.4"), cfs.size());
71 }
72 }
73
74 /// Normalise histograms etc., after the run
75 void finalize() {
76 scale(_histChTotal, 100.0/sumOfWeights()); // %age (100)
77 if (_histChAver) scale(_histChAver, 100.0/sumOfWeights());
78 }
79
80 /// @}
81
82
83 private:
84
85 /// @name Histograms
86 /// @{
87 BinnedHistoPtr<int> _histChTotal, _histChAver;
88 BinnedProfilePtr<string> _histTotal;
89 YODA::Axis<double> ecmsAxis{49., 51., 53., 55.5, 56.5, 58., 60.5, 61., 62.};
90 /// @}
91
92 };
93
94
95 RIVET_DECLARE_PLUGIN(AMY_1990_I295160);
96
97}
|