rivet is hosted by Hepforge, IPPP Durham

Rivet analyses reference

CLEOC_2008_I779705

Mass distributions in $D^0\to\eta\pi^+\pi^-$ decays
Experiment: CLEOC ()
Inspire ID: 779705
Status: VALIDATED
Authors:
  • Peter Richardson
References:
  • Phys.Rev. D77 (2008) 092003
Beams: * *
Beam energies: ANY
Run details:
  • Any process producing $d^0$ mesons, originally e+e-

Measurement of mass distributions in $D^0\to\eta\pi^+\pi^-$ decays by the CLEO experiment.

Source code: CLEOC_2008_I779705.cc
 1// -*- C++ -*-
 2#include "Rivet/Analysis.hh"
 3#include "Rivet/Projections/UnstableParticles.hh"
 4
 5namespace Rivet {
 6
 7
 8  /// @brief D0 -> eta pi+pi- decays
 9  class CLEOC_2008_I779705 : public Analysis {
10  public:
11
12    /// Constructor
13    RIVET_DEFAULT_ANALYSIS_CTOR(CLEOC_2008_I779705);
14
15
16    /// @name Analysis methods
17    ///@{
18
19    /// Book histograms and initialise projections before the run
20    void init() {
21      // projections
22      declare(UnstableParticles(),"UFS");
23      // histograms
24      book(_h_eta_pi,1,1,1);
25      book(_h_pi_pi ,1,1,2);
26    }
27
28    void findDecay(const Particle & parent, unsigned int & nstable,
29		   Particles & pip, Particles & pim, Particles & eta) {
30      for(const Particle & p : parent.children()) {
31	if(p.pid()==PID::PIPLUS) {
32	  ++nstable;
33	  pip.push_back(p);
34	}
35	else if(p.pid()==PID::PIMINUS) {
36	  ++nstable;
37	  pim.push_back(p);
38	}
39	else if(p.pid()==PID::ETA) {
40	  ++nstable;
41	  eta.push_back(p);
42	}
43	else if(p.children().empty() || p.pid()==PID::K0S) {
44	  ++nstable;
45	}
46	else {
47	  findDecay(p,nstable,pip,pim,eta);
48	}	
49      }
50    }
51    
52    /// Perform the per-event analysis
53    void analyze(const Event& event) {
54      for(const Particle & D0 : apply<UnstableParticles>(event,"UFS").particles(Cuts::abspid==421)) {
55	unsigned int nstable(0);
56	Particles pip, pim, eta;
57	findDecay(D0,nstable,pip,pim,eta);
58	if(nstable==3 && pip.size()==1 && pim.size()==1 && eta.size()==1) {
59	  if(D0.pid()<0) swap (pip,pim);
60	  _h_eta_pi->fill((pip[0].momentum()+eta[0].momentum()).mass());
61	  _h_pi_pi ->fill((pip[0].momentum()+pim[0].momentum()).mass());
62	}
63      }
64    }
65
66
67    /// Normalise histograms etc., after the run
68    void finalize() {
69      normalize(_h_eta_pi);
70      normalize(_h_pi_pi );
71    }
72
73    ///@}
74
75
76    /// @name Histograms
77    ///@{
78    Histo1DPtr _h_eta_pi,_h_pi_pi;
79    ///@}
80
81
82  };
83
84
85  RIVET_DECLARE_PLUGIN(CLEOC_2008_I779705);
86
87}