Rivet analyses referenceLHCB_2023_I2635083π+π− mass distribution in B0s→ψ(2S)π+π− and B0s→χc1π+π−Experiment: LHCB (LHC) Inspire ID: 2635083 Status: VALIDATED NOHEPDATA Authors:
Beam energies: ANY Run details:
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}
|