rivet is hosted by Hepforge, IPPP Durham

Rivet analyses reference

ARGUS_1989_I268577

Spectrum and decay angle for $D^0_{2}$ production in $e^+e^-$ at 10 GeV in the continuum
Experiment: ARGUS (DORIS)
Inspire ID: 268577
Status: VALIDATED
Authors:
  • Peter Richardson
References:
  • Phys.Lett. B221 (1989) 422-426
Beams: e- e+
Beam energies: (5.0, 5.0) GeV
Run details:
  • $e^+ e^-$ analysis near the $\Upsilon$ resonances

Measurement of the $D^*_2(2460)^0$ spectrum in $e^+e^-$ collisions at 10 GeV. The decay angle of the $D^{+}$ with respect to the $D^*_2(2460)^0$ direction in the rest frame of the parent hadron, this gives information on the spin of the parent, is also measured.

Source code: ARGUS_1989_I268577.cc
 1// -*- C++ -*-
 2#include "Rivet/Analysis.hh"
 3#include "Rivet/Projections/UnstableParticles.hh"
 4
 5namespace Rivet {
 6
 7
 8  /// @brief D*2 spectrum and decay angle
 9  class ARGUS_1989_I268577 : public Analysis {
10  public:
11
12    /// Constructor
13    RIVET_DEFAULT_ANALYSIS_CTOR(ARGUS_1989_I268577);
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
25      // Book histograms
26      book(_h_rate     , 1, 1, 1);
27      book(_h_D2_x     , 2, 1, 1);
28      book(_h_D2_ctheta, 3, 1, 1);
29    }
30
31   
32   /// Recursively walk the decay tree to find decay products of @a p
33   void findDecayProducts(Particle mother, Particles & d, Particles & pi,unsigned int & ncount) {
34     for(const Particle & p: mother.children()) {
35       if(p.abspid()==411)
36	 d.push_back(p);
37       else if(p.abspid()==211)
38	 pi.push_back(p);
39       ncount +=1;
40     }
41   }
42
43    /// Perform the per-event analysis
44    void analyze(const Event& event) {
45      const UnstableParticles& ufs = apply<UnstableParticles>(event, "UFS");
46      for (const Particle& p : ufs.particles(Cuts::abspid==425)) {
47	const double xp = 2.*p.p3().mod()/sqrtS();
48	_h_D2_x->fill(xp);
49	// decay products
50	Particles d,pi;
51	unsigned int ncount=0;
52	findDecayProducts(p,d,pi,ncount);
53	if(ncount!=2 || d.size()!=1 || pi.size()!=1) continue;
54	if(d[0].pid()/p.pid()<0) continue;
55	LorentzTransform boost = LorentzTransform::mkFrameTransformFromBeta(p.momentum().betaVec());
56	Vector3 axis = boost.transform(pi[0].momentum()).p3().unit();
57	double cosL  = axis.dot(p.momentum().p3().unit());
58	// decay angles
59	_h_D2_ctheta->fill(cosL);
60	_h_rate->fill(10.);
61      }
62    }
63
64
65    /// Normalise histograms etc., after the run
66    void finalize() {
67      normalize(_h_D2_x);
68      normalize(_h_D2_ctheta);
69      // br of D mode used from PDG2018
70      static const double br=0.0898;
71      scale(_h_rate,br/sumOfWeights()*crossSection()/picobarn);
72    }
73
74    //@}
75
76
77    /// @name Histograms
78    //@{
79    Histo1DPtr _h_D2_x,_h_D2_ctheta,_h_rate;
80    //@}
81
82
83  };
84
85
86  // The hook for the plugin system
87  RIVET_DECLARE_PLUGIN(ARGUS_1989_I268577);
88
89
90}