rivet is hosted by Hepforge, IPPP Durham

Rivet analyses reference

CLEO_2007_I732065

$\chi_{c1}\to \eta\pi^+\pi^-$, $K^+K^-\pi^0$ and $\pi^+K^-K^0_S$
Experiment: CLEO (CESR)
Inspire ID: 732065
Status: VALIDATED NOHEPDATA
Authors:
  • Peter Richardson
References:
  • Phys.Rev.D 75 (2007) 032002
Beams: * *
Beam energies: ANY
Run details:
  • Any process producing chi_c originally e+e-

Measurement of the mass distributions in the decays $\chi_{c1}\to \eta\pi^+\pi^-$, $K^+K^-\pi^0$ and $\pi^+K^-K^0_S$. The data were read from the plots in the paper and may not be corrected for efficiency or background.

Source code: CLEO_2007_I732065.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 chi_c1 -> eta pi+pi- and KKpi
 10  class CLEO_2007_I732065 : public Analysis {
 11  public:
 12
 13    /// Constructor
 14    RIVET_DEFAULT_ANALYSIS_CTOR(CLEO_2007_I732065);
 15
 16
 17    /// @name Analysis methods
 18    /// @{
 19
 20    /// Book histograms and initialise projections before the run
 21    void init() {
 22      UnstableParticles ufs = UnstableParticles(Cuts::pid==20443);
 23      declare(ufs, "UFS");
 24      DecayedParticles chi(ufs);
 25      chi.addStable( PID::PI0);
 26      chi.addStable( PID::K0S);
 27      chi.addStable( PID::ETA);
 28      declare(chi, "chi");
 29      for(unsigned int ix=0;ix<3;++ix)
 30	for(unsigned int iy=0;iy<3;++iy)
 31	  book(_h[ix][iy],ix+1,1,iy+1);
 32      book(_dalitz[0],"dalitz_1",50,0.,12.,50,0., 9.);
 33      book(_dalitz[1],"dalitz_2",50,0.,10.,50,0.,10.);
 34      book(_dalitz[2],"dalitz_3",50,0.,10.,50,0.,10.);
 35    }
 36
 37
 38    /// Perform the per-event analysis
 39    void analyze(const Event& event) {
 40      static const map<PdgId,unsigned int> & mode1 = { { 221,1}, { 211,1}, {-211,1} };
 41      static const map<PdgId,unsigned int> & mode2 = { { 321,1}, {-321,1}, { 111,1} };
 42      static const map<PdgId,unsigned int> & mode3 = { {-321,1}, { 310,1}, { 211,1} };
 43      static const map<PdgId,unsigned int> & mode4 = { { 321,1}, { 310,1}, {-211,1} };
 44      DecayedParticles chi = apply<DecayedParticles>(event, "chi");
 45      // loop over particles
 46      for(unsigned int ix=0;ix<chi.decaying().size();++ix) {
 47	if(chi.modeMatches(ix,3,mode1)) {
 48	  const Particle & eta = chi.decayProducts()[ix].at( 221)[0];
 49	  const Particle & pim = chi.decayProducts()[ix].at(-211)[0];
 50	  const Particle & pip = chi.decayProducts()[ix].at( 211)[0];
 51	  double m1 = (pip.momentum()+pim.momentum()).mass2();
 52	  double m2 = (eta.momentum()+pip.momentum()).mass2();
 53	  double m3 = (eta.momentum()+pim.momentum()).mass2();
 54	  _dalitz[0]->fill(m2,m1);
 55	  _h[0][0]->fill(m1);
 56	  _h[0][1]->fill(m2);
 57	  _h[0][2]->fill(m3);
 58	}
 59	else if(chi.modeMatches(ix,3,mode2)) {
 60	  const Particle & pi0 = chi.decayProducts()[ix].at( 111)[0];
 61	  const Particle & Km  = chi.decayProducts()[ix].at(-321)[0];
 62	  const Particle & Kp  = chi.decayProducts()[ix].at( 321)[0];
 63	  double m1 = (pi0.momentum()+ Km.momentum()).mass2();
 64	  double m2 = (pi0.momentum()+ Kp.momentum()).mass2();
 65	  double m3 = (Kp .momentum()+ Km.momentum()).mass2();
 66	  _dalitz[1]->fill(m2,m1);
 67	  _h[1][0]->fill(m1);
 68	  _h[1][1]->fill(m2);
 69	  _h[1][2]->fill(m3);
 70	}
 71	else {
 72	  int sign=1;
 73	  if(chi.modeMatches(ix,3,mode3)) {
 74	    sign =  1;
 75	  }
 76	  else if(chi.modeMatches(ix,3,mode4)) {
 77	    sign = -1;
 78	  }
 79	  else continue;
 80	  const Particle & KS0 = chi.decayProducts()[ix].at( 310)[0];
 81	  const Particle & Km  = chi.decayProducts()[ix].at(-sign*321)[0];
 82	  const Particle & pip = chi.decayProducts()[ix].at( sign*211)[0];
 83	  double m1 = (pip.momentum()+ Km.momentum()).mass2();
 84	  double m2 = (pip.momentum()+KS0.momentum()).mass2();
 85	  double m3 = (Km .momentum()+KS0.momentum()).mass2();
 86	  _dalitz[2]->fill(m2,m1);
 87	  _h[2][0]->fill(m1);
 88	  _h[2][1]->fill(m2);
 89	  _h[2][2]->fill(m3);
 90	}
 91      }
 92    }
 93
 94
 95    /// Normalise histograms etc., after the run
 96    void finalize() {
 97      for(unsigned int ix=0;ix<3;++ix) {
 98	normalize(_dalitz[ix]);
 99	for(unsigned int iy=0;iy<3;++iy)
100	  normalize(_h[ix][iy]);
101      }
102    }
103
104    /// @}
105
106
107    /// @name Histograms
108    /// @{
109    Histo1DPtr _h[3][3];
110    Histo2DPtr _dalitz[3];
111    /// @}
112
113
114  };
115
116
117  RIVET_DECLARE_PLUGIN(CLEO_2007_I732065);
118
119}