Rivet analyses


title: BESIII_2019_I1716256

Form factors for the decays $\chi_{c(1,2)}\to J/\psi \mu^+\mu^-$

Experiment: BESIII (BEPC)

Inspire ID: 1716256

Status: VALIDATED NOHEPDATA

Authors: - Peter Richardson

References: - Phys.Rev.D 99 (2019) 5, 051101

Beams: * *

Beam energies: ANY

Run details: none listed

Measurement of the form factors and differential branching ratios for the decays $\chi_{c(1,2)}\to J/\psi \mu^+\mu^-$ by the BESIII collaboration.

Source code:BESIII_2019_I1716256.cc

```c++ // -- C++ --

include "Rivet/Analysis.hh"

include "Rivet/Projections/DecayedParticles.hh"

include "Rivet/Projections/UnstableParticles.hh"

namespace Rivet {

/// @brief chi_c -> J/psi mu+mu- class BESIII_2019_I1716256 : public Analysis { public:

/// Constructor
RIVET_DEFAULT_ANALYSIS_CTOR(BESIII_2019_I1716256);


/// @name Analysis methods
/// @{

/// Book histograms and initialise projections before the run
void init() {
  UnstableParticles ufs = UnstableParticles(Cuts::pid == 20443 || Cuts::pid == 445);
  declare(ufs, "UFS");
  DecayedParticles chi(ufs);
  chi.addStable(PID::JPSI);
  declare(chi, "chi");
  // Initialise and register projections
  for (unsigned int ix = 0; ix < 2; ++ix) {
    for (unsigned int iy = 0; iy < 2; ++iy) {
      book(_h[ix][iy], 1 + ix, 1, 1 + iy);
      book(_n[ix][iy], "TMP/n_" + toString(ix + 1) + "_" + toString(iy + 1));
    }
  }
}


/// Perform the per-event analysis
void analyze(const Event& event) {
  static double alpha = 7.2973525664e-3;
  static const map<PdgId, unsigned int>& mode1 = {{443, 1}, {22, 1}};
  static const map<PdgId, unsigned int>& mode2 = {{443, 1}, {13, 1}, {-13, 1}};
  DecayedParticles chi = apply<DecayedParticles>(event, "chi");
  // loop over particles
  for (unsigned int ix = 0; ix < chi.decaying().size(); ++ix) {
    unsigned int iloc = chi.decaying()[ix].pid() == 20443 ? 0 : 1;
    _n[iloc][0]->fill();
    if (chi.modeMatches(ix, 2, mode1)) {
      _n[iloc][1]->fill();
    }
    else if (chi.modeMatches(ix, 3, mode2)) {
      const Particle& mum = chi.decayProducts()[ix].at(13)[0];
      const Particle& mup = chi.decayProducts()[ix].at(-13)[0];
      const Particle& Jpsi = chi.decayProducts()[ix].at(443)[0];
      double q = (mum.momentum() + mup.momentum()).mass();
      // br
      _h[iloc][0]->fill(q);
      double M2 = chi.decaying()[ix].mass2();
      double m = Jpsi.mass();
      // factor for form factor (eqn 2 arXiv:1709.02444)
      double fact = alpha / 3. / M_PI / sqr(q) * sqrt((1. - sqr(m + q) / M2) * (1. - sqr(m - q) / M2))
          / (1. - sqr(m) / M2) * (1. + 2. * sqr(mum.mass() / q)) * sqrt(1. - 4. * sqr(mum.mass() / q));
      // additional factor of 2q from dq^2 = 2q dq
      _h[iloc][1]->fill(q, 1. / fact / 2 / q);
    }
  }
}


/// Normalise histograms etc., after the run
void finalize() {
  for (unsigned int ix = 0; ix < 2; ++ix) {
    for (unsigned int iy = 0; iy < 2; ++iy) {
      scale(_h[ix][iy], 1. / *_n[ix][iy]);
    }
    scale(_h[ix][0], 1e5);
  }
}
/// @}

/// @name Histograms
///@{
Histo1DPtr _h[2][2];
CounterPtr _n[2][2];

///@}

};

RIVET_DECLARE_PLUGIN(BESIII_2019_I1716256);

} ```