Rivet analyses referenceCLEO_2001_I552541Correlated $\Lambda^+_c\bar{\Lambda}_c$ production in $e^+e^-$ annihilations at $\sqrt{s}=10.5$ GeVExperiment: CLEO (CESR) Inspire ID: 552541 Status: VALIDATED Authors:
Beam energies: (5.3, 5.3) GeV Run details:
Measurement of correlations between $\Lambda^+_c$ and $\bar{\Lambda}_c$ production in $e^+e^-$ annihilations at $\sqrt{s}=10.5$ GeV by the CLEO experiment. Useful fo studying models of baryon production. Source code: CLEO_2001_I552541.cc 1// -*- C++ -*-
2#include "Rivet/Analysis.hh"
3#include "Rivet/Projections/UnstableParticles.hh"
4
5namespace Rivet {
6
7
8 /// @brief Add a short analysis description here
9 class CLEO_2001_I552541 : public Analysis {
10 public:
11
12 /// Constructor
13 RIVET_DEFAULT_ANALYSIS_CTOR(CLEO_2001_I552541);
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(UnstableParticles(), "UFS");
24
25 book(_d_Dbar0[0], "/TMP/d_D0_low" );
26 book(_d_Dbar0[1], "/TMP/d_D0_high");
27 book(_d_Dm[0] , "/TMP/d_Dm_low" );
28 book(_d_Dm[1] , "/TMP/d_Dm_high");
29 book(_d_Lam[0] , "/TMP/d_La_low" );
30 book(_d_Lam[1] , "/TMP/d_La_high");
31
32 book(_n_Dbar0[0][0], "/TMP/d_D0_low_low" );
33 book(_n_Dbar0[0][1], "/TMP/d_D0_low_high" );
34 book(_n_Dbar0[1][0], "/TMP/d_D0_high_low" );
35 book(_n_Dbar0[1][1], "/TMP/d_D0_high_high");
36 book(_n_Dm[0][0] , "/TMP/d_Dm_low_low" );
37 book(_n_Dm[0][1] , "/TMP/d_Dm_low_high" );
38 book(_n_Dm[1][0] , "/TMP/d_Dm_high_low" );
39 book(_n_Dm[1][1] , "/TMP/d_Dm_high_high");
40 book(_n_Lam[0][0] , "/TMP/d_La_low_low" );
41 book(_n_Lam[0][1] , "/TMP/d_La_low_high" );
42 book(_n_Lam[1][0] , "/TMP/d_La_high_low" );
43 book(_n_Lam[1][1] , "/TMP/d_La_high_high");
44
45 }
46
47 /// Perform the per-event analysis
48 void analyze(const Event& event) {
49 const UnstableParticles& ufs = apply<UnstableParticles>(event, "UFS");
50 for (const Particle& p : ufs.particles(Cuts::pid==-4122 or Cuts::pid==-411 or Cuts::pid==-421)) {
51 long id1 = p.pid();
52 double mom1 = p.p3().mod();
53 if(mom1<2.3*GeV || mom1>5.*GeV) continue;
54 bool high1 = mom1>3.3*GeV;
55 if(id1==-4122) {
56 _d_Lam[high1]->fill();
57 }
58 else if(id1==-411) {
59 _d_Dm[high1]->fill();
60 }
61 else if(id1==-421) {
62 _d_Dbar0[high1]->fill();
63 }
64 for (const Particle& p2 : ufs.particles(Cuts::pid==4122)) {
65 if(p.p3().angle(p2.p3())<0.5*M_PI) continue;
66 double mom2 = p2.p3().mod();
67 if(mom2<2.3*GeV || mom2>5.*GeV) continue;
68 bool high2 = mom2>3.3*GeV;
69 if(id1==-4122) {
70 _n_Lam[high1][high2]->fill();
71 }
72 else if(id1==-411) {
73 _n_Dm[high1][high2]->fill();
74 }
75 else if(id1==-421) {
76 _n_Dbar0[high1][high2]->fill();
77 }
78 }
79 }
80 }
81
82
83 /// Normalise histograms etc., after the run
84 void finalize() {
85 Estimate0D R_D0_low_low = (*_n_Dbar0[0][0]/ *_d_Dbar0[0]);
86 Estimate0D R_D0_low_high = (*_n_Dbar0[0][1]/ *_d_Dbar0[0]);
87 Estimate0D R_D0_high_low = (*_n_Dbar0[1][0]/ *_d_Dbar0[1]);
88 Estimate0D R_D0_high_high = (*_n_Dbar0[1][1]/ *_d_Dbar0[1]);
89 Estimate0D R_Dm_low_low = (*_n_Dm[0][0] / *_d_Dm[0]);
90 Estimate0D R_Dm_low_high = (*_n_Dm[0][1] / *_d_Dm[0]);
91 Estimate0D R_Dm_high_low = (*_n_Dm[1][0] / *_d_Dm[1]);
92 Estimate0D R_Dm_high_high = (*_n_Dm[1][1] / *_d_Dm[1]);
93 Estimate0D R_Lam_low_low = (*_n_Lam[0][0] / *_d_Lam[0]);
94 Estimate0D R_Lam_low_high = (*_n_Lam[0][1] / *_d_Lam[0]);
95 Estimate0D R_Lam_high_low = (*_n_Lam[1][0] / *_d_Lam[1]);
96 Estimate0D R_Lam_high_high = (*_n_Lam[1][1] / *_d_Lam[1]);
97
98 for (size_t ix=3; ix<5; ++ix) {
99 for (size_t iy=1; iy<5; ++iy) {
100 double num(0.),den(0.),num_err(0.),den_err(0.);
101 if(ix==3) {
102 if(iy==1) {
103 den = R_D0_low_low.val();
104 den_err = R_D0_low_low.errPos();
105 }
106 else if(iy==2) {
107 den = R_D0_high_low.val();
108 den_err = R_D0_high_low.errPos();
109 }
110 else if(iy==3) {
111 den = R_D0_low_low.val();
112 den_err = R_D0_low_low.errPos();
113 }
114 else if(iy==4) {
115 den = R_D0_high_high.val();
116 den_err = R_D0_high_high.errPos();
117 }
118 }
119 else if(ix==4) {
120 if(iy==1) {
121 den = R_Dm_low_low.val();
122 den_err = R_Dm_low_low.errPos();
123 }
124 else if(iy==2) {
125 den = R_Dm_high_low.val();
126 den_err = R_Dm_high_low.errPos();
127 }
128 else if(iy==3) {
129 den = R_Dm_low_low.val();
130 den_err = R_Dm_low_low.errPos();
131 }
132 else if(iy==4) {
133 den = R_Dm_high_high.val();
134 den_err = R_Dm_high_high.errPos();
135 }
136 }
137 if(iy==1) {
138 num = R_Lam_low_low.val();
139 num_err = R_Lam_low_low.errPos();
140 }
141 else if(iy==2) {
142 num = R_Lam_high_low.val();
143 num_err = R_Lam_high_low.errPos();
144 }
145 else if(iy==3) {
146 num = R_Lam_low_low.val();
147 num_err = R_Lam_low_low.errPos();
148 }
149 else if(iy==4) {
150 num = R_Lam_high_high.val();
151 num_err = R_Lam_high_high.errPos();
152 }
153 double val = num/den;
154 double err = val>=0. ? val*sqrt(sqr(num_err/num)+sqr(den_err/den)) : 0.;
155 BinnedEstimatePtr<string> ratio;
156 book(ratio, ix, 1, iy);
157 ratio->bin(1).set(val, err);
158 }
159 }
160 }
161
162 /// @}
163
164
165 /// @name Histograms
166 /// @{
167 CounterPtr _d_Dbar0[2],_d_Dm[2],_d_Lam[2];
168 CounterPtr _n_Dbar0[2][2],_n_Dm[2][2],_n_Lam[2][2];
169 /// @}
170
171
172 };
173
174
175 RIVET_DECLARE_PLUGIN(CLEO_2001_I552541);
176
177
178}
|