Rivet Analyses Reference

ATLAS_2015_I1360290

Charged particle spectra in Pb--Pb collisions at $\sqrt{s_{NN}} = 2.76$ TeV.
Experiment: ATLAS (LHC)
Inspire ID: 1360290
Status: UNVALIDATED
Authors:
  • Christian Bierlich
References:Beams: 1000822080 1000822080
Beam energies: (287040.0, 287040.0) GeV
Run details:
  • Pb--Pb minimum bias events. Centrality calibration from ATLAS_PBPB_CENTRALITY.

Invariant $p_\perp$ spectra of charged particles as function of centrality, in Pb--Pb collisions. Also measured is $\eta$ distributions at various $p_\perp$ intervals. Nuclear modification factors currently not implemented, but could be.

Source code: ATLAS_2015_I1360290.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
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
// -*- C++ -*-
#include "Rivet/Analysis.hh"
#include "Rivet/Projections/ChargedFinalState.hh"
#include "Rivet/Tools/AtlasCommon.hh"

namespace Rivet {


  /// @brief Add a short analysis description here
  class ATLAS_2015_I1360290 : public Analysis {
  public:

    /// Constructor
    RIVET_DEFAULT_ANALYSIS_CTOR(ATLAS_2015_I1360290);


    /// @name Analysis methods
    //@{

    /// Book histograms and initialise projections before the run
    void init() {

      // Initialise and register projections
      // Centrality projection.
      declareCentrality(ATLAS::SumET_PBPB_Centrality(), "ATLAS_PBPB_CENTRALITY",
	"sumETFwd","sumETFwd");
      // Trigger projection.
      declare(ATLAS::MinBiasTrigger(),"Trigger");
      // The measured final state.
      declare(ChargedFinalState (Cuts::abseta < 2. &&
        Cuts::pT > 0.5*GeV && Cuts::pT < 150.0*GeV), "CFS");
      
      taa = {26.3, 20.6, 14.4, 8.73, 5.05, 2.70, 1.34, 0.41};
      centData = {5., 10., 20., 30., 40., 50., 60., 80.};
      
      for (int i = 0, N = centData.size(); i < N; ++i) {
	// eta hists starts from table 55 ( first 1.7 < pT < 2.0)
        book(histEta1[centData[i]], 55 + i, 1, 1);
	// From table 64, 6.7 < pT < 7.7
	book(histEta2[centData[i]], 64 + i, 1, 1 );
	// From table 73, 19.9 < pT < 22.8
	book(histEta3[centData[i]], 73 + i, 1, 1 );
	// From table 82, 59.8 < pT < 94.8
	book(histEta4[centData[i]], 82 + i, 1, 1 );
	// pt hists starts from table 2 on hepmc, |eta| < 2.0
	book(histpT[centData[i]], 2 + i, 1, 1);
	// keep track of sow in centrality bins.
	book(sow[centData[i]], "sow_" + toString(i));
      }

    }


    /// Perform the per-event analysis
    void analyze(const Event& event) {
      if ( !apply<ATLAS::MinBiasTrigger>(event, "Trigger")() ) vetoEvent;
     const CentralityProjection& cent = apply<CentralityProjection>(event,"sumETFwd");
      double c = cent();
      // Find the correct centrality histograms
      auto hItr1 = histEta1.upper_bound(c);
      if (hItr1 == histEta1.end()) return;
      auto hItr2 = histEta2.upper_bound(c);
      if (hItr2 == histEta2.end()) return;
      auto hItr3 = histEta3.upper_bound(c);
      if (hItr3 == histEta3.end()) return;
      auto hItr4 = histEta4.upper_bound(c);
      if (hItr4 == histEta4.end()) return;
      auto hpTItr = histpT.upper_bound(c);
      if (hpTItr == histpT.end()) return;
      // Find the correct sow.
      auto sItr = sow.upper_bound(c);
      if (sItr == sow.end()) return;
      sItr->second->fill();

      for (const auto& p : apply<ChargedFinalState>(event,"CFS").particles()) {
        double pT = p.pT();
	double eta = abs(p.eta());
	if (pT > 1.7 && pT < 2.0) hItr1->second->fill(eta, 0.5);
	else if (pT > 6.7 && pT < 7.7) hItr2->second->fill(eta, 0.5);
	else if (pT > 19.9 && pT < 22.8) hItr3->second->fill(eta, 0.5);
	else if (pT > 59.8 && pT < 94.8) hItr4->second->fill(eta, 0.5);
	if (eta < 2) hpTItr->second->fill(pT, 1.0/2./M_PI/pT/4.);
      
      }

    }


    /// Normalise histograms etc., after the run
    void finalize() {
      for (int i = 0, N = centData.size(); i < N; ++i) {
        histEta1[centData[i]]->scaleW(1./sow[centData[i]]->sumW());
        histEta2[centData[i]]->scaleW(1./sow[centData[i]]->sumW());
        histEta3[centData[i]]->scaleW(1./sow[centData[i]]->sumW());
        histEta4[centData[i]]->scaleW(1./sow[centData[i]]->sumW());
        histpT[centData[i]]->scaleW(1./sow[centData[i]]->sumW()/taa[i]);

      }

    }

    //@}


    /// @name Histograms
    //@{
    // The centrality binned histograms
    map<double, Histo1DPtr> histEta1;
    map<double, Histo1DPtr> histEta2;
    map<double, Histo1DPtr> histEta3;
    map<double, Histo1DPtr> histEta4;
    map<double, Histo1DPtr> histpT;
    map<double, CounterPtr> sow;


    vector<double> centData;
    vector<double> taa;
    //@}


  };


  // The hook for the plugin system
  RIVET_DECLARE_PLUGIN(ATLAS_2015_I1360290);


}