rivet is hosted by Hepforge, IPPP Durham

Rivet analyses reference

BELLE_2022_I2160445

Mass distributions in $\Lambda_c^+\to p K^0_S K^0_S$ and $\Lambda_c^+\to p K^0_S \eta$
Experiment: BELLE (KEKB)
Inspire ID: 2160445
Status: VALIDATED NOHEPDATA
Authors:
  • Peter Richardson
References: Beams: * *
Beam energies: ANY
    No run details listed

Measurement of the mass distributions in the decays $\Lambda_c^+\to p K^0_S K^0_S$ and $\Lambda_c^+\to p K^0_S \eta$ by BELLE. The data were read from the plots in the paper but have been corrected for efficiency/acceptance.

Source code: BELLE_2022_I2160445.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 Lambda_c+ -> p 2K0S and p K0S eta
 10  class BELLE_2022_I2160445 : public Analysis {
 11  public:
 12
 13    /// Constructor
 14    RIVET_DEFAULT_ANALYSIS_CTOR(BELLE_2022_I2160445);
 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==4122);
 24      declare(ufs, "UFS");
 25      DecayedParticles LAMBDAC(ufs);
 26      LAMBDAC.addStable(PID::PI0);
 27      LAMBDAC.addStable(PID::K0S);
 28      LAMBDAC.addStable(PID::ETA);
 29      declare(LAMBDAC, "LAMBDAC");
 30      // histograms
 31      for(unsigned int ix=0;ix<2;++ix)
 32	for(unsigned int iy=0;iy<2+ix;++iy)
 33	  book(_h[ix][iy],1+ix,1,1+iy);
 34    }
 35
 36
 37    /// Perform the per-event analysis
 38    void analyze(const Event& event) {
 39      static const map<PdgId,unsigned int> & mode1   = { { PID::PROTON,1}, {310,2}};
 40      static const map<PdgId,unsigned int> & mode1CC = { {-PID::PROTON,1}, {310,2}};
 41      static const map<PdgId,unsigned int> & mode2   = { { PID::PROTON,1}, {310,1}, { 221,1}};
 42      static const map<PdgId,unsigned int> & mode2CC = { {-PID::PROTON,1}, {310,1}, { 221,1}};
 43      DecayedParticles LAMBDAC = apply<DecayedParticles>(event, "LAMBDAC");
 44      // loop over particles
 45      for(unsigned int ix=0;ix<LAMBDAC.decaying().size();++ix) {
 46	int sign = 1, mode=-1;
 47	if (LAMBDAC.decaying()[ix].pid()>0 && LAMBDAC.modeMatches(ix,3,mode1)) {
 48	  sign=1;
 49	  mode=0;
 50	}
 51	else if  (LAMBDAC.decaying()[ix].pid()<0 && LAMBDAC.modeMatches(ix,3,mode1CC)) {
 52	  sign=-1;
 53	  mode=0;
 54	}
 55	else if (LAMBDAC.decaying()[ix].pid()>0 && LAMBDAC.modeMatches(ix,3,mode2)) {
 56	  sign=1;
 57	  mode=1;
 58	}
 59	else if  (LAMBDAC.decaying()[ix].pid()<0 && LAMBDAC.modeMatches(ix,3,mode2CC)) {
 60	  sign=-1;
 61	  mode=1;
 62	} 
 63	else
 64	  continue;
 65	const Particle  & pp  = LAMBDAC.decayProducts()[ix].at( sign*PID::PROTON)[0];
 66	const Particles & K0  = LAMBDAC.decayProducts()[ix].at( 310);
 67	if(mode==0) {
 68	  _h[0][0]->fill((pp   .momentum()+K0[0].momentum()).mass2());
 69	  _h[0][0]->fill((pp   .momentum()+K0[1].momentum()).mass2());
 70	  _h[0][1]->fill((K0[0].momentum()+K0[1].momentum()).mass2());
 71	}
 72	else {
 73	  const Particle & eta = LAMBDAC.decayProducts()[ix].at( 221)[0];
 74	  _h[1][0]->fill((K0[0].momentum()+eta.momentum()).mass2());
 75	  _h[1][1]->fill((pp.momentum()+ K0[0].momentum()).mass2());
 76	  _h[1][2]->fill((pp.momentum()+eta.momentum()).mass2());
 77	}
 78      }
 79    }
 80
 81
 82    /// Normalise histograms etc., after the run
 83    void finalize() {
 84      for(unsigned int ix=0;ix<2;++ix)
 85	for(unsigned int iy=0;iy<2+ix;++iy)
 86	  normalize(_h[ix][iy],1.,false);
 87    }
 88
 89    /// @}
 90
 91
 92    /// @name Histograms
 93    /// @{
 94    Histo1DPtr _h[2][3];
 95    /// @}
 96
 97
 98  };
 99
100
101  RIVET_DECLARE_PLUGIN(BELLE_2022_I2160445);
102
103}