Processing math: 100%
rivet is hosted by Hepforge, IPPP Durham

Rivet analyses reference

LHCB_2023_I2635083

π+π mass distribution in B0sψ(2S)π+π and B0sχc1π+π
Experiment: LHCB (LHC)
Inspire ID: 2635083
Status: VALIDATED NOHEPDATA
Authors:
  • Peter Richardson
References: Beams: * *
Beam energies: ANY
Run details:
  • Any process producing Bs0, originally pp

The π+π mass distribution in B0sψ(2S)π+π and B0sχc1π+π are measured. The data was extracted from the figures in the paper. There is no consensus as to the nature of the χc1(3872) cˉc state and therefore we taken its PDG code to be 9030443, i.e. the first unused code for an undetermined spin one cˉc state. This can be changed using the PID option if a different code is used by the event generator performing the simulation.

Source code: LHCB_2023_I2635083.cc
 1// -*- C++ -*-
 2#include "Rivet/Analysis.hh"
 3#include "Rivet/Projections/UnstableParticles.hh"
 4#include "Rivet/Projections/DecayedParticles.hh"
 5
 6namespace Rivet {
 7
 8
 9  /// @brief B_s -> psi(2S)/X(3782) pi+pi-
10  class LHCB_2023_I2635083 : public Analysis {
11  public:
12
13    /// Constructor
14    RIVET_DEFAULT_ANALYSIS_CTOR(LHCB_2023_I2635083);
15
16
17    /// @name Analysis methods
18    /// @{
19
20    /// Book histograms and initialise projections before the run
21    void init() {
22      // set the PDG code
23      _pid = getOption<int>("PID", 9030443);
24      // projections
25      UnstableParticles ufs = UnstableParticles(Cuts::abspid==531);
26      declare(ufs, "UFS");
27      DecayedParticles BS0(ufs);
28      BS0.addStable(100443);
29      BS0.addStable(_pid);
30      declare(BS0, "BS0");
31      // histos
32      for (unsigned int ix=0; ix<2; ++ix) {
33        book(_h[ix], 1, 1, 1+ix);
34      }
35    }
36
37
38    /// Perform the per-event analysis
39    void analyze(const Event& event) {
40    static const map<PdgId,unsigned int> mode1 = { { 211,1}, {-211,1}, { 100443,1}};
41    static const map<PdgId,unsigned int> mode2 = { { 211,1}, {-211,1}, { _pid  ,1}};
42      DecayedParticles BS0 = apply<DecayedParticles>(event, "BS0");
43      for (unsigned int ix=0; ix<BS0.decaying().size(); ++ix) {
44        unsigned int imode=0;
45        if      (BS0.modeMatches(ix,3,mode1)) imode=0;
46        else if (BS0.modeMatches(ix,3,mode2)) imode=1;
47        else continue;
48      	const Particle& pip  = BS0.decayProducts()[ix].at( 211)[0];
49      	const Particle& pim  = BS0.decayProducts()[ix].at(-211)[0];
50        const double mpipi = (pip.mom()+pim.mom()).mass();
51      	_h[imode]->fill(mpipi);
52      }
53    }
54
55
56    /// Normalise histograms etc., after the run
57    void finalize() {
58      normalize(_h, 1.0, false);
59    }
60
61    /// @}
62
63
64    /// @name Histograms
65    /// @{
66    int _pid;
67    Histo1DPtr _h[2];
68    /// @}
69
70
71  };
72
73
74  RIVET_DECLARE_PLUGIN(LHCB_2023_I2635083);
75
76}