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 book(_d_Dbar0[0], "/TMP/d_D0_low" );
25 book(_d_Dbar0[1], "/TMP/d_D0_high");
26 book(_d_Dm[0] , "/TMP/d_Dm_low" );
27 book(_d_Dm[1] , "/TMP/d_Dm_high");
28 book(_d_Lam[0] , "/TMP/d_La_low" );
29 book(_d_Lam[1] , "/TMP/d_La_high");
30
31 book(_n_Dbar0[0][0], "/TMP/d_D0_low_low" );
32 book(_n_Dbar0[0][1], "/TMP/d_D0_low_high" );
33 book(_n_Dbar0[1][0], "/TMP/d_D0_high_low" );
34 book(_n_Dbar0[1][1], "/TMP/d_D0_high_high");
35 book(_n_Dm[0][0] , "/TMP/d_Dm_low_low" );
36 book(_n_Dm[0][1] , "/TMP/d_Dm_low_high" );
37 book(_n_Dm[1][0] , "/TMP/d_Dm_high_low" );
38 book(_n_Dm[1][1] , "/TMP/d_Dm_high_high");
39 book(_n_Lam[0][0] , "/TMP/d_La_low_low" );
40 book(_n_Lam[0][1] , "/TMP/d_La_low_high" );
41 book(_n_Lam[1][0] , "/TMP/d_La_high_low" );
42 book(_n_Lam[1][1] , "/TMP/d_La_high_high");
43
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 Scatter1D R_D0_low_low = *_n_Dbar0[0][0]/ *_d_Dbar0[0];
86 Scatter1D R_D0_low_high = *_n_Dbar0[0][1]/ *_d_Dbar0[0];
87 Scatter1D R_D0_high_low = *_n_Dbar0[1][0]/ *_d_Dbar0[1];
88 Scatter1D R_D0_high_high = *_n_Dbar0[1][1]/ *_d_Dbar0[1];
89 Scatter1D R_Dm_low_low = *_n_Dm[0][0] / *_d_Dm[0];
90 Scatter1D R_Dm_low_high = *_n_Dm[0][1] / *_d_Dm[0];
91 Scatter1D R_Dm_high_low = *_n_Dm[1][0] / *_d_Dm[1];
92 Scatter1D R_Dm_high_high = *_n_Dm[1][1] / *_d_Dm[1];
93 Scatter1D R_Lam_low_low = *_n_Lam[0][0] / *_d_Lam[0];
94 Scatter1D R_Lam_low_high = *_n_Lam[0][1] / *_d_Lam[0];
95 Scatter1D R_Lam_high_low = *_n_Lam[1][0] / *_d_Lam[1];
96 Scatter1D R_Lam_high_high = *_n_Lam[1][1] / *_d_Lam[1];
97 for(unsigned int ix=3;ix<5;++ix) {
98 for(unsigned int iy=1;iy<5;++iy) {
99 double num(0.),den(0.),num_err(0.),den_err(0.);
100 if(ix==3) {
101 if(iy==1) {
102 den = R_D0_low_low .points()[0].x();
103 den_err = R_D0_low_low .points()[0].xErrAvg();
104 }
105 else if(iy==2) {
106 den = R_D0_high_low .points()[0].x();
107 den_err = R_D0_high_low .points()[0].xErrAvg();
108 }
109 else if(iy==3) {
110 den = R_D0_low_low .points()[0].x();
111 den_err = R_D0_low_low .points()[0].xErrAvg();
112 }
113 else if(iy==4) {
114 den = R_D0_high_high.points()[0].x();
115 den_err = R_D0_high_high.points()[0].xErrAvg();
116 }
117 }
118 else if(ix==4) {
119 if(iy==1) {
120 den = R_Dm_low_low .points()[0].x();
121 den_err = R_Dm_low_low .points()[0].xErrAvg();
122 }
123 else if(iy==2) {
124 den = R_Dm_high_low .points()[0].x();
125 den_err = R_Dm_high_low .points()[0].xErrAvg();
126 }
127 else if(iy==3) {
128 den = R_Dm_low_low .points()[0].x();
129 den_err = R_Dm_low_low .points()[0].xErrAvg();
130 }
131 else if(iy==4) {
132 den = R_Dm_high_high.points()[0].x();
133 den_err = R_Dm_high_high.points()[0].xErrAvg();
134 }
135 }
136 if(iy==1) {
137 num = R_Lam_low_low .points()[0].x();
138 num_err = R_Lam_low_low .points()[0].xErrAvg();
139 }
140 else if(iy==2) {
141 num = R_Lam_high_low .points()[0].x();
142 num_err = R_Lam_high_low .points()[0].xErrAvg();
143 }
144 else if(iy==3) {
145 num = R_Lam_low_low .points()[0].x();
146 num_err = R_Lam_low_low .points()[0].xErrAvg();
147 }
148 else if(iy==4) {
149 num = R_Lam_high_high.points()[0].x();
150 num_err = R_Lam_high_high.points()[0].xErrAvg();
151 }
152 double val = num/den;
153 double err = val>=0. ? val*sqrt(sqr(num_err/num)+sqr(den_err/den)) : 0.;
154 Scatter2DPtr ratio;
155 book(ratio,ix, 1, iy);
156 Scatter2D temphisto(refData(ix, 1, iy));
157 const double x = temphisto.point(0).x();
158 pair<double,double> ex = temphisto.point(0).xErrs();
159 ratio->addPoint(x, val, ex, make_pair(err,err));
160 }
161 }
162 }
163
164 //@}
165
166
167 /// @name Histograms
168 //@{
169 CounterPtr _d_Dbar0[2],_d_Dm[2],_d_Lam[2];
170 CounterPtr _n_Dbar0[2][2],_n_Dm[2][2],_n_Lam[2][2];
171 //@}
172
173
174 };
175
176
177 // The hook for the plugin system
178 RIVET_DECLARE_PLUGIN(CLEO_2001_I552541);
179
180
181}
|