Rivet analyses referenceSTAR_2017_I1510593Bulk properties of identified hadrons in the Au Au medium from the RHIC beam-energy scanExperiment: STAR (RHIC) Inspire ID: 1510593 Status: UNVALIDATED Authors:
Beam energies: (758.5, 758.5); (1132.8, 1132.8); (1930.6, 1930.6); (2659.5, 2659.5); (3841.5, 3841.5) GeV Run details:
Results of measurements of bulk properties of the matter in Au+Au collisions at energies of the Beam Energy Scan program, using pions, kaons and protons identified : $\frac{dN}{dy}$ spectra, $\langle p_\perp \rangle$ spectra and particles ratios are shown. Beam energy must be specified as analysis option "ENERGY" when rivet-merging samples. Source code: STAR_2017_I1510593.cc 1// -*- C++ -*-
2#include <complex>
3#include <iostream>
4#include <string>
5#include "Rivet/Analysis.hh"
6#include "Rivet/Projections/ChargedFinalState.hh"
7#include "Rivet/Projections/FinalState.hh"
8#include "Rivet/Projections/ImpactParameterProjection.hh"
9#include "Rivet/Projections/SingleValueProjection.hh"
10#include "Rivet/Tools/Percentile.hh"
11#include "Rivet/Tools/RHICCommon.hh"
12#include "Rivet/Projections/HepMCHeavyIon.hh"
13
14namespace Rivet {
15
16
17 /// pT distributions, ratios and production yields of hadrons in STAR
18 class STAR_2017_I1510593 : public Analysis {
19 public:
20
21 RIVET_DEFAULT_ANALYSIS_CTOR(STAR_2017_I1510593);
22
23 string coStr(int i, int j, int k) {
24 return "/TMP/d" + toString(i) + "x" + toString(j) + "y" + toString(k);
25 }
26
27
28 /// Book histograms and initialise projections before the run
29 void init() {
30 // Initialise and register projections
31 declareCentrality(STAR_BES_Centrality(), "STAR_BES_CALIB", "CMULT", "CMULT");
32
33 // The observed particles.
34 declare(ChargedFinalState(Cuts::abseta < 0.5 &&
35 Cuts::absrap < 0.1 && Cuts::pT > 0.2), "CFS");
36
37 // Access the HepMC heavy ion info
38 declare(HepMCHeavyIon(), "HepMC");
39
40
41 // Energy bins
42 energies = {7.7, 11.5, 19.6, 27.0, 39.0};
43 for (size_t i = 0, N = energies.size(); i < N; ++i) {
44 if (isCompatibleWithSqrtS(197.*energies[i])) enebin = i;
45 }
46
47 // Centrality bins
48 centralities = {5, 10, 20, 30, 40, 50, 60, 70, 80};
49
50 // Energy bins for Fig. 25
51 enebinfig = -1;
52 if (isCompatibleWithSqrtS(197.*energies[0])) enebinfig = 0;
53 if (isCompatibleWithSqrtS(197.*energies[4])) enebinfig = 1;
54
55 // Book all histograms for all energies in order to use re-entrant finalize
56 /// @todo Raw arrays would be a *lot* easier to read here (and N_cent is fixed)
57 _h_dpT_Piplus = vector<vector<Histo1DPtr> >(energies.size(), vector<Histo1DPtr>(centralities.size()));
58 _h_dpT_Pi = vector<vector<Histo1DPtr> >(energies.size(), vector<Histo1DPtr>(centralities.size()));
59 _h_dpT_Kaonplus = vector<vector<Histo1DPtr> >(energies.size(), vector<Histo1DPtr>(centralities.size()));
60 _h_dpT_Kaon = vector<vector<Histo1DPtr> >(energies.size(), vector<Histo1DPtr>(centralities.size()));
61 _h_dpT_Proton = vector<vector<Histo1DPtr> >(energies.size(), vector<Histo1DPtr>(centralities.size()));
62 _h_dpT_AntiProton = vector<vector<Histo1DPtr> >(energies.size(), vector<Histo1DPtr>(centralities.size()));
63 _wght_PiPlus = vector<vector<CounterPtr> >(energies.size(), vector<CounterPtr>(centralities.size()));
64 _wght_Pi = vector<vector<CounterPtr> >(energies.size(), vector<CounterPtr>(centralities.size()));
65 _wght_KaonPlus = vector<vector<CounterPtr> >(energies.size(), vector<CounterPtr>(centralities.size()));
66 _wght_Kaon = vector<vector<CounterPtr> >(energies.size(), vector<CounterPtr>(centralities.size()));
67 _wght_Proton = vector<vector<CounterPtr> >(energies.size(), vector<CounterPtr>(centralities.size()));
68 _wght_AntiProton = vector<vector<CounterPtr> >(energies.size(), vector<CounterPtr>(centralities.size()));
69 _h_npart_PiPlus = vector<Histo1DPtr>(energies.size());
70 _h_npart_PiMinus = vector<Histo1DPtr>(energies.size());
71 _h_npart_KaPlus = vector<Histo1DPtr>(energies.size());
72 _h_npart_KaMinus = vector<Histo1DPtr>(energies.size());
73 _h_npart_Proton = vector<Histo1DPtr>(energies.size());
74 _h_npart_AntiProton = vector<Histo1DPtr>(energies.size());
75 _wght_npart_PiPlus = vector<CounterPtr>(energies.size());
76 _wght_npart_PiMinus = vector<CounterPtr>(energies.size());
77 _wght_npart_KaonPlus = vector<CounterPtr>(energies.size());
78 _wght_npart_KaonMinus = vector<CounterPtr>(energies.size());
79 _wght_npart_Proton = vector<CounterPtr>(energies.size());
80 _wght_npart_AntiProton = vector<CounterPtr>(energies.size());
81 _h_npart_pT_PiPlus = vector<Profile1DPtr>(energies.size());
82 _h_npart_pT_PiMinus = vector<Profile1DPtr>(energies.size());
83 _h_npart_pT_KaPlus = vector<Profile1DPtr>(energies.size());
84 _h_npart_pT_KaMinus = vector<Profile1DPtr>(energies.size());
85 _h_npart_pT_Proton = vector<Profile1DPtr>(energies.size());
86 _h_npart_pT_AntiProton = vector<Profile1DPtr>(energies.size());
87
88 _h_npart_Piratio = vector<Profile1DPtr>(energies.size());
89 _h_npart_Karatio = vector<Profile1DPtr>(energies.size());
90 _h_npart_Pratio = vector<Profile1DPtr>(energies.size());
91 _h_npart_KaPi = vector<Profile1DPtr>(energies.size());
92 _h_npart_AntiPPi = vector<Profile1DPtr>(energies.size());
93 _h_npart_KaPiplus = vector<Profile1DPtr>(energies.size());
94 _h_npart_PPiplus = vector<Profile1DPtr>(energies.size());
95
96 for (int j = 0, N = energies.size(); j < N; ++j) {
97 for (int i = 0, M = centralities.size(); i < M; ++i) {
98 /// Book [energy][centrality] histograms.
99 book(_h_dpT_Pi[j][i], 2+j*6, 1, i+1);
100 book(_h_dpT_Piplus[j][i], 3+j*6, 1, i+1);
101 book(_h_dpT_Kaon[j][i], 4+j*6, 1, i+1);
102 book(_h_dpT_Kaonplus[j][i], 5+j*6, 1, i+1);
103 book(_h_dpT_AntiProton[j][i], 6+j*6, 1, i+1);
104 book(_h_dpT_Proton[j][i], 7+j*6, 1, i+1);
105 /// ...and the weights
106 book(_wght_Pi[j][i], coStr(2+j*6, 1, i+1));
107 book(_wght_PiPlus[j][i], coStr(3+j*6, 1, i+1));
108 book(_wght_Kaon[j][i], coStr(4+j*6, 1, i+1));
109 book(_wght_KaonPlus[j][i], coStr(5+j*6, 1, i+1));
110 book(_wght_AntiProton[j][i], coStr(6+j*6, 1, i+1));
111 book(_wght_Proton[j][i], coStr(7+j*6, 1, i+1));
112 }
113 }
114
115 /// Booking npart histograms
116 for (int i = 0, N = energies.size(); i < N; ++i) {
117 book(_h_npart_PiMinus[i], 32+i, 1, 1);
118 book(_h_npart_PiPlus[i], 32+i, 1, 2);
119 book(_h_npart_KaMinus[i], 32+i, 1, 3);
120 book(_h_npart_KaPlus[i], 32+i, 1, 4);
121 book(_h_npart_AntiProton[i], 32+i, 1, 5);
122 book(_h_npart_Proton[i], 32+i, 1, 6);
123 /// ...and the weights.
124 book(_wght_npart_PiMinus[i],coStr(32+i, 1, 1));
125 book(_wght_npart_PiPlus[i],coStr(32+i, 1, 2));
126 book(_wght_npart_KaonMinus[i],coStr(32+i, 1, 3));
127 book(_wght_npart_KaonPlus[i],coStr(32+i, 1, 4));
128 book(_wght_npart_AntiProton[i],coStr(32+i, 1, 5));
129 book(_wght_npart_Proton[i],coStr(32+i, 1, 6));
130 /// ... and the profiles.
131 book(_h_npart_pT_PiMinus[i], 37+i, 1, 1);
132 book(_h_npart_pT_PiPlus[i], 37+i, 1, 2);
133 book(_h_npart_pT_KaMinus[i], 37+i, 1, 3);
134 book(_h_npart_pT_KaPlus[i], 37+i, 1, 4);
135 book(_h_npart_pT_AntiProton[i], 37+i, 1, 5);
136 book(_h_npart_pT_Proton[i], 37+i, 1, 6);
137
138 book(_h_npart_Piratio[i], 42+i, 1, 1);
139 book(_h_npart_Karatio[i], 42+i, 1, 2);
140 book(_h_npart_Pratio[i], 42+i, 1, 3);
141 book(_h_npart_KaPi[i], 47+i, 1, 1);
142 book(_h_npart_AntiPPi[i], 47+i, 1, 2);
143 book(_h_npart_KaPiplus[i], 47+i, 1, 3);
144 book(_h_npart_PPiplus[i], 47+i, 1, 4);
145
146 }
147
148 book(_h_snn_npart_PiMinus, 52, 1, 1);
149 book(_h_snn_npart_PiPlus, 52, 1, 2);
150 book(_h_snn_npart_KaMinus, 52, 1, 3);
151 book(_h_snn_npart_KaPlus, 52, 1, 4);
152 book(_h_snn_npart_AntiProton, 52, 1, 5);
153 book(_h_snn_npart_Proton, 52, 1, 6);
154
155 book(_h_snn_mt_PiPlus, 53, 1, 1);
156 book(_h_snn_mt_PiMinus, 53, 1, 2);
157 book(_h_snn_mt_KaPlus, 53, 1, 3);
158 book(_h_snn_mt_KaMinus, 53, 1, 4);
159 book(_h_snn_mt_Proton, 53, 1, 5);
160 book(_h_snn_mt_AntiProton, 53, 1, 6);
161
162 book(_h_snn_Piratio, 54, 1, 1);
163 book(_h_snn_Karatio, 54, 1, 2);
164 book(_h_snn_Pratio, 54, 1, 3);
165 book(_h_snn_KaPiplus, 55, 1, 1);
166 book(_h_snn_KaPiminus, 55, 1, 2);
167
168 _h_yields = vector<Profile1DPtr>(2);
169 _h_ratios = vector<Profile1DPtr>(2);
170 for (int i = 0; i < 2; ++i) {
171 book(_h_yields[i], 56, 1, 1+i);
172 book(_h_ratios[i], 57, 1, 1+i);
173 }
174 }
175
176 /// Perform the per-event analysis
177 void analyze(const Event& event) {
178 const ChargedFinalState& cfs = applyProjection<ChargedFinalState>(event, "CFS");
179 // Require at least two charged particles for the analysis to
180 // make sense. No further triggers are described in the paper.
181 const Particles& particles = cfs.particles();
182 nprtcl = particles.size();
183 if (nprtcl < 2) return;
184
185 /// Determine the centrality
186 const CentralityProjection& cent = apply<CentralityProjection>(event, "CMULT");
187 const double c = cent();
188
189 /// Determine the impact parameter
190 const HepMCHeavyIon & hi = apply<HepMCHeavyIon>(event, "HepMC");
191 const double Npart = hi.Npart_targ();
192
193 /// Determine the centrality bin
194 cenbin = (c < 5) ? 0 : c / 10 + 1;
195
196 /// Initializing for each event
197 for (size_t i = 0; i < 10; ++i) nparts[i] = 0;
198 for (size_t i = 0, N = energies.size(); i < N; ++i) {
199 nPi[i] = 0;
200 nPiPlus[i] = 0;
201 nKaon[i] = 0;
202 nKaonPlus[i] = 0;
203 nProton[i] = 0;
204 nAntiProton[i] = 0;
205 }
206
207 /// Loop over all charged particles of the CFS
208 for (const Particle& p : cfs.particles()) {
209 double pT = p.pT()/GeV;
210 double mass = p.mass()/GeV;
211 double mTm = sqrt(pT * pT + mass * mass) - mass;
212 if (p.absrap() < 0.1) {
213 const PdgId id = p.pid();
214 switch (id) {
215 case 211:
216 if (c < 80) {
217 _h_dpT_Piplus[enebin][cenbin]->fill(pT, 1. / pT);
218 _h_npart_PiPlus[enebin]->fill(Npart, 1. / (0.2 * 0.5 * Npart));
219 _h_npart_pT_PiPlus[enebin]->fill(Npart, pT, 5);
220 }
221 if (c < 5) {
222 ++nparts[0];
223 _h_snn_npart_PiPlus->fill(energies[enebin], 1.0 / (0.2 * 0.5 * Npart));
224 _h_snn_mt_PiPlus->fillBin(enebin, mTm);
225 }
226 ++nPiPlus[enebin];
227 break;
228 case -211:
229 if (c < 80) {
230 _h_dpT_Pi[enebin][cenbin]->fill(pT, 1.0 / pT);
231 _h_npart_PiMinus[enebin]->fill(Npart, 1.0 / (0.2 * 0.5 * Npart));
232 _h_npart_pT_PiMinus[enebin]->fill(Npart, pT, 5);
233 }
234 if (c < 5) {
235 ++nparts[1];
236 _h_snn_npart_PiMinus->fillBin(enebin, 1.0 / (0.2 * 0.5 * Npart));
237 _h_snn_mt_PiMinus->fillBin(enebin, mTm);
238 }
239 ++nPi[enebin];
240 break;
241 case 321:
242 if (c < 80) {
243 _h_dpT_Kaonplus[enebin][cenbin]->fill(pT, 1.0 / pT);
244 _h_npart_KaPlus[enebin]->fill(Npart, 1.0 /(0.2 * 0.5 * Npart));
245 _h_npart_pT_KaPlus[enebin]->fill(Npart, pT, 5);
246 }
247 if (c < 5) {
248 ++nparts[2];
249 _h_snn_npart_KaPlus->fillBin(enebin, 1.0 / (0.2 * 0.5 * Npart));
250 _h_snn_mt_KaPlus->fillBin(enebin, mTm);
251 }
252 ++nKaonPlus[enebin];
253 break;
254 case -321:
255 if (c < 80) {
256 _h_dpT_Kaon[enebin][cenbin]->fill(pT, 1.0 / pT);
257 _h_npart_KaMinus[enebin]->fill(Npart, 1.0 / (0.2 * 0.5 * Npart));
258 _h_npart_pT_KaMinus[enebin]->fill(Npart, pT, 5);
259 }
260 if (c < 5) {
261 ++nparts[3];
262 _h_snn_npart_KaMinus->fillBin(enebin, 1.0 / (0.2 * 0.5 * Npart));
263 _h_snn_mt_KaMinus->fillBin(enebin, mTm);
264 }
265 ++nKaon[enebin];
266 break;
267 case 2212:
268 if (c < 80) {
269 _h_dpT_Proton[enebin][cenbin]->fill(pT, 1.0 / pT);
270 _h_npart_Proton[enebin]->fill(Npart, 1.0 /(0.2 * 0.5 * Npart));
271 _h_npart_pT_Proton[enebin]->fill(Npart, pT, 5);
272 }
273 if (c < 5) {
274 ++nparts[4];
275 _h_snn_npart_Proton->fillBin(enebin, 1.0 / (0.2 * 0.5 * Npart));
276 _h_snn_mt_Proton->fillBin(enebin, mTm);
277 }
278 ++nProton[enebin];
279 break;
280 case -2212:
281 if (c < 80) {
282 _h_dpT_AntiProton[enebin][cenbin]->fill(pT, 1.0 / pT);
283 _h_npart_AntiProton[enebin]->fill(Npart, 1.0 / (0.2 * 0.5 * Npart));
284 _h_npart_pT_AntiProton[enebin]->fill(Npart, pT, 5);
285 }
286 if (c < 5) {
287 ++nparts[5];
288 _h_snn_npart_AntiProton->fillBin(enebin, 1.0 / (0.2 * 0.5 * Npart));
289 _h_snn_mt_AntiProton->fillBin(enebin, mTm);
290 }
291 ++nAntiProton[enebin];
292 break;
293 case 3122:
294 if (c < 5) ++nparts[6];
295 break;
296 case -3122:
297 if (c < 5) ++nparts[7];
298 break;
299 case 3312:
300 if (c < 5) ++nparts[8];
301 break;
302 case -3312:
303 if (c < 5) ++nparts[9];
304 break;
305 }
306 }
307 }
308
309 /// Particle Ratios
310 //"if( > 1e-6)" because "> 0" or "!= 0" can cause errors
311 if (nPiPlus[enebin] > 1e-6) {
312 _h_npart_Piratio[enebin]->fill(Npart, nPi[enebin] / nPiPlus[enebin], 5);
313 _h_npart_KaPiplus[enebin]->fill(Npart, nKaonPlus[enebin] / nPiPlus[enebin], 5);
314 _h_npart_PPiplus[enebin]->fill(Npart, nProton[enebin] / nPiPlus[enebin], 5);
315 }
316
317 if (nPi[enebin] > 1e-6) {
318 _h_npart_KaPi[enebin]->fill(Npart, nKaon[enebin] / nPi[enebin], 5);
319 _h_npart_AntiPPi[enebin]->fill(Npart, nAntiProton[enebin] / nPi[enebin], 5);
320 }
321
322 if (nKaonPlus[enebin] > 1e-6)
323 _h_npart_Karatio[enebin]->fill(Npart, nKaon[enebin] / nKaonPlus[enebin], 5);
324
325 if (nProton[enebin] > 1e-6)
326 _h_npart_Pratio[enebin]->fill(Npart, nAntiProton[enebin] / nProton[enebin], 5);
327
328 /// Particle Yields
329 if (enebinfig == 0 || enebinfig == 1) {
330 for (size_t i = 0; i < 10; i++) {
331 if (nparts[i] > 1e-6)
332 _h_yields[enebinfig]->fill(i + 1, nparts[i], 5);
333 }
334 if (nparts[0] > 1e-6)
335 _h_ratios[enebinfig]->fill(1, nparts[1] / nparts[0], 5);
336 if (nparts[2] > 1e-6)
337 _h_ratios[enebinfig]->fill(2, nparts[3] / nparts[2], 5);
338 if (nparts[4] > 1e-6)
339 _h_ratios[enebinfig]->fill(3, nparts[5] / nparts[4], 5);
340 if (nparts[6] > 1e-6)
341 _h_ratios[enebinfig]->fill(4, nparts[7] / nparts[6], 5);
342 if (nparts[8] > 1e-6)
343 _h_ratios[enebinfig]->fill(5, nparts[9] / nparts[8], 5);
344 if (nparts[1] > 1e-6) {
345 _h_ratios[enebinfig]->fill(6, nparts[3] / nparts[1], 5);
346 _h_ratios[enebinfig]->fill(7, nparts[5] / nparts[1], 5);
347 _h_ratios[enebinfig]->fill(8, nparts[6] / nparts[1], 5);
348 _h_ratios[enebinfig]->fill(9, nparts[9] / nparts[1], 5);
349 }
350 }
351
352 if (nparts[0] > 1e-6) {
353 _h_snn_Piratio->fill(energies[enebin], nparts[1] / nparts[0], 5);
354 _h_snn_KaPiplus->fill(energies[enebin], nparts[2] / nparts[0], 5);
355 }
356
357 if (nparts[1] > 1e-6)
358 _h_snn_KaPiminus->fill(energies[enebin],nparts[3] / nparts[1], 5);
359 if (nparts[2] > 1e-6)
360 _h_snn_Karatio->fill(energies[enebin],nparts[3] / nparts[2], 5);
361 if (nparts[4] > 1e-6)
362 _h_snn_Pratio->fill(energies[enebin],nparts[5] / nparts[4], 5);
363
364 /// Sum the weight of the event
365 if (c < 80) {
366 _wght_Pi[enebin][cenbin]->fill();
367 _wght_PiPlus[enebin][cenbin]->fill();
368 _wght_Kaon[enebin][cenbin]->fill();
369 _wght_KaonPlus[enebin][cenbin]->fill();
370 _wght_Proton[enebin][cenbin]->fill();
371 _wght_AntiProton[enebin][cenbin]->fill();
372 _wght_npart_PiPlus[enebin]->fill();
373 _wght_npart_PiMinus[enebin]->fill();
374 _wght_npart_KaonPlus[enebin]->fill();
375 _wght_npart_KaonMinus[enebin]->fill();
376 _wght_npart_Proton[enebin]->fill();
377 _wght_npart_AntiProton[enebin]->fill();
378 }
379 }
380
381
382 /// Normalise histograms etc., after the run
383 void finalize() {
384 /// Normalisation
385 for (size_t j = 0; j < 5; ++j) {
386 for (size_t i = 0; i < 9; ++i) {
387 if (_h_dpT_Pi[j][i]->integral() != 0 && _wght_Pi[j][i]->sumW() != 0)
388 scale(_h_dpT_Pi[j][i], 1. / (TWOPI * 0.2 * _wght_Pi[j][i]->sumW()));
389 if (_h_dpT_Piplus[j][i]->integral() != 0 && _wght_PiPlus[j][i]->sumW() != 0)
390 scale(_h_dpT_Piplus[j][i], 1. / (TWOPI * 0.2 * _wght_PiPlus[j][i]->sumW()));
391 if (_h_dpT_Kaon[j][i]->integral() != 0 && _wght_Kaon[j][i]->sumW() != 0)
392 scale(_h_dpT_Kaon[j][i], 1. / (TWOPI * 0.2 * _wght_Kaon[j][i]->sumW()));
393 if (_h_dpT_Kaonplus[j][i]->integral() != 0 && _wght_KaonPlus[j][i]->sumW() != 0)
394 scale(_h_dpT_Kaonplus[j][i], 1. / (TWOPI * 0.2 * _wght_KaonPlus[j][i]->sumW()));
395 if (_h_dpT_AntiProton[j][i]->integral() != 0 && _wght_Proton[j][i]->sumW() != 0)
396 scale(_h_dpT_AntiProton[j][i], 1. / (TWOPI * 0.2 * _wght_Proton[j][i]->sumW()));
397 if (_h_dpT_Proton[j][i]->integral() != 0 && _wght_AntiProton[j][i]->sumW() != 0)
398 scale(_h_dpT_Proton[j][i], 1. / (TWOPI * 0.2 * _wght_AntiProton[j][i]->sumW()));
399 }
400 }
401
402 /// Filling the bins with a value (here out of the defined
403 /// screening range of the plot) when it has not been filled by
404 /// anything, otherwise it won't want to plot
405 for (size_t j = 0, N = energies.size(); j < N; ++j) {
406 for (size_t i = 0, M = _h_npart_PiPlus[j]->numBins(); i < M; ++i)
407 if (_h_npart_PiPlus[j]->bin(i).numEntries() == 0)
408 _h_npart_PiPlus[j]->fillBin(i, -0.1);
409
410 for (size_t i = 0, M = _h_npart_PiMinus[j]->numBins(); i < M; ++i)
411 if (_h_npart_PiMinus[j]->bin(i).numEntries() == 0)
412 _h_npart_PiMinus[j]->fillBin(i, -0.1);
413
414 for (size_t i = 0, M = _h_npart_KaPlus[j]->numBins(); i < M; ++i)
415 if (_h_npart_KaPlus[j]->bin(i).numEntries() == 0)
416 _h_npart_KaPlus[j]->fillBin(i, -0.1);
417
418 for (size_t i = 0, M = _h_npart_KaMinus[j]->numBins(); i < M; ++i)
419 if (_h_npart_KaMinus[j]->bin(i).numEntries() == 0)
420 _h_npart_KaMinus[j]->fillBin(i, -0.1);
421
422 for (size_t i = 0, M = _h_npart_Proton[j]->numBins(); i < M; ++i)
423 if (_h_npart_Proton[j]->bin(i).numEntries() == 0)
424 _h_npart_Proton[j]->fillBin(i, -0.1);
425
426 for (size_t i = 0, M = _h_npart_AntiProton[j]->numBins(); i < M; ++i)
427 if (_h_npart_AntiProton[j]->bin(i).numEntries() == 0)
428 _h_npart_AntiProton[j]->fillBin(i, -0.1);
429
430 for (size_t i = 0, M = _h_npart_pT_PiPlus[j]->numBins(); i < M; ++i)
431 if (_h_npart_pT_PiPlus[j]->bin(i).numEntries() == 0)
432 _h_npart_pT_PiPlus[j]->fillBin(i, -0.1);
433
434 for (size_t i = 0, M = _h_npart_pT_PiMinus[j]->numBins(); i < M; ++i)
435 if (_h_npart_pT_PiMinus[j]->bin(i).numEntries() == 0)
436 _h_npart_pT_PiMinus[j]->fillBin(i, -0.1);
437
438 for (size_t i = 0, M = _h_npart_pT_KaPlus[j]->numBins(); i < M; ++i)
439 if (_h_npart_pT_KaPlus[j]->bin(i).numEntries() == 0)
440 _h_npart_pT_KaPlus[j]->fillBin(i, -0.1);
441
442 for (size_t i = 0, M = _h_npart_pT_KaMinus[j]->numBins(); i < M; ++i)
443 if (_h_npart_pT_KaMinus[j]->bin(i).numEntries() == 0)
444 _h_npart_pT_KaMinus[j]->fillBin(i, -0.1);
445
446 for (size_t i = 0, M = _h_npart_pT_Proton[j]->numBins(); i < M; ++i)
447 if (_h_npart_pT_Proton[j]->bin(i).numEntries() == 0)
448 _h_npart_pT_Proton[j]->fillBin(i, -0.1);
449
450 for (size_t i = 0, M = _h_npart_pT_AntiProton[j]->numBins(); i < M; ++i)
451 if (_h_npart_pT_AntiProton[j]->bin(i).numEntries() == 0)
452 _h_npart_pT_AntiProton[j]->fillBin(i, -0.1);
453 }
454
455 for (size_t j = 0; j < 5; ++j)
456 for (size_t i = 0; i < 9; ++i) {
457 if (_h_npart_Piratio[j]->bin(i).numEntries() == 0)
458 _h_npart_Piratio[j]->fillBin(i, -0.1);
459
460 if (_h_npart_Karatio[j]->bin(i).numEntries() == 0)
461 _h_npart_Karatio[j]->fillBin(i, -0.1);
462
463 if (_h_npart_Pratio[j]->bin(i).numEntries() == 0)
464 _h_npart_Pratio[j]->fillBin(i, -0.1);
465
466 if (_h_npart_KaPi[j]->bin(i).numEntries() == 0)
467 _h_npart_KaPi[j]->fillBin(i, -0.1);
468
469 if (_h_npart_AntiPPi[j]->bin(i).numEntries() == 0)
470 _h_npart_AntiPPi[j]->fillBin(i, -0.1);
471
472 if (_h_npart_KaPiplus[j]->bin(i).numEntries() == 0)
473 _h_npart_KaPiplus[j]->fillBin(i, -0.1);
474
475 if (_h_npart_PPiplus[j]->bin(i).numEntries() == 0)
476 _h_npart_PPiplus[j]->fillBin(i, -0.1);
477 }
478
479
480 for (size_t j = 0; j < 2; ++j) {
481 for (size_t i = 0, N = _h_ratios[j]->numBins(); i < N; ++i)
482 if (_h_ratios[j]->bin(i).numEntries() == 0)
483 _h_ratios[j]->fillBin(i, -0.1);
484 for (size_t i = 0, N = _h_yields[j]->numBins(); i < N; ++i)
485 if (_h_yields[j]->bin(i).numEntries() == 0)
486 _h_yields[j]->fillBin(i, -0.1);
487 }
488
489 for (size_t i = 0, N = energies.size(); i < N; ++i) {
490 if (_h_snn_npart_PiPlus->bin(i).numEntries() == 0)
491 _h_snn_npart_PiPlus->fillBin(i, -0.1);
492
493 if (_h_snn_npart_PiMinus->bin(i).numEntries() == 0)
494 _h_snn_npart_PiMinus->fillBin(i, -0.1);
495
496 if (_h_snn_npart_KaPlus->bin(i).numEntries() == 0)
497 _h_snn_npart_KaPlus->fillBin(i, -0.1);
498
499 if (_h_snn_npart_KaMinus->bin(i).numEntries() == 0)
500 _h_snn_npart_KaMinus->fillBin(i, -0.1);
501
502 if (_h_snn_npart_Proton->bin(i).numEntries() == 0)
503 _h_snn_npart_Proton->fillBin(i, -0.1);
504
505 if (_h_snn_npart_AntiProton->bin(i).numEntries() == 0)
506 _h_snn_npart_AntiProton->fillBin(i, -0.1);
507
508 if (_h_snn_mt_PiPlus->bin(i).numEntries() == 0)
509 _h_snn_mt_PiPlus->fillBin(i, -0.1);
510
511 if (_h_snn_mt_PiMinus->bin(i).numEntries() == 0)
512 _h_snn_mt_PiMinus->fillBin(i, -0.1);
513
514 if (_h_snn_mt_KaPlus->bin(i).numEntries() == 0)
515 _h_snn_mt_KaPlus->fillBin(i, -0.1);
516
517 if (_h_snn_mt_KaMinus->bin(i).numEntries() == 0)
518 _h_snn_mt_KaMinus->fillBin(i, -0.1);
519
520 if (_h_snn_mt_Proton->bin(i).numEntries() == 0)
521 _h_snn_mt_Proton->fillBin(i, -0.1);
522
523 if (_h_snn_mt_AntiProton->bin(i).numEntries() == 0)
524 _h_snn_mt_AntiProton->fillBin(i, -0.1);
525
526 if (_h_snn_KaPiplus->bin(i).numEntries() == 0)
527 _h_snn_KaPiplus->fillBin(i, -0.1);
528
529 if (_h_snn_KaPiminus->bin(i).numEntries() == 0)
530 _h_snn_KaPiminus->fillBin(i, -0.1);
531
532 if (_h_snn_Piratio->bin(i).numEntries() == 0)
533 _h_snn_Piratio->fillBin(i, -0.1);
534
535 if (_h_snn_Karatio->bin(i).numEntries() == 0)
536 _h_snn_Karatio->fillBin(i, -0.1);
537
538 if (_h_snn_Pratio->bin(i).numEntries() == 0)
539 _h_snn_Pratio->fillBin(i, -0.1);
540 }
541 }
542
543
544 private:
545
546 /// @name Histograms
547 /// @{
548 vector<vector<Histo1DPtr>> _h_dpT_Pi;
549 vector<vector<Histo1DPtr>> _h_dpT_Piplus;
550 vector<vector<Histo1DPtr>> _h_dpT_Kaon;
551 vector<vector<Histo1DPtr>> _h_dpT_Kaonplus;
552 vector<vector<Histo1DPtr>> _h_dpT_AntiProton;
553 vector<vector<Histo1DPtr>> _h_dpT_Proton;
554
555 vector<vector<CounterPtr>> _wght_Pi;
556 vector<vector<CounterPtr>> _wght_PiPlus;
557 vector<vector<CounterPtr>> _wght_Kaon;
558 vector<vector<CounterPtr>> _wght_KaonPlus;
559 vector<vector<CounterPtr>> _wght_Proton;
560 vector<vector<CounterPtr>> _wght_AntiProton;
561
562 vector<Profile1DPtr> _h_npart_Piratio;
563 vector<Profile1DPtr> _h_npart_Karatio;
564 vector<Profile1DPtr> _h_npart_Pratio;
565 vector<Profile1DPtr> _h_npart_KaPi;
566 vector<Profile1DPtr> _h_npart_AntiPPi;
567 vector<Profile1DPtr> _h_npart_KaPiplus;
568 vector<Profile1DPtr> _h_npart_PPiplus;
569 vector<Profile1DPtr> _h_yields;
570 vector<Profile1DPtr> _h_ratios;
571
572 vector<Histo1DPtr> _h_npart_PiPlus;
573 vector<Histo1DPtr> _h_npart_PiMinus;
574 vector<Histo1DPtr> _h_npart_KaPlus;
575 vector<Histo1DPtr> _h_npart_KaMinus;
576 vector<Histo1DPtr> _h_npart_Proton;
577 vector<Histo1DPtr> _h_npart_AntiProton;
578
579 vector<CounterPtr> _wght_npart_PiPlus;
580 vector<CounterPtr> _wght_npart_PiMinus;
581 vector<CounterPtr> _wght_npart_KaonPlus;
582 vector<CounterPtr> _wght_npart_KaonMinus;
583 vector<CounterPtr> _wght_npart_Proton;
584 vector<CounterPtr> _wght_npart_AntiProton;
585
586 vector<Profile1DPtr> _h_npart_pT_PiPlus;
587 vector<Profile1DPtr> _h_npart_pT_PiMinus;
588 vector<Profile1DPtr> _h_npart_pT_KaPlus;
589 vector<Profile1DPtr> _h_npart_pT_KaMinus;
590 vector<Profile1DPtr> _h_npart_pT_Proton;
591 vector<Profile1DPtr> _h_npart_pT_AntiProton;
592
593 Histo1DPtr _h_snn_npart_PiPlus;
594 Histo1DPtr _h_snn_npart_PiMinus;
595 Histo1DPtr _h_snn_npart_KaPlus;
596 Histo1DPtr _h_snn_npart_KaMinus;
597 Histo1DPtr _h_snn_npart_Proton;
598 Histo1DPtr _h_snn_npart_AntiProton;
599 Profile1DPtr _h_snn_mt_PiPlus;
600 Profile1DPtr _h_snn_mt_PiMinus;
601 Profile1DPtr _h_snn_mt_KaPlus;
602 Profile1DPtr _h_snn_mt_KaMinus;
603 Profile1DPtr _h_snn_mt_Proton;
604 Profile1DPtr _h_snn_mt_AntiProton;
605 Profile1DPtr _h_snn_KaPiplus;
606 Profile1DPtr _h_snn_KaPiminus;
607 Profile1DPtr _h_snn_Piratio;
608 Profile1DPtr _h_snn_Karatio;
609 Profile1DPtr _h_snn_Pratio;
610 /// @}
611
612 /// @name Variables
613 /// @{
614 vector<double> energies;
615 vector<double> centralities;
616 int cenbin, enebin = 0, enebinfig = 0;
617 double nprtcl, nPi[5], nPiPlus[5], nKaon[5], nKaonPlus[5], nProton[5],
618 nAntiProton[5];
619 // The following vector contains the counters for all particles used in
620 // Fig. 25. In the right order : pi+, pi-, K+, K-, p, Antip, Lambda,
621 // AntiLambda, Xi, AntiXi
622 double nparts[10];
623 /// @}
624
625 };
626
627
628 RIVET_DECLARE_PLUGIN(STAR_2017_I1510593);
629
630}
|