rivet is hosted by Hepforge, IPPP Durham

Rivet analyses reference

ATLAS_2011_I896268

Measurement of $J/\psi$ production
Experiment: ATLAS (LHC)
Inspire ID: 896268
Status: VALIDATED
No authors listed References: Beams: p+ p+
Beam energies: (3500.0, 3500.0) GeV
Run details:
  • pp to hadrons including both prompt J/Psi production and the production in B decays

The inclusive $J/\psi$ production cross-section and fraction of $J/\psi$ mesons produced in B-hadron decays are measured in proton-proton collisions at $\sqrt{s} = 7$ TeV with the ATLAS detector at the LHC, as a function of the transverse momentum and rapidity of the J/psi, using 2.3$\textrm{pb}^{-1}$ of integrated luminosity. The cross section is measured from a minimum $p_T$ of 1 GeV to a maximum of 70 GeV and for rapidities within $|y| < 2.4$ giving the widest reach of any measurement of $J/\psi$ production to date.

Source code: ATLAS_2011_I896268.cc
  1// -*- C++ -*-
  2#include "Rivet/Analysis.hh"
  3#include "Rivet/Projections/Beam.hh"
  4#include "Rivet/Projections/FinalState.hh"
  5#include "Rivet/Projections/ChargedFinalState.hh"
  6#include "Rivet/Projections/UnstableParticles.hh"
  7
  8namespace Rivet {
  9
 10
 11  /// J/psi production at ATLAS
 12  class ATLAS_2011_I896268: public Analysis {
 13  public:
 14
 15    /// Constructor
 16    RIVET_DEFAULT_ANALYSIS_CTOR(ATLAS_2011_I896268);
 17
 18
 19    /// @name Analysis methods
 20    /// @{
 21
 22    void init() {
 23      declare(UnstableParticles(), "UFS");
 24      book(_nonPrRapHigh    , 14, 1, 1);
 25      book(_nonPrRapMedHigh , 13, 1, 1);
 26      book(_nonPrRapMedLow  , 12, 1, 1);
 27      book(_nonPrRapLow     , 11, 1, 1);
 28      book(_PrRapHigh       , 18, 1, 1);
 29      book(_PrRapMedHigh    , 17, 1, 1);
 30      book(_PrRapMedLow     , 16, 1, 1);
 31      book(_PrRapLow        , 15, 1, 1);
 32      book(_IncRapHigh      , 20, 1, 1);
 33      book(_IncRapMedHigh   , 21, 1, 1);
 34      book(_IncRapMedLow    , 22, 1, 1);
 35      book(_IncRapLow       , 23, 1, 1);
 36    }
 37
 38
 39    void analyze(const Event& e) {
 40
 41      // Final state of unstable particles to get particle spectra
 42      const UnstableParticles& ufs = apply<UnstableParticles>(e, "UFS");
 43
 44      for (const Particle& p : ufs.particles()) {
 45        if (p.abspid() != 443) continue;
 46        ConstGenVertexPtr gv = p.genParticle()->production_vertex();
 47        bool nonPrompt = false;
 48        if (gv) {
 49          for (ConstGenParticlePtr pi: HepMCUtils::particles(gv, Relatives::ANCESTORS)) {
 50            const PdgId pid2 = pi->pdg_id();
 51            if (PID::isHadron(pid2) && PID::hasBottom(pid2)) {
 52              nonPrompt = true;
 53              break;
 54            }
 55          }
 56        }
 57        double absrap = p.absrap();
 58        double xp = p.perp();
 59
 60        if (absrap<=2.4 and absrap>2.) {
 61          if (nonPrompt) _nonPrRapHigh->fill(xp);
 62          else if (!nonPrompt) _PrRapHigh->fill(xp);
 63          _IncRapHigh->fill(xp);
 64        }
 65        else if (absrap<=2. and absrap>1.5) {
 66          if (nonPrompt) _nonPrRapMedHigh->fill(xp);
 67          else if (!nonPrompt) _PrRapMedHigh->fill(xp);
 68          _IncRapMedHigh->fill(xp);
 69        }
 70        else if (absrap<=1.5 and absrap>0.75) {
 71          if (nonPrompt) _nonPrRapMedLow->fill(xp);
 72          else if (!nonPrompt) _PrRapMedLow->fill(xp);
 73          _IncRapMedLow->fill(xp);
 74        }
 75
 76        else if (absrap<=0.75) {
 77          if (nonPrompt) _nonPrRapLow->fill(xp);
 78          else if (!nonPrompt) _PrRapLow->fill(xp);
 79          _IncRapLow->fill(xp);
 80        }
 81      }
 82    }
 83
 84
 85    /// Finalize
 86    void finalize() {
 87      double factor = crossSection()/nanobarn*0.0593;
 88
 89      scale(_PrRapHigh      , factor/sumOfWeights());
 90      scale(_PrRapMedHigh   , factor/sumOfWeights());
 91      scale(_PrRapMedLow    , factor/sumOfWeights());
 92      scale(_PrRapLow       , factor/sumOfWeights());
 93
 94      scale(_nonPrRapHigh   , factor/sumOfWeights());
 95      scale(_nonPrRapMedHigh, factor/sumOfWeights());
 96      scale(_nonPrRapMedLow , factor/sumOfWeights());
 97      scale(_nonPrRapLow    , factor/sumOfWeights());
 98
 99      scale(_IncRapHigh     , 1000.*factor/sumOfWeights());
100      scale(_IncRapMedHigh  , 1000.*factor/sumOfWeights());
101      scale(_IncRapMedLow   , 1000.*factor/sumOfWeights());
102      scale(_IncRapLow      , 1000.*factor/sumOfWeights());
103
104    }
105
106    /// @}
107
108
109  private:
110
111    Histo1DPtr _nonPrRapHigh;
112    Histo1DPtr _nonPrRapMedHigh;
113    Histo1DPtr _nonPrRapMedLow;
114    Histo1DPtr _nonPrRapLow;
115
116    Histo1DPtr _PrRapHigh;
117    Histo1DPtr _PrRapMedHigh;
118    Histo1DPtr _PrRapMedLow;
119    Histo1DPtr _PrRapLow;
120
121    Histo1DPtr _IncRapHigh;
122    Histo1DPtr _IncRapMedHigh;
123    Histo1DPtr _IncRapMedLow;
124    Histo1DPtr _IncRapLow;
125
126  };
127
128
129  RIVET_DECLARE_ALIASED_PLUGIN(ATLAS_2011_I896268, ATLAS_2011_S9035664);
130
131}