Rivet analyses
π±, p, p̄, and K± spectra for ECMS = 3.67 → 5.2 GeV in e+e− collisions
Experiment: DASP (Doris)
Inspire ID: 132045
Status: VALIDATED
Authors: - Peter Richardson
References: - Nucl.Phys. B148 (1979) 189-227
Beams: e- e+
Beam energies: ANY
Run details: - e+e- to hadrons between 3.6 and 5.2 GeV
Measurement of the pion, proton and kaon spectra in e+e− collisions for a range of energies between 3.6 and 5.2 GeV.
Source
code:DASP_1979_I132045.cc
// -*- C++ -*-
#include "Rivet/Analysis.hh"
#include "Rivet/Projections/Beam.hh"
#include "Rivet/Projections/FinalState.hh"
namespace Rivet {
/// @brief Add a short analysis description here
class DASP_1979_I132045 : public Analysis {
public:
/// Constructor
RIVET_DEFAULT_ANALYSIS_CTOR(DASP_1979_I132045);
/// @name Analysis methods
/// @{
/// Book histograms and initialise projections before the run
void init() {
// Initialise and register projections
declare(FinalState(), "FS");
// find the hists based on beam energies
if (inRange(sqrtS()/GeV,3.6,3.67)) _sqs = "0";
else if (inRange(sqrtS()/GeV,3.98,4.1)) _sqs = "1";
else if (inRange(sqrtS()/GeV,4.1,4.24)) _sqs = "2";
else if (inRange(sqrtS()/GeV,4.24,4.36)) _sqs = "3";
else if (inRange(sqrtS()/GeV,4.36,4.46)) _sqs = "4";
else if (inRange(sqrtS()/GeV,4.46,4.98)) _sqs = "5";
else if (isCompatibleWithSqrtS(5.0*GeV)) _sqs = "6";
else if (isCompatibleWithSqrtS(5.2*GeV)) _sqs = "7";
raiseBeamErrorIf(_sqs.empty());
// Book histograms
for (size_t ih=0; ih <= 7; ++ih) {
const string pre = toString(ih);
book(_h_p[pre+"pi"], 1,1,1+ih);
book(_h_p[pre+"K"], 2+ih,1,1);
book(_h_p[pre+"proton"], 10+ih,1,1);
book(_h_x[pre+"pi"], 18,1,1+ih);
book(_h_x[pre+"K"], 19+ih,1,1);
book(_h_x[pre+"proton"], 27+ih,1,1);
}
}
/// Perform the per-event analysis
void analyze(const Event& event) {
for (const Particle& p : apply<FinalState>(event, "FS").particles()) {
const int id = p.abspid();
const double modp = p.p3().mod();
const double xp = 2.*modp/sqrtS();
const double beta = modp / p.E();
if (id==211) {
_h_p[_sqs+"pi"]->fill(modp);
_h_x[_sqs+"pi"]->fill(xp, 1./beta);
}
else if (id==321) {
_h_p[_sqs+"K"]->fill(modp);
_h_x[_sqs+"K"]->fill(xp, 1./beta);
}
else if (id==2212) {
_h_p[_sqs+"proton"]->fill(modp);
_h_x[_sqs+"proton"]->fill(xp, 1./beta);
}
}
}
/// Normalise histograms etc., after the run
void finalize() {
const double fact = crossSection()/nanobarn/sumOfWeights();
scale(_h_p, fact);
scale(_h_x, fact*sqr(sqrtS())); // < the energy is not defined when merging!
}
/// @}
/// @name Histograms
/// @{
map<string,Histo1DPtr> _h_p, _h_x;
string _sqs = "";
/// @}
};
RIVET_DECLARE_PLUGIN(DASP_1979_I132045);
}