rivet is hosted by Hepforge, IPPP Durham

Rivet analyses reference

BABAR_2017_I1512302

Dalitz plot analysis of $J/\psi\to\pi^+\pi^-\pi^0$, $K^+K^-\pi^0$ and $K^0_SK^\pm\pi^\mp$
Experiment: BABAR (PEP-II)
Inspire ID: 1512302
Status: VALIDATED NOHEPDATA
Authors:
  • Peter Richardson
References:
  • Phys.Rev.D 95 (2017) 7, 072007
Beams: * *
Beam energies: ANY
Run details:
  • Any process producing J/psi, originally e+e-

Measurement of the mass distributions in the decays $J/\psi\to\pi^+\pi^-\pi^0$, $K^+K^-\pi^0$ and $K^0_SK^\pm\pi^\mp$ by BaBar. The data were read from the plots in the paper and therefore for some points the error bars are the size of the point. Also the sideband background from the plots has been subtracted. It is also not clear that any resolution effects have been unfolded.

Source code: BABAR_2017_I1512302.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 J/psi dalitz decays
 10  class BABAR_2017_I1512302 : public Analysis {
 11  public:
 12
 13    /// Constructor
 14    RIVET_DEFAULT_ANALYSIS_CTOR(BABAR_2017_I1512302);
 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::pid== 443);
 24      declare(ufs, "UFS");
 25      DecayedParticles PSI(ufs);
 26      PSI.addStable(PID::PI0);
 27      PSI.addStable(PID::K0S);
 28      declare(PSI,"PSI");
 29      // histos
 30      book(_h_pippim,1,1,1);
 31      book(_h_pippi0,1,1,2);
 32      book(_dalitz_3pi, "dalitz_3pi",50,0.,9.,50,0.0,9.);
 33      book(_h_KpKm ,2,1,1);
 34      book(_h_Kppi0,2,1,2);
 35      book(_dalitz_KpKmpi, "dalitz_KpKmpi",50,0.,7.,50,0.0,7.);
 36      book(_h_K0Kp ,3,1,1);
 37      book(_h_K0pip,3,1,2);
 38      book(_h_Kppip,3,1,3);
 39      book(_dalitz_K0Kppim, "dalitz_K0Kppim",50,0.,8.,50,0.,8.);
 40    }
 41
 42    /// Perform the per-event analysis
 43    void analyze(const Event& event) {
 44      static const map<PdgId,unsigned int> & mode1   = { { 211,1},{-211,1}, {111,1}};
 45      static const map<PdgId,unsigned int> & mode2   = { { 321,1},{-321,1}, {111,1}};
 46      static const map<PdgId,unsigned int> & mode3   = { { 321,1},{-211,1}, {310,1}};
 47      static const map<PdgId,unsigned int> & mode3CC = { {-321,1},{ 211,1}, {310,1}};
 48      DecayedParticles PSI = apply<DecayedParticles>(event, "PSI");
 49      // loop over particles
 50      for(unsigned int ix=0;ix<PSI.decaying().size();++ix) {
 51	if (PSI.modeMatches(ix,3,mode1)) {
 52	  const Particle & pip = PSI.decayProducts()[ix].at( 211)[0];
 53	  const Particle & pim = PSI.decayProducts()[ix].at(-211)[0];
 54	  const Particle & pi0 = PSI.decayProducts()[ix].at( 111)[0];
 55	  double mminus = (pim.momentum()+pi0.momentum()).mass2();
 56	  double mplus  = (pip.momentum()+pi0.momentum()).mass2();
 57	  double mneut  = (pip.momentum()+pim.momentum()).mass2();
 58	  _h_pippim->fill(mneut );
 59	  _h_pippi0->fill(mplus );
 60	  _h_pippi0->fill(mminus);
 61	  _dalitz_3pi->fill(mplus,mminus);
 62	}
 63	else if (PSI.modeMatches(ix,3,mode2)) {
 64	  const Particle & Kp  = PSI.decayProducts()[ix].at( 321)[0];
 65	  const Particle & Km  = PSI.decayProducts()[ix].at(-321)[0];
 66	  const Particle & pi0 = PSI.decayProducts()[ix].at( 111)[0];
 67	  double mminus = (Km.momentum()+pi0.momentum()).mass2();
 68	  double mplus  = (Kp.momentum()+pi0.momentum()).mass2();
 69	  double mneut  = (Kp.momentum()+Km.momentum()).mass2();
 70	  _h_KpKm->fill(mneut );
 71	  _h_Kppi0->fill(mplus );
 72	  _h_Kppi0->fill(mminus);
 73	  _dalitz_KpKmpi->fill(mplus,mminus);
 74	}
 75	else {
 76	  int sign =1;
 77	  if     (PSI.modeMatches(ix,3,mode3  )) sign= 1;
 78	  else if(PSI.modeMatches(ix,3,mode3CC)) sign=-1;
 79	  else continue;
 80	  const Particle & Kp  = PSI.decayProducts()[ix].at( sign*321)[0];
 81	  const Particle & pim = PSI.decayProducts()[ix].at(-sign*211)[0];
 82	  const Particle & K0  = PSI.decayProducts()[ix].at(      310)[0];
 83	  double mplus  = (Kp.momentum()  +  K0.momentum()).mass2();
 84	  double mminus = (K0.momentum()  + pim.momentum()).mass2();
 85	  double mKK    = (Kp.momentum()  +  K0.momentum()).mass2();
 86	  _h_K0Kp ->fill(mKK);
 87	  _h_Kppip->fill(mplus);
 88	  _h_K0pip->fill(mminus);
 89	  _dalitz_K0Kppim->fill(mplus,mminus);
 90	}
 91      }
 92    }
 93
 94
 95    /// Normalise histograms etc., after the run
 96    void finalize() {
 97      normalize(_h_pippim,1.,false);
 98      normalize(_h_pippi0,1.,false);
 99      normalize(_dalitz_3pi);
100      normalize(_h_KpKm,1.,false);
101      normalize(_h_Kppi0,1.,false);
102      normalize(_dalitz_KpKmpi);
103      normalize(_h_Kppip);
104      normalize(_h_K0pip);
105      normalize(_h_K0Kp );
106      normalize(_dalitz_K0Kppim);
107    }
108
109    /// @}
110
111
112    /// @name Histograms
113    /// @{
114    Histo1DPtr _h_pippim,_h_pippi0;
115    Histo2DPtr _dalitz_3pi;
116    Histo1DPtr _h_KpKm,_h_Kppi0;
117    Histo2DPtr _dalitz_KpKmpi;
118    Histo1DPtr _h_Kppip,_h_K0pip,_h_K0Kp;
119    Histo2DPtr _dalitz_K0Kppim;
120    /// @}
121
122
123  };
124
125
126  RIVET_DECLARE_PLUGIN(BABAR_2017_I1512302);
127
128}