Rivet analyses

Measurement of J/ψ production

Experiment: ATLAS (LHC)

Inspire ID: 896268

Status: VALIDATED

Authors: none listed

References: - Expt page: ATLAS-BPHY-2010-01 - arXiv: 1104.3038

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/ψ production cross-section and fraction of J/ψ 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.3pb−1 of integrated luminosity. The cross section is measured from a minimum pT 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/ψ production to date.

Source code:ATLAS_2011_I896268.cc

// -*- C++ -*-
#include "Rivet/Analysis.hh"
#include "Rivet/Projections/Beam.hh"
#include "Rivet/Projections/ChargedFinalState.hh"
#include "Rivet/Projections/FinalState.hh"
#include "Rivet/Projections/UnstableParticles.hh"

namespace Rivet {


  /// J/psi production at ATLAS
  class ATLAS_2011_I896268 : public Analysis {
  public:

    /// Constructor
    RIVET_DEFAULT_ANALYSIS_CTOR(ATLAS_2011_I896268);


    /// @name Analysis methods
    /// @{

    void init() {
      declare(UnstableParticles(), "UFS");
      book(_nonPrRapHigh, 14, 1, 1);
      book(_nonPrRapMedHigh, 13, 1, 1);
      book(_nonPrRapMedLow, 12, 1, 1);
      book(_nonPrRapLow, 11, 1, 1);
      book(_PrRapHigh, 18, 1, 1);
      book(_PrRapMedHigh, 17, 1, 1);
      book(_PrRapMedLow, 16, 1, 1);
      book(_PrRapLow, 15, 1, 1);
      book(_IncRapHigh, 20, 1, 1);
      book(_IncRapMedHigh, 21, 1, 1);
      book(_IncRapMedLow, 22, 1, 1);
      book(_IncRapLow, 23, 1, 1);
    }


    void analyze(const Event& e) {

      // Final state of unstable particles to get particle spectra
      const UnstableParticles& ufs = apply<UnstableParticles>(e, "UFS");

      for (const Particle& p : ufs.particles()) {
        if (p.abspid() != 443) continue;
        ConstGenVertexPtr gv = p.genParticle()->production_vertex();
        bool nonPrompt = false;
        if (gv) {
          for (ConstGenParticlePtr pi : HepMCUtils::particles(gv, Relatives::ANCESTORS)) {
            const PdgId pid2 = pi->pdg_id();
            if (PID::isHadron(pid2) && PID::hasBottom(pid2)) {
              nonPrompt = true;
              break;
            }
          }
        }
        double absrap = p.absrap();
        double xp = p.perp();

        if (absrap <= 2.4 and absrap > 2.) {
          if (nonPrompt)
            _nonPrRapHigh->fill(xp);
          else if (!nonPrompt)
            _PrRapHigh->fill(xp);
          _IncRapHigh->fill(xp);
        }
        else if (absrap <= 2. and absrap > 1.5) {
          if (nonPrompt)
            _nonPrRapMedHigh->fill(xp);
          else if (!nonPrompt)
            _PrRapMedHigh->fill(xp);
          _IncRapMedHigh->fill(xp);
        }
        else if (absrap <= 1.5 and absrap > 0.75) {
          if (nonPrompt)
            _nonPrRapMedLow->fill(xp);
          else if (!nonPrompt)
            _PrRapMedLow->fill(xp);
          _IncRapMedLow->fill(xp);
        }

        else if (absrap <= 0.75) {
          if (nonPrompt)
            _nonPrRapLow->fill(xp);
          else if (!nonPrompt)
            _PrRapLow->fill(xp);
          _IncRapLow->fill(xp);
        }
      }
    }


    /// Finalize
    void finalize() {
      double factor = crossSection() / nanobarn * 0.0593;

      scale(_PrRapHigh, factor / sumOfWeights());
      scale(_PrRapMedHigh, factor / sumOfWeights());
      scale(_PrRapMedLow, factor / sumOfWeights());
      scale(_PrRapLow, factor / sumOfWeights());

      scale(_nonPrRapHigh, factor / sumOfWeights());
      scale(_nonPrRapMedHigh, factor / sumOfWeights());
      scale(_nonPrRapMedLow, factor / sumOfWeights());
      scale(_nonPrRapLow, factor / sumOfWeights());

      scale(_IncRapHigh, 1000. * factor / sumOfWeights());
      scale(_IncRapMedHigh, 1000. * factor / sumOfWeights());
      scale(_IncRapMedLow, 1000. * factor / sumOfWeights());
      scale(_IncRapLow, 1000. * factor / sumOfWeights());
    }

    /// @}


  private:

    Histo1DPtr _nonPrRapHigh;
    Histo1DPtr _nonPrRapMedHigh;
    Histo1DPtr _nonPrRapMedLow;
    Histo1DPtr _nonPrRapLow;

    Histo1DPtr _PrRapHigh;
    Histo1DPtr _PrRapMedHigh;
    Histo1DPtr _PrRapMedLow;
    Histo1DPtr _PrRapLow;

    Histo1DPtr _IncRapHigh;
    Histo1DPtr _IncRapMedHigh;
    Histo1DPtr _IncRapMedLow;
    Histo1DPtr _IncRapLow;
  };


  RIVET_DECLARE_ALIASED_PLUGIN(ATLAS_2011_I896268, ATLAS_2011_S9035664);

}

Aliases: - ATLAS_2011_S9035664