Rivet analyses referenceCLEO_2000_I526554$D_s^\pm$ and $D^{*\pm}_s$ spectra in the continuum near the $\Upsilon(4S)$Experiment: CLEO (CESR) Inspire ID: 526554 Status: VALIDATED Authors:
Beam energies: (5.3, 5.3) GeV Run details:
Analysis of charm quark fragmentation at 10.5 GeV, based on a data sample of 103 fb collected by the CLEO experiment. Fragmentation into $D^\pm_s$ and $D^{*\pm}_s$ mesons is studied. This analysis can be used to constrain charm fragmentation in Monte Carlo generators. The branching ratios $\text{B}_1=B(D^{*+}_s\to D_s^+\gamma)B(D_s^+\to\phi\pi^+)B(\phi\to K^+K^-)$ and $B_2=B(D_s^+\to\phi\pi^+)B(\phi\to K^+K^-)$, are not unfolded. Source code: CLEO_2000_I526554.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 Add a short analysis description here
10 class CLEO_2000_I526554 : public Analysis {
11 public:
12
13 /// Constructor
14 RIVET_DEFAULT_ANALYSIS_CTOR(CLEO_2000_I526554);
15
16
17 /// @name Analysis methods
18 /// @{
19
20 /// Book histograms and initialise projections before the run
21 void init() {
22 declare(Beam(), "Beams");
23 declare(UnstableParticles(), "UFS");
24
25 // Book histograms
26 book(_h_Ds_star1 , 1, 1, 1);
27 book(_h_Ds , 2, 1, 1);
28 book(_h_Ds_star2 , 3, 1, 1);
29 book(_h_Ds_primary, 4, 1, 1);
30
31 }
32
33
34 /// Perform the per-event analysis
35 void analyze(const Event& event) {
36 // Loop through unstable FS particles and look for charmed mesons
37 const UnstableParticles& ufs = apply<UnstableParticles>(event, "UFS");
38
39 const Beam beamproj = apply<Beam>(event, "Beams");
40 const ParticlePair& beams = beamproj.beams();
41 const FourMomentum mom_tot = beams.first.momentum() + beams.second.momentum();
42 LorentzTransform cms_boost;
43 if (mom_tot.p3().mod() > 1*MeV)
44 cms_boost = LorentzTransform::mkFrameTransformFromBeta(mom_tot.betaVec());
45 const double s = sqr(beamproj.sqrtS());
46 for (const Particle& p : ufs.particles(Cuts::abspid==431 or Cuts::abspid==433)) {
47 // 3-momentum in CMS frame
48 const double mom = cms_boost.transform(p.momentum()).vector3().mod();
49 const int pdgid = p.abspid();
50 double mH2(0.),xp(0.);
51 bool primary = true;
52 switch (pdgid) {
53 case 431:
54 // MSG_DEBUG("D_s found");
55 mH2 = sqr(1.96834);
56 xp = mom/sqrt(s/4.0 - mH2);
57 _h_Ds->fill(xp);
58 for(const Particle & mother : p.parents()) {
59 if(PID::isCharmMeson(mother.pid())) {
60 primary = false;
61 break;
62 }
63 }
64 if(primary)
65 _h_Ds_primary->fill(xp);
66 break;
67 case 433:
68 MSG_DEBUG("D_s* found");
69 mH2 = sqr(2.1122);
70 xp = mom/sqrt(s/4.0 - mH2);
71 _h_Ds_star1->fill(xp);
72 _h_Ds_star2->fill(xp);
73 break;
74 default:
75 break;
76 }
77 }
78 }
79
80
81 /// Normalise histograms etc., after the run
82 void finalize() {
83
84 // BR(D_s->phi pi) x BR(phi->K+K-)
85 double br2 = 0.0227;
86 // x D_s* -> gamma d_s
87 double br1 = br2*.935;
88 // cross section factor
89 double fact = crossSection()/picobarn/sumOfWeights();
90 // normalize the cross sections (bin width)
91 scale(_h_Ds_star1 , br1*fact*0.03 );
92 scale(_h_Ds , br2*fact*0.03 );
93 scale(_h_Ds_star2 , br2*fact*0.03 );
94 scale(_h_Ds_primary, br2*fact*0.03 );
95
96 }
97
98 /// @}
99
100
101 /// @name Histograms
102 /// @{
103 Histo1DPtr _h_Ds,_h_Ds_primary,_h_Ds_star1,_h_Ds_star2;
104 /// @}
105
106
107 };
108
109
110 RIVET_DECLARE_PLUGIN(CLEO_2000_I526554);
111
112
113}
|