Rivet analyses referenceCLEO_1992_I315181Baryon spectra in Υ(4S)Υ(4S) decaysExperiment: CLEO (CESR) Inspire ID: 315181 Status: VALIDATED Authors:
Beam energies: ANY Run details:
Measurement of the proton, Λ+cΛ+c, ΛΛ and Ξ−Ξ− momentum spectra in B decays at the Υ(4S)Υ(4S) by CLEO. Source code: CLEO_1992_I315181.cc 1// -*- C++ -*-
2#include "Rivet/Analysis.hh"
3#include "Rivet/Projections/UnstableParticles.hh"
4
5namespace Rivet {
6
7
8 /// @brief p, Lambda, Lambda_c and Xi spectra at Upsilon(4s)
9 class CLEO_1992_I315181 : public Analysis {
10 public:
11
12 /// Constructor
13 RIVET_DEFAULT_ANALYSIS_CTOR(CLEO_1992_I315181);
14
15
16 /// @name Analysis methods
17 /// @{
18
19 /// Book histograms and initialise projections before the run
20 void init() {
21 declare(UnstableParticles(), "UFS");
22 book(_c_ups,"/TMP/c_ups");
23 book(_h_p ,1,1,1);
24 book(_h_Lambda_c,2,1,1);
25 book(_h_Lambda ,3,1,1);
26 book(_h_Xi ,4,1,1);
27 }
28
29 void findDecayProducts(Particle parent, Particles & protons, Particles & lambda_c, Particles & lambda, Particles & xi) {
30 for(const Particle & p : parent.children()) {
31 if (p.abspid() == PID::PROTON) {
32 protons.push_back(p);
33 continue;
34 }
35 else if(p.abspid()== PID::LAMBDA) {
36 lambda.push_back(p);
37 continue;
38 }
39 else if(p.abspid()== PID::XIMINUS) {
40 xi.push_back(p);
41 }
42 else if(p.abspid()== 4122) {
43 lambda_c.push_back(p);
44 }
45 if (!p.children().empty())
46 findDecayProducts(p,protons,lambda_c,lambda,xi);
47 }
48 }
49
50 /// Perform the per-event analysis
51 void analyze(const Event& event) {
52 // Find the upsilons
53 for (const Particle& ups : apply<UnstableParticles>(event, "UFS").particles(Cuts::pid==300553)) {
54 _c_ups->fill();
55 Particles protons,lambda_c,lambda,xi;
56 findDecayProducts(ups,protons,lambda_c,lambda,xi);
57 LorentzTransform boost;
58 if (ups.p3().mod() > 1*MeV)
59 boost = LorentzTransform::mkFrameTransformFromBeta(ups.momentum().betaVec());
60 for(const Particle & p : protons) {
61 double pcm = boost.transform(p.momentum()).p3().mod();
62 _h_p->fill(pcm);
63 }
64 for(const Particle & p : lambda_c) {
65 double pcm = boost.transform(p.momentum()).p3().mod();
66 _h_Lambda_c->fill(pcm);
67 }
68 for(const Particle & p : lambda) {
69 double pcm = boost.transform(p.momentum()).p3().mod();
70 _h_Lambda->fill(pcm);
71 }
72 for(const Particle & p : xi) {
73 double pcm = boost.transform(p.momentum()).p3().mod();
74 _h_Xi->fill(pcm);
75 }
76 }
77 }
78
79
80 /// Normalise histograms etc., after the run
81 void finalize() {
82 // br for lambda_c mode used (p K- pi+)
83 double br=0.0623;
84 scale(_h_p ,0.5 / *_c_ups);
85 scale(_h_Lambda_c,0.5*br/ *_c_ups);
86 scale(_h_Lambda ,0.5 / *_c_ups);
87 scale(_h_Xi ,0.5 / *_c_ups);
88 }
89
90 /// @}
91
92
93 /// @name Histograms
94 /// @{
95 CounterPtr _c_ups;
96 Histo1DPtr _h_p,_h_Lambda_c,_h_Lambda,_h_Xi;
97 /// @}
98
99
100 };
101
102
103 RIVET_DECLARE_PLUGIN(CLEO_1992_I315181);
104
105}
|