rivet is hosted by Hepforge, IPPP Durham

Rivet analyses reference

BELLE_2007_I723916

Decay angles for $\Lambda_c(2880)^+\to\Sigma_c^{0,++}\pi^{+,-}$
Experiment: BELLE (KEKB)
Inspire ID: 723916
Status: VALIDATED NOHEPDATA
Authors:
  • Peter Richardson
References:
  • Phys.Rev.Lett. 98 (2007) 262001
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 $\Lambda_c(2880)^+\to\Sigma_c^{0,++}\pi^{+,-}$. The PDG code for this particle is not specified and which multiplet it belongs to is unclear. The default is to use, 4126, i.e the first spin $\frac{5}{2}$ state

Source code: BELLE_2007_I723916.cc
  1// -*- C++ -*-
  2#include "Rivet/Analysis.hh"
  3#include "Rivet/Projections/Beam.hh"
  4#include "Rivet/Projections/UnstableParticles.hh"
  5
  6namespace Rivet {
  7
  8
  9  /// @brief Lambda_c(2880) -> Sigma_c pi
 10  class BELLE_2007_I723916 : public Analysis {
 11  public:
 12
 13    /// Constructor
 14    RIVET_DEFAULT_ANALYSIS_CTOR(BELLE_2007_I723916);
 15
 16
 17    /// @name Analysis methods
 18    /// @{
 19
 20    /// Book histograms and initialise projections before the run
 21    void init() {
 22      declare(Beam(), "Beams");
 23      // set the PDG code
 24      _pid = getOption<double>("PID", 4126);
 25      // projections
 26      declare(UnstableParticles(Cuts::abspid==_pid), "UFS");
 27      for(unsigned int ix=0;ix<2;++ix)
 28	book(_h[ix],1,1,1+ix);
 29    }
 30
 31
 32    /// Perform the per-event analysis
 33    void analyze(const Event& event) {
 34      // get the axis, direction of incoming electron
 35      const ParticlePair& beams = apply<Beam>(event, "Beams").beams();
 36      Vector3 axis;
 37      if(beams.first.pid()>0)
 38	axis = beams.first .momentum().p3().unit();
 39      else
 40	axis = beams.second.momentum().p3().unit();
 41      // Get beams and average beam momentum
 42      const UnstableParticles& ufs = apply<UnstableParticles>(event, "UFS");
 43      for (const Particle& p : ufs.particles()) {
 44	// xp cut
 45	double xp = p.momentum().p3().mod()/sqrt(0.25*sqrtS()-p.mass2());
 46	if (xp<.7) continue;
 47	// find the decay products
 48	int sign = p.pid()/p.abspid();
 49	// first decay
 50	if(p.children().size()!=2) continue;
 51	Particle Sigma,pi1;
 52	if((p.children()[0].abspid()== 4222*sign &&
 53	    p.children()[1].abspid()==-211 *sign) ||
 54	   (p.children()[0].abspid()== 4112*sign &&
 55	    p.children()[1].abspid()== 211 *sign) ) {
 56	  Sigma = p.children()[0];
 57	  pi1   = p.children()[1];
 58	}
 59	else if((p.children()[1].abspid()== 4222*sign &&
 60		 p.children()[0].abspid()==-211 *sign) ||
 61		(p.children()[1].abspid()== 4112*sign &&
 62		 p.children()[0].abspid()== 211 *sign) ) {
 63	  Sigma = p.children()[1];
 64	  pi1   = p.children()[0];
 65	}
 66	else
 67	  continue;
 68	Vector3 axis1 = p.momentum().p3().unit();
 69	LorentzTransform boost = LorentzTransform::mkFrameTransformFromBeta(p.momentum().betaVec());
 70	Vector3 axis2 = boost.transform(pi1.momentum()).p3().unit();
 71	_h[0]->fill(axis1.dot(axis2));
 72	Vector3 axis3 = axis.cross(axis1).unit();
 73	Vector3 axis4 = axis1.cross(axis2).unit();
 74	double phi = acos(axis3.dot(axis4));
 75	_h[1]->fill(phi);
 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_2007_I723916);
100
101}