rivet is hosted by Hepforge, IPPP Durham

Rivet analyses reference

BESIII_2021_I1909391

Dalitz plot analysis of $D_s^+\to \pi^+\pi^+\pi^-$
Experiment: BESIII (BEPC)
Inspire ID: 1909391
Status: VALIDATED NOHEPDATA
Authors:
  • Peter Richardson
References: Beams: * *
Beam energies: ANY
Run details:
  • Any process producing D_s+ -> pi+ pi+ pi-

Measurement of the mass distributions in the decay $D_s^+\to \pi^+\pi^+\pi^-$. The data were read from the plots in the paper and in many case the size of the point was greater than the errors. Resolution/acceptance effects have been not unfolded, although the efficiency function given in the paper is applied. Given the agreement with the model in the paper this analysis should only be used for qualitative studies.

Source code: BESIII_2021_I1909391.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_s+ -> pi+pi+pi-
 10  class BESIII_2021_I1909391 : public Analysis {
 11  public:
 12
 13    /// Constructor
 14    RIVET_DEFAULT_ANALYSIS_CTOR(BESIII_2021_I1909391);
 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==431);
 24      declare(ufs, "UFS");
 25      DecayedParticles DS(ufs);
 26      DS.addStable(PID::PI0);
 27      DS.addStable(PID::K0S);
 28      declare(DS,"DS");
 29      // histos
 30      book(_h_pippim[0],1,1,1);
 31      book(_h_pippip   ,1,1,2);
 32      book(_h_pippim[1],1,1,3);
 33      book(_h_pippim[2],1,1,4);
 34      book(_dalitz, "dalitz",50,0.,3.5,50,0.0,3.5);
 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.064;
 41      static const double E2  = -0.066;
 42      static const double E3  = -0.006;
 43      static const double E11 = -0.158;
 44      static const double E12 =  0.090;
 45      static const double Eth[3] = {1.516,1.516,1.563};
 46      static const map<PdgId,unsigned int> & mode   = { { 211,2}, {-211,1}};
 47      static const map<PdgId,unsigned int> & modeCC = { {-211,2}, { 211,1}};
 48      DecayedParticles DS = apply<DecayedParticles>(event, "DS");
 49      // loop over particles
 50      for(unsigned int ix=0;ix<DS.decaying().size();++ix) {
 51	int sign = 1;
 52	if (DS.decaying()[ix].pid()>0 && DS.modeMatches(ix,3,mode)) {
 53	  sign=1;
 54	}
 55	else if  (DS.decaying()[ix].pid()<0 && DS.modeMatches(ix,3,modeCC)) {
 56	  sign=-1;
 57	}
 58	else
 59	  continue;
 60	const Particles & pip = DS.decayProducts()[ix].at( sign*211);
 61	const Particle  & pim = DS.decayProducts()[ix].at(-sign*211)[0];
 62	// kinematic variables
 63	double x[3] = {(pim.momentum()+pip[0].momentum()).mass2(),
 64		       (pim.momentum()+pip[1].momentum()).mass2(),
 65		       (pip[0].momentum()+pip[1].momentum()).mass2()};
 66	if(x[0]>x[1]) swap(x[0],x[1]);
 67	_dalitz->fill(x[0],x[1]);
 68	_dalitz->fill(x[1],x[0]);
 69	// calculate the efficiency
 70	double xh = x[0]-1.,yh=x[1]-1.;
 71	double eff = (1.+E1*(xh+yh)+E2*(sqr(xh)+sqr(yh))+E3*(pow(xh,3)+pow(yh,3))
 72		      +E11*xh*yh+E12*xh*yh*(xh+yh));
 73	double xmax = sqr(DS.decaying()[ix].mass()-pip[0].mass());
 74	double T=1.;
 75	for(unsigned int ix=0;ix<3;++ix) {
 76	  double arg = Eth[ix]*abs(x[ix]-xmax);
 77	  if(arg<0.5*M_PI) T *=sin(arg);
 78	}
 79	eff *=T;
 80	// fill plots
 81	_h_pippim[0]->fill(x[0],eff);
 82	_h_pippim[0]->fill(x[1],eff);
 83	_h_pippim[1]->fill(x[0],eff);
 84	_h_pippim[2]->fill(x[1],eff);
 85	_h_pippip   ->fill(x[2],eff);
 86      }
 87    }
 88
 89
 90    /// Normalise histograms etc., after the run
 91    void finalize() {
 92      for(unsigned int ix=0;ix<3;++ix)
 93	normalize(_h_pippim[ix]);
 94      normalize(_h_pippip);
 95      normalize(_dalitz);
 96    }
 97
 98    /// @}
 99
100
101    /// @name Histograms
102    /// @{
103    Histo1DPtr _h_pippim[3],_h_pippip;
104    Histo2DPtr _dalitz;
105    /// @}
106
107
108  };
109
110
111  RIVET_DECLARE_PLUGIN(BESIII_2021_I1909391);
112
113}