Rivet analyses referenceCMS_2015_I1397174Measurement of ttbar production with additional jet activity, including b quark jets, in the dilepton decay channel using pp collisions at sqrt(s)=8 TeVExperiment: CMS (LHC) Inspire ID: 1397174 Status: VALIDATED Authors:
Beam energies: (4000.0, 4000.0) GeV Run details:
Jet multiplicity distributions in top quark pair ($t\bar{t}$) events are measured in $pp$ collisions at a centre-of-mass energy of 8 \text{TeV} with the CMS detector at the LHC, using a data set corresponding to an integrated luminosity of 19.7/fb. The measurement is performed in the dilepton decay channels $e^+e^-$, $\mu^+\mu^-$, and $e^\pm\mu^\mp$). The absolute and normalized differential cross-sections for $t\bar{t}$ production are measured as a function of jet multiplicity for different jet transverse momentum thresholds and the kinematic properties of the leading additional jets. The differential $t\bar{t}b$ and $t\bar{t}b\bar{b}$ cross-sections are presented for the first time as a function of the kinematic properties of the leading additional $b$-jets. Furthermore, the fraction of events without additional jets above a threshold is measured as a function of the transverse momenta of the leading additional jets and the scalar sum of the transverse momenta of all additional jets. Source code: CMS_2015_I1397174.cc 1#include "Rivet/Analysis.hh"
2#include "Rivet/Projections/PartonicTops.hh"
3#include "Rivet/Projections/VetoedFinalState.hh"
4#include "Rivet/Projections/FastJets.hh"
5
6namespace Rivet {
7
8
9 /// Fully leptonic partonic ttbar analysis
10 class CMS_2015_I1397174 : public Analysis {
11 public:
12
13 /// Minimal constructor
14 RIVET_DEFAULT_ANALYSIS_CTOR(CMS_2015_I1397174);
15
16
17 /// @name Analysis methods
18 /// @{
19
20 /// Set up projections and book histograms
21 void init() {
22
23 // Parton level top quarks
24 declare(PartonicTops(TopDecay::E_MU, PromptEMuFromTau::NO), "PartonTops");
25
26 // Find jets not related to the top/W decays
27 VetoedFinalState vfs;
28 vfs.addDecayProductsVeto(PID::WPLUSBOSON);
29 vfs.addDecayProductsVeto(PID::WMINUSBOSON);
30 FastJets fj(vfs, JetAlg::ANTIKT, 0.5, JetMuons::ALL, JetInvisibles::ALL);
31 declare(fj, "Jets");
32
33 // Book histograms
34 book(_hVis_nJet30_abs , 1, 1, 1);
35 book(_hVis_nJet30 , 2, 1, 1);
36 book(_hVis_nJet60_abs , 3, 1, 1);
37 book(_hVis_nJet60 , 4, 1, 1);
38 book(_hVis_nJet100_abs , 5, 1, 1);
39 book(_hVis_nJet100 , 6, 1, 1);
40
41 book(_hVis_addJet1Pt_abs , 7, 1, 1);
42 book(_hVis_addJet1Pt , 8, 1, 1);
43 book(_hVis_addJet1Eta_abs , 9, 1, 1);
44 book(_hVis_addJet1Eta ,10, 1, 1);
45 book(_hVis_addJet2Pt_abs ,11, 1, 1);
46 book(_hVis_addJet2Pt ,12, 1, 1);
47 book(_hVis_addJet2Eta_abs ,13, 1, 1);
48 book(_hVis_addJet2Eta ,14, 1, 1);
49 book(_hVis_addJJMass_abs ,15, 1, 1);
50 book(_hVis_addJJMass ,16, 1, 1);
51 book(_hVis_addJJDR_abs ,17, 1, 1);
52 book(_hVis_addJJDR ,18, 1, 1);
53 book(_hVis_addJJHT_abs ,19, 1, 1);
54 book(_hVis_addJJHT ,20, 1, 1);
55
56 book(_hFull_addJet1Pt_abs ,21, 1, 1);
57 book(_hFull_addJet1Pt ,22, 1, 1);
58 book(_hFull_addJet1Eta_abs ,23, 1, 1);
59 book(_hFull_addJet1Eta ,24, 1, 1);
60 book(_hFull_addJet2Pt_abs ,25, 1, 1);
61 book(_hFull_addJet2Pt ,26, 1, 1);
62 book(_hFull_addJet2Eta_abs ,27, 1, 1);
63 book(_hFull_addJet2Eta ,28, 1, 1);
64 book(_hFull_addJJMass_abs ,29, 1, 1);
65 book(_hFull_addJJMass ,30, 1, 1);
66 book(_hFull_addJJDR_abs ,31, 1, 1);
67 book(_hFull_addJJDR ,32, 1, 1);
68 book(_hFull_addJJHT_abs ,33, 1, 1);
69 book(_hFull_addJJHT ,34, 1, 1);
70
71 book(_hVis_addBJet1Pt_abs ,35, 1, 1);
72 book(_hVis_addBJet1Pt ,36, 1, 1);
73 book(_hVis_addBJet1Eta_abs ,37, 1, 1);
74 book(_hVis_addBJet1Eta ,38, 1, 1);
75 book(_hVis_addBJet2Pt_abs ,39, 1, 1);
76 book(_hVis_addBJet2Pt ,40, 1, 1);
77 book(_hVis_addBJet2Eta_abs ,41, 1, 1);
78 book(_hVis_addBJet2Eta ,42, 1, 1);
79 book(_hVis_addBBMass_abs ,43, 1, 1);
80 book(_hVis_addBBMass ,44, 1, 1);
81 book(_hVis_addBBDR_abs ,45, 1, 1);
82 book(_hVis_addBBDR ,46, 1, 1);
83
84 book(_hFull_addBJet1Pt_abs ,47, 1, 1);
85 book(_hFull_addBJet1Pt ,48, 1, 1);
86 book(_hFull_addBJet1Eta_abs ,49, 1, 1);
87 book(_hFull_addBJet1Eta ,50, 1, 1);
88 book(_hFull_addBJet2Pt_abs ,51, 1, 1);
89 book(_hFull_addBJet2Pt ,52, 1, 1);
90 book(_hFull_addBJet2Eta_abs ,53, 1, 1);
91 book(_hFull_addBJet2Eta ,54, 1, 1);
92 book(_hFull_addBBMass_abs ,55, 1, 1);
93 book(_hFull_addBBMass ,56, 1, 1);
94 book(_hFull_addBBDR_abs ,57, 1, 1);
95 book(_hFull_addBBDR ,58, 1, 1);
96
97 book(_h_gap_addJet1Pt ,59, 1, 1);
98 book(_h_gap_addJet1Pt_eta0 ,60, 1, 1);
99 book(_h_gap_addJet1Pt_eta1 ,61, 1, 1);
100 book(_h_gap_addJet1Pt_eta2 ,62, 1, 1);
101 book(_h_gap_addJet2Pt ,63, 1, 1);
102 book(_h_gap_addJet2Pt_eta0 ,64, 1, 1);
103 book(_h_gap_addJet2Pt_eta1 ,65, 1, 1);
104 book(_h_gap_addJet2Pt_eta2 ,66, 1, 1);
105 book(_h_gap_addJetHT ,67, 1, 1);
106 book(_h_gap_addJetHT_eta0 ,68, 1, 1);
107 book(_h_gap_addJetHT_eta1 ,69, 1, 1);
108 book(_h_gap_addJetHT_eta2 ,70, 1, 1);
109 }
110
111
112 void analyze(const Event& event) {
113
114 // The objects used in the PAPER 12-041 are defined as follows (see p.16 for details):
115 //
116 // * Leptons : from the W boson decays after FSR
117 // * Jets : anti-kT R=0.5 to all stable particles
118 // exclude W->enu, munu, taunu
119 // * B jet : B-Ghost matched
120 // * B from top : B hadron from top->b decay
121 //
122 // Visible phase space definition:
123 //
124 // * Leptons : pT > 20, |eta| < 2.4
125 // * B jets from top : pT > 30, |eta| < 2.4
126 // Additional jets : pT > 20, |eta| < 2.4
127 // *
128 // Full phase space definition:
129 //
130 // * Correction to dilepton BR from W boson BR
131 // * No cut on top decay products
132 // * Additional jets : pT > 20, |eta| < 2.4
133
134 // Do the analysis only for the ttbar full leptonic channel, removing tau decays
135 const Particles partontops = apply<ParticleFinder>(event, "PartonTops").particlesByPt();
136 if (partontops.size() != 2) vetoEvent;
137 const Particle& t1 = partontops[0];
138 const Particle& t2 = partontops[1];
139
140 // Apply acceptance cuts on top-decay leptons (existence should be guaranteed)
141 const auto isPromptChLepton = [](const Particle& p){return p.isPrompt() && isChargedLepton(p);};
142 const Particle lep1 = t1.allDescendants(lastParticleWith(isPromptChLepton)).front();
143 const Particle lep2 = t2.allDescendants(lastParticleWith(isPromptChLepton)).front();
144 if (lep1.pT() < 1e-9*GeV || lep2.pT() < 1e-9*GeV) vetoEvent; // sanity check?
145
146 const Jets jets = apply<JetFinder>(event, "Jets").jetsByPt(Cuts::pT > 20*GeV && Cuts::abseta < 2.4);
147 int nJet30 = 0, nJet60 = 0, nJet100 = 0;
148 Jets topBJets, addJets, addBJets, addJets_eta0, addJets_eta1, addJets_eta2;
149 for (const Jet& jet : jets) {
150 if (jet.pT() > 30*GeV) nJet30 += 1;
151 if (jet.pT() > 60*GeV) nJet60 += 1;
152 if (jet.pT() > 100*GeV) nJet100 += 1;
153
154 const bool isBtagged = jet.bTagged();
155 const bool isBFromTop = any(jet.bTags(), hasParticleAncestorWith(Cuts::abspid == PID::TQUARK, false));
156
157 if (isBFromTop) {
158 if (jet.pT() > 30*GeV) topBJets.push_back(jet);
159 } else {
160 addJets.push_back(jet);
161 if (isBtagged) addBJets.push_back(jet);
162 if (jet.abseta() < 0.8 ) addJets_eta0.push_back(jet);
163 else if (jet.abseta() < 1.5 ) addJets_eta1.push_back(jet);
164 else if (jet.abseta() < 2.4 ) addJets_eta2.push_back(jet);
165 }
166 }
167
168
169 const bool isVisiblePS = topBJets.size() >= 2
170 && lep1.pT() > 20*GeV && lep1.abseta() < 2.4 && lep2.pT() > 20*GeV && lep2.abseta() < 2.4;
171 MSG_DEBUG(isVisiblePS << ": #b(top) = " << topBJets.size()
172 << "; l1 = " << lep1.pT() << ", " << lep1.abseta()
173 << "; l2 = " << lep2.pT() << ", " << lep2.abseta());
174
175
176
177 if (isVisiblePS) {
178 fillWithOF(_hVis_nJet30_abs, nJet30);
179 fillWithOF(_hVis_nJet30, nJet30);
180 fillWithOF(_hVis_nJet60_abs, nJet60);
181 fillWithOF(_hVis_nJet60, nJet60);
182 fillWithOF(_hVis_nJet100_abs, nJet100);
183 fillWithOF(_hVis_nJet100, nJet100);
184
185 fillGapFractions(addJets, _h_gap_addJet1Pt, _h_gap_addJet2Pt, _h_gap_addJetHT);
186 fillGapFractions(addJets_eta0, _h_gap_addJet1Pt_eta0, _h_gap_addJet2Pt_eta0, _h_gap_addJetHT_eta0);
187 fillGapFractions(addJets_eta1, _h_gap_addJet1Pt_eta1, _h_gap_addJet2Pt_eta1, _h_gap_addJetHT_eta1);
188 fillGapFractions(addJets_eta2, _h_gap_addJet1Pt_eta2, _h_gap_addJet2Pt_eta2, _h_gap_addJetHT_eta2);
189 }
190
191 // Plots with two additional jets
192 if (addJets.size() >= 1) {
193 const double ht = sum(addJets, Kin::pT, 0.0);
194 _hFull_addJJHT_abs->fill(ht/GeV);
195 _hFull_addJJHT ->fill(ht/GeV);
196 if (isVisiblePS) {
197 _hVis_addJJHT_abs->fill(ht/GeV);
198 _hVis_addJJHT ->fill(ht/GeV);
199 }
200
201 const Jet& j1 = addJets[0];
202 _hFull_addJet1Pt_abs ->fill(j1.pT()/GeV);
203 _hFull_addJet1Pt ->fill(j1.pT()/GeV);
204 _hFull_addJet1Eta_abs->fill(j1.abseta());
205 _hFull_addJet1Eta ->fill(j1.abseta());
206 if (isVisiblePS) {
207 _hVis_addJet1Pt_abs ->fill(j1.pT()/GeV);
208 _hVis_addJet1Pt ->fill(j1.pT()/GeV);
209 _hVis_addJet1Eta_abs->fill(j1.abseta());
210 _hVis_addJet1Eta ->fill(j1.abseta());
211 }
212
213 if (addJets.size() >= 2) {
214 const Jet& j2 = addJets[1];
215
216 _hFull_addJet2Pt_abs ->fill(j2.pT()/GeV);
217 _hFull_addJet2Pt ->fill(j2.pT()/GeV);
218 _hFull_addJet2Eta_abs->fill(j2.abseta());
219 _hFull_addJet2Eta ->fill(j2.abseta());
220 if (isVisiblePS) {
221 _hVis_addJet2Pt_abs ->fill(j2.pT()/GeV);
222 _hVis_addJet2Pt ->fill(j2.pT()/GeV);
223 _hVis_addJet2Eta_abs->fill(j2.abseta());
224 _hVis_addJet2Eta ->fill(j2.abseta());
225 }
226
227 const double jjmass = (j1.mom() + j2.mom()).mass();
228 const double jjdR = deltaR(j1, j2);
229 _hFull_addJJMass_abs->fill(jjmass/GeV);
230 _hFull_addJJMass ->fill(jjmass/GeV);
231 _hFull_addJJDR_abs ->fill(jjdR);
232 _hFull_addJJDR ->fill(jjdR);
233 if (isVisiblePS) {
234 _hVis_addJJMass_abs->fill(jjmass/GeV);
235 _hVis_addJJMass ->fill(jjmass/GeV);
236 _hVis_addJJDR_abs ->fill(jjdR);
237 _hVis_addJJDR ->fill(jjdR);
238 }
239 }
240 }
241
242
243 // Same set of plots if there are additional b-jets
244 if (addBJets.size() >= 1) {
245 const Jet& b1 = addBJets[0];
246 _hFull_addBJet1Pt_abs ->fill(b1.pT()/GeV);
247 _hFull_addBJet1Pt ->fill(b1.pT()/GeV);
248 _hFull_addBJet1Eta_abs->fill(b1.abseta());
249 _hFull_addBJet1Eta ->fill(b1.abseta());
250 if (isVisiblePS) {
251 _hVis_addBJet1Pt_abs ->fill(b1.pT()/GeV);
252 _hVis_addBJet1Pt ->fill(b1.pT()/GeV);
253 _hVis_addBJet1Eta_abs->fill(b1.abseta());
254 _hVis_addBJet1Eta ->fill(b1.abseta());
255 }
256
257 if (addBJets.size() >= 2) {
258 const Jet& b2 = addBJets[1];
259
260 _hFull_addBJet2Pt_abs ->fill(b2.pT()/GeV);
261 _hFull_addBJet2Pt ->fill(b2.pT()/GeV);
262 _hFull_addBJet2Eta_abs->fill(b2.abseta());
263 _hFull_addBJet2Eta ->fill(b2.abseta());
264 if (isVisiblePS) {
265 _hVis_addBJet2Pt_abs ->fill(b2.pT()/GeV);
266 _hVis_addBJet2Pt ->fill(b2.pT()/GeV);
267 _hVis_addBJet2Eta_abs->fill(b2.abseta());
268 _hVis_addBJet2Eta ->fill(b2.abseta());
269 }
270
271 const double bbmass = (b1.mom() + b2.mom()).mass();
272 const double bbdR = deltaR(b1, b2);
273 _hFull_addBBMass_abs->fill(bbmass/GeV);
274 _hFull_addBBMass ->fill(bbmass/GeV);
275 _hFull_addBBDR_abs ->fill(bbdR);
276 _hFull_addBBDR ->fill(bbdR);
277 if (isVisiblePS) {
278 _hVis_addBBMass_abs->fill(bbmass/GeV);
279 _hVis_addBBMass ->fill(bbmass/GeV);
280 _hVis_addBBDR_abs ->fill(bbdR);
281 _hVis_addBBDR ->fill(bbdR);
282 }
283 }
284 }
285
286 }
287
288
289 void finalize() {
290 const double ttbarXS = !std::isnan(crossSectionPerEvent()) ? crossSection() : 252.89*picobarn;
291 if (std::isnan(crossSectionPerEvent()))
292 MSG_INFO("No valid cross-section given, using NNLO (arXiv:1303.6254; sqrt(s)=8 TeV, m_t=172.5 GeV): " << ttbarXS/picobarn << " pb");
293
294 normalize(_hVis_nJet30); normalize(_hVis_nJet60); normalize(_hVis_nJet100);
295 normalize(_hVis_addJet1Pt); normalize(_hVis_addJet1Eta); normalize(_hVis_addJet2Pt);
296 normalize(_hVis_addJet2Eta); normalize(_hVis_addJJMass); normalize(_hVis_addJJDR);
297 normalize(_hVis_addJJHT); normalize(_hFull_addJet1Pt); normalize(_hFull_addJet1Eta);
298 normalize(_hFull_addJet2Pt); normalize(_hFull_addJet2Eta); normalize(_hFull_addJJMass);
299 normalize(_hFull_addJJDR); normalize(_hFull_addJJHT); normalize(_hVis_addBJet1Pt);
300 normalize(_hVis_addBJet1Eta); normalize(_hVis_addBJet2Pt); normalize(_hVis_addBJet2Eta);
301 normalize(_hVis_addBBMass); normalize(_hVis_addBBDR); normalize(_hFull_addBJet1Pt);
302 normalize(_hFull_addBJet1Eta); normalize(_hFull_addBJet2Pt); normalize(_hFull_addBJet2Eta);
303 normalize(_hFull_addBBMass); normalize(_hFull_addBBDR);
304
305 const double xsPerWeight = ttbarXS/picobarn / sumOfWeights();
306 scale(_hVis_nJet30_abs, xsPerWeight); scale(_hVis_nJet60_abs, xsPerWeight);
307 scale(_hVis_nJet100_abs, xsPerWeight); scale(_hVis_addJet1Pt_abs, xsPerWeight);
308 scale(_hVis_addJet1Eta_abs, xsPerWeight); scale(_hVis_addJet2Pt_abs, xsPerWeight);
309 scale(_hVis_addJet2Eta_abs, xsPerWeight); scale(_hVis_addJJMass_abs, xsPerWeight);
310 scale(_hVis_addJJDR_abs, xsPerWeight); scale(_hVis_addJJHT_abs, xsPerWeight);
311 scale(_hVis_addBJet1Pt_abs, xsPerWeight); scale(_hVis_addBJet1Eta_abs, xsPerWeight);
312 scale(_hVis_addBJet2Pt_abs, xsPerWeight); scale(_hVis_addBJet2Eta_abs, xsPerWeight);
313 scale(_hVis_addBBMass_abs, xsPerWeight); scale(_hVis_addBBDR_abs, xsPerWeight);
314
315 const double sfull = xsPerWeight / 0.0454; //< correct for dilepton branching fraction
316 scale(_hFull_addJet1Pt_abs, sfull); scale(_hFull_addJet1Eta_abs, sfull);
317 scale(_hFull_addJet2Pt_abs, sfull); scale(_hFull_addJet2Eta_abs, sfull);
318 scale(_hFull_addJJMass_abs, sfull); scale(_hFull_addJJDR_abs, sfull);
319 scale(_hFull_addJJHT_abs, sfull); scale(_hFull_addBJet1Pt_abs, sfull);
320 scale(_hFull_addBJet1Eta_abs, sfull); scale(_hFull_addBJet2Pt_abs, sfull);
321 scale(_hFull_addBJet2Eta_abs, sfull); scale(_hFull_addBBMass_abs, sfull);
322 scale(_hFull_addBBDR_abs, sfull);
323 }
324
325 /// @}
326
327
328 void fillWithOF(Histo1DPtr h, double x) {
329 h->fill(std::min(x, h->xMax()-1e-9));
330 }
331
332
333 void fillGapFractions(const Jets& addJets, Profile1DPtr h_gap_addJet1Pt, Profile1DPtr h_gap_addJet2Pt, Profile1DPtr h_gap_addJetHT) {
334 const double j1pt = (addJets.size() > 0) ? addJets[0].pT() : 0;
335 for (size_t i = 1; i <= h_gap_addJet1Pt->numBins(); ++i) {
336 const double binCenter = h_gap_addJet1Pt->bin(i).xMid();
337 h_gap_addJet1Pt->fill(binCenter, int(j1pt/GeV < binCenter));
338 }
339
340 const double j2pt = (addJets.size() > 1) ? addJets[1].pT() : 0;
341 for (size_t i = 1; i <= h_gap_addJet2Pt->numBins(); ++i) {
342 const double binCenter = h_gap_addJet2Pt->bin(i).xMid();
343 h_gap_addJet2Pt->fill(binCenter, int(j2pt/GeV < binCenter));
344 }
345
346 const double ht = sum(addJets, Kin::pT, 0.);
347 for (size_t i = 1; i <= h_gap_addJetHT->numBins(); ++i) {
348 const double binCenter = h_gap_addJetHT->bin(i).xMid();
349 h_gap_addJetHT->fill(binCenter, int(ht/GeV < binCenter) );
350 }
351 }
352
353
354 // @name Histogram data members
355 /// @{
356
357 Histo1DPtr _hVis_nJet30_abs, _hVis_nJet60_abs, _hVis_nJet100_abs;
358 Histo1DPtr _hVis_addJet1Pt_abs, _hVis_addJet1Eta_abs, _hVis_addJet2Pt_abs, _hVis_addJet2Eta_abs;
359 Histo1DPtr _hVis_addJJMass_abs, _hVis_addJJDR_abs, _hVis_addJJHT_abs;
360 Histo1DPtr _hFull_addJet1Pt_abs, _hFull_addJet1Eta_abs, _hFull_addJet2Pt_abs, _hFull_addJet2Eta_abs;
361 Histo1DPtr _hFull_addJJMass_abs, _hFull_addJJDR_abs, _hFull_addJJHT_abs;
362 Histo1DPtr _hVis_addBJet1Pt_abs, _hVis_addBJet1Eta_abs, _hVis_addBJet2Pt_abs, _hVis_addBJet2Eta_abs;
363 Histo1DPtr _hVis_addBBMass_abs, _hVis_addBBDR_abs;
364 Histo1DPtr _hFull_addBJet1Pt_abs, _hFull_addBJet1Eta_abs, _hFull_addBJet2Pt_abs, _hFull_addBJet2Eta_abs;
365 Histo1DPtr _hFull_addBBMass_abs, _hFull_addBBDR_abs;
366
367 Histo1DPtr _hVis_nJet30, _hVis_nJet60, _hVis_nJet100;
368 Histo1DPtr _hVis_addJet1Pt, _hVis_addJet1Eta, _hVis_addJet2Pt, _hVis_addJet2Eta;
369 Histo1DPtr _hVis_addJJMass, _hVis_addJJDR, _hVis_addJJHT;
370 Histo1DPtr _hFull_addJet1Pt, _hFull_addJet1Eta, _hFull_addJet2Pt, _hFull_addJet2Eta;
371 Histo1DPtr _hFull_addJJMass, _hFull_addJJDR, _hFull_addJJHT;
372 Histo1DPtr _hVis_addBJet1Pt, _hVis_addBJet1Eta, _hVis_addBJet2Pt, _hVis_addBJet2Eta;
373 Histo1DPtr _hVis_addBBMass, _hVis_addBBDR;
374 Histo1DPtr _hFull_addBJet1Pt, _hFull_addBJet1Eta, _hFull_addBJet2Pt, _hFull_addBJet2Eta;
375 Histo1DPtr _hFull_addBBMass, _hFull_addBBDR;
376
377 Profile1DPtr _h_gap_addJet1Pt, _h_gap_addJet1Pt_eta0, _h_gap_addJet1Pt_eta1, _h_gap_addJet1Pt_eta2;
378 Profile1DPtr _h_gap_addJet2Pt, _h_gap_addJet2Pt_eta0, _h_gap_addJet2Pt_eta1, _h_gap_addJet2Pt_eta2;
379 Profile1DPtr _h_gap_addJetHT, _h_gap_addJetHT_eta0, _h_gap_addJetHT_eta1, _h_gap_addJetHT_eta2;
380
381 /// @}
382
383 };
384
385
386
387 RIVET_DECLARE_PLUGIN(CMS_2015_I1397174);
388
389
390}
|