Rivet analyses referenceARGUS_1985_I204851Spectrum of $D^{*+}$ mesons in $e^+e^-$ at $\sqrt{s}=10.4\,$GeVExperiment: ARGUS (DORIS) Inspire ID: 204851 Status: VALIDATED NOHEPDATA Authors:
Beam energies: (5.2, 5.2) GeV Run details:
Measurement of the scaled momentum spectrum of $D^{*+}$ mesons in $e^+e^-$ at $\sqrt{s}=10.4\,$GeV Source code: ARGUS_1985_I204851.cc 1// -*- C++ -*-
2#include "Rivet/Analysis.hh"
3#include "Rivet/Projections/UnstableParticles.hh"
4
5namespace Rivet {
6
7
8 /// @brief e+e- > D*+ + X
9 class ARGUS_1985_I204851 : public Analysis {
10 public:
11
12 /// Constructor
13 RIVET_DEFAULT_ANALYSIS_CTOR(ARGUS_1985_I204851);
14
15
16 /// @name Analysis methods
17 /// @{
18
19 /// Book histograms and initialise projections before the run
20 void init() {
21 // projections
22 declare(UnstableParticles(Cuts::abspid==413), "UFS");
23 // histos
24 for (unsigned int ix=0; ix<2; ++ix) {
25 book(_h_sigma[ix],1,1,1+ix);
26 }
27 book(_h_spect,2,1,1);
28 }
29
30
31 /// Perform the per-event analysis
32 void analyze(const Event& event) {
33 if(_edges[0].empty()) {
34 _edges[0] = _h_sigma[0]->xEdges();
35 _edges[1] = _h_spect ->xEdges();
36 }
37 const UnstableParticles& ufs = apply<UnstableParticles>(event, "UFS");
38 for (const Particle& p : ufs.particles()) {
39 const double xp = p.p3().mod()/sqrt(0.25*sqr(sqrtS())-sqr(p.mass()));
40 const size_t idx = _axis.index(xp);
41 if(idx&&idx<=_edges[1].size()) _h_spect->fill(_edges[1][idx-1]);
42 for (unsigned int ix=0; ix<2; ++ix) {
43 _h_sigma[ix]->fill(_edges[0][1]);
44 if (xp>0.5) _h_sigma[ix]->fill(_edges[0][0]);
45 }
46 }
47 }
48
49
50 /// Normalise histograms etc., after the run
51 void finalize() {
52 const double br[2] = {0.03947,0.0822};
53 const double fact = 0.677*crossSection()/sumOfWeights()/picobarn;
54 for (unsigned int ix=0; ix<2; ++ix) {
55 scale(_h_sigma[ix],fact*br[ix]);
56 }
57 scale(_h_spect,sqr(sqrtS())*crossSection()/sumOfWeights()/microbarn);
58 for(auto & b : _h_spect->bins()) {
59 b.scaleW(1./_axis.width(b.index()));
60 }
61 }
62
63 /// @}
64
65
66 /// @name Histograms
67 /// @{
68 BinnedHistoPtr<string> _h_spect,_h_sigma[2];
69 vector<string> _edges[2];
70 YODA::Axis<double> _axis{0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1.0};
71 /// @}
72
73
74 };
75
76
77 RIVET_DECLARE_PLUGIN(ARGUS_1985_I204851);
78
79}
|