rivet is hosted by Hepforge, IPPP Durham

Rivet analyses reference

LHCB_2011_I917009

$V^0$ production ratios in $pp$ collisions at $\sqrt{s}= 0.9$ and 7 TeV at LHCb
Experiment: LHCb (LHC)
Inspire ID: 917009
Status: VALIDATED
Authors:
  • Alex Grecu
References: Beams: p+ p+
Beam energies: (450.0, 450.0); (3500.0, 3500.0) GeV
Run details:
  • QCD events. LHCb minimum bias, Perugia 0 and Perugia NOCR tune events used for reproducing published histograms. Beam energy must be specified as analysis option "ENERGY" when rivet-merging samples.

This paper presents the production ratios for $\bar{\Lambda}/\Lambda$ and $\bar{\Lambda}/K_{s}^{0}$ measured by LHCb detector in 2010 at $\sqrt{s} = 0.9$ TeV and 7 TeV as functions of the transverse momentum $p_\perp$ and the rapidity $y$ in the ranges $0.15 < p_\perp < 2.50 \text{GeV}/c$ and $2.0 < y < 4.5$, respectively. The results for the two energies are merged and represented as a function of rapidity loss $\Delta y = y_{\mathrm{beam}} - y$. Beam energy must be specified as analysis option "ENERGY" when rivet-merging samples.

Source code: LHCB_2011_I917009.cc
  1// -*- C++ -*-
  2#include "Rivet/Analysis.hh"
  3#include "Rivet/Projections/UnstableParticles.hh"
  4
  5namespace Rivet {
  6
  7
  8  class LHCB_2011_I917009 : public Analysis {
  9  public:
 10
 11    /// Constructor
 12    LHCB_2011_I917009()
 13      : Analysis("LHCB_2011_I917009"),
 14        rap_beam(0.0), pt_min(0.0),
 15        pt1_edge(0.65), pt2_edge(1.0),
 16        pt3_edge(2.5), rap_min(2.),
 17        rap_max(0.0), dsShift(0)
 18    {   }
 19
 20    /// @name Analysis methods
 21    /// @{
 22
 23    /// Book histograms and initialise projections before the run
 24    void init() {
 25      int y_nbins = 4;
 26      fillMap(partLftMap);
 27      if (isCompatibleWithSqrtS(900*GeV)) {
 28        rap_beam = 6.87;
 29        rap_max = 4.;
 30        pt_min = 0.25;
 31      } else if (isCompatibleWithSqrtS(7000*GeV)) {
 32        rap_beam = 8.92;
 33        rap_max = 4.5;
 34        pt_min = 0.15;
 35        y_nbins = 5;
 36        dsShift = 8;
 37      } else {
 38        MSG_ERROR("Incompatible beam energy!");
 39      }
 40
 41      // Create the sets of temporary histograms that will be used to make the ratios in the finalize()
 42      for (size_t i = 0; i < 12; ++i)  book(_tmphistos[i], "TMP/"+to_str(i), y_nbins, rap_min, rap_max);
 43      for (size_t i = 12; i < 15; ++i) book(_tmphistos[i], "TMP/"+to_str(i), refData(dsShift+5, 1, 1));
 44      for (size_t i = 15; i < 18; ++i) book(_tmphistos[i], "TMP/"+to_str(i), y_nbins, rap_beam - rap_max, rap_beam - rap_min);
 45
 46      int dsId = dsShift + 1;
 47      for (size_t j = 0; j < 3; ++j) {
 48        book(s1[j], dsId, 1, j+1);
 49        book(s2[j], dsId+1, 1, j+1);
 50      }
 51      dsId += 2;
 52      for (size_t j = 3; j < 6; ++j) {
 53        book(s3[j-3], dsId, 1, 1);
 54        dsId += 1;
 55        book(s4[j-3], dsId, 1, 1);
 56        dsId += 1;
 57      }
 58
 59      declare(UnstableParticles(), "UFS");
 60    }
 61
 62
 63    /// Perform the per-event analysis
 64    void analyze(const Event& event) {
 65      const UnstableParticles& ufs = apply<UnstableParticles>(event, "UFS");
 66      double ancestor_lftsum = 0.0;
 67      double y, pT;
 68      int id;
 69      int partIdx = -1;
 70      for (const Particle& p : ufs.particles()) {
 71        id = p.pid();
 72        // continue if particle not a K0s nor (anti-)Lambda
 73        if ( (id == 310) || (id == -310) )  {
 74          partIdx = 2;
 75        } else if ( id == 3122 ) {
 76          partIdx = 1;
 77        } else if ( id == -3122 ) {
 78          partIdx = 0;
 79        } else {
 80          continue;
 81        }
 82        ancestor_lftsum = getMotherLifeTimeSum(p);
 83        // Lifetime cut: ctau sum of all particle ancestors < 10^-9 m according to the paper (see eq. 5)
 84        const double MAX_CTAU = 1.0E-9; // [m]
 85        if ( (ancestor_lftsum < 0.0) || (ancestor_lftsum > MAX_CTAU) ) continue;
 86        const FourMomentum& qmom = p.momentum();
 87        y = log((qmom.E() + qmom.pz())/(qmom.E() - qmom.pz()))/2.;
 88        // skip this particle if it has too high or too low rapidity (extremely rare cases when E = +- pz)
 89        if ( std::isnan(y) || std::isinf(y) ) continue;
 90        y = fabs(y);
 91        if (!inRange(y, rap_min, rap_max)) continue;
 92        pT = sqrt((qmom.px() * qmom.px()) + (qmom.py() * qmom.py()));
 93        if (!inRange(pT, pt_min, pt3_edge)) continue;
 94        // Filling corresponding temporary histograms for pT intervals
 95        if (inRange(pT, pt_min, pt1_edge)) _tmphistos[partIdx*3]->fill(y);
 96        if (inRange(pT, pt1_edge, pt2_edge)) _tmphistos[partIdx*3+1]->fill(y);
 97        if (inRange(pT, pt2_edge, pt3_edge)) _tmphistos[partIdx*3+2]->fill(y);
 98        // Fill histo in rapidity for whole pT interval
 99        _tmphistos[partIdx+9]->fill(y);
100        // Fill histo in pT for whole rapidity interval
101        _tmphistos[partIdx+12]->fill(pT);
102        // Fill histo in rapidity loss for whole pT interval
103        _tmphistos[partIdx+15]->fill(rap_beam - y);
104      }
105    }
106
107
108    // Generate the ratio histograms
109    void finalize() {
110      for (size_t j = 0; j < 3; ++j) {
111        divide(_tmphistos[j], _tmphistos[3+j], s1[j]);
112        divide(_tmphistos[j], _tmphistos[6+j], s2[j]);
113      }
114      for (size_t j = 3; j < 6; ++j) {
115        divide(_tmphistos[3*j], _tmphistos[3*j+1], s3[j-3]);
116        divide(_tmphistos[3*j], _tmphistos[3*j+2], s4[j-3]);
117      }
118    }
119
120    /// @}
121
122
123
124  private:
125
126    // Get particle lifetime from hardcoded data
127    double getLifeTime(int pid) {
128      double lft = -1.0;
129      if (pid < 0) pid = - pid;
130      // Correct Pythia6 PIDs for f0(980), f0(1370) mesons
131      if (pid == 10331) pid = 30221;
132      if (pid == 10221) pid = 9010221;
133      map<int, double>::iterator pPartLft = partLftMap.find(pid);
134      // search stable particle list
135      if (pPartLft == partLftMap.end()) {
136        if (pid <= 100) return 0.0;
137        for (size_t i=0; i < sizeof(stablePDGIds)/sizeof(unsigned int); i++) {
138          if (pid == stablePDGIds[i]) { lft = 0.0; break; }
139        }
140      } else {
141        lft = (*pPartLft).second;
142      }
143      if (lft < 0.0 && PID::isHadron(pid)) {
144        MSG_ERROR("Could not determine lifetime for particle with PID " << pid
145                  << "... This V^0 will be considered unprompt!");
146      }
147      return lft;
148    }
149
150    // Data members like post-cuts event weight counters go here
151    double getMotherLifeTimeSum(const Particle& p) {
152      if (p.genParticle() == nullptr) return -1.;
153      double lftSum = 0.;
154      double plft = 0.;
155      ConstGenParticlePtr part = p.genParticle();
156      ConstGenVertexPtr ivtx = part->production_vertex();
157      while (ivtx) {
158
159          vector<ConstGenParticlePtr> part_in = HepMCUtils::particles(ivtx, Relatives::PARENTS);
160
161          if (part_in.size() < 1) { lftSum = -1.; break; };
162          ConstGenParticlePtr part = part_in.at(0);//(*iPart_invtx);
163          if ( !(part) ) { lftSum = -1.; break; };
164          ivtx = part->production_vertex();
165          if ( (part->pdg_id() == 2212) || !(ivtx) ) break; //reached beam
166          plft = getLifeTime(part->pdg_id());
167          if (plft < 0.) { lftSum = -1.; break; };
168          lftSum += plft;
169        };
170      return (lftSum * c_light);
171    }
172
173    /// @name Private variables
174    /// @{
175
176    // The rapidity of the beam according to the selected beam energy
177    double rap_beam;
178
179    // The edges of the intervals of transverse momentum
180    double pt_min, pt1_edge, pt2_edge, pt3_edge;
181
182    // The limits of the rapidity window
183    double rap_min;
184    double rap_max;
185
186    // Indicates which set of histograms will be output to yoda file (according to beam energy)
187    int dsShift;
188
189    // Map between PDG id and particle lifetimes in seconds
190    map<int, double> partLftMap;
191
192    // Set of PDG Ids for stable particles (PDG Id <= 100 are considered stable)
193    static const int stablePDGIds[205];
194
195    /// @}
196
197    /// @name Helper histograms
198    /// @{
199    /// Histograms are defined in the following order: anti-Lambda, Lambda and K0s.
200    /// First 3 suites of 3 histograms correspond to each particle in bins of y for the 3 pT intervals. (9 histos)
201    /// Next 3 histograms contain the particles in y bins for the whole pT interval (3 histos)
202    /// Next 3 histograms contain the particles in y_loss bins for the whole pT interval (3 histos)
203    /// Last 3 histograms contain the particles in pT bins for the whole rapidity (y) interval (3 histos)
204    Histo1DPtr _tmphistos[18];
205    array<Estimate1DPtr,3> s1,s2,s3,s4;
206    /// @}
207
208    // Fill the PDG ID to Lifetime[seconds] map
209    // Data was extracted from LHCb Particle Table through LHCb::ParticlePropertySvc
210    bool fillMap(map<int, double>& m) {
211      m[6] =  4.707703E-25;  m[11] =  1.E+16;  m[12] =  1.E+16;
212      m[13] =  2.197019E-06;  m[14] =  1.E+16;  m[15] =  2.906E-13;  m[16] =  1.E+16;  m[22] =  1.E+16;
213      m[23] =  2.637914E-25;  m[24] =  3.075758E-25;  m[25] =  9.4E-26;  m[35] =  9.4E-26;
214      m[36] =  9.4E-26;  m[37] =  9.4E-26;  m[84] =  3.335641E-13;  m[85] =  1.290893E-12;
215      m[111] =  8.4E-17;  m[113] =  4.405704E-24;  m[115] =  6.151516E-24;  m[117] =  4.088275E-24;
216      m[119] =  2.102914E-24;  m[130] =  5.116E-08;  m[150] =  1.525E-12;  m[211] =  2.6033E-08;
217      m[213] =  4.405704E-24;  m[215] =  6.151516E-24;  m[217] =  4.088275E-24;  m[219] =  2.102914E-24;
218      m[221] =  5.063171E-19;  m[223] =  7.752794E-23;  m[225] =  3.555982E-24;  m[227] =  3.91793E-24;
219      m[229] =  2.777267E-24;  m[310] =  8.953E-11;  m[313] =  1.308573E-23;  m[315] =  6.038644E-24;
220      m[317] =  4.139699E-24;  m[319] =  3.324304E-24;  m[321] =  1.238E-08;  m[323] =  1.295693E-23;
221      m[325] =  6.682357E-24;  m[327] =  4.139699E-24;  m[329] =  3.324304E-24;  m[331] =  3.210791E-21;
222      m[333] =  1.545099E-22;  m[335] =  9.016605E-24;  m[337] =  7.565657E-24;  m[350] =  1.407125E-12;
223      m[411] =  1.04E-12;  m[413] =  6.856377E-21;  m[415] =  1.778952E-23;  m[421] =  4.101E-13;
224      m[423] =  1.000003E-19;  m[425] =  1.530726E-23;  m[431] =  5.E-13;  m[433] =  1.000003E-19;
225      m[435] =  3.291061E-23;  m[441] =  2.465214E-23;  m[443] =  7.062363E-21;  m[445] =  3.242425E-22;
226      m[510] =  1.525E-12;  m[511] =  1.525E-12;  m[513] =  1.000019E-19;  m[515] =  1.31E-23;
227      m[521] =  1.638E-12;  m[523] =  1.000019E-19;  m[525] =  1.31E-23;  m[530] =  1.536875E-12;
228      m[531] =  1.472E-12;  m[533] =  1.E-19;  m[535] =  1.31E-23;  m[541] =  4.5E-13;
229      m[553] =  1.218911E-20;  m[1112] =  4.539394E-24;  m[1114] =  5.578069E-24;  m[1116] =  1.994582E-24;
230      m[1118] =  2.269697E-24;  m[1212] =  4.539394E-24;  m[1214] =  5.723584E-24;  m[1216] =  1.994582E-24;
231      m[1218] =  1.316424E-24;  m[2112] =  8.857E+02;  m[2114] =  5.578069E-24;  m[2116] =  4.388081E-24;
232      m[2118] =  2.269697E-24;  m[2122] =  4.539394E-24;  m[2124] =  5.723584E-24;  m[2126] =  1.994582E-24;
233      m[2128] =  1.316424E-24;  m[2212] =  1.E+16;  m[2214] =  5.578069E-24;  m[2216] =  4.388081E-24;
234      m[2218] =  2.269697E-24;  m[2222] =  4.539394E-24;  m[2224] =  5.578069E-24;  m[2226] =  1.994582E-24;
235      m[2228] =  2.269697E-24;  m[3112] =  1.479E-10;  m[3114] =  1.670589E-23;  m[3116] =  5.485102E-24;
236      m[3118] =  3.656734E-24;  m[3122] =  2.631E-10;  m[102134] =  4.219309E-23;  m[3126] =  8.227653E-24;
237      m[3128] =  3.291061E-24;  m[3212] =  7.4E-20;  m[3214] =  1.828367E-23;  m[3216] =  5.485102E-24;
238      m[3218] =  3.656734E-24;  m[3222] =  8.018E-11;  m[3224] =  1.838582E-23;  m[3226] =  5.485102E-24;
239      m[3228] =  3.656734E-24;  m[3312] =  1.639E-10;  m[3314] =  6.648608E-23;  m[3322] =  2.9E-10;
240      m[3324] =  7.233101E-23;  m[3334] =  8.21E-11;  m[4112] =  2.991874E-22;  m[4114] =  4.088274E-23;
241      m[4122] =  2.E-13;  m[4132] =  1.12E-13;  m[4212] =  3.999999E-22;  m[4214] =  3.291061E-22;
242      m[4222] =  2.951624E-22;  m[4224] =  4.417531E-23;  m[4232] =  4.42E-13;  m[4332] =  6.9E-14;
243      m[4412] =  3.335641E-13;  m[4422] =  3.335641E-13;  m[4432] =  3.335641E-13;  m[5112] =  1.E-19;
244      m[5122] =  1.38E-12;  m[5132] =  1.42E-12;  m[5142] =  1.290893E-12;  m[5212] =  1.E-19;
245      m[5222] =  1.E-19;  m[5232] =  1.42E-12;  m[5242] =  1.290893E-12;  m[5312] =  1.E-19;
246      m[5322] =  1.E-19;  m[5332] =  1.55E-12;  m[5342] =  1.290893E-12;  m[5442] =  1.290893E-12;
247      m[5512] =  1.290893E-12;  m[5522] =  1.290893E-12;  m[5532] =  1.290893E-12;  m[5542] =  1.290893E-12;
248      m[10111] =  2.48382E-24;  m[10113] =  4.635297E-24;  m[10115] =  2.54136E-24;  m[10211] =  2.48382E-24;
249      m[10213] =  4.635297E-24;  m[10215] =  2.54136E-24;  m[10223] =  1.828367E-24;  m[10225] =  3.636531E-24;
250      m[10311] =  2.437823E-24;  m[10313] =  7.313469E-24;  m[10315] =  3.538775E-24;
251      m[10321] =  2.437823E-24;  m[10323] =  7.313469E-24;  m[10325] =  3.538775E-24;
252      m[10331] =  4.804469E-24;  m[10411] =  4.38E-24;  m[10413] =  3.29E-23;  m[10421] =  4.38E-24;
253      m[10423] =  3.22653E-23;  m[10431] =  6.5821E-22;  m[10433] =  6.5821E-22;  m[10441] =  6.453061E-23;
254      m[10511] =  4.39E-24;  m[10513] =  1.65E-23;  m[10521] =  4.39E-24;  m[10523] =  1.65E-23;
255      m[10531] =  4.39E-24;  m[10533] =  1.65E-23;  m[11114] =  2.194041E-24;  m[11116] =  1.828367E-24;
256      m[11212] =  1.880606E-24;  m[11216] =  1.828367E-24;  m[12112] =  2.194041E-24;
257      m[12114] =  2.194041E-24;  m[12116] =  5.063171E-24;  m[12126] =  1.828367E-24;
258      m[12212] =  2.194041E-24;  m[12214] =  2.194041E-24;  m[12216] =  5.063171E-24;
259      m[12224] =  2.194041E-24;  m[12226] =  1.828367E-24;  m[13112] =  6.582122E-24;  m[13114] =  1.09702E-23;
260      m[13116] =  5.485102E-24;  m[13122] =  1.316424E-23;  m[13124] =  1.09702E-23;  m[13126] =  6.928549E-24;
261      m[13212] =  6.582122E-24;  m[13214] =  1.09702E-23;  m[13216] =  5.485102E-24;  m[13222] =  6.582122E-24;
262      m[13224] =  1.09702E-23;  m[13226] =  5.485102E-24;  m[13314] =  2.742551E-23;
263      m[13324] =  2.742551E-23;  m[102142] =  1.828367E-22;  m[20022] =  1.E+16;  m[20113] =  1.567172E-24;
264      m[20213] =  1.567172E-24;  m[20223] =  2.708692E-23;  m[20313] =  3.782829E-24;
265      m[20315] =  2.384827E-24;  m[20323] =  3.782829E-24;  m[20325] =  2.384827E-24;
266      m[20333] =  1.198929E-23;  m[20413] =  2.63E-24;  m[20423] =  2.63E-24;  m[20433] =  6.5821E-22;
267      m[20443] =  7.395643E-22;  m[20513] =  2.63E-24;  m[20523] =  2.63E-24;  m[20533] =  2.63E-24;
268      m[21112] =  2.632849E-24;  m[21114] =  3.291061E-24;  m[21212] =  2.632849E-24;
269      m[21214] =  6.582122E-24;  m[22112] =  4.388081E-24;  m[22114] =  3.291061E-24;
270      m[22122] =  2.632849E-24;  m[22124] =  6.582122E-24;  m[22212] =  4.388081E-24;
271      m[22214] =  3.291061E-24;  m[22222] =  2.632849E-24;  m[22224] =  3.291061E-24;
272      m[23112] =  7.313469E-24;  m[23114] =  2.991874E-24;  m[23122] =  4.388081E-24;
273      m[23124] =  6.582122E-24;  m[23126] =  3.291061E-24;  m[23212] =  7.313469E-24;
274      m[23214] =  2.991874E-24;  m[23222] =  7.313469E-24;  m[23224] =  2.991874E-24;
275      m[30113] =  2.632849E-24;  m[30213] =  2.632849E-24;  m[30221] =  1.880606E-24;
276      m[30223] =  2.089563E-24;  m[30313] =  2.056913E-24;  m[30323] =  2.056913E-24;
277      m[30443] =  2.419898E-23;  m[31114] =  1.880606E-24;  m[31214] =  3.291061E-24;
278      m[32112] =  3.989164E-24;  m[32114] =  1.880606E-24;  m[32124] =  3.291061E-24;
279      m[32212] =  3.989164E-24;  m[32214] =  1.880606E-24;  m[32224] =  1.880606E-24;
280      m[33122] =  1.880606E-23;  m[42112] =  6.582122E-24;  m[42212] =  6.582122E-24;
281      m[43122] =  2.194041E-24;  m[53122] =  4.388081E-24;  m[100111] =  1.645531E-24;
282      m[100113] =  1.64553E-24;  m[100211] =  1.645531E-24;  m[100213] =  1.64553E-24;
283      m[100221] =  1.196749E-23;  m[100223] =  3.061452E-24;  m[100313] =  2.837122E-24;
284      m[100323] =  2.837122E-24;  m[100331] =  4.459432E-25;  m[100333] =  4.388081E-24;
285      m[100441] =  4.701516E-23;  m[100443] =  2.076379E-21;  m[100553] =  2.056913E-20;
286      m[200553] =  3.242425E-20;  m[300553] =  3.210791E-23;  m[9000111] =  8.776163E-24;
287      m[9000211] =  8.776163E-24;  m[9000443] =  8.227652E-24;  m[9000553] =  5.983747E-24;
288      m[9010111] =  3.164482E-24;  m[9010211] =  3.164482E-24;  m[9010221] =  9.403031E-24;
289      m[9010443] =  8.438618E-24;  m[9010553] =  8.3318E-24;  m[9020443] =  1.061633E-23;
290      m[9030221] =  6.038644E-24;  m[9042413] =  2.07634E-21;  m[9050225] =  1.394517E-24;
291      m[9060225] =  3.291061E-24;  m[9080225] =  4.388081E-24;  m[9090225] =  2.056913E-24;
292      m[9910445] =  2.07634E-21;  m[9920443] =  2.07634E-21;
293      return true;
294    }
295
296  };
297
298
299  const int LHCB_2011_I917009::stablePDGIds[205] = {
300    311, 543, 545, 551, 555, 557, 1103, 2101, 2103, 2203, 3101, 3103, 3201, 3203, 3303,
301    4101, 4103, 102144, 4201, 4203, 4301, 4303, 4312, 4314, 4322, 4324, 4334, 4403, 4414,
302    4424, 4434, 4444, 5101, 5103, 5114, 5201, 5203, 5214, 5224, 5301, 5303, 5314, 5324,
303    5334, 5401, 5403, 5412, 5414, 5422, 5424, 5432, 5434, 5444, 5503, 5514, 5524, 5534,
304    5544, 5554, 10022, 10333, 10335, 10443, 10541, 10543, 10551, 10553, 10555, 11112,
305    12118, 12122, 12218, 12222, 13316, 13326, 20543, 20553, 20555, 23314, 23324, 30343,
306    30353, 30363, 30553, 33314, 33324, 41214, 42124, 52114, 52214, 100311, 100315, 100321,
307    100325, 100411, 100413, 100421, 100423, 100551, 100555, 100557, 110551, 110553, 110555,
308    120553, 120555, 130553, 200551, 200555, 210551, 210553, 220553, 1000001, 1000002,
309    1000003, 1000004, 1000005, 1000006, 1000011, 1000012, 1000013, 1000014, 1000015,
310    1000016, 1000021, 1000022, 1000023, 1000024, 1000025, 1000035, 1000037, 1000039,
311    2000001, 2000002, 2000003, 2000004, 2000005, 2000006, 2000011, 2000012, 2000013,
312    2000014, 2000015, 2000016, 3000111, 3000113, 3000211, 3000213, 3000221, 3000223,
313    3000331, 3100021, 3100111, 3100113, 3200111, 3200113, 3300113, 3400113, 4000001,
314    4000002, 4000011, 4000012, 5000039, 9000221, 9900012, 9900014, 9900016, 9900023,
315    9900024, 9900041, 9900042 };
316
317
318  RIVET_DECLARE_PLUGIN(LHCB_2011_I917009);
319
320}