Rivet analyses referenceDASP_1979_I132045$\pi^\pm$, $p,\bar{p}$, and $K^\pm$ spectra for $E_{\text{CMS}}=3.67\to5.2$ GeV in $e^+e^-$ collisionsExperiment: DASP (Doris) Inspire ID: 132045 Status: VALIDATED Authors:
Beam energies: ANY Run details:
Measurement of the pion, proton and kaon spectra in $e^+e^-$ collisions for a range of energies between 3.6 and 5.2 GeV. Beam energy must be specified as analysis option "ENERGY" when rivet-merging samples. Source code: DASP_1979_I132045.cc 1// -*- C++ -*-
2#include "Rivet/Analysis.hh"
3#include "Rivet/Projections/Beam.hh"
4#include "Rivet/Projections/FinalState.hh"
5
6namespace Rivet {
7
8
9 /// @brief Add a short analysis description here
10 class DASP_1979_I132045 : public Analysis {
11 public:
12
13 /// Constructor
14 RIVET_DEFAULT_ANALYSIS_CTOR(DASP_1979_I132045);
15
16
17 /// @name Analysis methods
18 /// @{
19
20 /// Book histograms and initialise projections before the run
21 void init() {
22
23 // Initialise and register projections
24 declare(FinalState(), "FS");
25
26 // find the hists based on beam energies
27 int ihist=-1;
28 if (inRange(sqrtS()/GeV,3.6,3.67)) {
29 ihist=0;
30 }
31 else if (inRange(sqrtS()/GeV,3.98,4.1)) {
32 ihist=1;
33 }
34 else if (inRange(sqrtS()/GeV,4.1,4.24)) {
35 ihist=2;
36 }
37 else if (inRange(sqrtS()/GeV,4.24,4.36)) {
38 ihist=3;
39 }
40 else if (inRange(sqrtS()/GeV,4.36,4.46)) {
41 ihist=4;
42 }
43 else if (inRange(sqrtS()/GeV,4.46,4.98)) {
44 ihist=5;
45 }
46 else if (isCompatibleWithSqrtS(5.0*GeV)) {
47 ihist=6;
48 }
49 else if (isCompatibleWithSqrtS(5.2*GeV)) {
50 ihist=7;
51 }
52 else {
53 MSG_ERROR("Beam energy not supported!");
54 }
55 // Book histograms
56 book(_h_pi_p , 1,1,1+ihist);
57 book(_h_K_p , 2+ihist,1,1);
58 book(_h_proton_p, 10+ihist,1,1);
59 book(_h_pi_x , 18,1,1+ihist);
60 book(_h_K_x , 19+ihist,1,1);
61 book(_h_proton_x, 27+ihist,1,1);
62 }
63
64
65 /// Perform the per-event analysis
66 void analyze(const Event& event) {
67
68 for (const Particle& p : apply<FinalState>(event, "FS").particles()) {
69 const int id = p.abspid();
70 const double modp = p.p3().mod();
71 const double xp = 2.*modp/sqrtS();
72 const double beta = modp / p.E();
73 if(id==211) {
74 _h_pi_p->fill(modp);
75 _h_pi_x->fill(xp ,1./beta);
76 }
77 else if(id==321) {
78 _h_K_p->fill(modp);
79 _h_K_x->fill(xp ,1./beta);
80 }
81 else if(id==2212) {
82 _h_proton_p->fill(modp);
83 _h_proton_x->fill(xp ,1./beta);
84 }
85 }
86 }
87
88
89 /// Normalise histograms etc., after the run
90 void finalize() {
91 double fact = crossSection()/nanobarn/sumOfWeights();
92 scale(_h_pi_p ,fact);
93 scale(_h_K_p ,fact);
94 scale(_h_proton_p ,fact);
95 fact *= sqr(sqrtS());
96 scale(_h_pi_x ,fact);
97 scale(_h_K_x ,fact);
98 scale(_h_proton_x ,fact);
99 }
100
101 /// @}
102
103
104 /// @name Histograms
105 /// @{
106 Histo1DPtr _h_pi_p, _h_K_p, _h_proton_p;
107 Histo1DPtr _h_pi_x, _h_K_x, _h_proton_x;
108 /// @}
109
110
111 };
112
113
114 RIVET_DECLARE_PLUGIN(DASP_1979_I132045);
115
116
117}
|