rivet is hosted by Hepforge, IPPP Durham

Rivet analyses reference

BELLE_2021_I1809180

Helicity and decay angles for the decay $\Xi_c(2790)^+\to\Xi_c^{*0}(\to\Xi_c^+\pi^-)\pi^+$'
Experiment: BELLE (KEKB)
Inspire ID: 1809180
Status: VALIDATED NOHEPDATA
Authors:
  • Peter Richardson
References:
  • Phys.Rev.D 103 (2021) 11, L111101
Beams: e+ e-
Beam energies: (5.3, 5.3) GeV
Run details:
  • e+e- to hadrons

Measurement of the helicity and decay angles for the decay $\Xi_c(2790)^+\to\Xi_c^{*0}(\to\Xi_c^+\pi^-)\pi^+$. The PDG code for this particle is not specified and which multiplet it belongs to is unclear. The default is to use 204232, i.e. it is in the same multiplet as the Roper resonance, but this can be changed using the PID option.

Source code: BELLE_2021_I1809180.cc
  1// -*- C++ -*-
  2#include "Rivet/Analysis.hh"
  3#include "Rivet/Projections/UnstableParticles.hh"
  4
  5namespace Rivet {
  6
  7
  8  /// @brief Xi_c(2970) decays
  9  class BELLE_2021_I1809180 : public Analysis {
 10  public:
 11
 12    /// Constructor
 13    RIVET_DEFAULT_ANALYSIS_CTOR(BELLE_2021_I1809180);
 14
 15
 16    /// @name Analysis methods
 17    /// @{
 18
 19    /// Book histograms and initialise projections before the run
 20    void init() {
 21      // set the PDG code
 22      _pid = getOption<double>("PID", 204232);
 23      // projections
 24      declare(UnstableParticles(Cuts::abspid==_pid), "UFS");
 25      for(unsigned int ix=0;ix<2;++ix)
 26	book(_h[ix],1+ix,1,1);
 27    }
 28
 29
 30    /// Perform the per-event analysis
 31    void analyze(const Event& event) {
 32      // Get beams and average beam momentum
 33      const UnstableParticles& ufs = apply<UnstableParticles>(event, "UFS");
 34      for (const Particle& p : ufs.particles()) {
 35	// xp cut
 36	double xp = p.momentum().p3().mod()/sqrt(0.25*sqrtS()-p.mass2());
 37	if (xp<.7) continue;
 38	// find the decay products
 39	// first decay
 40	if(p.children().size()!=2) continue;
 41	Particle XiStar,pi1;
 42	if(p.children()[0].abspid()==4314 &&
 43	   p.children()[1].abspid()== 211) {
 44	  XiStar = p.children()[0];
 45	  pi1    = p.children()[1];
 46	}
 47	else if(p.children()[1].abspid()==4314 &&
 48		p.children()[0].abspid()== 211) {
 49	  XiStar = p.children()[1];
 50	  pi1    = p.children()[0];
 51	}
 52	else
 53	  continue;
 54	Vector3 axis1 = p.momentum().p3().unit();
 55	LorentzTransform boost = LorentzTransform::mkFrameTransformFromBeta(p.momentum().betaVec());
 56	FourMomentum ppi1 = boost.transform(pi1.momentum());
 57	_h[0]->fill(axis1.dot(ppi1.p3().unit()));
 58	Particle pi2;
 59	// second decay
 60	if(XiStar.children()[0].abspid()==4232 &&
 61	   XiStar.children()[1].abspid()== 211) {
 62	  pi2    = XiStar.children()[1];
 63	}
 64	else if(XiStar.children()[1].abspid()== 4232 &&
 65		XiStar.children()[0].abspid()== 211) {
 66	  pi2    = XiStar.children()[0];
 67	}
 68	else
 69	  continue;
 70	FourMomentum pXiStar = boost.transform(XiStar.momentum());
 71	FourMomentum ppi2    = boost.transform(pi2.momentum());
 72	LorentzTransform boost2 = LorentzTransform::mkFrameTransformFromBeta(pXiStar.betaVec());
 73	ThreeVector axis2 = pXiStar.p3().unit();
 74	ppi2 =  boost2.transform(ppi2);
 75	_h[1]->fill(axis2.dot(ppi2.p3().unit()));
 76      }
 77    }
 78
 79
 80    /// Normalise histograms etc., after the run
 81    void finalize() {
 82      for(unsigned int ix=0;ix<2;++ix)
 83	normalize(_h[ix]);
 84    }
 85
 86    /// @}
 87
 88
 89    /// @name Histograms
 90    /// @{
 91    int _pid;
 92    Histo1DPtr _h[2];
 93    /// @}
 94
 95
 96  };
 97
 98
 99  RIVET_DECLARE_PLUGIN(BELLE_2021_I1809180);
100
101}