rivet is hosted by Hepforge, IPPP Durham

Rivet analyses reference

CLEOC_2008_I780363

Kinematic distributions in the decay $D^+\to K^-\pi^+\pi^+$
Experiment: CLEOC (CESR)
Inspire ID: 780363
Status: VALIDATED
Authors:
  • Peter Richardson
References:
  • Phys. Rev. D78:052001, 2008
Beams: * *
Beam energies: ANY
Run details:
  • Any process producing D+/-

Kinematic distributions in the decay $D^+\to K^-\pi^+\pi^+$. The first part of the efficiency function given in the paper is applied, although the second is not as it makes the agreement between the modesl show in the paper much worse.

Source code: CLEOC_2008_I780363.cc
  1// -*- C++ -*-
  2#include "Rivet/Analysis.hh"
  3#include "Rivet/Projections/UnstableParticles.hh"
  4#include "Rivet/Projections/DecayedParticles.hh"
  5
  6namespace Rivet {
  7
  8
  9  /// @brief D+ -> K- pi+ pi+
 10  class CLEOC_2008_I780363 : public Analysis {
 11  public:
 12
 13    /// Constructor
 14    RIVET_DEFAULT_ANALYSIS_CTOR(CLEOC_2008_I780363);
 15
 16
 17    /// @name Analysis methods
 18    /// @{
 19
 20    /// Book histograms and initialise projections before the run
 21    void init() {
 22      // Initialise and register projections
 23      UnstableParticles ufs = UnstableParticles(Cuts::abspid==411);
 24      declare(ufs, "UFS");
 25      DecayedParticles DP(ufs);
 26      DP.addStable(PID::PI0);
 27      DP.addStable(PID::K0S);
 28      DP.addStable(PID::ETA);
 29      DP.addStable(PID::ETAPRIME);
 30      declare(DP, "DP");
 31      // histos
 32      book(_h_Kpiall,1,1,1);
 33      book(_h_pipi  ,1,2,1);
 34
 35    }
 36    
 37    /// Perform the per-event analysis
 38    void analyze(const Event& event) {
 39      // parameters from the efficiency function, table 1 in paper
 40      static const double E1   = -0.0153;
 41      static const double E2   = -0.030;
 42      static const double E3   =  0.162;
 43      static const double Exy  = -0.053;
 44      static const double Exyn =  0.673;
 45      // static const double Eth[3] = {4.25,4.25,2.907};
 46
 47
 48      static const map<PdgId,unsigned int> & mode   = { { 211,2},{-321,1}};
 49      static const map<PdgId,unsigned int> & modeCC = { {-211,2},{ 321,1}};
 50      DecayedParticles DP = apply<DecayedParticles>(event, "DP");
 51      // loop over particles
 52      for(unsigned int ix=0;ix<DP.decaying().size();++ix) {
 53	int sign = 1;
 54	if (DP.decaying()[ix].pid()>0 && DP.modeMatches(ix,3,mode)) {
 55	  sign=1;
 56	}
 57	else if  (DP.decaying()[ix].pid()<0 && DP.modeMatches(ix,3,modeCC)) {
 58	  sign=-1;
 59	}
 60	else
 61	  continue;
 62	const Particle  & Km = DP.decayProducts()[ix].at(-sign*321)[0];
 63	const Particles & pip= DP.decayProducts()[ix].at( sign*211);
 64	// kinematic variables
 65	double x[3]  = {(Km    .momentum() +pip[0].momentum()).mass2(),
 66			(Km    .momentum() +pip[1].momentum()).mass2(),
 67			(pip[0].momentum()+pip[1].momentum()).mass2()};
 68	if(x[1]<x[0]) swap(x[0],x[1]);
 69	// calculate the efficiency, eqns 6,7 from paper
 70	// double xmax[3] = {sqr(meson.mass()-pip[0].mass()),
 71	// 		    sqr(meson.mass()-pip[0].mass()),
 72	// 		    sqr(meson.mass()-Km  .mass())};
 73	double xh = x[0]-1.5,yh=x[1]-1.5;
 74	double eff = (1.+E1*(xh+yh)+E2*(sqr(xh)+sqr(yh))+E3*(pow(xh,3)+pow(yh,3))
 75		      +Exy*xh*yh+Exyn*xh*yh*(xh+yh));
 76	// double T=1.;
 77	// for(unsigned int ix=2;ix<3;++ix) {
 78	//   double arg = Eth[ix]*abs(x[ix]-xmax[ix]);
 79	//   if(arg<0.5*M_PI) T *=sin(arg);
 80	// }
 81	// eff *=T;
 82	// fill plots
 83	_h_Kpiall->fill( x[0],eff);
 84	_h_Kpiall->fill( x[1],eff);
 85	_h_pipi  ->fill( x[2],eff);
 86      }
 87    }
 88
 89
 90    /// Normalise histograms etc., after the run
 91    void finalize() {
 92      normalize(_h_Kpiall);
 93      normalize(_h_pipi  );
 94    }
 95
 96    /// @}
 97
 98
 99    /// @name Histograms
100    /// @{
101    Histo1DPtr _h_Kpiall, _h_pipi;
102    /// @}
103
104  };
105
106
107  RIVET_DECLARE_PLUGIN(CLEOC_2008_I780363);
108
109}