rivet is hosted by Hepforge, IPPP Durham

Rivet analyses reference

ALICE_2013_I1225979

Charged particle production as function of centrality, central events only, in PbPb collisions at 2.76 TeV.
Experiment: ALICE (LHC)
Inspire ID: 1225979
Status: UNVALIDATED
Authors:
  • Christian Bierlich
References:
  • Phys.Lett.B726(2013)610-622
  • DOI:10.1016/j.physletb.2013.09.022
  • arXiv: 1304.0347
Beams: 1000822080 1000822080
Beam energies: (287040.0, 287040.0) GeV
Run details:
  • PbPb minimum bias events. The analysis holds the Primary Particle definition, so don't limit decays on generator level.

Charged particle pseudorapidity density in centrality classes 0-5,5-10,10-20,20-30. Measurements cover a wide $\eta$ range from -3.5 to 5. Centrality classes refer to forward V0 spectrum, as also measured by ALICE, can be modified to use a user definition instead.

Source code: ALICE_2013_I1225979.cc
  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
// -*- C++ -*-
#include "Rivet/Analysis.hh"
#include "Rivet/Projections/ChargedFinalState.hh"
#include "Rivet/Tools/AliceCommon.hh"
#include "Rivet/Projections/AliceCommon.hh"
namespace Rivet {


  /// @brief ALICE PbPb at 2.76 TeV eta distributions.
  class ALICE_2013_I1225979 : public Analysis {
  public:

    /// Constructor
    DEFAULT_RIVET_ANALYSIS_CTOR(ALICE_2013_I1225979);


    /// @name Analysis methods
    //@{

    /// Book histograms and initialise projections before the run
    void init() {
      // Initialise and register projections
      // Centrality projection.
      declareCentrality(ALICE::V0MMultiplicity(), "ALICE_2015_PBPBCentrality",
        "V0M","V0M");
      // Projections for the 2-out-of-3 trigger.
      declare(ChargedFinalState( (Cuts::eta > 2.8 && Cuts::eta < 5.1) && 
         Cuts::pT > 0.1*GeV), "VZERO1");
      declare(ChargedFinalState( (Cuts::eta > -3.7 && Cuts::eta < -1.7) &&
	 Cuts::pT > 0.1*GeV), "VZERO2");
      declare(ChargedFinalState(Cuts::abseta < 1. && Cuts::pT > 0.15*GeV),
        "SPD");

      // Primary particles.
      declare(ALICE::PrimaryParticles(Cuts::abseta < 5.6),"APRIM");
      
      // The centrality bins upper bin edges.
      centralityBins = { 5., 10., 20., 30. };
      // Centrality histograms and corresponding sow counters.
      for (int i = 0; i < 4; ++i) {
        histEta[centralityBins[i]] = bookHisto1D(1, 1, i + 1);
	sow[centralityBins[i]] = bookCounter("sow_" + toString(i));
      }
    }


    /// Perform the per-event analysis
    void analyze(const Event& event) {
      const double weight = event.weight();
      // Trigger projections.
      const ChargedFinalState& vz1 = 
        applyProjection<ChargedFinalState>(event,"VZERO1");
      const ChargedFinalState& vz2 = 
        applyProjection<ChargedFinalState>(event,"VZERO2");
      const ChargedFinalState& spd = 
        applyProjection<ChargedFinalState>(event,"SPD");
      int fwdTrig = (vz1.particles().size() > 0 ? 1 : 0);
      int bwdTrig = (vz2.particles().size() > 0 ? 1 : 0);
      int cTrig = (spd.particles().size() > 0 ? 1 : 0);
      
      if (fwdTrig + bwdTrig + cTrig < 2) vetoEvent;
      // We must have direct acces to the centrality projection.
      const CentralityProjection& cent = apply<CentralityProjection>(event,"V0M");
      double c = cent();
      // Find the correct centrality histogram
      auto hItr = histEta.upper_bound(c);
      if (hItr == histEta.end()) return;
      // Find the correct sow.
      auto sItr = sow.upper_bound(c);
      if (sItr == sow.end()) return;
      sItr->second->fill(weight);

      // Fill the histograms.
      for ( const auto& p : 
        applyProjection<ALICE::PrimaryParticles>(event,"APRIM").particles() )
	if(p.abscharge() > 0) hItr->second->fill(p.eta(), weight);

    }


    /// Normalise histograms etc., after the run
    void finalize() {
      for (int i = 0; i < 4; ++i)
        histEta[centralityBins[i]]->scaleW(1./sow[centralityBins[i]]->sumW());
	
    }

    //@}


    /// @name Histograms
    //@{
     vector<double> centralityBins;
     map<double,Histo1DPtr> histEta;
     map<double, CounterPtr> sow;
    //@}


  };


  // The hook for the plugin system
  DECLARE_RIVET_PLUGIN(ALICE_2013_I1225979);


}