Rivet analyses referenceATLAS_2011_I939504High-jet-multiplicity squark and gluino searchExperiment: ATLAS (LHC) Inspire ID: 939504 Status: VALIDATED Authors:
Beam energies: (3500.0, 3500.0) GeV Run details:
Search for SUSY using events with 6 or more jets in association with missing transverse momentum produced in proton-proton collisions at a centre-of-mass energy of 7 TeV. The data sample has a total integrated luminosity of 1.34 fb$^{-1}$. Distributions in the $W$ and top control regions are not produced, while in addition to the plots from the paper the count of events in the different signal regions is included. Source code: ATLAS_2011_I939504.cc 1// -*- C++ -*-
2#include "Rivet/Analysis.hh"
3#include "Rivet/Projections/FinalState.hh"
4#include "Rivet/Projections/ChargedFinalState.hh"
5#include "Rivet/Projections/VisibleFinalState.hh"
6#include "Rivet/Projections/VetoedFinalState.hh"
7#include "Rivet/Projections/IdentifiedFinalState.hh"
8#include "Rivet/Projections/FastJets.hh"
9#include "Rivet/Tools/RivetMT2.hh"
10
11namespace Rivet {
12
13
14 /// High-jet-multiplicity squark and gluino search
15 class ATLAS_2011_I939504 : public Analysis {
16 public:
17
18 /// Constructor
19 RIVET_DEFAULT_ANALYSIS_CTOR(ATLAS_2011_I939504);
20
21
22 /// @name Analysis methods
23 /// @{
24
25 /// Book histograms and initialise projections before the run
26 void init() {
27
28 // veto region electrons
29 Cut vetocut = Cuts::absetaIn(1.37, 1.52);
30 IdentifiedFinalState veto_elecs(vetocut && Cuts::pT > 10*GeV);
31 veto_elecs.acceptIdPair(PID::ELECTRON);
32 declare(veto_elecs, "veto_elecs");
33
34 // projection to find the electrons
35 IdentifiedFinalState elecs(Cuts::abseta < 2.47 && Cuts::pT > 20*GeV);
36 elecs.acceptIdPair(PID::ELECTRON);
37 declare(elecs, "elecs");
38
39 // projection to find the muons
40 IdentifiedFinalState muons(Cuts::abseta < 2.4 && Cuts::pT > 10*GeV);
41 muons.acceptIdPair(PID::MUON);
42 declare(muons, "muons");
43
44 // for pTmiss
45 declare(VisibleFinalState(Cuts::abseta < 4.9), "vfs");
46
47 VetoedFinalState vfs;
48 vfs.addVetoPairId(PID::MUON);
49
50 /// Jet finder
51 declare(FastJets(vfs, JetAlg::ANTIKT, 0.4), "AntiKtJets04");
52
53 // all tracks (to do deltaR with leptons)
54 declare(ChargedFinalState(Cuts::abseta < 3), "cfs");
55
56 /// Book histograms
57 book(_etmisspT_55_NJ_6_obs , 1,1,1);
58 book(_etmisspT_55_NJ_6_bac , 1,1,2);
59 book(_etmisspT_55_NJ_6_sig , 1,1,3);
60 book(_etmisspT_55_NJ_7_obs ,13,1,1);
61 book(_etmisspT_55_NJ_7_bac ,13,1,2);
62 book(_etmisspT_55_NJ_7_sig ,13,1,3);
63 book(_etmisspT_55_NJ_8_obs ,15,1,1);
64 book(_etmisspT_55_NJ_8_bac ,15,1,2);
65 book(_etmisspT_55_NJ_8_sig ,15,1,3);
66 book(_etmisspT_80_NJ_5_obs , 2,1,1);
67 book(_etmisspT_80_NJ_5_bac , 2,1,2);
68 book(_etmisspT_80_NJ_5_sig , 2,1,3);
69 book(_etmisspT_80_NJ_6_obs ,14,1,1);
70 book(_etmisspT_80_NJ_6_bac ,14,1,2);
71 book(_etmisspT_80_NJ_6_sig ,14,1,3);
72 book(_etmisspT_80_NJ_7_obs ,16,1,1);
73 book(_etmisspT_80_NJ_7_bac ,16,1,2);
74 book(_etmisspT_80_NJ_7_sig ,16,1,3);
75
76 book(_njet55A_obs , 3,1,1);
77 book(_njet55A_bac , 3,1,2);
78 book(_njet55A_sig , 3,1,3);
79 book(_njet55B_obs , 4,1,1);
80 book(_njet55B_bac , 4,1,2);
81 book(_njet55B_sig , 4,1,3);
82 book(_njet55C_obs ,17,1,1);
83 book(_njet55C_bac ,17,1,2);
84 book(_njet55C_sig ,17,1,3);
85 book(_njet80A_obs , 5,1,1);
86 book(_njet80A_bac , 5,1,2);
87 book(_njet80A_sig , 5,1,3);
88 book(_njet80B_obs , 6,1,1);
89 book(_njet80B_bac , 6,1,2);
90 book(_njet80B_sig , 6,1,3);
91 book(_njet80C_obs ,18,1,1);
92 book(_njet80C_bac ,18,1,2);
93 book(_njet80C_sig ,18,1,3);
94
95 book(_count_7j55 ,"count_7j55", 1, 0., 1.);
96 book(_count_8j55 ,"count_8j55", 1, 0., 1.);
97 book(_count_6j80 ,"count_6j80", 1, 0., 1.);
98 book(_count_7j80 ,"count_7j80", 1, 0., 1.);
99
100 }
101
102
103 /// Perform the per-event analysis
104 void analyze(const Event& event) {
105 // apply electron veto region
106 Particles veto_e
107 = apply<IdentifiedFinalState>(event, "veto_elecs").particles();
108 if ( ! veto_e.empty() ) {
109 MSG_DEBUG("electrons in veto region");
110 vetoEvent;
111 }
112
113 // get the jet candidates
114 Jets cand_jets = apply<FastJets>(event, "AntiKtJets04").jetsByPt(Cuts::pT > 20.0*GeV && Cuts::abseta < 4.9);
115
116 // candidate muons
117 Particles cand_mu;
118 Particles chg_tracks =
119 apply<ChargedFinalState>(event, "cfs").particles();
120 for ( const Particle & mu :
121 apply<IdentifiedFinalState>(event, "muons").particlesByPt() ) {
122 double pTinCone = -mu.pT();
123 for ( const Particle & track : chg_tracks ) {
124 if ( deltaR(mu.momentum(),track.momentum()) <= 0.2 )
125 pTinCone += track.pT();
126 }
127 if ( pTinCone < 1.8*GeV )
128 cand_mu.push_back(mu);
129 }
130
131 // candidate electrons
132
133 Particles cand_e =
134 apply<IdentifiedFinalState>(event, "elecs").particlesByPt();
135
136 // resolve jet/lepton ambiguity
137 Jets cand_jets_2;
138 for ( const Jet& jet : cand_jets ) {
139 // candidates above eta=2.8 are jets
140 if ( fabs( jet.eta() ) >= 2.8 )
141 cand_jets_2.push_back( jet );
142 // otherwise more the R=0.2 from an electrons
143 else {
144 bool away_from_e = true;
145 for ( const Particle & e : cand_e ) {
146 if ( deltaR(e.momentum(),jet.momentum()) <= 0.2 ) {
147 away_from_e = false;
148 break;
149 }
150 }
151 if ( away_from_e )
152 cand_jets_2.push_back( jet );
153 }
154 }
155
156 // only keep electrons more than R=0.4 from jets
157 Particles recon_e;
158 for ( const Particle & e : cand_e ) {
159 bool away = true;
160 for ( const Jet& jet : cand_jets_2 ) {
161 if ( deltaR(e.momentum(),jet.momentum()) < 0.4 ) {
162 away = false;
163 break;
164 }
165 }
166 if ( away )
167 recon_e.push_back( e );
168 }
169
170 // only keep muons more than R=0.4 from jets
171 Particles recon_mu;
172 for ( const Particle & mu : cand_mu ) {
173 bool away = true;
174 for ( const Jet& jet : cand_jets_2 ) {
175 if ( deltaR(mu.momentum(),jet.momentum()) < 0.4 ) {
176 away = false;
177 break;
178 }
179 }
180 if ( away ) recon_mu.push_back( mu );
181 }
182
183 // pTmiss
184 Particles vfs_particles =
185 apply<VisibleFinalState>(event, "vfs").particles();
186 FourMomentum pTmiss;
187 for ( const Particle & p : vfs_particles ) {
188 pTmiss -= p.momentum();
189 }
190 double eTmiss = pTmiss.pT();
191
192 // final jet filter
193 Jets recon_jets;
194 for (const Jet& jet : cand_jets_2) {
195 if (jet.abseta() <= 2.8 ) recon_jets.push_back( jet );
196 }
197
198 // now only use recon_jets, recon_mu, recon_e
199
200 // reject events with electrons and muons
201 if ( ! ( recon_mu.empty() && recon_e.empty() ) ) {
202 MSG_DEBUG("Charged leptons left after selection");
203 vetoEvent;
204 }
205
206 // calculate H_T
207 double HT = 0;
208 for (const Jet& jet : recon_jets) {
209 if (jet.pT() > 40*GeV) HT += jet.pT() ;
210 }
211
212 // number of jets and deltaR
213 bool pass55DeltaR=true, pass80DeltaR=true;
214 size_t njet55=0, njet80=0;
215 for (size_t ix=0; ix < recon_jets.size(); ++ix) {
216 if (recon_jets[ix].pT() > 80*GeV) ++njet80;
217 if (recon_jets[ix].pT() > 55*GeV) ++njet55;
218 for (size_t iy = ix + 1; iy < recon_jets.size(); ++iy) {
219 if (recon_jets[ix].pT() > 55*GeV &&
220 recon_jets[iy].pT() > 55*GeV &&
221 deltaR(recon_jets[ix], recon_jets[iy]) < 0.6)
222 pass55DeltaR = false;
223 // if (recon_jets[ix].pT() > 80*GeV &&
224 // recon_jets[iy].pT() > 80*GeV &&
225 // deltaR(recon_jets[ix], recon_jets[iy]) < 0.6)
226 // pass80DeltaR = false;
227 }
228 }
229
230 // require at least four jets with et > 55
231 if (njet55 <= 3) vetoEvent;
232
233 // plots of etmiss/ht
234 double etht = eTmiss/sqrt(HT);
235 if (njet55 == 6) {
236 _etmisspT_55_NJ_6_obs->fill(etht);
237 _etmisspT_55_NJ_6_bac->fill(etht);
238 _etmisspT_55_NJ_6_sig->fill(etht);
239 } else if (njet55 == 7) {
240 _etmisspT_55_NJ_7_obs->fill(etht);
241 _etmisspT_55_NJ_7_bac->fill(etht);
242 _etmisspT_55_NJ_7_sig->fill(etht);
243 } else if (njet55 == 8) {
244 _etmisspT_55_NJ_8_obs->fill(etht);
245 _etmisspT_55_NJ_8_bac->fill(etht);
246 _etmisspT_55_NJ_8_sig->fill(etht);
247 }
248 if (njet80 == 5) {
249 _etmisspT_80_NJ_5_obs->fill(etht);
250 _etmisspT_80_NJ_5_bac->fill(etht);
251 _etmisspT_80_NJ_5_sig->fill(etht);
252 } else if (njet80 == 6) {
253 _etmisspT_80_NJ_6_obs->fill(etht);
254 _etmisspT_80_NJ_6_bac->fill(etht);
255 _etmisspT_80_NJ_6_sig->fill(etht);
256 } else if (njet80 == 7) {
257 _etmisspT_80_NJ_7_obs->fill(etht);
258 _etmisspT_80_NJ_7_bac->fill(etht);
259 _etmisspT_80_NJ_7_sig->fill(etht);
260 }
261
262 if (etht > 1.5 && etht < 2.) {
263 if (njet55 > 3) {
264 _njet55A_obs->fill(njet55);
265 _njet55A_bac->fill(njet55);
266 _njet55A_sig->fill(njet55);
267 }
268 if (njet80 > 3) {
269 _njet80A_obs->fill(njet80);
270 _njet80A_bac->fill(njet80);
271 _njet80A_sig->fill(njet80);
272 }
273 } else if (etht > 2. && etht < 3.) {
274 if (njet55 > 3) {
275 _njet55B_obs->fill(njet55);
276 _njet55B_bac->fill(njet55);
277 _njet55B_sig->fill(njet55);
278 }
279 if (njet80 > 3) {
280 _njet80B_obs->fill(njet80);
281 _njet80B_bac->fill(njet80);
282 _njet80B_sig->fill(njet80);
283 }
284 } else {
285 if (njet55 > 3) {
286 _njet55C_obs->fill(njet55);
287 _njet55C_bac->fill(njet55);
288 _njet55C_sig->fill(njet55);
289 }
290 if (njet80 > 3) {
291 _njet80C_obs->fill(njet80);
292 _njet80C_bac->fill(njet80);
293 _njet80C_sig->fill(njet80);
294 }
295 }
296
297 // apply E_T/sqrt(H_T) cut
298 if (etht <= 3.5*GeV) {
299 MSG_DEBUG("Fails ET/sqrt(HT) cut ");
300 vetoEvent;
301 }
302
303 // check passes at least one delta5/ njet number cut
304 if (!(pass55DeltaR && njet55 >= 7) && !(pass80DeltaR && njet80 >= 6) ) {
305 MSG_DEBUG("Fails DeltaR cut or jet number cuts");
306 vetoEvent;
307 }
308
309 // 7j55
310 if (njet55 >= 7 && pass55DeltaR) _count_7j55->fill( 0.5);
311 // 8j55
312 if (njet55 >= 8 && pass55DeltaR) _count_8j55->fill( 0.5);
313 // 6j80
314 if (njet80 >= 6 && pass80DeltaR) _count_6j80->fill( 0.5);
315 // 7j80
316 if (njet80 >= 7 && pass80DeltaR) _count_7j80->fill( 0.5);
317 }
318
319 /// @}
320
321 void finalize() {
322 const double norm = crossSection()/femtobarn*1.34/sumOfWeights();
323 scale(_etmisspT_55_NJ_6_obs,norm);
324 scale(_etmisspT_55_NJ_6_bac,norm);
325 scale(_etmisspT_55_NJ_6_sig,norm);
326 scale(_etmisspT_55_NJ_7_obs,norm);
327 scale(_etmisspT_55_NJ_7_bac,norm);
328 scale(_etmisspT_55_NJ_7_sig,norm);
329 scale(_etmisspT_55_NJ_8_obs,norm);
330 scale(_etmisspT_55_NJ_8_bac,norm);
331 scale(_etmisspT_55_NJ_8_sig,norm);
332 scale(_etmisspT_80_NJ_5_obs,norm);
333 scale(_etmisspT_80_NJ_5_bac,norm);
334 scale(_etmisspT_80_NJ_5_sig,norm);
335 scale(_etmisspT_80_NJ_6_obs,norm);
336 scale(_etmisspT_80_NJ_6_bac,norm);
337 scale(_etmisspT_80_NJ_6_sig,norm);
338 scale(_etmisspT_80_NJ_7_obs,norm);
339 scale(_etmisspT_80_NJ_7_bac,norm);
340 scale(_etmisspT_80_NJ_7_sig,norm);
341 scale(_njet55A_obs,norm);
342 scale(_njet55A_bac,norm);
343 scale(_njet55A_sig,norm);
344 scale(_njet55B_obs,norm);
345 scale(_njet55B_bac,norm);
346 scale(_njet55B_sig,norm);
347 scale(_njet55C_obs,norm);
348 scale(_njet55C_bac,norm);
349 scale(_njet55C_sig,norm);
350 scale(_njet80A_obs,norm);
351 scale(_njet80A_bac,norm);
352 scale(_njet80A_sig,norm);
353 scale(_njet80B_obs,norm);
354 scale(_njet80B_bac,norm);
355 scale(_njet80B_sig,norm);
356 scale(_njet80C_obs,norm);
357 scale(_njet80C_bac,norm);
358 scale(_njet80C_sig,norm);
359 scale(_count_7j55,norm);
360 scale(_count_8j55,norm);
361 scale(_count_6j80,norm);
362 scale(_count_7j80,norm);
363 }
364
365 private:
366
367 /// @name Histograms
368 /// @{
369 Histo1DPtr _etmisspT_55_NJ_6_obs;
370 Histo1DPtr _etmisspT_55_NJ_6_bac;
371 Histo1DPtr _etmisspT_55_NJ_6_sig;
372 Histo1DPtr _etmisspT_55_NJ_7_obs;
373 Histo1DPtr _etmisspT_55_NJ_7_bac;
374 Histo1DPtr _etmisspT_55_NJ_7_sig;
375 Histo1DPtr _etmisspT_55_NJ_8_obs;
376 Histo1DPtr _etmisspT_55_NJ_8_bac;
377 Histo1DPtr _etmisspT_55_NJ_8_sig;
378 Histo1DPtr _etmisspT_80_NJ_5_obs;
379 Histo1DPtr _etmisspT_80_NJ_5_bac;
380 Histo1DPtr _etmisspT_80_NJ_5_sig;
381 Histo1DPtr _etmisspT_80_NJ_6_obs;
382 Histo1DPtr _etmisspT_80_NJ_6_bac;
383 Histo1DPtr _etmisspT_80_NJ_6_sig;
384 Histo1DPtr _etmisspT_80_NJ_7_obs;
385 Histo1DPtr _etmisspT_80_NJ_7_bac;
386 Histo1DPtr _etmisspT_80_NJ_7_sig;
387 Histo1DPtr _njet55A_obs;
388 Histo1DPtr _njet55A_bac;
389 Histo1DPtr _njet55A_sig;
390 Histo1DPtr _njet55B_obs;
391 Histo1DPtr _njet55B_bac;
392 Histo1DPtr _njet55B_sig;
393 Histo1DPtr _njet55C_obs;
394 Histo1DPtr _njet55C_bac;
395 Histo1DPtr _njet55C_sig;
396 Histo1DPtr _njet80A_obs;
397 Histo1DPtr _njet80A_bac;
398 Histo1DPtr _njet80A_sig;
399 Histo1DPtr _njet80B_obs;
400 Histo1DPtr _njet80B_bac;
401 Histo1DPtr _njet80B_sig;
402 Histo1DPtr _njet80C_obs;
403 Histo1DPtr _njet80C_bac;
404 Histo1DPtr _njet80C_sig;
405 Histo1DPtr _count_7j55;
406 Histo1DPtr _count_8j55;
407 Histo1DPtr _count_6j80;
408 Histo1DPtr _count_7j80;
409 /// @}
410
411 };
412
413
414
415 RIVET_DECLARE_ALIASED_PLUGIN(ATLAS_2011_I939504, ATLAS_2011_S9225137);
416
417}
|