Rivet analyses referenceCLEOII_1994_I381696Spectrum for $\Lambda_c^+(2595)$ and $\Lambda_c^+(2625)$ production at 10.58 GeVExperiment: CLEOII (CESR) Inspire ID: 381696 Status: VALIDATED Authors:
Beam energies: (5.3, 5.3) GeV Run details:
Spectrum for $\Lambda_c^+(2595)$ and $\Lambda_c^+(2625)$ production at 10.58 GeV measured by CLEOII. Source code: CLEOII_1994_I381696.cc 1// -*- C++ -*-
2#include "Rivet/Analysis.hh"
3#include "Rivet/Projections/Beam.hh"
4#include "Rivet/Projections/UnstableParticles.hh"
5
6namespace Rivet {
7
8
9 /// @brief Excited Lambda_c spectra
10 class CLEOII_1994_I381696 : public Analysis {
11 public:
12
13 /// Constructor
14 RIVET_DEFAULT_ANALYSIS_CTOR(CLEOII_1994_I381696);
15
16
17 /// @name Analysis methods
18 /// @{
19
20 /// Book histograms and initialise projections before the run
21 void init() {
22 // projections
23 declare(Beam(), "Beams");
24 declare(UnstableParticles(), "UFS");
25 // book histos
26 book(_h_2595,5,1,1);
27 book(_h_2625,6,1,1);
28 book(_r_2595,4,1,1);
29 book(_r_2625,4,1,2);
30 book(_c_lam,"TMP/c_lam");
31 }
32
33
34
35 void findDecayProducts(const Particle& mother, unsigned int & npip,
36 unsigned int & npim, unsigned int & nlam) {
37 for(const Particle & p : mother.children()) {
38 if(p.abspid() == 4122) ++nlam;
39 else if(p.pid()== 211) ++npip;
40 else if(p.pid()== -211) ++npim;
41 else if(!p.children().empty())
42 findDecayProducts(p,npip,npim,nlam);
43 }
44 }
45
46 /// Perform the per-event analysis
47 void analyze(const Event& event) {
48 static const int id2595 = 102142;
49 static const int id2625 = 102144;
50 // Get beams and average beam momentum
51 const ParticlePair& beams = apply<Beam>(event, "Beams").beams();
52 const double Emax = ( beams.first.p3().mod() + beams.second.p3().mod() ) / 2.0;
53 const UnstableParticles& ufs = apply<UnstableParticles>(event, "UFS");
54 for (const Particle& p : ufs.particles(Cuts::abspid==id2595 or
55 Cuts::abspid==id2625)) {
56 unsigned int nlam(0),npip(0),npim(0);
57 findDecayProducts(p,npip,npim,nlam);
58 bool isDecay = npip==1 && npim==1 && nlam==1;
59 // spectrum
60 if(p.abspid()==id2595) {
61 double Pmax = sqrt(sqr(Emax)-sqr(2.595));
62 double xp = p.momentum().p3().mod()/Pmax;
63 _h_2595->fill(xp);
64 if(isDecay) _r_2595->fill(10.55);
65 }
66 else {
67 double Pmax = sqrt(sqr(Emax)-sqr(2.625));
68 double xp = p.momentum().p3().mod()/Pmax;
69 _h_2625->fill(xp);
70 if(isDecay) _r_2625->fill(10.55);
71 }
72 }
73 unsigned int nlam = ufs.particles(Cuts::abspid==4122).size();
74 _c_lam->fill(nlam);
75 }
76
77
78 /// Normalise histograms etc., after the run
79 void finalize() {
80 normalize(_h_2595);
81 normalize(_h_2625);
82 scale(_r_2595, 0.06/ *_c_lam);
83 scale(_r_2625, 0.06/ *_c_lam);
84 }
85
86 /// @}
87
88
89 /// @name Histograms
90 /// @{
91 Histo1DPtr _h_2595,_h_2625;
92 Histo1DPtr _r_2595,_r_2625;
93 CounterPtr _c_lam;
94 /// @}
95
96
97 };
98
99
100 RIVET_DECLARE_PLUGIN(CLEOII_1994_I381696);
101
102}
|