Rivet analyses

The differential production cross section of the ϕ(1020) meson in $\sqrt{s}=7$ TeV pp collisions measured with the ATLAS detector

Experiment: ATLAS (LHC)

Inspire ID: 1282441

Status: VALIDATED

Authors: - Tim Martin - Kiran Joshi

References: - Expt page: ATLAS-STDM-2011-47 - arXiv: 1402.6162 - Eur.Phys.J. C74 (2014) no.7, 2895

Beams: p+ p+

Beam energies: (3500.0, 3500.0)GeV

Run details: - Run minimum bias events

A measurement is presented of the ϕ → K+K production cross section at $\sqrt{s}$ = 7 TeV using pp collision data corresponding to an integrated luminosity of 383 μb−1 collected with the ATLAS experiment at the LHC. Selection of ϕ(1020) mesons is based on the identification of charged kaons by their energy loss in the pixel detector. The differential cross section is measured as a function of the transverse momentum, pT, ϕ, and rapidity, yϕ, of the ϕ(1020) meson in the fiducial region 500 < pT, ϕ < 1200 MeV, |yϕ| < 0.8, kaon pT, K > 230 MeV and kaon momentum pK < 800 MeV. The integrated ϕ(1020) production cross section in this fiducial range is measured to be σϕ → K+K = 570 (stat) (syst) (lumi) μb.

Source code:ATLAS_2014_I1282441.cc

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

namespace Rivet {


  class ATLAS_2014_I1282441 : public Analysis {
  public:

    ATLAS_2014_I1282441()
      : Analysis("ATLAS_2014_I1282441")
    { }


    void init() {

      // Use a large eta range such that we can discriminate on y
      /// @todo Convert to use a y-cut directly
      UnstableParticles ufs(Cuts::abseta < 10 && Cuts::pT > 500*MeV);
      IdentifiedFinalState phis(ufs);
      phis.acceptIdPair(PID::PHI);
      declare(phis, "Phis");

      IdentifiedFinalState kpms(Cuts::abseta < 2.0 && Cuts::pT > 230*MeV);
      kpms.acceptIdPair(PID::KPLUS);
      declare(kpms, "Kpms");

      book(_h_phi_pT       ,1,1,1);
      book(_h_phi_rapidity ,2,1,1);
    }


    void analyze(const Event& event) {
      const Particles& ks_all = apply<IdentifiedFinalState>(event, "Kpms").particles();
      Particles kp, km;
      for (const Particle& p : ks_all) {
        if (!p.hasAncestorWith(Cuts::pid == PID::PHI)) { MSG_DEBUG("-- K not from phi."); continue; }
        if (p.p3().mod() > 800*MeV) { MSG_DEBUG("-- p K too high."); continue; }
        (p.charge() > 0 ? kp : km).push_back(p);
      }

      const Particles& phis_all = apply<FinalState>(event, "Phis").particles();
      Particles phis;
      /// @todo Use particles(Cuts&) instead
      for (const Particle& p : phis_all) {
        if ( p.absrap() > 0.8 ) { MSG_DEBUG("-- phi Y too high."); continue; }
        if ( p.pT() > 1.2*GeV ) { MSG_DEBUG("-- phi pT too high."); continue; }
        phis.push_back(p);
      }

      // Find Phi -> KK decays through matching of the kinematics
      if (!kp.empty() && !km.empty() && !phis.empty()) {
        MSG_DEBUG("Numbers of particles:  #phi=" << phis.size() << ", #K+=" << kp.size() << ", #K-=" << km.size());
        for (size_t ip = 0; ip < phis.size(); ++ip) {
          const Particle& phi = phis[ip];
          for (size_t ikm = 0; ikm < km.size(); ++ikm) {
            for (size_t ikp = 0; ikp < kp.size(); ++ikp) {
              const FourMomentum mom = kp[ikp].mom() + km[ikm].mom();
              if ( fuzzyEquals(mom.mass(), phi.mass(), 1e-5) ) {
                MSG_DEBUG("Accepted combinatoric: phi#:" << ip << " K+#:" << ikp << " K-#:" << ikm);
                _h_phi_rapidity->fill(phi.absrap());
                _h_phi_pT->fill(phi.pT()/MeV);
              } else {
                MSG_DEBUG("Rejected combinatoric: phi#:" << ip << " K+#:" << ikp << " K-#:" << ikm << " Mass difference is " << mom.mass()-phi.mass());
              }
            }
          }
        }
      }

    }


    void finalize() {
      scale(_h_phi_rapidity, crossSection()/millibarn/sumOfWeights());
      scale(_h_phi_pT, crossSection()/microbarn/sumOfWeights());
    }


  private:

    Histo1DPtr _h_phi_rapidity, _h_phi_pT;

  };


  RIVET_DECLARE_PLUGIN(ATLAS_2014_I1282441);

}