rivet is hosted by Hepforge, IPPP Durham

Rivet analyses reference

ARGUS_1989_I280943

Spectra and decay distributions for $D_1(2420)^0$ and $D^*_2(2460)^0$ production in $e^+e^-$ collisions at 10 GeV
Experiment: ARGUS (DORIS)
Inspire ID: 280943
Status: VALIDATED
Authors:
  • Peter Richardson
References:
  • Phys.Lett. B232 (1989) 398-404
Beams: e- e+
Beam energies: ANY
Run details:
  • e+e- to hadrons

Measurements of the scaled momentum spectrum for $D_1(2420)^0$ and $D^*_2(2460)^0$ production in $e^+e^-$ collisions at 10 GeV. The decays $D_1(2420)^0, D^*_2(2460)^0 \to D^{*+}\pi^-\to D^0\pi^+\pi^-$ were used and the helicity angle, i.e. the angle between the two pions in the rest frame of the $D^*$ are is measured.

Source code: ARGUS_1989_I280943.cc
  1// -*- C++ -*-
  2#include "Rivet/Analysis.hh"
  3#include "Rivet/Projections/UnstableParticles.hh"
  4
  5namespace Rivet {
  6
  7
  8  /// @brief D_1 and D_2 spectra and decay distributions
  9  class ARGUS_1989_I280943 : public Analysis {
 10  public:
 11
 12    /// Constructor
 13    RIVET_DEFAULT_ANALYSIS_CTOR(ARGUS_1989_I280943);
 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_D1_rate    ,1,1,1);
 27      book(_h_D2_rate    ,1,1,2);
 28      book(_h_D1_x       ,4,1,1);
 29      book(_h_D2_x       ,4,1,2);
 30      book(_h_D1_alpha   ,3,1,1);
 31      book(_h_D2_alpha   ,3,1,2);
 32    }
 33    
 34    /// Recursively walk the decay tree to find decay products of @a p
 35    void findDecayProducts(Particle mother, Particles & dstar, Particles & d0, Particles & pi,unsigned int & ncount) {
 36      for(const Particle & p: mother.children()) {
 37	if(p.abspid()==413)
 38	  dstar.push_back(p);
 39	else if(p.abspid()==421)
 40	  d0.push_back(p);
 41	else if(p.abspid()==211)
 42	  pi.push_back(p);
 43	ncount +=1;
 44      }
 45    }
 46
 47
 48    /// Perform the per-event analysis
 49    void analyze(const Event& event) {
 50      for(const Particle& p : apply<UnstableParticles>(event, "UFS").particles(Cuts::abspid==425 || Cuts::abspid==10423)) {
 51	const double xp = 2.*p.p3().mod()/sqrtS();
 52	// spectra
 53	if(p.abspid()==425)
 54	  _h_D2_x->fill(xp);
 55	else
 56	  _h_D1_x->fill(xp);
 57	// decay products
 58	// first od D_1,D_2
 59	Particles dstar,d0,pi;
 60	unsigned int ncount=0;
 61	findDecayProducts(p,dstar,d0, pi,ncount);
 62	if(ncount!=2 || dstar.size()!=1 || pi.size()!=1 || d0.size()!=0 ) continue;
 63	if(dstar[0].pid()/p.pid()<0) continue;
 64	if(p.abspid()==425)
 65	  _h_D2_rate->fill(10.);
 66	else
 67	  _h_D1_rate->fill(10.);
 68	Particle p2 = dstar[0];
 69	LorentzTransform boost = LorentzTransform::mkFrameTransformFromBeta(p2.momentum().betaVec());
 70	Vector3 d1 = boost.transform(pi[0].momentum()).p3().unit();
 71	// then of D*
 72	ncount=0;
 73	dstar.clear();
 74	d0.clear();
 75	pi.clear();
 76	findDecayProducts(p2,dstar,d0, pi,ncount);
 77	if(ncount!=2 || dstar.size()!=0 || pi.size()!=1 || d0.size()!=1 ) continue;
 78	if(pi[0].pid()/p2.pid()<0) continue;
 79	Vector3 d2 = boost.transform(pi[0].momentum()).p3().unit();
 80	double cosAlpha  = abs(d1.dot(d2));
 81	// decay angles
 82	if(p.abspid()==425)
 83	  _h_D2_alpha->fill(cosAlpha);
 84	else
 85	  _h_D1_alpha->fill(cosAlpha);
 86      }
 87    }
 88
 89
 90    /// Normalise histograms etc., after the run
 91    void finalize() {
 92
 93      normalize(_h_D1_x);
 94      normalize(_h_D2_x);
 95      normalize(_h_D1_alpha);
 96      normalize(_h_D2_alpha);
 97      scale(_h_D1_rate,crossSection()/picobarn/sumOfWeights());
 98      scale(_h_D2_rate,crossSection()/picobarn/sumOfWeights());
 99
100    }
101
102    //@}
103
104
105    /// @name Histograms
106    //@{
107    Histo1DPtr _h_D1_rate, _h_D2_rate;
108    Histo1DPtr _h_D1_x, _h_D2_x;
109    Histo1DPtr _h_D1_alpha, _h_D2_alpha;
110    //@}
111
112
113  };
114
115
116  // The hook for the plugin system
117  RIVET_DECLARE_PLUGIN(ARGUS_1989_I280943);
118
119
120}