rivet is hosted by Hepforge, IPPP Durham

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// -*- C++ -*-
  2#include "Rivet/Analysis.hh"
  3#include "Rivet/Projections/ChargedFinalState.hh"
  4#include "Rivet/Tools/AtlasCommon.hh"
  5
  6namespace Rivet {
  7
  8
  9  /// @brief Add a short analysis description here
 10  class ATLAS_2015_I1360290 : public Analysis {
 11  public:
 12
 13    /// Constructor
 14    RIVET_DEFAULT_ANALYSIS_CTOR(ATLAS_2015_I1360290);
 15
 16
 17    /// @name Analysis methods
 18    //@{
 19
 20    /// Book histograms and initialise projections before the run
 21    void init() {
 22
 23      // Initialise and register projections
 24      // Centrality projection.
 25      declareCentrality(ATLAS::SumET_PBPB_Centrality(), "ATLAS_PBPB_CENTRALITY",
 26	"sumETFwd","sumETFwd");
 27      // Trigger projection.
 28      declare(ATLAS::MinBiasTrigger(),"Trigger");
 29      // The measured final state.
 30      declare(ChargedFinalState (Cuts::abseta < 2. &&
 31        Cuts::pT > 0.5*GeV && Cuts::pT < 150.0*GeV), "CFS");
 32      
 33      taa = {26.3, 20.6, 14.4, 8.73, 5.05, 2.70, 1.34, 0.41};
 34      centData = {5., 10., 20., 30., 40., 50., 60., 80.};
 35      
 36      for (int i = 0, N = centData.size(); i < N; ++i) {
 37	// eta hists starts from table 55 ( first 1.7 < pT < 2.0)
 38        book(histEta1[centData[i]], 55 + i, 1, 1);
 39	// From table 64, 6.7 < pT < 7.7
 40	book(histEta2[centData[i]], 64 + i, 1, 1 );
 41	// From table 73, 19.9 < pT < 22.8
 42	book(histEta3[centData[i]], 73 + i, 1, 1 );
 43	// From table 82, 59.8 < pT < 94.8
 44	book(histEta4[centData[i]], 82 + i, 1, 1 );
 45	// pt hists starts from table 2 on hepmc, |eta| < 2.0
 46	book(histpT[centData[i]], 2 + i, 1, 1);
 47	// keep track of sow in centrality bins.
 48	book(sow[centData[i]], "sow_" + toString(i));
 49      }
 50
 51    }
 52
 53
 54    /// Perform the per-event analysis
 55    void analyze(const Event& event) {
 56      if ( !apply<ATLAS::MinBiasTrigger>(event, "Trigger")() ) vetoEvent;
 57     const CentralityProjection& cent = apply<CentralityProjection>(event,"sumETFwd");
 58      double c = cent();
 59      // Find the correct centrality histograms
 60      auto hItr1 = histEta1.upper_bound(c);
 61      if (hItr1 == histEta1.end()) return;
 62      auto hItr2 = histEta2.upper_bound(c);
 63      if (hItr2 == histEta2.end()) return;
 64      auto hItr3 = histEta3.upper_bound(c);
 65      if (hItr3 == histEta3.end()) return;
 66      auto hItr4 = histEta4.upper_bound(c);
 67      if (hItr4 == histEta4.end()) return;
 68      auto hpTItr = histpT.upper_bound(c);
 69      if (hpTItr == histpT.end()) return;
 70      // Find the correct sow.
 71      auto sItr = sow.upper_bound(c);
 72      if (sItr == sow.end()) return;
 73      sItr->second->fill();
 74
 75      for (const auto& p : apply<ChargedFinalState>(event,"CFS").particles()) {
 76        double pT = p.pT();
 77	double eta = abs(p.eta());
 78	if (pT > 1.7 && pT < 2.0) hItr1->second->fill(eta, 0.5);
 79	else if (pT > 6.7 && pT < 7.7) hItr2->second->fill(eta, 0.5);
 80	else if (pT > 19.9 && pT < 22.8) hItr3->second->fill(eta, 0.5);
 81	else if (pT > 59.8 && pT < 94.8) hItr4->second->fill(eta, 0.5);
 82	if (eta < 2) hpTItr->second->fill(pT, 1.0/2./M_PI/pT/4.);
 83      
 84      }
 85
 86    }
 87
 88
 89    /// Normalise histograms etc., after the run
 90    void finalize() {
 91      for (int i = 0, N = centData.size(); i < N; ++i) {
 92        histEta1[centData[i]]->scaleW(1./sow[centData[i]]->sumW());
 93        histEta2[centData[i]]->scaleW(1./sow[centData[i]]->sumW());
 94        histEta3[centData[i]]->scaleW(1./sow[centData[i]]->sumW());
 95        histEta4[centData[i]]->scaleW(1./sow[centData[i]]->sumW());
 96        histpT[centData[i]]->scaleW(1./sow[centData[i]]->sumW()/taa[i]);
 97
 98      }
 99
100    }
101
102    //@}
103
104
105    /// @name Histograms
106    //@{
107    // The centrality binned histograms
108    map<double, Histo1DPtr> histEta1;
109    map<double, Histo1DPtr> histEta2;
110    map<double, Histo1DPtr> histEta3;
111    map<double, Histo1DPtr> histEta4;
112    map<double, Histo1DPtr> histpT;
113    map<double, CounterPtr> sow;
114
115
116    vector<double> centData;
117    vector<double> taa;
118    //@}
119
120
121  };
122
123
124  // The hook for the plugin system
125  RIVET_DECLARE_PLUGIN(ATLAS_2015_I1360290);
126
127
128}