Rivet analyses referenceATLAS_2015_I1386475Centrality dependent of pseudorapidity distributions in p-Pb collisions $\sqrt{s_{_\text{NN}}}=5.02$ TeV.Experiment: ATLAS (LHC) Inspire ID: 1386475 Status: UNVALIDATED Authors:
Beam energies: (4000.0, 326560.0) GeV Run details:
The centrality dependence of the mean charged-particle multiplicity as a function of pseudorapidity in proton-lead collisions. The collision energy is asymmetric, 4000 GeV for the proton and 1570/N for the lead. The primary particle definition is $c\tau > 10 cm$ stable, and should be enforced at generator level. Source code: ATLAS_2015_I1386475.cc 1// -*- C++ -*-
2#include "Rivet/Analysis.hh"
3#include "Rivet/Analyses/AtlasCommon.hh"
4
5namespace Rivet {
6
7
8 /// @brief Add a short analysis description here
9 class ATLAS_2015_I1386475 : public Analysis {
10 public:
11
12 /// Constructor
13 RIVET_DEFAULT_ANALYSIS_CTOR(ATLAS_2015_I1386475);
14 /// Book histograms and initialise projections before the run
15 void init() {
16
17 // The centrality projection.
18 declareCentrality(ATLAS::SumET_PB_Centrality(),
19 "ATLAS_CENT_PPB_CALIB", "SumETPb", "CENT");
20
21 // The trigger projection.
22 declare(ATLAS::MinBiasTrigger(), "Trigger");
23
24 // The particles to be analysed.
25 declare(ChargedFinalState(Cuts::eta > -2.7 && Cuts::eta < 2.7 &&
26 Cuts::pT > 0.1*GeV), "CFS");
27
28 // The centrality bins' upper edges.
29 centralityBins = {90., 60., 40., 30., 20., 10., 5., 1.};
30 for (int i = 0; i < 8; ++i) {
31 book(histEta[centralityBins[i]], 2, 1, i + 1);
32 book(sow[centralityBins[i]], "_sow"+to_string(i) + "Counter");
33 }
34 }
35
36 /// Perform the per-event analysis
37 void analyze(const Event& event) {
38
39 // Apply event triggers.
40 if ( !apply<ATLAS::MinBiasTrigger>(event, "Trigger")() ) vetoEvent;
41
42 // We must have direct acces to the centrality projection.
43 const CentralityProjection& cent =
44 apply<CentralityProjection>(event,"CENT");
45 double c = cent();
46 // Find the correct centrality histogram
47 auto hItr = histEta.upper_bound(c);
48 if (hItr == histEta.end()) return;
49 // Find the correct sow.
50 auto sItr = sow.upper_bound(c);
51 if (sItr == sow.end()) return;
52 sItr->second->fill();
53 for ( const auto &p : apply<ChargedFinalState>(event,"CFS").particles() )
54 hItr->second->fill(p.eta());
55 }
56
57 /// Finalize
58 void finalize() {
59
60 // Scale by the inverse sum of event weights in each centrality
61 // bin.
62 for (int i = 0; i < 8; ++i) {
63 histEta[centralityBins[i]]->scaleW(1./sow[centralityBins[i]]->sumW());
64 }
65
66 }
67
68private:
69
70 /// The histograms binned in centrality.
71 vector<double> centralityBins;
72 map<double,Histo1DPtr> histEta;
73 map<double, CounterPtr> sow;
74
75
76
77
78
79 };
80
81
82 RIVET_DECLARE_PLUGIN(ATLAS_2015_I1386475);
83
84
85}
|