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
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
// -*- C++ -*-
#include "Rivet/Analysis.hh"
#include "Rivet/Projections/UnstableParticles.hh"

namespace Rivet {


  /// @brief Xi_c(2970) decays
  class BELLE_2021_I1809180 : public Analysis {
  public:

    /// Constructor
    RIVET_DEFAULT_ANALYSIS_CTOR(BELLE_2021_I1809180);


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

    /// Book histograms and initialise projections before the run
    void init() {
      // set the PDG code
      _pid = getOption<double>("PID", 204232);
      // projections
      declare(UnstableParticles(Cuts::abspid==_pid), "UFS");
      for(unsigned int ix=0;ix<2;++ix)
	book(_h[ix],1+ix,1,1);
    }


    /// Perform the per-event analysis
    void analyze(const Event& event) {
      // Get beams and average beam momentum
      const UnstableParticles& ufs = apply<UnstableParticles>(event, "UFS");
      for (const Particle& p : ufs.particles()) {
	// xp cut
	double xp = p.momentum().p3().mod()/sqrt(0.25*sqrtS()-p.mass2());
	if (xp<.7) continue;
	// find the decay products
	// first decay
	if(p.children().size()!=2) continue;
	Particle XiStar,pi1;
	if(p.children()[0].abspid()==4314 &&
	   p.children()[1].abspid()== 211) {
	  XiStar = p.children()[0];
	  pi1    = p.children()[1];
	}
	else if(p.children()[1].abspid()==4314 &&
		p.children()[0].abspid()== 211) {
	  XiStar = p.children()[1];
	  pi1    = p.children()[0];
	}
	else
	  continue;
	Vector3 axis1 = p.momentum().p3().unit();
	LorentzTransform boost = LorentzTransform::mkFrameTransformFromBeta(p.momentum().betaVec());
	FourMomentum ppi1 = boost.transform(pi1.momentum());
	_h[0]->fill(axis1.dot(ppi1.p3().unit()));
	Particle pi2;
	// second decay
	if(XiStar.children()[0].abspid()==4232 &&
	   XiStar.children()[1].abspid()== 211) {
	  pi2    = XiStar.children()[1];
	}
	else if(XiStar.children()[1].abspid()== 4232 &&
		XiStar.children()[0].abspid()== 211) {
	  pi2    = XiStar.children()[0];
	}
	else
	  continue;
	FourMomentum pXiStar = boost.transform(XiStar.momentum());
	FourMomentum ppi2    = boost.transform(pi2.momentum());
	LorentzTransform boost2 = LorentzTransform::mkFrameTransformFromBeta(pXiStar.betaVec());
	ThreeVector axis2 = pXiStar.p3().unit();
	ppi2 =  boost2.transform(ppi2);
	_h[1]->fill(axis2.dot(ppi2.p3().unit()));
      }
    }


    /// Normalise histograms etc., after the run
    void finalize() {
      for(unsigned int ix=0;ix<2;++ix)
	normalize(_h[ix]);
    }

    /// @}


    /// @name Histograms
    /// @{
    int _pid;
    Histo1DPtr _h[2];
    /// @}


  };


  RIVET_DECLARE_PLUGIN(BELLE_2021_I1809180);

}