Rivet analyses referenceLHCB_2012_I1114753$\pi^+\pi^-$ mass distribution in $\Lambda_b^{*0}(5920)\to\Lambda_b^0\pi^+\pi^-$ decaysExperiment: LHCB (LHC) Inspire ID: 1114753 Status: VALIDATED Authors:
Beam energies: ANY Run details:
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(Cuts::abspid==102154),"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()) {
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}
|