Rivet analyses referenceCMS_2017_I1471287Two- and multi-particle angular correlations in pp collisions at $\sqrt{s} = 13$ TeV.Experiment: CMS (LHC) Inspire ID: 1471287 Status: UNVALIDATED Authors:
Beam energies: (6500.0, 6500.0) GeV Run details:
Measurement of two- and multi-particle angular correlations of charged particles as well as $K^0_s$ and $\Lambda + \bar{\Lambda}$. Measurements are done $p_\perp$ integrated as function of event multiplicity, and $p_\perp$ differential in two bins of event multiplicity; high and low. The experimental analysis performs also a subtraction procedure of low multiplicity results from high multiplicity ones. Such a subtraction is not performed in the RIVET analysis (due to the difficulty of performing the same procedure on MC), and as such, only unsubtracted values are used. Bin edges for integrated correlations are not reported in HepData, and are as such based simply on midpoints between reported points. Source code: CMS_2017_I1471287.cc 1// -*- C++ -*-
2#include "Rivet/Analysis.hh"
3#include "Rivet/Projections/ChargedFinalState.hh"
4#include "Rivet/Projections/PrimaryParticles.hh"
5#include "Rivet/Tools/Correlators.hh"
6
7namespace Rivet {
8
9
10 /// @brief Add a short analysis description here
11 class CMS_2017_I1471287 : public CumulantAnalysis {
12 public:
13
14 /// Constructor
15 CMS_2017_I1471287() : CumulantAnalysis("CMS_2017_I1471287") {
16
17 };
18
19
20 /// @name Analysis methods
21 //@{
22
23 /// Book histograms and initialise projections before the run
24 void init() {
25 // A projection for charged tracks to manage centrality, corresponding
26 // to CMS offline tracks.
27 ChargedFinalState cfsMult(Cuts::abseta < 2.4 && Cuts::pT > 0.4*GeV);
28 declare(cfsMult, "CFSMult");
29
30 // The positive eta side used for rapidity gap, integrated.
31 const ChargedFinalState& cfsp = ChargedFinalState(Cuts::eta > 1.0 &&
32 Cuts::eta < 2.0 && Cuts::pT > 0.3*GeV && Cuts::pT < 3.0*GeV);
33 declare(cfsp, "CFSP");
34 // ..negative ditto.
35 const ChargedFinalState& cfsn = ChargedFinalState(Cuts::eta < -1.0 &&
36 Cuts::eta > -2.0 && Cuts::pT > 0.3*GeV && Cuts::pT < 3.0*GeV);
37 declare(cfsn, "CFSN");
38
39
40 // The positive eta side used for rapidity gap, differential, charged particles.
41 const ChargedFinalState& cfsppT = ChargedFinalState(Cuts::eta > 1.0 &&
42 Cuts::eta < 2.0 && Cuts::pT > 0.3*GeV && Cuts::pT < 6.0*GeV);
43 declare(cfsppT, "CFSPPT");
44 // ..negative ditto.
45 const ChargedFinalState& cfsnpT = ChargedFinalState(Cuts::eta < -1.0 &&
46 Cuts::eta > -2.0 && Cuts::pT > 0.3*GeV && Cuts::pT < 6.0*GeV);
47 declare(cfsnpT, "CFSNPT");
48
49 // The positive eta side used for rapidity gap, differential, Kaons.
50 const PrimaryParticles& kfsppT = PrimaryParticles({310},Cuts::eta > 1.0 &&
51 Cuts::eta < 2.0 && Cuts::pT > 0.3*GeV && Cuts::pT < 6.0*GeV);
52 declare(kfsppT, "KFSP");
53 // ..negative ditto.
54 const PrimaryParticles& kfsnpT = PrimaryParticles({310},Cuts::eta < -1.0 &&
55 Cuts::eta > -2.0 && Cuts::pT > 0.3*GeV && Cuts::pT < 6.0*GeV);
56 declare(kfsnpT, "KFSN");
57 // The positive eta side used for rapidity gap, differential, Lambda.
58 const PrimaryParticles& lfsppT = PrimaryParticles({3122},Cuts::eta > 1.0 &&
59 Cuts::eta < 2.0 && Cuts::pT > 0.3*GeV && Cuts::pT < 6.0*GeV);
60 declare(lfsppT, "LFSP");
61 // ..negative ditto.
62 const PrimaryParticles& lfsnpT = PrimaryParticles({3122},Cuts::eta < -1.0 &&
63 Cuts::eta > -2.0 && Cuts::pT > 0.3*GeV && Cuts::pT < 6.0*GeV);
64 declare(lfsnpT, "LFSN");
65
66 // v22 |delta eta| > 2 (fig 4a)
67 book(h_v22, 1, 1, 1, true);
68 // v32 |delta eta| > 2 (fig 4b)
69 book(h_v32, 3, 1, 1, true);
70 // v22(pT) high mult., high pT (fig 6a)
71 book(h_v22pT, 11, 1, 1, true);
72 // v22(pT) charged low mult. (fig. 7a)
73 book(h_v22pTh, 17, 1, 1, true);
74 // v22(pT) K0S low mult. (fig. 7a)
75 book(h_v22pTK, 18, 1, 1, true);
76 // v22(pT) Lambda low mult. (fig. 7a)
77 book(h_v22pTL, 19, 1, 1, true);
78 // v22(pT) K0S high mult. (fig. 7b)
79 book(h_v22pTKc, 21, 1, 1, true);
80 // v22(pT) Lambda high mult. (fig. 7b)
81 book(h_v22pTLc, 22, 1, 1, true);
82 // c24 (fig. 9a)
83 book(h_c24, 28, 1, 1, true);
84 // c26 (fig. 9b)
85 book(h_c26, 31, 1, 1, true);
86
87 // Corresponding event averaged correlators.
88 ec22 = bookECorrelatorGap<2,2>("ec22",refData(1,1,1));
89 ec32 = bookECorrelatorGap<3,2>("ec32",refData(3,1,1));
90
91 // ... pT binned
92 ec22pT = bookECorrelatorGap<2,2>("ec22pT",refData(11,1,1));
93 ec22pTh = bookECorrelatorGap<2,2>("ec22pTh",refData(17,1,1));
94 ec22pTK = bookECorrelatorGap<2,2>("ec22pTK",refData(18,1,1));
95 ec22pTL = bookECorrelatorGap<2,2>("ec22pTL",refData(19,1,1));
96 ec22pTKc = bookECorrelatorGap<2,2>("ec22pTKc",refData(21,1,1));
97 ec22pTLc = bookECorrelatorGap<2,2>("ec22pTLc",refData(22,1,1));
98
99 // Maximal N and P for the gapped.
100 pair<int, int> max = getMaxValues();
101
102 // For the four particle cumulant.
103 ec22_4 = bookECorrelator<2,2>("ec22_4",refData(28,1,1));
104 ec24_4 = bookECorrelator<2,4>("ec24_4",refData(28,1,1));
105
106 // For the six particle cumulant.
107 ec22_6 = bookECorrelator<2,2>("ec22_6",refData(31,1,1));
108 ec24_6 = bookECorrelator<2,4>("ec24_6",refData(31,1,1));
109 ec26_6 = bookECorrelator<2,6>("ec26_6",refData(31,1,1));
110
111 // Maximal N and P for the higher orders.
112 pair<int, int> maxH = getMaxValues();
113
114 // Declare correlator projections.
115 // For integrated.
116 declare(Correlators(cfsMult, maxH.first, maxH.second),"CH");
117
118 // ... gapped
119 declare(Correlators(cfsp, max.first, max.second),"CPos");
120 declare(Correlators(cfsn, max.first, max.second),"CNeg");
121
122 // For pT differential, charged particles, low multiplicity.
123 declare(Correlators(cfsppT, max.first, max.second, refData(17,1,1)),"CPosLowPT");
124 declare(Correlators(cfsnpT, max.first, max.second, refData(17,1,1)),"CNegLowPT");
125
126 // For pT differential, charged particles, high multiplicity.
127 declare(Correlators(cfsppT, max.first, max.second, refData(11,1,1)),"CPosHighPT");
128 declare(Correlators(cfsnpT, max.first, max.second, refData(11,1,1)),"CNegHighPT");
129
130 // For pT differential, kaons. low multiplicity.
131 declare(Correlators(kfsppT, max.first, max.second, refData(18,1,1)),"CPosLowPTK");
132 declare(Correlators(kfsnpT, max.first, max.second, refData(18,1,1)),"CNegLowPTK");
133
134 // For pT differential, kaons. high multiplicity.
135 declare(Correlators(kfsppT, max.first, max.second, refData(21,1,1)),"CPosHighPTK");
136 declare(Correlators(kfsnpT, max.first, max.second, refData(21,1,1)),"CNegHighPTK");
137
138 // For pT differential, lambda. low multiplicity.
139 declare(Correlators(lfsppT, max.first, max.second, refData(19,1,1)),"CPosLowPTL");
140 declare(Correlators(lfsnpT, max.first, max.second, refData(19,1,1)),"CNegLowPTL");
141
142 // For pT differential, lambda. high multiplicity.
143 declare(Correlators(lfsppT, max.first, max.second, refData(22,1,1)),"CPosHighPTL");
144 declare(Correlators(lfsnpT, max.first, max.second, refData(22,1,1)),"CNegHighPTL");
145
146
147 }
148
149
150 /// Perform the per-event analysis
151 void analyze(const Event& event) {
152 const double nTrk = apply<ChargedFinalState>(event, "CFSMult").particles().size();
153 if (nTrk < 10) vetoEvent;
154
155 // The correlators.
156 const Correlators& ch = apply<Correlators>(event, "CH");
157
158 const Correlators& cp = apply<Correlators>(event, "CPos");
159 const Correlators& cn = apply<Correlators>(event, "CNeg");
160
161 const Correlators& cpLow = apply<Correlators>(event, "CPosLowPT");
162 const Correlators& cnLow = apply<Correlators>(event, "CNegLowPT");
163
164 const Correlators& cpHigh = apply<Correlators>(event, "CPosHighPT");
165 const Correlators& cnHigh = apply<Correlators>(event, "CNegHighPT");
166
167 const Correlators& cpLowK = apply<Correlators>(event, "CPosLowPTK");
168 const Correlators& cnLowK = apply<Correlators>(event, "CNegLowPTK");
169
170 const Correlators& cpHighK = apply<Correlators>(event, "CPosHighPTK");
171 const Correlators& cnHighK = apply<Correlators>(event, "CNegHighPTK");
172
173 const Correlators& cpLowL = apply<Correlators>(event, "CPosLowPTL");
174 const Correlators& cnLowL = apply<Correlators>(event, "CNegLowPTL");
175
176 const Correlators& cpHighL = apply<Correlators>(event, "CPosHighPTL");
177 const Correlators& cnHighL = apply<Correlators>(event, "CNegHighPTL");
178
179 ec22->fill(nTrk, cp, cn);
180 ec32->fill(nTrk, cp, cn);
181
182 ec22_4->fill(nTrk, ch);
183 ec24_4->fill(nTrk, ch);
184 ec22_6->fill(nTrk, ch);
185 ec24_6->fill(nTrk, ch);
186 ec26_6->fill(nTrk, ch);
187
188 if (nTrk < 20) {
189 ec22pTh->fill(cpLow, cnLow);
190 ec22pTK->fill(cpLowK, cnLowK);
191 ec22pTL->fill(cpLowL, cnLowL);
192 } else if(nTrk >= 105 && nTrk < 150) { //< AB: brace was missing so condition only applied to first fill: seems wrong
193 ec22pT->fill(cpHigh, cnHigh);
194 ec22pTKc->fill(cpHighK, cnHighK);
195 ec22pTLc->fill(cpHighL, cnHighL);
196 }
197 }
198
199
200 /// Normalise histograms etc., after the run
201 void finalize() {
202 cnTwoInt(h_v22, ec22);
203 cnTwoInt(h_v32, ec32);
204 vnTwoDiff(h_v22pT, ec22pT);
205 vnTwoDiff(h_v22pTh, ec22pTh);
206 cnFourInt(h_c24, ec22_4, ec24_4);
207 cnSixInt(h_c26, ec22_6, ec24_6, ec26_6);
208
209 // Set correct reference flow for pid flow.
210 ec22pTK->setReference(ec22pTh->getReference());
211 vnTwoDiff(h_v22pTK, ec22pTK);
212 ec22pTL->setReference(ec22pTh->getReference());
213 vnTwoDiff(h_v22pTL, ec22pTL);
214 ec22pTKc->setReference(ec22pT->getReference());
215 vnTwoDiff(h_v22pTKc, ec22pTKc);
216 ec22pTLc->setReference(ec22pT->getReference());
217 vnTwoDiff(h_v22pTLc, ec22pTLc);
218
219 }
220
221 //@}
222 Scatter2DPtr h_v22;
223 Scatter2DPtr h_v32;
224 Scatter2DPtr h_v22pT;
225 Scatter2DPtr h_v22pTh;
226 Scatter2DPtr h_v22pTK;
227 Scatter2DPtr h_v22pTL;
228 Scatter2DPtr h_v22pTKc;
229 Scatter2DPtr h_v22pTLc;
230 Scatter2DPtr h_c24;
231 Scatter2DPtr h_c26;
232
233 ECorrPtr ec22;
234 ECorrPtr ec32;
235
236 ECorrPtr ec22_4;
237 ECorrPtr ec24_4;
238
239 ECorrPtr ec22_6;
240 ECorrPtr ec24_6;
241 ECorrPtr ec26_6;
242
243 ECorrPtr ec22pT;
244 ECorrPtr ec22pTh;
245 ECorrPtr ec22pTK;
246 ECorrPtr ec22pTL;
247 ECorrPtr ec22pTKc;
248 ECorrPtr ec22pTLc;
249
250 };
251
252
253 // The hook for the plugin system
254 RIVET_DECLARE_PLUGIN(CMS_2017_I1471287);
255
256
257}
|