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
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
// -*- C++ -*-
#include "Rivet/Analysis.hh"
#include "Rivet/Projections/UnstableParticles.hh"
#include "Rivet/Projections/DecayedParticles.hh"

namespace Rivet {


  /// @brief D+ -> K- pi+ pi+
  class CLEOC_2008_I780363 : public Analysis {
  public:

    /// Constructor
    DEFAULT_RIVET_ANALYSIS_CTOR(CLEOC_2008_I780363);


    /// @name Analysis methods
    //@{

    /// Book histograms and initialise projections before the run
    void init() {
      // Initialise and register projections
      UnstableParticles ufs = UnstableParticles(Cuts::abspid==411);
      declare(ufs, "UFS");
      DecayedParticles DP(ufs);
      DP.addStable(PID::PI0);
      DP.addStable(PID::K0S);
      DP.addStable(PID::ETA);
      DP.addStable(PID::ETAPRIME);
      declare(DP, "DP");
      // histos
      book(_h_Kpiall,1,1,1);
      book(_h_pipi  ,1,2,1);

    }
    
    /// Perform the per-event analysis
    void analyze(const Event& event) {
      // parameters from the efficiency function, table 1 in paper
      static const double E1   = -0.0153;
      static const double E2   = -0.030;
      static const double E3   =  0.162;
      static const double Exy  = -0.053;
      static const double Exyn =  0.673;
      // static const double Eth[3] = {4.25,4.25,2.907};


      static const map<PdgId,unsigned int> & mode   = { { 211,2},{-321,1}};
      static const map<PdgId,unsigned int> & modeCC = { {-211,2},{ 321,1}};
      DecayedParticles DP = apply<DecayedParticles>(event, "DP");
      // loop over particles
      for(unsigned int ix=0;ix<DP.decaying().size();++ix) {
	int sign = 1;
	if (DP.decaying()[ix].pid()>0 && DP.modeMatches(ix,3,mode)) {
	  sign=1;
	}
	else if  (DP.decaying()[ix].pid()<0 && DP.modeMatches(ix,3,modeCC)) {
	  sign=-1;
	}
	else
	  continue;
	const Particle  & Km = DP.decayProducts()[ix].at(-sign*321)[0];
	const Particles & pip= DP.decayProducts()[ix].at( sign*211);
	// kinematic variables
	double x[3]  = {(Km    .momentum() +pip[0].momentum()).mass2(),
			(Km    .momentum() +pip[1].momentum()).mass2(),
			(pip[0].momentum()+pip[1].momentum()).mass2()};
	if(x[1]<x[0]) swap(x[0],x[1]);
	// calculate the efficiency, eqns 6,7 from paper
	// double xmax[3] = {sqr(meson.mass()-pip[0].mass()),
	// 		    sqr(meson.mass()-pip[0].mass()),
	// 		    sqr(meson.mass()-Km  .mass())};
	double xh = x[0]-1.5,yh=x[1]-1.5;
	double eff = (1.+E1*(xh+yh)+E2*(sqr(xh)+sqr(yh))+E3*(pow(xh,3)+pow(yh,3))
		      +Exy*xh*yh+Exyn*xh*yh*(xh+yh));
	// double T=1.;
	// for(unsigned int ix=2;ix<3;++ix) {
	//   double arg = Eth[ix]*abs(x[ix]-xmax[ix]);
	//   if(arg<0.5*M_PI) T *=sin(arg);
	// }
	// eff *=T;
	// fill plots
	_h_Kpiall->fill( x[0],eff);
	_h_Kpiall->fill( x[1],eff);
	_h_pipi  ->fill( x[2],eff);
      }
    }


    /// Normalise histograms etc., after the run
    void finalize() {
      normalize(_h_Kpiall);
      normalize(_h_pipi  );
    }

    //@}


    /// @name Histograms
    //@{
    Histo1DPtr _h_Kpiall, _h_pipi;
    //@}


  };


  RIVET_DECLARE_PLUGIN(CLEOC_2008_I780363);

}