Rivet analyses referenceCLEOII_1997_I424575Spectra for $\Sigma_c^{* ++,0}$ at 10.58 GeVExperiment: CLEOII (CESR) Inspire ID: 424575 Status: VALIDATED Authors:
Beam energies: (5.3, 5.3) GeV Run details:
Spectrum for the average of $\Sigma_c^{*0}$ and $\Sigma_c^{*++}$ produced at 10.58 GeV measured by CLEOII. Source code: CLEOII_1997_I424575.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 Sigma*_c spectra
10 class CLEOII_1997_I424575 : public Analysis {
11 public:
12
13 /// Constructor
14 RIVET_DEFAULT_ANALYSIS_CTOR(CLEOII_1997_I424575);
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_cTheta,2,1,1);
27 book(_h_x ,3,1,1);
28 }
29
30
31 /// Perform the per-event analysis
32 void analyze(const Event& event) {
33 // Get beams and average beam momentum
34 const ParticlePair& beams = apply<Beam>(event, "Beams").beams();
35 const double Emax = ( beams.first.p3().mod() + beams.second.p3().mod() ) / 2.0;
36 const double Pmax = sqrt(sqr(Emax)-sqr(2.518));
37 const UnstableParticles& ufs = apply<UnstableParticles>(event, "UFS");
38 for (const Particle& p : ufs.particles(Cuts::abspid==4114 or Cuts::abspid==4224)) {
39 // momentum fraction
40 double xp = p.momentum().p3().mod()/Pmax;
41 _h_x->fill(xp);
42 if(p.children().size()!=2) continue;
43 // decay angle
44 Particle pi;
45 int sign = p.pid()/p.abspid();
46 if(p.abspid()==4224) {
47 if(p.children()[0].pid() == sign*4122 &&
48 p.children()[1].pid() == sign*211 ) {
49 pi=p.children()[1];
50 }
51 else if(p.children()[1].pid() == sign*4122 &&
52 p.children()[0].pid() == sign*211 ) {
53 pi=p.children()[0];
54 }
55 else
56 continue;
57 }
58 else {
59 if(p.children()[0].pid() == sign*4122 &&
60 p.children()[1].pid() == -sign*211 ) {
61 pi=p.children()[1];
62 }
63 else if(p.children()[1].pid() == sign*4122 &&
64 p.children()[0].pid() == -sign*211 ) {
65 pi=p.children()[0];
66 }
67 else
68 continue;
69 }
70 LorentzTransform boost = LorentzTransform::mkFrameTransformFromBeta(p.momentum().betaVec());
71 Vector3 axis = boost.transform(pi.momentum()).p3().unit();
72 double cosL = axis.dot(p.momentum().p3().unit());
73 _h_cTheta->fill(cosL);
74 }
75 }
76
77
78 /// Normalise histograms etc., after the run
79 void finalize() {
80 normalize(_h_x ,1.,false);
81 normalize(_h_cTheta,1.,false);
82 }
83
84 /// @}
85
86
87 /// @name Histograms
88 /// @{
89 Histo1DPtr _h_x,_h_cTheta;
90 /// @}
91
92
93 };
94
95
96 RIVET_DECLARE_PLUGIN(CLEOII_1997_I424575);
97
98}
|