Processing math: 100%
rivet is hosted by Hepforge, IPPP Durham

Rivet analyses reference

BABAR_2010_I867611

Helicity angle distributions in excited D meson decays
Experiment: BABAR (PEP-II)
Inspire ID: 867611
Status: VALIDATED
Authors:
  • Peter Richardson
References:
  • Phys.Rev. D82 (2010) 111101
Beams: * *
Beam energies: ANY
Run details:
  • Any process producing excited D mesons

The decays DD+πD0π+π are used to measure the helicity angle, i.e. the angle between the two pions in the rest frame of the D. The decays of D1(2420)0, D2(2460)0, D(2550)0, D(2600), D(2750) were measured. The data were read from the plots in the papers and therefore for the D1(2420)0, D2(2460)0 the error bars are the size of the points in the plots.

Source code: BABAR_2010_I867611.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 decay distributions
  9  class BABAR_2010_I867611 : public Analysis {
 10  public:
 11
 12    /// Constructor
 13    RIVET_DEFAULT_ANALYSIS_CTOR(BABAR_2010_I867611);
 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_ctheta, 1,1,1);
 27      book(_h_D2_ctheta, 1,1,2);
 28      book(_h_D02S_ctheta, 1,1,3);
 29      book(_h_DStar02S_ctheta, 1,1,4);
 30      book(_h_D3_ctheta, 1,1,5);
 31    }
 32
 33    /// Recursively walk the decay tree to find decay products of @a p
 34    void findDecayProducts(Particle mother, Particles& dstar, Particles& d0, Particles& pi, unsigned int& ncount) {
 35      for(const Particle & p: mother.children()) {
 36        if(p.abspid()==413)
 37          dstar.push_back(p);
 38        else if(p.abspid()==421)
 39          d0.push_back(p);
 40        else if(p.abspid()==211)
 41          pi.push_back(p);
 42        ncount +=1;
 43      }
 44    }
 45
 46    /// Perform the per-event analysis
 47    void analyze(const Event& event) {
 48      for(const Particle& p : apply<UnstableParticles>(event, "UFS").particles(Cuts::abspid==425 || Cuts::abspid==10423 ||
 49                                                                               Cuts::abspid==100421 || Cuts::abspid==100423 ||
 50                                                                               Cuts::abspid==427)) {
 51        // decay products
 52        Particles dstar,d0,pi;
 53        unsigned int ncount=0;
 54        findDecayProducts(p,dstar,d0, pi,ncount);
 55        if(ncount!=2 || dstar.size()!=1 || pi.size()!=1 || d0.size()!=0 ) continue;
 56        if(dstar[0].pid()/p.pid()<0) continue;
 57        Particle p2 = dstar[0];
 58        LorentzTransform boost = LorentzTransform::mkFrameTransformFromBeta(p2.momentum().betaVec());
 59        Vector3 d1 = boost.transform(pi[0].momentum()).p3().unit();
 60        ncount=0;
 61        dstar.clear();
 62        d0.clear();
 63        pi.clear();
 64        findDecayProducts(p2,dstar,d0, pi,ncount);
 65        if(ncount!=2 || dstar.size()!=0 || pi.size()!=1 || d0.size()!=1 ) continue;
 66        if(pi[0].pid()/p2.pid()<0) continue;
 67        Vector3 d2 = boost.transform(pi[0].momentum()).p3().unit();
 68        double cTheta  = d1.dot(d2);
 69        // decay angles
 70        if(p.abspid()==425)
 71          _h_D2_ctheta->fill(cTheta);
 72        else if(p.abspid()==10423)
 73          _h_D1_ctheta->fill(cTheta);
 74        else if(p.abspid()==100421)
 75          _h_D02S_ctheta->fill(cTheta);
 76        else if(p.abspid()==100423)
 77          _h_DStar02S_ctheta->fill(cTheta);
 78        else if(p.abspid()==427)
 79          _h_D3_ctheta->fill(cTheta);
 80      }
 81    }
 82
 83    /// Normalise histograms etc., after the run
 84    void finalize() {
 85      normalize(_h_D1_ctheta);
 86      normalize(_h_D2_ctheta);
 87      normalize(_h_D02S_ctheta);
 88      normalize(_h_DStar02S_ctheta);
 89      normalize(_h_D3_ctheta);
 90    }
 91
 92    /// @}
 93
 94
 95    /// @name Histograms
 96    /// @{
 97    Histo1DPtr _h_D1_ctheta,_h_D2_ctheta,_h_D02S_ctheta;
 98    Histo1DPtr _h_DStar02S_ctheta,_h_D3_ctheta;
 99    /// @}
100
101  };
102
103
104
105  RIVET_DECLARE_PLUGIN(BABAR_2010_I867611);
106
107}