Rivet analyses

Transverse momentum spectra of pions, kaons and protons in pp collisions at 0.9 TeV

Experiment: ALICE (LHC)

Inspire ID: 885104

Status: VALIDATED

Authors: - Pablo Bueno Gomez - Eva Sicking

References: - Eur.Phys.J.C71:1655,2011. - arXiv: 1101.4110

Beams: p+ p+

Beam energies: (450.0, 450.0)GeV

Run details: - Diffractive events need to be enabled.

Obtaining the transverse momentum spectra of pions, kaons and protons in pp collisions at $\sqrt{s} = 0.9$ TeV with ALICE at the LHC. Mean transverse momentum as a function of the mass of the emitted particle is also included.

Source code:ALICE_2011_I885104.cc

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

namespace Rivet {


  class ALICE_2011_I885104 : public Analysis {
  public:

    RIVET_DEFAULT_ANALYSIS_CTOR(ALICE_2011_I885104);


    void init() {
      const ChargedFinalState cfs((Cuts::etaIn(-15, 15)));
      declare(cfs, "CFS");

      book(_histPtPions        ,"d01-x01-y01");
      book(_histPtAntiPions    ,"d01-x01-y02");
      book(_histPtKaons        ,"d02-x01-y01");
      book(_histPtAntiKaons    ,"d02-x01-y02");
      book(_histPtProtons      ,"d03-x01-y01");
      book(_histPtAntiProtons  ,"d03-x01-y02");
      book(_histAveragePt      ,"d04-x01-y01");
    }


    void analyze(const Event& event) {
      if(_edges.empty()) _edges = _histAveragePt->xEdges();
      const ChargedFinalState& cfs = apply<ChargedFinalState>(event, "CFS");
      for (const Particle& p : cfs.particles()) {
        if(p.absrap()<0.5) {
          switch (p.pid()) {
            case 211:
              _histPtPions->fill(p.pT()/GeV);
              _histAveragePt->fill(_edges[0], p.pT()/GeV);
              break;
            case -211:
              _histPtAntiPions->fill(p.pT()/GeV);
              _histAveragePt->fill(_edges[0], p.pT()/GeV);
              break;
            case 2212:
              if ( !(p.hasAncestorWith(Cuts::pid == 3322) ||                             // Xi0
                     p.hasAncestorWith(Cuts::pid == 3122) || p.hasAncestorWith(Cuts::pid == -3122) ||     // Lambda
                     p.hasAncestorWith(Cuts::pid == 3222) || p.hasAncestorWith(Cuts::pid == -3222) ||     // Sigma+/-
                     p.hasAncestorWith(Cuts::pid == 3312) || p.hasAncestorWith(Cuts::pid == -3312) ) ) {  // Xi-/+
                _histPtProtons->fill(p.pT()/GeV);
                _histAveragePt->fill(_edges[2], p.pT()/GeV);
              }
              break;
            case -2212:
              if ( !(p.hasAncestorWith(Cuts::pid == 3322) ||                             // Xi0
                     p.hasAncestorWith(Cuts::pid == 3122) || p.hasAncestorWith(Cuts::pid == -3122) ||     // Lambda
                     p.hasAncestorWith(Cuts::pid == 3222) || p.hasAncestorWith(Cuts::pid == -3222) ||     // Sigma+/-
                     p.hasAncestorWith(Cuts::pid == 3312) || p.hasAncestorWith(Cuts::pid == -3312) ) ) {  // Xi-/+
                _histPtAntiProtons->fill(p.pT()/GeV);
                _histAveragePt->fill(_edges[2], p.pT()/GeV);
              }
              break;
            case 321:
              _histPtKaons->fill(p.pT()/GeV);
              _histAveragePt->fill(_edges[1], p.pT()/GeV);
              break;
            case -321:
              _histPtAntiKaons->fill(p.pT()/GeV);
              _histAveragePt->fill(_edges[1], p.pT()/GeV);
              break;
          }
        }
      }
    }


    void finalize() {
      scale(_histPtPions,       1./sumOfWeights());
      scale(_histPtProtons,     1./sumOfWeights());
      scale(_histPtKaons,       1./sumOfWeights());
      scale(_histPtAntiPions,   1./sumOfWeights());
      scale(_histPtAntiProtons, 1./sumOfWeights());
      scale(_histPtAntiKaons,   1./sumOfWeights());
    }


  private:

    Histo1DPtr _histPtPions;
    Histo1DPtr _histPtProtons;
    Histo1DPtr _histPtKaons;
    Histo1DPtr _histPtAntiPions;
    Histo1DPtr _histPtAntiProtons;
    Histo1DPtr _histPtAntiKaons;
    BinnedProfilePtr<string> _histAveragePt;
    vector<string> _edges;

  };



  RIVET_DECLARE_ALIASED_PLUGIN(ALICE_2011_I885104, ALICE_2011_S8945144);

}

Aliases: - ALICE_2011_S8945144