Rivet analyses referenceALICE_2013_I1225979Charged 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:
Beam energies: (287040.0, 287040.0) GeV Run details:
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// -*- C++ -*-
2#include "Rivet/Analysis.hh"
3#include "Rivet/Projections/ChargedFinalState.hh"
4#include "Rivet/Analyses/AliceCommon.hh"
5
6namespace Rivet {
7
8
9 /// @brief ALICE PbPb at 2.76 TeV eta distributions.
10 class ALICE_2013_I1225979 : public Analysis {
11 public:
12
13 /// Constructor
14 RIVET_DEFAULT_ANALYSIS_CTOR(ALICE_2013_I1225979);
15
16
17 /// @name Analysis methods
18 /// @{
19
20 /// Book histograms and initialise projections before the run
21 void init() {
22 // Initialise and register projections
23 // Centrality projection.
24 declareCentrality(ALICE::V0MMultiplicity(), "ALICE_2015_CENT_PBPB",
25 "V0M","V0M");
26 // Projections for the 2-out-of-3 trigger.
27 declare(ChargedFinalState( (Cuts::eta > 2.8 && Cuts::eta < 5.1) &&
28 Cuts::pT > 0.1*GeV), "VZERO1");
29 declare(ChargedFinalState( (Cuts::eta > -3.7 && Cuts::eta < -1.7) &&
30 Cuts::pT > 0.1*GeV), "VZERO2");
31 declare(ChargedFinalState(Cuts::abseta < 1. && Cuts::pT > 0.15*GeV),
32 "SPD");
33
34 // Primary particles.
35 declare(ALICE::PrimaryParticles(Cuts::abseta < 5.6),"APRIM");
36
37 // The centrality bins upper bin edges.
38 centralityBins = { 5., 10., 20., 30. };
39 // Centrality histograms and corresponding sow counters.
40 for (int i = 0; i < 4; ++i) {
41 book(histEta[centralityBins[i]], 1, 1, i + 1);
42 book(sow[centralityBins[i]], "sow_" + toString(i));
43 }
44 }
45
46
47 /// Perform the per-event analysis
48 void analyze(const Event& event) {
49 // Trigger projections.
50 const ChargedFinalState& vz1 =
51 apply<ChargedFinalState>(event,"VZERO1");
52 const ChargedFinalState& vz2 =
53 apply<ChargedFinalState>(event,"VZERO2");
54 const ChargedFinalState& spd =
55 apply<ChargedFinalState>(event,"SPD");
56 int fwdTrig = (vz1.particles().size() > 0 ? 1 : 0);
57 int bwdTrig = (vz2.particles().size() > 0 ? 1 : 0);
58 int cTrig = (spd.particles().size() > 0 ? 1 : 0);
59
60 if (fwdTrig + bwdTrig + cTrig < 2) vetoEvent;
61 // We must have direct acces to the centrality projection.
62 const CentralityProjection& cent = apply<CentralityProjection>(event,"V0M");
63 double c = cent();
64 // Find the correct centrality histogram
65 auto hItr = histEta.upper_bound(c);
66 if (hItr == histEta.end()) return;
67 // Find the correct sow.
68 auto sItr = sow.upper_bound(c);
69 if (sItr == sow.end()) return;
70 sItr->second->fill();
71
72 // Fill the histograms.
73 for ( const auto& p :
74 apply<ALICE::PrimaryParticles>(event,"APRIM").particles() )
75 if(p.abscharge() > 0) hItr->second->fill(p.eta());
76
77 }
78
79
80 /// Normalise histograms etc., after the run
81 void finalize() {
82 for (int i = 0; i < 4; ++i)
83 histEta[centralityBins[i]]->scaleW(1./sow[centralityBins[i]]->sumW());
84
85 }
86
87 /// @}
88
89
90 /// @name Histograms
91 /// @{
92 vector<double> centralityBins;
93 map<double,Histo1DPtr> histEta;
94 map<double, CounterPtr> sow;
95 /// @}
96
97
98 };
99
100
101 RIVET_DECLARE_PLUGIN(ALICE_2013_I1225979);
102
103
104}
|