rivet is hosted by Hepforge, IPPP Durham

Rivet analyses reference

ALICE_2021_I1848990

Measurement of beauty and charm production iat 5 TeV
Experiment: ALICE (LHC)
Inspire ID: 1848990
Status: VALIDATED
Authors:
  • Yonne Lourens
  • Maria Monalisa De Melo Paulino
References: Beams: p+ p+
Beam energies: (2510.0, 2510.0) GeV
Run details:
  • Minimum bias events

The $p_\text{T}$-differential production cross sections of prompt and non-prompt (produced in beauty-hadron decays) D mesons were measured by the ALICE experiment at midrapidity ($|y|<0.5$) in proton-proton collisions at $\sqrt{s}$=5.02 TeV. The data sample used in the analysis corresponds to an integrated luminosity of $(19.3\pm0.4)$ nb${}^{-1}$. D mesons were reconstructed from their decays $D^0 \to K^-\pi^+$, $D^+\to K^-\pi^+\pi^+$, and $D^+_\text{s} \to \varphi\pi^+\to K^-K^+\pi^+$ and their charge conjugates. Compared to previous measurements in the same rapidity region, the cross sections of prompt $D^+$ and $D^+_\text{s}$ mesons have an extended $p_\text{T}$ coverage and total uncertainties reduced by a factor ranging from 1.05 to 1.6, depending on $p_\text{T}$, allowing for a more precise determination of their $p_\text{T}$-integrated cross sections. The results are well described by perturbative QCD calculations. The fragmentation fraction of heavy quarks to strange mesons divided by the one to non-strange mesons, $f_\text{s}/(f_\text{u}+f_\text{d})$, is compatible for charm and beauty quarks and with previous measurements at different centre-of-mass energies and collision systems. The $b\bar{b}$ production cross section per rapidity unit at midrapidity, estimated from non-prompt $D$-meson measurements, is $\text{d}\sigma_{b\bar{b}} / \text{d} y_{|y|<0.5}$ = 34.5 $\pm$ 2.4 (stat) ${}^{+4.7}_{-2.9}$ (tot. syst.) $\mu$b${}^{-1}$. It is compatible with previous measurements at the same centre-of-mass energy and with the cross section predicted by perturbative QCD calculations.

Source code: ALICE_2021_I1848990.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
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
// -*- C++ -*-
#include "Rivet/Analysis.hh"
#include "Rivet/Projections/UnstableParticles.hh"

namespace Rivet {

  /// @brief Measurement of beauty and charm production iat 5 TeV
  class ALICE_2021_I1848990 : public Analysis {
  public:

    RIVET_DEFAULT_ANALYSIS_CTOR(ALICE_2021_I1848990);

    void init() {

      const UnstableParticles fs(Cuts::absrap < 0.5);
      declare(fs, "fs");

      book(_h_D0_npm,1,1,1);                                                                // non-prompt D0 production cross section
      book(_h_Dplus_npm,2,1,1);                                                             // non-prompt D+ production cross section
      book(_h_DS_npm,3,1,1);                                                                // non-prompt DS+ production cross section
      book(_h_D0_pm,4,1,1);                                                                 // prompt D0 production cross section
      book(_h_Dplus_pm,5,1,1);                                                              // prompt D+ production cross section
      book(_h_DS_pm,6,1,1);                                                                 // prompt DS+ production cross section


      book(_h_ratioD0,7,1,1);                                                               // ratio of production cross-section between non-prompt D0 and prompt D0
      book(_h_D0_pm_dummy,"TMP/_h_D0_pm_dummy",refData(7,1,1));                             // prompt D0 production cross section

      book(_h_ratioDplus,8,1,1);                                                            // ratio of production cross-section between non-prompt D+ and prompt D+
      book(_h_Dplus_pm_dummy,"TMP/_h_Dplus_pm_dummy",refData(8,1,1));                       // prompt D+ production cross section

      book(_h_ratioDS,9,1,1);                                                               // ratio of production cross-section between non-prompt DS+ and prompt DS+
      book(_h_DS_pm_dummy,"TMP/_h_DS_pm_dummy",refData(9,1,1));                             // prompt DS+ production cross section

      book(_h_ratio_pm_DplusD0,10,1,1);                                                     // ratio of production cross-section between prompt D+ and prompt D0
      book(_h_D0_pm_dummy2,"TMP/_h_D0_pm_dummy2",refData(10,1,1));                          // prompt D0 production cross section

      book(_h_ratio_npm_DplusD0,11,1,1);                                                    // ratio of production cross-section between non-prompt D+ and non-prompt D0
      book(_h_D0_npm_dummy,"TMP/_h_D0_npm_dummy",refData(11,1,1));                          // non-prompt D0 production cross section

      book(_h_ratio_pm_DS_DplusD0,12,1,1);                                                  // ratio of production cross-section between prompt DS+ and sum of prompt D0 and prompt D+
      book(_h_DplusD0_pm_sum_dummy,"TMP/_h_RatioDplusD0_pm_sum_dummy",refData(12,1,1));     // sum of prompt D0 and prompt D+ production cross section

      book(_h_ratio_npm_DS_DplusD0,13,1,1);                                                 // ratio of production cross-section between non-prompt DS+ and sum of non-prompt D0 and non-prompt D+
      book(_h_DplusD0_npm_sum_dummy,"TMP/_h_RatioDplusD0_npm_sum_dummy",refData(13,1,1));   // sum of non-prompt D0 and non-prompt D+ production cross section

      book(_h_Charmfrag, 14,1,1);                                                           // Charm-quark fragmentation-fraction ratio
      book(_h_DS_fpm_dummy,"TMP/_h_DS_fpm_dummy",refData(14,1,1));                          // prompt DS+ pt-integrated production
      book(_h_DpD0_fpm_dummy,"TMP/_h_DpD0_fpm_dummy",refData(14,1,1));                      // sum of prompt D0 and prompt D+ pt-integrated production

      book(_h_Beautyfrag, 15,1,1);                                                          // Beauty-quark fragmentation-fraction ratio
      book(_h_DS_fnpm_dummy,"TMP/_h_DS_fnpm_dummy",refData(15,1,1));                        // non-prompt DS+ pt-integrated production
      book(_h_DpD0_fnpm_dummy,"TMP/_h_DpD0_fbpm_dummy",refData(15,1,1));                    // sum of non-prompt D0 and non-prompt D+ pt-integrated production

    }

    void analyze(const Event& event) {

      const UnstableParticles& fs = apply<UnstableParticles>(event, "fs");

      for (const Particle& p : fs.particles()) {
        if (p.fromBottom()){
          if(p.abspid()== 421){
            _h_D0_npm->fill(p.pT()/GeV);
            _h_D0_npm_dummy->fill(p.pT()/GeV);
            _h_DplusD0_npm_sum_dummy->fill(p.pT()/GeV);

            if(p.pT() >= 2){
              _h_DpD0_fnpm_dummy->fill(1);
            }
          }

          else if(p.abspid()== 411){
            _h_Dplus_npm->fill(p.pT()/GeV);
            _h_DplusD0_npm_sum_dummy->fill(p.pT()/GeV);

            if(p.pT() >= 2){
              _h_DpD0_fnpm_dummy->fill(1);
            }
          }

          else if(p.abspid()== 431){
            _h_DS_npm->fill(p.pT()/GeV);

            if(p.pT() >= 2){
              _h_DS_fnpm_dummy->fill(1);
            }
          }
        }

        else{
          if(p.abspid()== 421){
            _h_D0_pm->fill(p.pT()/GeV);
            _h_D0_pm_dummy->fill(p.pT()/GeV);
            _h_D0_pm_dummy2->fill(p.pT()/GeV);
            _h_DplusD0_pm_sum_dummy->fill(p.pT()/GeV);

            if(p.pT() >= 1){
              _h_DpD0_fpm_dummy->fill(1);
            }
          }

          else if(p.abspid()== 411){
            _h_Dplus_pm->fill(p.pT()/GeV);
            _h_Dplus_pm_dummy->fill(p.pT()/GeV);
            _h_DplusD0_pm_sum_dummy->fill(p.pT()/GeV);

            if(p.pT() >= 1){
              _h_DpD0_fpm_dummy->fill(1);
            }
          }

          else if(p.abspid()== 431){
            _h_DS_pm->fill(p.pT()/GeV);
            _h_DS_pm_dummy->fill(p.pT()/GeV);

            if(p.pT() >= 1){
              _h_DS_fpm_dummy->fill(1);
            }
          }
        }
      }
    }

    void finalize() {

      scale(_h_D0_npm,                 crossSection()/(microbarn*2*sumOfWeights()));
      scale(_h_Dplus_npm,              crossSection()/(microbarn*2*sumOfWeights()));
      scale(_h_DS_npm,                 crossSection()/(microbarn*2*sumOfWeights()));
      scale(_h_D0_pm,                  crossSection()/(microbarn*2*sumOfWeights()));
      scale(_h_Dplus_pm,               crossSection()/(microbarn*2*sumOfWeights()));
      scale(_h_DS_pm,                  crossSection()/(microbarn*2*sumOfWeights()));
      scale(_h_D0_pm_dummy,            crossSection()/(microbarn*2*sumOfWeights()));
      scale(_h_D0_pm_dummy2,           crossSection()/(microbarn*2*sumOfWeights()));
      scale(_h_D0_npm_dummy,           crossSection()/(microbarn*2*sumOfWeights()));
      scale(_h_Dplus_pm_dummy,         crossSection()/(microbarn*2*sumOfWeights()));
      scale(_h_DS_pm_dummy,            crossSection()/(microbarn*2*sumOfWeights()));
      scale(_h_DplusD0_pm_sum_dummy,   crossSection()/(microbarn*2*sumOfWeights()));
      scale(_h_DplusD0_npm_sum_dummy,  crossSection()/(microbarn*2*sumOfWeights()));

      scale(_h_DS_fpm_dummy,            0.5);
      scale(_h_DpD0_fpm_dummy,          0.5);
      scale(_h_DS_fnpm_dummy,           0.5);
      scale(_h_DpD0_fnpm_dummy,         0.5);

      divide(_h_D0_npm,     _h_D0_pm_dummy,            _h_ratioD0);
      divide(_h_Dplus_npm,  _h_Dplus_pm_dummy,         _h_ratioDplus);
      divide(_h_DS_npm,     _h_DS_pm_dummy,            _h_ratioDS);
      divide(_h_Dplus_pm,   _h_D0_pm_dummy2,           _h_ratio_pm_DplusD0);
      divide(_h_Dplus_npm,  _h_D0_npm_dummy,           _h_ratio_npm_DplusD0);
      divide(_h_DS_pm,      _h_DplusD0_pm_sum_dummy,   _h_ratio_pm_DS_DplusD0);
      divide(_h_DS_npm,     _h_DplusD0_npm_sum_dummy,  _h_ratio_npm_DS_DplusD0);

      divide(_h_DS_fpm_dummy,   _h_DpD0_fpm_dummy,      _h_Charmfrag);
      divide(_h_DS_fnpm_dummy,  _h_DpD0_fnpm_dummy,     _h_Beautyfrag);

    }

    Histo1DPtr _h_D0_npm, _h_D0_npm_dummy, _h_Dplus_npm, _h_DS_npm, _h_D0_pm,
    _h_D0_pm_dummy, _h_D0_pm_dummy2, _h_Dplus_pm, _h_Dplus_pm_dummy, _h_DS_pm,
    _h_DS_pm_dummy, _h_DplusD0_pm_sum_dummy, _h_DplusD0_npm_sum_dummy,
    _h_DS_fpm_dummy, _h_DpD0_fpm_dummy, _h_DS_fnpm_dummy,  _h_DpD0_fnpm_dummy;

    Scatter2DPtr _h_ratioD0, _h_ratioDplus, _h_ratioDS, _h_ratio_pm_DplusD0,
    _h_ratio_npm_DplusD0, _h_ratio_pm_DS_DplusD0, _h_ratio_npm_DS_DplusD0,
    _h_Charmfrag,  _h_Beautyfrag;

  };

  RIVET_DECLARE_PLUGIN(ALICE_2021_I1848990);

}