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