Rivet analyses referenceBESIII_2023_I2695411Cross section for $e^+e^-\to\Xi^-\bar{\Xi}^+$ for $\sqrt{s}=3.510\to4.843\,$GeVExperiment: BESIII (BEPC) Inspire ID: 2695411 Status: VALIDATED NOHEPDATA Authors:
Beam energies: (1.8, 1.8); (1.8, 1.8); (1.9, 1.9); (1.9, 1.9); (1.9, 1.9); (1.9, 1.9); (1.9, 1.9); (2.1, 2.1); (2.1, 2.1); (2.1, 2.1); (2.2, 2.2); (2.2, 2.2); (2.2, 2.2); (2.2, 2.2); (2.2, 2.2); (2.3, 2.3); (2.3, 2.3); (2.3, 2.3); (2.3, 2.3); (2.3, 2.3); (2.3, 2.3); (2.4, 2.4); (2.4, 2.4) GeV Run details:
Measurement of the cross section for $e^+e^-\to\Xi^-\bar{\Xi}^+$ for $\sqrt{s}=3.510\to4.843\,$GeV by the BESIII collaboration. Beam energy must be specified as analysis option "ENERGY" when rivet-merging samples. Source code: BESIII_2023_I2695411.cc 1// -*- C++ -*-
2#include "Rivet/Analysis.hh"
3#include "Rivet/Projections/FinalState.hh"
4#include "Rivet/Projections/UnstableParticles.hh"
5
6namespace Rivet {
7
8
9 /// @brief e+e- > Xi+ Xi-
10 class BESIII_2023_I2695411 : public Analysis {
11 public:
12
13 /// Constructor
14 RIVET_DEFAULT_ANALYSIS_CTOR(BESIII_2023_I2695411);
15
16
17 /// @name Analysis methods
18 /// @{
19
20 /// Book histograms and initialise projections before the run
21 void init() {
22 // Initialise and register projections
23 declare(FinalState(), "FS");
24 declare(UnstableParticles(Cuts::abspid==3312), "UFS");
25 book(_sigmaXi, 1,1,1);
26
27 for (const string& en : _sigmaXi.binning().edges<0>()) {
28 double end = std::stod(en)*GeV;
29 if(isCompatibleWithSqrtS(end)) {
30 _ecms = en;
31 break;
32 }
33 }
34 if(_ecms.empty()) MSG_ERROR("Beam energy incompatible with analysis.");
35 }
36
37 void findChildren(const Particle& p,map<long,int> & nRes, int &ncount) {
38 for (const Particle& child : p.children()) {
39 if (child.children().empty()) {
40 nRes[child.pid()]-=1;
41 --ncount;
42 }
43 else {
44 findChildren(child,nRes,ncount);
45 }
46 }
47 }
48
49 /// Perform the per-event analysis
50 void analyze(const Event& event) {
51 const FinalState& fs = apply<FinalState>(event, "FS");
52 // total hadronic and muonic cross sections
53 map<long,int> nCount;
54 int ntotal(0);
55 for (const Particle& p : fs.particles()) {
56 nCount[p.pid()] += 1;
57 ++ntotal;
58 }
59
60 // find the Lambdas and Sigmas
61 const UnstableParticles& ufs = apply<UnstableParticles>(event, "UFS");
62 for (const Particle& p1 : ufs.particles()) {
63 bool matched = false;
64 // check fs
65 bool fs = true;
66 for (const Particle& child : p1.children()) {
67 if (child.pid()==p1.pid()) {
68 fs = false;
69 break;
70 }
71 }
72 if (!fs) continue;
73 // find the children
74 map<long,int> nRes = nCount;
75 int ncount = ntotal;
76 findChildren(p1,nRes,ncount);
77 for (const Particle & p2 : ufs.particles(Cuts::pid==-p1.pid())) {
78 // check fs
79 bool fs = true;
80 for (const Particle& child : p2.children()) {
81 if (child.pid()==p2.pid()) {
82 fs = false;
83 break;
84 }
85 }
86 if (!fs) continue;
87 map<long,int> nRes2 = nRes;
88 int ncount2 = ncount;
89 findChildren(p2,nRes2,ncount2);
90 if (ncount2!=0) continue;
91 matched=true;
92 for (const auto& val : nRes2) {
93 if (val.second!=0) {
94 matched = false;
95 break;
96 }
97 }
98 if(matched) {
99 _sigmaXi->fill(_ecms);
100 break;
101 }
102 }
103 if (matched) break;
104 }
105 }
106
107
108 /// Normalise histograms etc., after the run
109 void finalize() {
110 double fact = crossSection()/ sumOfWeights() /femtobarn;
111 scale(_sigmaXi, fact);
112 double mXi = 1.32171;
113 double tau = 0.25*sqr(sqrtS()/mXi);
114 double beta = sqrt(1.-1./tau);
115 double alpha = 7.2973525693e-3;
116 double GeV2fb = 0.3893793721e12;
117 double sigma0 = 4.*M_PI*sqr(alpha/sqrtS())*beta*GeV2fb/3.;
118 BinnedEstimatePtr<string> tmp;
119 book(tmp,1,1,2);
120 for(const auto & b :_sigmaXi->bins()) {
121 tmp->bin(b.index()).set(1e3*sqrt(b.sumW()/(sigma0*(1. + 0.5/tau))),
122 1e3*0.5*sqrt(1./b.sumW()/sigma0/(1. + 0.5/tau))*b.errW());
123 }
124 }
125
126 /// @}
127
128
129 /// @name Histograms
130 /// @{
131 BinnedHistoPtr<string> _sigmaXi;
132 string _ecms;
133 /// @}
134
135
136 };
137
138
139 RIVET_DECLARE_PLUGIN(BESIII_2023_I2695411);
140
141}
|