Rivet analyses referenceBELLE_2004_I668024Rate and spectra for the production of $\Sigma_c(2800)$Experiment: BELLE (KEKB) Inspire ID: 668024 Status: VALIDATED Authors:
Beam energies: (5.3, 5.3) GeV Run details:
Measurement of the rate and scaled momentum spectra for the production of $\Sigma_c(2800)^0$, $\Sigma_c(2800)^+$ and $\Sigma_c(2800)^{++}$ baryons by BELLE. Source code: BELLE_2004_I668024.cc 1// -*- C++ -*-
2#include "Rivet/Analysis.hh"
3#include "Rivet/Projections/UnstableParticles.hh"
4
5namespace Rivet {
6
7
8 /// @brief Sigma_c(2800) rate and spectra
9 class BELLE_2004_I668024 : public Analysis {
10 public:
11
12 /// Constructor
13 RIVET_DEFAULT_ANALYSIS_CTOR(BELLE_2004_I668024);
14
15
16 /// @name Analysis methods
17 /// @{
18
19 /// Book histograms and initialise projections before the run
20 void init() {
21 // Initialise and register projections
22 declare(UnstableParticles(), "UFS");
23 // Book histograms
24 for(unsigned int ix=0;ix<3;++ix) {
25 book(_r[ix], 1, 1, 1+ix);
26 book(_h[ix], 2, 1, 1+ix);
27 }
28 }
29
30
31 /// Perform the per-event analysis
32 void analyze(const Event& event) {
33 const UnstableParticles& ufs = apply<UnstableParticles>(event, "UFS");
34
35 for (const Particle& p : ufs.particles()) {
36 const Vector3 mom3 = p.p3();
37 double pp = mom3.mod();
38 double xp = pp/sqrt(0.25*sqr(sqrtS())-sqr(p.mass()));
39 int id = abs(p.pid());
40 if(id==_sid+110 && isDecay(p,{4122,-211})) {
41 _h[0]->fill(xp);
42 _r[0]->fill("10.52"s);
43 }
44 else if(id==_sid+210&& isDecay(p,{4122,111})) {
45 _h[1]->fill(xp);
46 _r[1]->fill("10.52"s);
47 }
48 else if(id==_sid+220&& isDecay(p,{4122,211})) {
49 _h[2]->fill(xp);
50 _r[2]->fill("10.52"s);
51 }
52 }
53 }
54
55 // Check for explicit decay into pdgids
56 bool isDecay(const Particle& mother, vector<int> ids) {
57 if(mother.pid()<0) {
58 for(unsigned int ix=0;ix<ids.size();++ix)
59 ids[ix] *= -1;
60 }
61 // Trivial check to ignore any other decays but the one in question modulo photons
62 const Particles children = mother.children(Cuts::pid!=PID::PHOTON);
63 if (children.size()!=ids.size()) return false;
64 // Check for the explicit decay
65 return all(ids, [&](int i){return count(children, hasPID(i))==1;});
66 }
67
68
69 /// Normalise histograms etc., after the run
70 void finalize() {
71 for(unsigned int ix=0;ix<3;++ix) {
72 normalize(_h[ix]);
73 scale(_r[ix], crossSection()/picobarn/sumOfWeights());
74 }
75 }
76
77 /// @}
78
79
80 /// @name Histograms
81 /// @{
82 Histo1DPtr _h[3];
83 BinnedHistoPtr<string> _r[3];
84 static const int _sid = 14002;
85 /// @}
86
87
88 };
89
90
91 RIVET_DECLARE_PLUGIN(BELLE_2004_I668024);
92
93}
|