Rivet analyses

Multi-Strange Baryon production at mid rapidity in Pb–Pb at 2.76 TeV/nn

Experiment: ALICE (LHC)

Inspire ID: 1243865

Status: UNVALIDATED

Authors: - Cody B Duncan - Patrick Kirchgaesser - Johannes Bellm

References: - Phys.Lett. B728 (2014) 216-227 - 10.1016/j.physletb.2013.11.048 - arXiv: 1307.5543

Beams: 1000822080 1000822080

Beam energies: (287040.0, 287040.0)GeV

Run details: - Analysis of multi-strange baryon production at $\sqrt{s} = 2.76~\mathrm{TeV}$ for Pb-Pb collisions.

Measurements of transverse momentum (pT) spectra for charged Xi and Omega hyperon production at mid-rapidity in several centrality intervals for Pb-Pb collisions at sqrt(sNN) = 2.76 TeV recorded in 2010. Mid-rapidity yields, integrated over pT, have also been determined, together with the enhancements with respect to pp collisions and the hyperon-to-pion production ratios

Source code:ALICE_2014_I1243865.cc

// -*- C++ -*-
#include "Rivet/Analysis.hh"
#include "Rivet/Projections/CentralityProjection.hh"
#include "Rivet/Projections/HepMCHeavyIon.hh"
#include "Rivet/Analyses/AliceCommon.hh"
#include "Rivet/Tools/Cuts.hh"

namespace Rivet {


  class ALICE_2014_I1243865 : public Analysis {

  // @brief Multi-strange baryon production at mid-rapidity in 2.76 TeV Pb--Pb collisions
  public:

    /// Constructor
    RIVET_DEFAULT_ANALYSIS_CTOR(ALICE_2014_I1243865);


    // Book histograms and projections etc.
    void init() {
      // Particles of interest.
      declare(ALICE::PrimaryParticles(Cuts::absrap < 0.5),"CFS");

      // The event trigger.
      declare(ALICE::V0AndTrigger(), "V0-AND");

      // The centrality projection.
      declareCentrality(ALICE::V0MMultiplicity(),
           "ALICE_2015_CENT_PBPB", "V0M", "V0M");

      // Access the HepMC heavy ion info
      declare(HepMCHeavyIon(), "HepMC");

      // Xi Baryons.
      size_t ixi = 0;
      _histPtXi.resize(5);
      _histPtXi_bar.resize(5);
      for (string str : {"d01-","d02-","d03-","d04-","d05-"}){
        book(_histPtXi[ixi], str+"x01-y01");
        book(_histPtXi_bar[ixi], str+"x01-y02");
        ixi += 1;
      }

      // Omega Baryons.
      size_t iom = 0;
      _histPtOmega.resize(5);
      _histPtOmega_bar.resize(5);
      for (string str : {"d06-","d07-","d08-","d09-","d10-"}){
        book(_histPtOmega[iom], str+"x01-y01");
        book(_histPtOmega_bar[iom], str+"x01-y02");
        iom += 1;
      }

      // Sum of weights for the centrality intervals.
      sow.resize(_histPtOmega.size());
      for (int i = 0, N = _histPtOmega.size(); i < N; ++i) {
        book(sow[i], "sow_" + toString(i));
      }

      book(_histXitoPi, "d14-x01-y01");
      book(_histOmegatoPi, "d14-x01-y02");
    }


    void analyze(const Event& event) {
      // Event trigger.
      if (!apply<ALICE::V0AndTrigger>(event, "V0-AND")() ) vetoEvent;

      // Centrality.
      const CentralityProjection& cent = apply<CentralityProjection>(event,"V0M");
      const double c = cent();

      int centralityclass = -1;
      if(c > 0. && c <= 10) centralityclass = 0;
      if(c > 10. && c <= 20) centralityclass = 1;
      if(c > 20. && c <= 40) centralityclass = 2;
      if(c > 40. && c <= 60) centralityclass = 3;
      if(c > 60. && c <= 80) centralityclass = 4;
      if (centralityclass == -1) vetoEvent;
      // Fill sum of weights
      sow[centralityclass]->fill();
      int nPions = 0;
      int nXi = 0;
      int nOmega = 0;
      for (const Particle& p : apply<ALICE::PrimaryParticles>(event,"CFS").particles()) {
        const double pT = p.pT() / GeV;
        switch (p.pid()){
      case 211:
        nPions++;
        break;
           case 3312:
         _histPtXi[centralityclass]->fill(pT);
         nXi++;
         break;
       case -3312:
         _histPtXi_bar[centralityclass]->fill(pT);
         nXi++;
         break;
       case 3334:
         _histPtOmega[centralityclass]->fill(pT);
         nOmega++;
       break;
         case -3334:
         _histPtOmega_bar[centralityclass]->fill(pT);
         nOmega++;
       break;
         }
       }
       // Extract Npart form GenEvent. TODO: Unclear how to do
       // this in HepMC3
      const HepMCHeavyIon & hi = apply<HepMCHeavyIon>(event, "HepMC");
       if ( nPions != 0){
         const double npart = hi.Npart_proj() + hi.Npart_targ();
         if (nXi != 0)
           _histXitoPi->fill(npart, double(nXi) / double(nPions));
         if (nOmega != 0)
           _histOmegatoPi->fill(npart, double(nOmega) / double(nPions));
        }
     }

    void finalize() {
      for (int i = 0, N = _histPtOmega.size(); i < N; ++i) {
        const double s = 1./sow[i]->sumW();
        _histPtXi[i]->scaleW(s);
        _histPtXi_bar[i]->scaleW(s);
        _histPtOmega[i]->scaleW(s);
        _histPtOmega_bar[i]->scaleW(s);
      }
   }


  private:

    vector<Histo1DPtr> _histPtXi;
    vector<Histo1DPtr> _histPtXi_bar;
    vector<Histo1DPtr> _histPtOmega;
    vector<Histo1DPtr> _histPtOmega_bar;
    vector<CounterPtr> sow;
    Profile1DPtr _histXitoPi;
    Profile1DPtr _histOmegatoPi;

  };


  RIVET_DECLARE_PLUGIN(ALICE_2014_I1243865);

}