rivet is hosted by Hepforge, IPPP Durham

## Rivet analyses reference

### ARGUS_1990_I283027

Anti-deuteron production in $\Upsilon$ decays
Experiment: ARGUS (DORIS)
Inspire ID: 283027
Status: VALIDATED
Authors:
• Peter Richardson
References:
• Phys.Lett. B236 (1990) 102-108
Beams: * *
Beam energies: ANY
Run details:
• Upsilon(1S) decays (originally e+e- production)

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 rescaled to the $\Upsilon(1S)$.

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