Rivet analyses referenceLHCB_2010_I865584LHCb differential cross section measurement of prompt $K^0_S$ production in three rapidity windows at $\sqrt{s} = 0.9$ TeVExperiment: LHCB (LHC 900 GeV) Inspire ID: 865584 Status: VALIDATED Authors:
Beam energies: (450.0, 450.0) GeV Run details:
The paper presents the cross-section and double differential cross-section measurement for prompt $K^0_S$ production in pp collisions at $\sqrt{s} = 0.9 TeV$. The data were taken during the LHCb run in December 2009 and cover a transversal momentum range from 0 to 1.6 GeV/c. The differential production cross-section is calculated for three rapidity windows $2.5 < y < 3.0$, $3.0 < y < 3.5$ and $3.5 < y < 4.0$ as well as the whole rapidity domain $2.5 < y < 4.0$. Source code: LHCB_2010_I865584.cc 1// -*- C++ -*-
2#include "Rivet/Analysis.hh"
3#include "Rivet/Projections/UnstableParticles.hh"
4#include "Rivet/Math/Constants.hh"
5#include "Rivet/Math/Units.hh"
6
7namespace Rivet {
8
9
10 class LHCB_2010_I865584 : public Analysis {
11 public:
12
13 const double MIN_PT = 0.0001; // [GeV/c]
14
15
16 /// Constructor
17 LHCB_2010_I865584()
18 : Analysis("LHCB_2010_I865584"), _mode(0),
19 sumKs0_all(0),
20 sumKs0_outup(0), sumKs0_outdwn(0),
21 sum_low_pt_loss(0), sum_high_pt_loss(0)
22 { }
23
24
25 /// @name Analysis methods
26 /// @{
27
28 /// Book histograms and initialise projections before the run
29 void init() {
30 // only interested in Ks0 particles
31 declare(UnstableParticles(Cuts::pid == 310), "UFS");
32
33 if (getOption("DropPlots") == "SIG") _mode = 1;
34 if (getOption("DropPlots") == "D2SIG") _mode = 2;
35
36 if ((_mode & 1) == 0) { //SIG
37 book(_h_K0s_pt_30 ,1,1,1);
38 book(_h_K0s_pt_35 ,1,1,2);
39 book(_h_K0s_pt_40 ,1,1,3);
40 };
41
42 if ((_mode & 2) == 0) { //D2SIG
43 book(_h_K0s_pt_y_30 ,2,1,1);
44 book(_h_K0s_pt_y_35 ,2,1,2);
45 book(_h_K0s_pt_y_40 ,2,1,3);
46 };
47
48 book(_h_K0s_pt_y_all ,3,1,1);
49
50 book(sumKs0_30, "TMP/sumKs0_30");
51 book(sumKs0_35, "TMP/sumKs0_35");
52 book(sumKs0_40, "TMP/sumKs0_40");
53 }
54
55
56 /// Perform the per-event analysis
57 void analyze(const Event& event) {
58 const UnstableParticles& ufs = apply<UnstableParticles>(event, "UFS");
59
60 // safe to do this as container has only Ks0
61 sumKs0_all += ufs.particles().size();
62
63 for (const Particle& p : ufs.particles()) {
64
65 double y = p.absrapidity(); // symmetric LHCb (factor 1/2 in finalize!)
66 double pT = p.pT();
67
68 if (pT < MIN_PT) {
69 sum_low_pt_loss ++; // just for debug since no inferior limit on pT
70 MSG_DEBUG("Small pT K^0_S: " << pT << " GeV/c.");
71 }
72 if (pT > 1.6) {
73 sum_high_pt_loss ++;
74 continue; // no need to flow overflow bin
75 }
76 if ((y > 2.5) && (y < 4.0)) {
77 _h_K0s_pt_y_all->fill(pT);
78 if ((y > 2.5) && (y < 3.0)) {
79 if ((_mode & 2) == 0) _h_K0s_pt_y_30->fill(pT);
80 if ((_mode & 1) == 0) _h_K0s_pt_30->fill(pT);
81 sumKs0_30->fill();
82 } else if ((y > 3.0) && (y < 3.5)) {
83 if ((_mode & 2) == 0) _h_K0s_pt_y_35->fill(pT);
84 if ((_mode & 1) == 0) _h_K0s_pt_35->fill(pT);
85 sumKs0_35->fill();
86 } else if ((y > 3.5) && (y < 4.0)) {
87 if ((_mode & 2) == 0) _h_K0s_pt_y_40->fill(pT);
88 if ((_mode & 1) == 0) _h_K0s_pt_40->fill(pT);
89 sumKs0_40->fill();
90 }
91 } else if (y < 2.5) {
92 sumKs0_outdwn ++;
93 } else if (y > 4.0) {
94 sumKs0_outup ++;
95 }
96 }
97 }
98
99
100 /// Normalise histograms etc., after the run
101 void finalize() {
102 MSG_DEBUG("Total number Ks0: " << sumKs0_all << endl
103 << "Sum of weights: " << sumOfWeights() << endl
104 << "Weight Ks0 (2.5 < y < 3.0): " << sumKs0_30 ->sumW()<< endl
105 << "Weight Ks0 (3.0 < y < 3.5): " << sumKs0_35->sumW() << endl
106 << "Weight Ks0 (3.5 < y < 4.0): " << sumKs0_40->sumW() << endl
107 << "Nb. Ks0 (y > 4.0): " << sumKs0_outup << endl
108 << "Nb. Ks0 (y < 2.5): " << sumKs0_outdwn << endl
109 << "Nb. Ks0 (pT < " << (MIN_PT/MeV) << " MeV/c): " << sum_low_pt_loss << endl
110 << "Nb. Ks0 (pT > 1.6 GeV/c): " << sum_high_pt_loss << endl
111 << "Cross-section [mb]: " << crossSection()/picobarn/millibarn << endl
112 << "Nb. events: " << numEvents());
113 // Compute cross-section; multiply by bin width for correct scaling
114 // cross-section given by Rivet in pb (symmetric LHCb!)
115 double xsection_factor = 0.5 * crossSection()/picobarn/sumOfWeights();
116 // Divide by bin area for consistent scaling, xsection in mub
117 scale(_h_K0s_pt_30, 0.1*xsection_factor/microbarn);
118 scale(_h_K0s_pt_35, 0.1*xsection_factor/microbarn);
119 scale(_h_K0s_pt_40, 0.1*xsection_factor/microbarn);
120 // Already divided by dy (rapidity window width), xsection in mb
121 scale(_h_K0s_pt_y_30, xsection_factor/millibarn);
122 scale(_h_K0s_pt_y_35, xsection_factor/millibarn);
123 scale(_h_K0s_pt_y_40, xsection_factor/millibarn);
124 // factorize to phase-space volume (area)
125 scale(_h_K0s_pt_y_all, xsection_factor/1.5/1.6/millibarn);
126 }
127
128 /// @}
129
130
131 /// Mode switch
132 size_t _mode;
133
134 /// @name Histograms
135 /// @{
136 Histo1DPtr _h_K0s_pt_y_30; // histogram for 2.5 < y < 3.0 (d2sigma)
137 Histo1DPtr _h_K0s_pt_y_35; // histogram for 3.0 < y < 3.5 (d2sigma)
138 Histo1DPtr _h_K0s_pt_y_40; // histogram for 3.5 < y < 4.0 (d2sigma)
139 Histo1DPtr _h_K0s_pt_30; // histogram for 2.5 < y < 3.0 (sigma)
140 Histo1DPtr _h_K0s_pt_35; // histogram for 3.0 < y < 3.5 (sigma)
141 Histo1DPtr _h_K0s_pt_40; // histogram for 3.5 < y < 4.0 (sigma)
142 Histo1DPtr _h_K0s_pt_y_all; // histogram for 2.5 < y < 4.0 (d2sigma)
143 CounterPtr sumKs0_30; // Sum of weights 2.5 < y < 3.0
144 CounterPtr sumKs0_35; // Sum of weights 3.0 < y < 3.5
145 CounterPtr sumKs0_40; // Sum of weights 3.5 < y < 4.0
146 // Various counters mainly for debugging and comparisons between different generators
147 size_t sumKs0_all; // Nb of all Ks0 generated
148 size_t sumKs0_outup; // Nb of mesons with y > 4.0
149 size_t sumKs0_outdwn; // Nb of mesons with y < 2.5
150 size_t sum_low_pt_loss; // Nb of mesons with very low pT (indicates when units are mixed-up)
151 size_t sum_high_pt_loss; // Nb of mesons with pT > 1.6 GeV/c
152 /// @}
153 };
154
155
156 RIVET_DECLARE_ALIASED_PLUGIN(LHCB_2010_I865584, LHCB_2010_S8758301);
157
158}
|