Rivet analyses referenceARGUS_1990_I283027Anti-deuteron production in $\Upsilon$ decaysExperiment: ARGUS (DORIS) Inspire ID: 283027 Status: VALIDATED Authors:
Beam energies: ANY Run details:
Measurement of the anti-deuteron spectrum in $\Upsilon(1S)$ decays. The measurement was original an average of both $\Upsilon(1S)$ and $\Upsilon(2S)$ decays but the $\Upsilon(2S)$ sample is re-scaled to the $\Upsilon(1S)$. Source code: ARGUS_1990_I283027.cc 1// -*- C++ -*-
2#include "Rivet/Analysis.hh"
3#include "Rivet/Projections/UnstableParticles.hh"
4
5namespace Rivet {
6
7
8 /// @brief anti-deuteron spectrum in upslion decays
9 class ARGUS_1990_I283027 : public Analysis {
10 public:
11
12 /// Constructor
13 RIVET_DEFAULT_ANALYSIS_CTOR(ARGUS_1990_I283027);
14
15
16 /// @name Analysis methods
17 ///@{
18
19 /// Book histograms and initialise projections before the run
20 void init() {
21 // Initialise and register projections
22 declare(UnstableParticles(), "UFS");
23 // histograms
24 book(_h_p,1,1,1);
25 book(_w_ups,"TMP/w_ups");
26 }
27
28
29 /// Recursively walk the decay tree to find decay products of @a p
30 void findDecayProducts(Particle mother, Particles& deut) {
31 // deuteron id code
32 static const long id = -1000010020;
33 for(const Particle & p: mother.children()) {
34 if(p.pid() == id) {
35 deut.push_back(p);
36 }
37 else if(!p.children().empty())
38 findDecayProducts(p, deut);
39 }
40 }
41
42
43 /// Perform the per-event analysis
44 void analyze(const Event& event) {
45 for(const Particle & ups : apply<UnstableParticles>(event, "UFS").particles(Cuts::pid==553) ) {
46 _w_ups->fill();
47 Particles deut;
48 findDecayProducts(ups, deut);
49 if(deut.empty()) continue;
50 LorentzTransform boost;
51 if (ups.p3().mod() > 1*MeV)
52 boost = LorentzTransform::mkFrameTransformFromBeta(ups.momentum().betaVec());
53 for(const Particle& p : deut) {
54 double mom = boost.transform(p.momentum()).p3().mod();
55 _h_p->fill(mom);
56 }
57 }
58 }
59
60
61 /// Normalise histograms etc., after the run
62 void finalize() {
63 // direct upsilon decays, i.e. to gg gamma and ggg so need to renormalize
64 // factor and values from arxiv:0612019
65 double Bmumu=0.0249, rhad = 3.56;
66 double fact = 1.-(3.+rhad)*Bmumu;
67 scale(_h_p, 1e5/fact / *_w_ups);
68 }
69
70 ///@}
71
72
73 /// @name Histograms
74 ///@{
75 Histo1DPtr _h_p;
76 CounterPtr _w_ups;
77 ///@}
78
79
80 };
81
82
83 RIVET_DECLARE_PLUGIN(ARGUS_1990_I283027);
84
85}
|