rivet is hosted by Hepforge, IPPP Durham

Rivet analyses reference

LHCB_2012_I1114753

$\pi^+\pi^-$ mass distribution in $\Lambda_b^{*0}(5920)\to\Lambda_b^0\pi^+\pi^-$ decays
Experiment: LHCB (LHC)
Inspire ID: 1114753
Status: VALIDATED
Authors:
  • Peter Richardson
References:
  • Phys.Rev.Lett. 109 (2012) 172003
Beams: * *
Beam energies: ANY
Run details:
  • any process producing lambda_b(5920), original pp

Measurement of the production of excited $\Lambda_b$ baryons by LHCb. The only interesting distribution from a simulation perspective is the mass disutribution of $\pi^+\pi^-$ in $\Lambda_b^{*0}(5920)\to\Lambda_b^0\pi^+\pi^-$ decays which is sensitive to the decay model used for this decay mode.

Source code: LHCB_2012_I1114753.cc
 1// -*- C++ -*-
 2#include "Rivet/Analysis.hh"
 3#include "Rivet/Projections/UnstableParticles.hh"
 4
 5namespace Rivet {
 6
 7
 8  /// @brief pi+pi- mass in lambdab* decays
 9  class LHCB_2012_I1114753 : public Analysis {
10  public:
11
12    /// Constructor
13    RIVET_DEFAULT_ANALYSIS_CTOR(LHCB_2012_I1114753);
14
15
16    /// @name Analysis methods
17    /// @{
18
19    /// Book histograms and initialise projections before the run
20    void init() {
21      // Initialise and register projections
22      declare(UnstableParticles(),"UFS");
23      book(_h_mpipi,1,1,1);
24    }
25
26    void findDecayProducts(const Particle & mother,
27			   unsigned int & nstable,
28			   Particles& pip, Particles& pim,
29			   Particles & lambda) {
30      for(const Particle & p : mother.children()) {
31        int id = p.pid();
32      	if ( id == PID::PIMINUS) {
33	  pim.push_back(p);
34	  ++nstable;
35	}
36       	else if (id == PID::PIPLUS) {
37       	  pip.push_back(p);
38       	  ++nstable;
39       	}
40	else if (abs(id)==5122) {
41	  lambda.push_back(p);
42	  ++nstable;
43	}
44	else if ( !p.children().empty() ) {
45	  findDecayProducts(p,nstable,pip,pim,lambda);
46	}
47	else
48	  ++nstable;
49      }
50    }
51
52
53    /// Perform the per-event analysis
54    void analyze(const Event& event) {
55      // loop over unstable particles
56      for(const Particle& lb : apply<UnstableParticles>(event, "UFS").particles(Cuts::abspid==101254)) {
57	unsigned int nstable(0);
58	Particles pip, pim, lambda;
59	findDecayProducts(lb,nstable,pip,pim,lambda);
60	// check for lambda
61	if(lambda.size() !=1 || nstable !=3 ||
62	   pip.size()!=1 || pim.size() !=1 ) continue;
63	FourMomentum q = pip[0].momentum()+pim[0].momentum();
64	_h_mpipi->fill(q.mass()/MeV);
65      }
66    }
67
68
69    /// Normalise histograms etc., after the run
70    void finalize() {
71      normalize(_h_mpipi);
72    }
73
74    /// @}
75
76
77    /// @name Histograms
78    /// @{
79    Histo1DPtr _h_mpipi;
80    /// @}
81
82
83  };
84
85
86  RIVET_DECLARE_PLUGIN(LHCB_2012_I1114753);
87
88}