Rivet analyses referenceATLAS_2012_I1118269$b$-hadron production cross-section using decays to $D^*\mu^-X$ at $\sqrt{s} = 7$ TeVExperiment: ATLAS (LHC) Inspire ID: 1118269 Status: VALIDATED Authors:
Beam energies: (3500.0, 3500.0) GeV Run details:
Measurement of $b$-hadron production cross section using 3.3 pb$^{-1}$ of integrated luminosity, collected during the 2010 LHC run. The $b$-hadrons are selected by partially reconstructing $D^{*}\mu^-X$ final states using only direct semileptonic decays of $b$ to $D^*\mu^-X$. Differential cross sections as functions of $p_\perp$ and $|\eta|$. Source code: ATLAS_2012_I1118269.cc 1// -*- C++ -*-
2#include "Rivet/Analysis.hh"
3#include "Rivet/Particle.hh"
4
5namespace Rivet {
6
7
8 class ATLAS_2012_I1118269 : public Analysis {
9 public:
10
11 ATLAS_2012_I1118269() : Analysis("ATLAS_2012_I1118269")
12 { }
13
14 void init() {
15 book(_h_sigma_vs_pt ,1, 1, 1);
16 book(_h_sigma_vs_eta ,2, 1, 1);
17 }
18
19 /// Perform the per-event analysis
20 void analyze(const Event& event) {
21 Particles bhadrons;
22 for(ConstGenParticlePtr p: HepMCUtils::particles(event.genEvent())) {
23
24 if (!( PID::isHadron( p->pdg_id() ) && PID::hasBottom( p->pdg_id() )) ) continue;
25
26 ConstGenVertexPtr dv = p->end_vertex();
27
28 /// @todo In future, convert to use built-in 'last B hadron' function
29 bool hasBdaughter = false;
30 if ( PID::isHadron( p->pdg_id() ) && PID::hasBottom( p->pdg_id() )) { // b-hadron selection
31 if (dv) {
32 /// @todo particles_out_const_iterator is deprecated in HepMC3
33 for(ConstGenParticlePtr pp: HepMCUtils::particles(dv, Relatives::CHILDREN)){
34 if ( PID::isHadron( pp->pdg_id() ) && PID::hasBottom( pp->pdg_id()) ) {
35 hasBdaughter = true;
36 }
37 }
38 }
39 }
40 if (hasBdaughter) continue;
41
42 bhadrons += Particle(*p);
43 }
44
45 for (const Particle& particle : bhadrons) {
46 double eta = particle.eta();
47 double pt = particle.pT();
48
49 if (!(inRange(eta, -2.5, 2.5))) continue;
50 if (pt < 9.*GeV) continue;
51
52 _h_sigma_vs_pt->fill(pt);
53 _h_sigma_vs_eta->fill(fabs(eta));
54
55 }
56
57 }
58
59
60 void finalize() {
61 scale(_h_sigma_vs_pt, crossSection()/nanobarn/sumOfWeights());
62 scale(_h_sigma_vs_eta, crossSection()/microbarn/sumOfWeights());
63 }
64
65
66 private:
67
68 Histo1DPtr _h_sigma_vs_pt;
69 Histo1DPtr _h_sigma_vs_eta;
70
71 };
72
73
74 RIVET_DECLARE_PLUGIN(ATLAS_2012_I1118269);
75
76}
|