Rivet analyses referenceBABAR_2009_I836615Spectrum for $D^{*\pm}$ in $\Upsilon(1S)$ decaysExperiment: BABAR (PEP-II) Inspire ID: 836615 Status: VALIDATED Authors:
Beam energies: ANY Run details:
Spectrum for $D^{*\pm}$ in $\Upsilon(1S)$ decays measured by Babar Source code: BABAR_2009_I836615.cc 1// -*- C++ -*-
2#include "Rivet/Analysis.hh"
3#include "Rivet/Projections/UnstableParticles.hh"
4
5namespace Rivet {
6
7
8 /// @brief D*+/- in Upsilon(1S) decays
9 class BABAR_2009_I836615 : public Analysis {
10 public:
11
12 /// Constructor
13 RIVET_DEFAULT_ANALYSIS_CTOR(BABAR_2009_I836615);
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 the histogram
25 book(_hist,1,1,1);
26 }
27
28 /// Recursively walk the decay tree to find decay products of @a p
29 void findDecayProducts(Particle mother, Particles& unstable) {
30 for(const Particle & p: mother.children()) {
31 const int id = abs(p.pid());
32 if(id == 413) {
33 unstable.push_back(p);
34 }
35 if(!p.children().empty())
36 findDecayProducts(p, unstable);
37 }
38 }
39
40 /// Perform the per-event analysis
41 void analyze(const Event& event) {
42 // maximum momentum of D* calculated using PDG 2008 masses (as in paper)
43 static const double Pmax = 4.28172;
44 // Loop over the upsilons
45 // Find the Upsilons among the unstables
46 for(const Particle & ups : apply<UnstableParticles>(event, "UFS").particles(Cuts::pid==553)) {
47 // boost to rest frame
48 LorentzTransform boost;
49 if (ups.p3().mod() > 1*MeV)
50 boost = LorentzTransform::mkFrameTransformFromBeta(ups.momentum().betaVec());
51 // find D*
52 Particles unstable;
53 findDecayProducts(ups,unstable);
54 // loop over D*
55 for(const Particle& p : unstable) {
56 const FourMomentum p2 = boost.transform(p.momentum());
57 const double xP = p2.p3().mod()/Pmax;
58 _hist->fill(xP);
59 }
60 }
61 }
62
63
64 /// Normalise histograms etc., after the run
65 void finalize() {
66 normalize(_hist);
67 }
68
69 /// @}
70
71
72 /// @name Histograms
73 /// @{
74 Histo1DPtr _hist;
75 /// @}
76
77
78 };
79
80
81 RIVET_DECLARE_PLUGIN(BABAR_2009_I836615);
82
83}
|