Rivet analyses

MC analysis of Dalitz plots in three-body ηc decays

Experiment: ()

Status: VALIDATED NOHEPDATA

Authors: - Peter Richardson

References: none listed

Beams: * *

Beam energies: ANY

Run details: - Any process producing eta_c mesons

Monte Carlo analysis of common three-body decays of etac mesons. The π+πη, π0π0η, π+πη, π0π0η, K+Kη, KS, L0KS, L0η, K+Kη, KS, L0KS, L0η, K+Kπ0, KS, L0KS, L0π0, KS, L0K+π, KS, L0Kπ+ modes are included.

Source code:MC_DALITZ_ETAC.cc

// -*- C++ -*-
#include "Rivet/Analysis.hh"
#include "Rivet/Projections/DecayedParticles.hh"
#include "Rivet/Projections/UnstableParticles.hh"

namespace Rivet {


  /// @brief eta_c Dalitz plots
  class MC_DALITZ_ETAC : public Analysis {
  public:

    /// Constructor
    RIVET_DEFAULT_ANALYSIS_CTOR(MC_DALITZ_ETAC);


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

    /// Book histograms and initialise projections before the run
    void init() {
      // Initialise and register projections
      UnstableParticles ufs = UnstableParticles(Cuts::pid == 441);
      declare(ufs, "UFS");
      DecayedParticles ETAC(ufs);
      ETAC.addStable(PID::PI0);
      ETAC.addStable(PID::K0S);
      ETAC.addStable(PID::ETA);
      ETAC.addStable(PID::ETAPRIME);
      declare(ETAC, "ETAC");
      // histos
      // pi+pi- eta
      book(_h1_pippim, "h01_pippim", 100, 0.2, 2.5);
      book(_h1_pipeta, "h01_pipeta", 100, 0.5, 3.0);
      book(_h1_pimeta, "h01_pimeta", 100, 0.5, 3.0);
      book(_dalitz[0], "dalitz01", 50, 0., 9., 50, 0., 9.);
      // pi0 pi0 eta
      book(_h2_pi0pi0, "h02_pi0pi0", 100, 0.2, 2.5);
      book(_h2_pi0eta, "h02_pi0eta", 100, 0.5, 3.0);
      book(_dalitz[1], "dalitz02", 50, 0., 9., 50, 0., 9.);
      // pi+pi- eta'
      book(_h3_pippim, "h03_pippim", 100, 0.2, 2.2);
      book(_h3_pipeta, "h03_pipeta", 100, 1.0, 3.0);
      book(_h3_pimeta, "h03_pimeta", 100, 1.0, 3.0);
      book(_dalitz[2], "dalitz03", 50, 0., 9., 50, 0., 9.);
      // pi0 pi0 eta'
      book(_h4_pi0pi0, "h04_pi0pi0", 100, 0.2, 2.2);
      book(_h4_pi0eta, "h04_pi0eta", 100, 1.0, 3.0);
      book(_dalitz[3], "dalitz04", 50, 0., 9., 50, 0., 9.);
      // K+K- eta
      book(_h5_KpKm, "h05_KpKm", 100, 0.5, 2.5);
      book(_h5_Kpeta, "h05_Kpeta", 100, 1.0, 3.0);
      book(_h5_Kmeta, "h05_Kmeta", 100, 1.0, 3.0);
      book(_dalitz[4], "dalitz05", 50, 1., 7., 50, 1., 7.);
      // KS0 KS0 eta
      book(_h6_KS0KS0, "h06_KS0KS0", 100, 0.5, 2.5);
      book(_h6_KS0eta, "h06_KS0eta", 100, 1.0, 3.0);
      book(_dalitz[5], "dalitz06", 50, 1., 7., 50, 1., 7.);
      // KL0 KL0 eta
      book(_h7_KL0KL0, "h07_KL0KL0", 100, 0.5, 2.5);
      book(_h7_KL0eta, "h07_KL0eta", 100, 1.0, 3.0);
      book(_dalitz[6], "dalitz07", 50, 1., 7., 50, 1., 7.);
      // K+K- eta'
      book(_h8_KpKm, "h08_KpKm", 100, 0.9, 2.2);
      book(_h8_Kpeta, "h08_Kpeta", 100, 1.3, 2.7);
      book(_h8_Kmeta, "h08_Kmeta", 100, 1.3, 2.7);
      book(_dalitz[7], "dalitz08", 50, 1.5, 6.5, 50, 1.5, 6.5);
      // KS0 KS0 eta'
      book(_h9_KS0KS0, "h09_KS0KS0", 100, 0.9, 2.2);
      book(_h9_KS0eta, "h09_KS0eta", 100, 1.3, 2.7);
      book(_dalitz[8], "dalitz09", 50, 1.5, 6.5, 50, 1.5, 6.5);
      // KL0 KL0 eta'
      book(_h10_KL0KL0, "h10_KL0KL0", 100, 0.9, 2.2);
      book(_h10_KL0eta, "h10_KL0eta", 100, 1.3, 2.7);
      book(_dalitz[9], "dalitz10", 50, 1.5, 6.5, 50, 1.5, 6.5);
      // K+K- pi0
      book(_h11_KpKm, "h11_KpKm", 100, 0.9, 2.8);
      book(_h11_Kppi0, "h11_Kppi0", 100, 0.6, 2.8);
      book(_h11_Kmpi0, "h11_Kmpi0", 100, 0.6, 2.8);
      book(_dalitz[10], "dalitz11", 50, 0.3, 6.5, 50, 0.3, 6.5);
      // KS0 KS0 pi0
      book(_h12_KS0KS0, "h12_KS0KS0", 100, 0.9, 2.8);
      book(_h12_KS0pi0, "h12_KS0pi0", 100, 0.6, 2.8);
      book(_dalitz[11], "dalitz12", 50, 0.3, 6.5, 50, 0.3, 6.5);
      // KL0 KL0 pi0
      book(_h13_KL0KL0, "h13_KL0KL0", 100, 0.9, 2.8);
      book(_h13_KL0pi0, "h13_KL0pi0", 100, 0.6, 2.8);
      book(_dalitz[12], "dalitz13", 50, 0.3, 6.5, 50, 0.3, 6.5);
      // KS0 K+ pi-
      book(_h14_KpKS0, "h14_KpKS0", 100, 0.9, 2.8);
      book(_h14_Kppim, "h14_Kppim", 100, 0.6, 2.8);
      book(_h14_KS0pim, "h14_KS0pim", 100, 0.6, 2.8);
      book(_dalitz[13], "dalitz14", 50, 0.3, 6.5, 50, 0.3, 6.5);
      // KS0 K- pi+
      book(_h15_KmKS0, "h15_KmKS0", 100, 0.9, 2.8);
      book(_h15_Kmpip, "h15_Kmpip", 100, 0.6, 2.8);
      book(_h15_KS0pip, "h15_KS0pip", 100, 0.6, 2.8);
      book(_dalitz[14], "dalitz15", 50, 0.3, 6.5, 50, 0.3, 6.5);
      // KL0 K+ pi-
      book(_h16_KpKL0, "h16_KpKL0", 100, 0.9, 2.8);
      book(_h16_Kppim, "h16_Kppim", 100, 0.6, 2.8);
      book(_h16_KL0pim, "h16_KL0pim", 100, 0.6, 2.8);
      book(_dalitz[15], "dalitz16", 50, 0.3, 6.5, 50, 0.3, 6.5);
      // KL0 K- pi+
      book(_h17_KmKL0, "h17_KmKL0", 100, 0.9, 2.8);
      book(_h17_Kmpip, "h17_Kmpip", 100, 0.6, 2.8);
      book(_h17_KL0pip, "h17_KL0pip", 100, 0.6, 2.8);
      book(_dalitz[16], "dalitz17", 50, 0.3, 6.5, 50, 0.3, 6.5);
    }

    /// Perform the per-event analysis
    void analyze(const Event& event) {
      static const map<PdgId, unsigned int>& mode1 = {{211, 1}, {-211, 1}, {221, 1}};
      static const map<PdgId, unsigned int>& mode2 = {{111, 2}, {221, 1}};
      static const map<PdgId, unsigned int>& mode3 = {{211, 1}, {-211, 1}, {331, 1}};
      static const map<PdgId, unsigned int>& mode4 = {{111, 2}, {331, 1}};
      static const map<PdgId, unsigned int>& mode5 = {{321, 1}, {-321, 1}, {221, 1}};
      static const map<PdgId, unsigned int>& mode6 = {{310, 2}, {221, 1}};
      static const map<PdgId, unsigned int>& mode7 = {{130, 2}, {221, 1}};
      static const map<PdgId, unsigned int>& mode8 = {{321, 1}, {-321, 1}, {331, 1}};
      static const map<PdgId, unsigned int>& mode9 = {{310, 2}, {331, 1}};
      static const map<PdgId, unsigned int>& mode10 = {{130, 2}, {331, 1}};
      static const map<PdgId, unsigned int>& mode11 = {{321, 1}, {-321, 1}, {111, 1}};
      static const map<PdgId, unsigned int>& mode12 = {{310, 2}, {111, 1}};
      static const map<PdgId, unsigned int>& mode13 = {{130, 2}, {111, 1}};
      static const map<PdgId, unsigned int>& mode14 = {{321, 1}, {-211, 1}, {310, 1}};
      static const map<PdgId, unsigned int>& mode15 = {{-321, 1}, {211, 1}, {310, 1}};
      static const map<PdgId, unsigned int>& mode16 = {{321, 1}, {-211, 1}, {130, 1}};
      static const map<PdgId, unsigned int>& mode17 = {{-321, 1}, {211, 1}, {130, 1}};
      DecayedParticles ETAC = apply<DecayedParticles>(event, "ETAC");
      // loop over particles
      for (unsigned int ix = 0; ix < ETAC.decaying().size(); ++ix) {
        if (ETAC.decaying()[ix].mass() < 2.93 || ETAC.decaying()[ix].mass() > 3.03) continue;
        // pi+ pi- eta
        if (ETAC.modeMatches(ix, 3, mode1)) {
          const Particle& pip = ETAC.decayProducts()[ix].at(211)[0];
          const Particle& pim = ETAC.decayProducts()[ix].at(-211)[0];
          const Particle& eta = ETAC.decayProducts()[ix].at(221)[0];
          double mplus = (pip.momentum() + eta.momentum()).mass2();
          double mminus = (pim.momentum() + eta.momentum()).mass2();
          double mpipi = (pip.momentum() + pim.momentum()).mass2();
          _h1_pippim->fill(sqrt(mpipi));
          _h1_pipeta->fill(sqrt(mplus));
          _h1_pimeta->fill(sqrt(mminus));
          _dalitz[0]->fill(mplus, mminus);
        }
        // pi0 pi0 eta
        else if (ETAC.modeMatches(ix, 3, mode2)) {
          const Particles& pi0 = ETAC.decayProducts()[ix].at(111);
          const Particle& eta = ETAC.decayProducts()[ix].at(221)[0];
          double m1 = (pi0[0].momentum() + eta.momentum()).mass2();
          double m2 = (pi0[1].momentum() + eta.momentum()).mass2();
          double mpipi = (pi0[0].momentum() + pi0[1].momentum()).mass2();
          _h2_pi0pi0->fill(sqrt(mpipi));
          _h2_pi0eta->fill(sqrt(m1));
          _h2_pi0eta->fill(sqrt(m2));
          _dalitz[1]->fill(m1, m2);
          _dalitz[1]->fill(m2, m1);
        }
        // pi+ pi- eta'
        else if (ETAC.modeMatches(ix, 3, mode3)) {
          const Particle& pip = ETAC.decayProducts()[ix].at(211)[0];
          const Particle& pim = ETAC.decayProducts()[ix].at(-211)[0];
          const Particle& etaP = ETAC.decayProducts()[ix].at(331)[0];
          double mplus = (pip.momentum() + etaP.momentum()).mass2();
          double mminus = (pim.momentum() + etaP.momentum()).mass2();
          double mpipi = (pip.momentum() + pim.momentum()).mass2();
          _h3_pippim->fill(sqrt(mpipi));
          _h3_pipeta->fill(sqrt(mplus));
          _h3_pimeta->fill(sqrt(mminus));
          _dalitz[2]->fill(mplus, mminus);
        }
        // pi0 pi0 eta'
        else if (ETAC.modeMatches(ix, 3, mode4)) {
          const Particles& pi0 = ETAC.decayProducts()[ix].at(111);
          const Particle& etaP = ETAC.decayProducts()[ix].at(331)[0];
          double m1 = (pi0[0].momentum() + etaP.momentum()).mass2();
          double m2 = (pi0[1].momentum() + etaP.momentum()).mass2();
          double mpipi = (pi0[0].momentum() + pi0[1].momentum()).mass2();
          _h4_pi0pi0->fill(sqrt(mpipi));
          _h4_pi0eta->fill(sqrt(m1));
          _h4_pi0eta->fill(sqrt(m2));
          _dalitz[3]->fill(m1, m2);
          _dalitz[3]->fill(m2, m1);
        }
        // K+K- eta
        else if (ETAC.modeMatches(ix, 3, mode5)) {
          const Particle& Kp = ETAC.decayProducts()[ix].at(321)[0];
          const Particle& Km = ETAC.decayProducts()[ix].at(-321)[0];
          const Particle& eta = ETAC.decayProducts()[ix].at(221)[0];
          double mplus = (Kp.momentum() + eta.momentum()).mass2();
          double mminus = (Km.momentum() + eta.momentum()).mass2();
          double mKK = (Kp.momentum() + Km.momentum()).mass2();
          _h5_KpKm->fill(sqrt(mKK));
          _h5_Kpeta->fill(sqrt(mplus));
          _h5_Kmeta->fill(sqrt(mminus));
          _dalitz[4]->fill(mplus, mminus);
        }
        // KS0 KS0 eta
        else if (ETAC.modeMatches(ix, 3, mode6)) {
          const Particles& KS0 = ETAC.decayProducts()[ix].at(310);
          const Particle& eta = ETAC.decayProducts()[ix].at(221)[0];
          double m1 = (KS0[0].momentum() + eta.momentum()).mass2();
          double m2 = (KS0[1].momentum() + eta.momentum()).mass2();
          double mKSKS = (KS0[0].momentum() + KS0[1].momentum()).mass2();
          _h6_KS0KS0->fill(sqrt(mKSKS));
          _h6_KS0eta->fill(sqrt(m1));
          _h6_KS0eta->fill(sqrt(m2));
          _dalitz[5]->fill(m1, m2);
          _dalitz[5]->fill(m2, m1);
        }
        // KL0 KL0 eta
        else if (ETAC.modeMatches(ix, 3, mode7)) {
          const Particles& KL0 = ETAC.decayProducts()[ix].at(130);
          const Particle& eta = ETAC.decayProducts()[ix].at(221)[0];
          double m1 = (KL0[0].momentum() + eta.momentum()).mass2();
          double m2 = (KL0[1].momentum() + eta.momentum()).mass2();
          double mKLKL = (KL0[0].momentum() + KL0[1].momentum()).mass2();
          _h7_KL0KL0->fill(sqrt(mKLKL));
          _h7_KL0eta->fill(sqrt(m1));
          _h7_KL0eta->fill(sqrt(m2));
          _dalitz[6]->fill(m1, m2);
          _dalitz[6]->fill(m2, m1);
        }
        // K+K- eta'
        else if (ETAC.modeMatches(ix, 3, mode8)) {
          const Particle& Kp = ETAC.decayProducts()[ix].at(321)[0];
          const Particle& Km = ETAC.decayProducts()[ix].at(-321)[0];
          const Particle& etaP = ETAC.decayProducts()[ix].at(331)[0];
          double mplus = (Kp.momentum() + etaP.momentum()).mass2();
          double mminus = (Km.momentum() + etaP.momentum()).mass2();
          double mKK = (Kp.momentum() + Km.momentum()).mass2();
          _h8_KpKm->fill(sqrt(mKK));
          _h8_Kpeta->fill(sqrt(mplus));
          _h8_Kmeta->fill(sqrt(mminus));
          _dalitz[7]->fill(mplus, mminus);
        }
        // KS0 KS0 eta'
        else if (ETAC.modeMatches(ix, 3, mode9)) {
          const Particles& KS0 = ETAC.decayProducts()[ix].at(310);
          const Particle& etaP = ETAC.decayProducts()[ix].at(331)[0];
          double m1 = (KS0[0].momentum() + etaP.momentum()).mass2();
          double m2 = (KS0[1].momentum() + etaP.momentum()).mass2();
          double mKSKS = (KS0[0].momentum() + KS0[1].momentum()).mass2();
          _h9_KS0KS0->fill(sqrt(mKSKS));
          _h9_KS0eta->fill(sqrt(m1));
          _h9_KS0eta->fill(sqrt(m2));
          _dalitz[8]->fill(m1, m2);
          _dalitz[8]->fill(m2, m1);
        }
        // KL0 KL0 eta'
        else if (ETAC.modeMatches(ix, 3, mode10)) {
          const Particles& KL0 = ETAC.decayProducts()[ix].at(130);
          const Particle& etaP = ETAC.decayProducts()[ix].at(331)[0];
          double m1 = (KL0[0].momentum() + etaP.momentum()).mass2();
          double m2 = (KL0[1].momentum() + etaP.momentum()).mass2();
          double mKLKL = (KL0[0].momentum() + KL0[1].momentum()).mass2();
          _h10_KL0KL0->fill(sqrt(mKLKL));
          _h10_KL0eta->fill(sqrt(m1));
          _h10_KL0eta->fill(sqrt(m2));
          _dalitz[9]->fill(m1, m2);
          _dalitz[9]->fill(m2, m1);
        }
        // K+ K- pi0
        else if (ETAC.modeMatches(ix, 3, mode11)) {
          const Particle& Kp = ETAC.decayProducts()[ix].at(321)[0];
          const Particle& Km = ETAC.decayProducts()[ix].at(-321)[0];
          const Particle& pi0 = ETAC.decayProducts()[ix].at(111)[0];
          double mplus = (Kp.momentum() + pi0.momentum()).mass2();
          double mminus = (Km.momentum() + pi0.momentum()).mass2();
          double mKK = (Kp.momentum() + Km.momentum()).mass2();
          _h11_KpKm->fill(sqrt(mKK));
          _h11_Kppi0->fill(sqrt(mplus));
          _h11_Kmpi0->fill(sqrt(mminus));
          _dalitz[10]->fill(mplus, mminus);
        }
        // KS0 KS0 pi0
        else if (ETAC.modeMatches(ix, 3, mode12)) {
          const Particles& KS0 = ETAC.decayProducts()[ix].at(310);
          const Particle& pi0 = ETAC.decayProducts()[ix].at(111)[0];
          double mplus = (KS0[0].momentum() + pi0.momentum()).mass2();
          double mminus = (KS0[1].momentum() + pi0.momentum()).mass2();
          double mKK = (KS0[0].momentum() + KS0[1].momentum()).mass2();
          _h12_KS0KS0->fill(sqrt(mKK));
          _h12_KS0pi0->fill(sqrt(mplus));
          _h12_KS0pi0->fill(sqrt(mminus));
          _dalitz[11]->fill(mplus, mminus);
        }
        // KL0 KL0 pi0
        else if (ETAC.modeMatches(ix, 3, mode13)) {
          const Particles& KL0 = ETAC.decayProducts()[ix].at(130);
          const Particle& pi0 = ETAC.decayProducts()[ix].at(111)[0];
          double mplus = (KL0[0].momentum() + pi0.momentum()).mass2();
          double mminus = (KL0[1].momentum() + pi0.momentum()).mass2();
          double mKK = (KL0[0].momentum() + KL0[1].momentum()).mass2();
          _h13_KL0KL0->fill(sqrt(mKK));
          _h13_KL0pi0->fill(sqrt(mplus));
          _h13_KL0pi0->fill(sqrt(mminus));
          _dalitz[12]->fill(mplus, mminus);
        }
        // KS0 K+ pi-
        else if (ETAC.modeMatches(ix, 3, mode14)) {
          const Particle& KS0 = ETAC.decayProducts()[ix].at(310)[0];
          const Particle& Kp = ETAC.decayProducts()[ix].at(321)[0];
          const Particle& pim = ETAC.decayProducts()[ix].at(-211)[0];
          double mplus = (Kp.momentum() + pim.momentum()).mass2();
          double mminus = (KS0.momentum() + pim.momentum()).mass2();
          double mKK = (KS0.momentum() + Kp.momentum()).mass2();
          _h14_KpKS0->fill(sqrt(mKK));
          _h14_Kppim->fill(sqrt(mplus));
          _h14_KS0pim->fill(sqrt(mminus));
          _dalitz[13]->fill(mplus, mminus);
        }
        // KS0 K- pi+
        else if (ETAC.modeMatches(ix, 3, mode15)) {
          const Particle& KS0 = ETAC.decayProducts()[ix].at(310)[0];
          const Particle& Km = ETAC.decayProducts()[ix].at(-321)[0];
          const Particle& pip = ETAC.decayProducts()[ix].at(211)[0];
          double mplus = (Km.momentum() + pip.momentum()).mass2();
          double mminus = (KS0.momentum() + pip.momentum()).mass2();
          double mKK = (KS0.momentum() + Km.momentum()).mass2();
          _h15_KmKS0->fill(sqrt(mKK));
          _h15_Kmpip->fill(sqrt(mplus));
          _h15_KS0pip->fill(sqrt(mminus));
          _dalitz[14]->fill(mplus, mminus);
        }
        // KL0 K+ pi-
        else if (ETAC.modeMatches(ix, 3, mode16)) {
          const Particle& KL0 = ETAC.decayProducts()[ix].at(130)[0];
          const Particle& Kp = ETAC.decayProducts()[ix].at(321)[0];
          const Particle& pim = ETAC.decayProducts()[ix].at(-211)[0];
          double mplus = (Kp.momentum() + pim.momentum()).mass2();
          double mminus = (KL0.momentum() + pim.momentum()).mass2();
          double mKK = (KL0.momentum() + Kp.momentum()).mass2();
          _h16_KpKL0->fill(sqrt(mKK));
          _h16_Kppim->fill(sqrt(mplus));
          _h16_KL0pim->fill(sqrt(mminus));
          _dalitz[15]->fill(mplus, mminus);
        }
        // KL0 K- pip
        else if (ETAC.modeMatches(ix, 3, mode17)) {
          const Particle& KL0 = ETAC.decayProducts()[ix].at(130)[0];
          const Particle& Km = ETAC.decayProducts()[ix].at(-321)[0];
          const Particle& pip = ETAC.decayProducts()[ix].at(211)[0];
          double mplus = (Km.momentum() + pip.momentum()).mass2();
          double mminus = (KL0.momentum() + pip.momentum()).mass2();
          double mKK = (KL0.momentum() + Km.momentum()).mass2();
          _h17_KmKL0->fill(sqrt(mKK));
          _h17_Kmpip->fill(sqrt(mplus));
          _h17_KL0pip->fill(sqrt(mminus));
          _dalitz[16]->fill(mplus, mminus);
        }
      }
    }


    /// Normalise histograms etc., after the run
    void finalize() {
      normalize(_h1_pippim);
      normalize(_h1_pipeta);
      normalize(_h1_pimeta);
      normalize(_h2_pi0pi0);
      normalize(_h2_pi0eta);
      normalize(_h3_pippim);
      normalize(_h3_pipeta);
      normalize(_h3_pimeta);
      normalize(_h4_pi0pi0);
      normalize(_h4_pi0eta);
      normalize(_h5_KpKm);
      normalize(_h5_Kpeta);
      normalize(_h5_Kmeta);
      normalize(_h6_KS0KS0);
      normalize(_h6_KS0eta);
      normalize(_h7_KL0KL0);
      normalize(_h7_KL0eta);
      normalize(_h8_KpKm);
      normalize(_h8_Kpeta);
      normalize(_h8_Kmeta);
      normalize(_h9_KS0KS0);
      normalize(_h9_KS0eta);
      normalize(_h10_KL0KL0);
      normalize(_h10_KL0eta);
      normalize(_h11_KpKm);
      normalize(_h11_Kppi0);
      normalize(_h11_Kmpi0);
      normalize(_h12_KS0KS0);
      normalize(_h12_KS0pi0);
      normalize(_h13_KL0KL0);
      normalize(_h13_KL0pi0);
      normalize(_h14_KpKS0);
      normalize(_h14_Kppim);
      normalize(_h14_KS0pim);
      normalize(_h15_KmKS0);
      normalize(_h15_Kmpip);
      normalize(_h15_KS0pip);
      normalize(_h16_KpKL0);
      normalize(_h16_Kppim);
      normalize(_h16_KL0pim);
      normalize(_h17_KmKL0);
      normalize(_h17_Kmpip);
      normalize(_h17_KL0pip);
      for (unsigned int ix = 0; ix < 17; ++ix) normalize(_dalitz[ix]);
    }

    /// @}


    /// @name Histograms
    /// @{
    Histo1DPtr _h1_pippim, _h1_pipeta, _h1_pimeta;
    Histo1DPtr _h2_pi0pi0, _h2_pi0eta;
    Histo1DPtr _h3_pippim, _h3_pipeta, _h3_pimeta;
    Histo1DPtr _h4_pi0pi0, _h4_pi0eta;
    Histo1DPtr _h5_KpKm, _h5_Kpeta, _h5_Kmeta;
    Histo1DPtr _h6_KS0KS0, _h6_KS0eta;
    Histo1DPtr _h7_KL0KL0, _h7_KL0eta;
    Histo1DPtr _h8_KpKm, _h8_Kpeta, _h8_Kmeta;
    Histo1DPtr _h9_KS0KS0, _h9_KS0eta;
    Histo1DPtr _h10_KL0KL0, _h10_KL0eta;
    Histo1DPtr _h11_KpKm, _h11_Kppi0, _h11_Kmpi0;
    Histo1DPtr _h12_KS0KS0, _h12_KS0pi0;
    Histo1DPtr _h13_KL0KL0, _h13_KL0pi0;
    Histo1DPtr _h14_KpKS0, _h14_Kppim, _h14_KS0pim;
    Histo1DPtr _h15_KmKS0, _h15_Kmpip, _h15_KS0pip;
    Histo1DPtr _h16_KpKL0, _h16_Kppim, _h16_KL0pim;
    Histo1DPtr _h17_KmKL0, _h17_Kmpip, _h17_KL0pip;
    Histo2DPtr _dalitz[17];
    /// @}
  };


  RIVET_DECLARE_PLUGIN(MC_DALITZ_ETAC);

}