Rivet analyses referenceBESII_2008_I801208Cross-sections for light hadrons at 3.773 and 3.650 GeVExperiment: BESII (BEPC II) Inspire ID: 801208 Status: VALIDATED Authors:
Beam energies: ANY Run details:
Cross section for $e^+e^-\to K^-\pi^+$, $K^-\pi^+\pi^0$, $K^-\pi^+\pi^+\pi^-$, $K^-\pi^+\pi^+\pi^-\pi^0$ and $K^-\pi^+\pi^0\pi^0$ together with a $K_S^0$ meson at 3.773 and 3.650 GeV. Source code: BESII_2008_I801208.cc 1// -*- C++ -*-
2#include "Rivet/Analysis.hh"
3#include "Rivet/Projections/FinalState.hh"
4
5namespace Rivet {
6
7
8 /// @brief Cross-sections for light hadrons at 3.773 and 3.650 GeV
9 class BESII_2008_I801208 : public Analysis {
10 public:
11
12 /// Constructor
13 RIVET_DEFAULT_ANALYSIS_CTOR(BESII_2008_I801208);
14
15
16 /// @name Analysis methods
17 /// @{
18
19 /// Book histograms and initialise projections before the run
20 void init() {
21
22 // Initialise and register projections
23 declare(FinalState(), "FS");
24
25 // Book histograms
26 for(unsigned int ix=1;ix<7;++ix) {
27 stringstream ss;
28 ss << "TMP/n" << ix;
29 book(_nMeson[ix], 1, 1, ix);
30 }
31 for (const string& en : _nMeson[2].binning().edges<0>()) {
32 double end = std::stod(en)*GeV;
33 if(isCompatibleWithSqrtS(end)) {
34 _ecms = en;
35 break;
36 }
37 }
38 if(_ecms.empty()) MSG_ERROR("Beam energy incompatible with analysis.");
39 }
40
41
42 /// Perform the per-event analysis
43 void analyze(const Event& event) {
44 const FinalState& fs = apply<FinalState>(event, "FS");
45
46 map<long,int> nCount;
47 int ntotal(0);
48 for (const Particle& p : fs.particles()) {
49 nCount[p.pid()] += 1;
50 ++ntotal;
51 }
52 if(nCount[310]!=1) vetoEvent;
53
54 if(ntotal==3) {
55 if((nCount[ 211]==1 && nCount[-321]==1) ||
56 (nCount[-211]==1 && nCount[ 321]==1) ) {
57 if(_ecms=="3.773"s) _nMeson[1]->fill(_ecms);
58 }
59 }
60 else if(ntotal==4&&nCount[111]==1) {
61 if((nCount[ 211]==1 && nCount[-321]==1) ||
62 (nCount[-211]==1 && nCount[ 321]==1) )
63 _nMeson[2]->fill(_ecms);
64 }
65 else if(ntotal==5) {
66 if((nCount[ 211]==2 && nCount[-211]==1 && nCount[-321]==1) ||
67 (nCount[-211]==2 && nCount[ 211]==1 && nCount[ 321]==1) )
68 _nMeson[3]->fill(_ecms);
69 if(((nCount[ 211]==1 && nCount[-321]==1) ||
70 (nCount[-211]==1 && nCount[ 321]==1) ) && nCount[111]==2)
71 _nMeson[6]->fill(_ecms);
72 }
73 else if(ntotal==6&&nCount[111]==1) {
74 if((nCount[ 211]==2 && nCount[-211]==1 && nCount[-321]==1) ||
75 (nCount[-211]==2 && nCount[ 211]==1 && nCount[ 321]==1) )
76 _nMeson[4]->fill(_ecms);
77 }
78 else if(ntotal==7) {
79 if((nCount[ 211]==3 && nCount[-211]==2 && nCount[-321]==1) ||
80 (nCount[-211]==3 && nCount[ 211]==2 && nCount[ 321]==1) ) {
81 if(_ecms=="3.773"s) _nMeson[5]->fill(_ecms);
82 }
83 }
84 }
85
86 /// Normalise histograms etc., after the run
87 void finalize() {
88 for(unsigned int ix=1;ix<7;++ix)
89 scale(_nMeson[ix],crossSection()/ sumOfWeights() /picobarn);
90 }
91
92 /// @}
93
94
95 /// @name Histograms
96 /// @{
97 BinnedHistoPtr<string> _nMeson[7];
98 string _ecms;
99 /// @}
100
101
102 };
103
104
105 RIVET_DECLARE_PLUGIN(BESII_2008_I801208);
106
107
108}
|