|
Rivet analyses reference
ATLAS_2016_I1452559
Monojet + missing energy search with 3.2/fb of 13 TeV $pp$ data
Experiment: ATLAS (LHC)
Inspire ID: 1452559
Status: UNVALIDATED
Authors:
- Andy Buckley
- Shehu AbdusSalam
References:
- Phys.Rev. D94 (2016) no.3, 032005
- DOI: 10.1103/PhysRevD.94.032005
- CERN-EP-2016-075
- arXiv: 1604.07773
Beams: p+ p+
Beam energies: (6500.0, 6500.0) GeV
Run details:
A search for new phenomena in final states with an energetic jet and large missing transverse momentum. The search uses proton-proton collision data corresponding to an integrated luminosity of 3.2/fb of $pp$ collisions at 13\;\text{TeV}, collected in 2015 with the ATLAS detector. Events are required to have at least one jet with a transverse momentum above 250 GeV and no leptons. Several signal regions are considered with increasing missing-transverse-momentum requirements between $E_T^\mathrm{miss} > 250\;\text{GeV}$ and 700\;\text{GeV}. Good agreement is observed between the number of events in data and Standard Model predictions.
Source code:
ATLAS_2016_I1452559.cc
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130 | #include "Rivet/Analysis.hh"
#include "Rivet/Projections/FinalState.hh"
#include "Rivet/Projections/IdentifiedFinalState.hh"
#include "Rivet/Projections/VisibleFinalState.hh"
#include "Rivet/Projections/FastJets.hh"
#include "Rivet/Projections/MissingMomentum.hh"
#include "Rivet/Projections/SmearedParticles.hh"
#include "Rivet/Projections/SmearedJets.hh"
#include "Rivet/Projections/SmearedMET.hh"
namespace Rivet {
/// ATLAS 13 TeV monojet search with 3.2/fb of pp data
class ATLAS_2016_I1452559 : public Analysis {
public:
DEFAULT_RIVET_ANALYSIS_CTOR(ATLAS_2016_I1452559);
void init() {
FastJets jets(FinalState(Cuts::abseta < 4.9), FastJets::ANTIKT, 0.4);
SmearedJets recojets(jets, JET_SMEAR_ATLAS_RUN1);
declare(recojets, "Jets");
FinalState electrons(Cuts::abspid == PID::ELECTRON && Cuts::abseta < 2.47 && Cuts::pT > 20*GeV);
SmearedParticles recoelectrons(electrons, ELECTRON_EFF_ATLAS_RUN1_MEDIUM);
declare(recoelectrons, "Electrons");
FinalState muons(Cuts::abspid == PID::MUON && Cuts::abseta < 2.50 && Cuts::pT > 10*GeV);
SmearedParticles recomuons(muons, MUON_EFF_ATLAS_RUN1);
declare(recomuons, "Muons");
VisibleFinalState calofs(Cuts::abseta < 4.9 && Cuts::abspid != PID::MUON);
MissingMomentum met(calofs);
SmearedMET recomet(met, MET_SMEAR_ATLAS_RUN1);
declare(recomet, "MET");
/// Book histograms
for (size_t i = 0; i < 7; ++i)
book(_count_IM[i], "count_IM" + toString(i+1));
for (size_t i = 0; i < 6; ++i)
book(_count_EM[i], "count_EM" + toString(i+1));
}
void analyze(const Event& event) {
const Jets jets = apply<JetAlg>(event, "Jets").jetsByPt(Cuts::pT > 20*GeV && Cuts::abseta < 2.8);
const Particles elecs = apply<ParticleFinder>(event, "Electrons").particlesByPt();
const Particles mus = apply<ParticleFinder>(event, "Muons").particlesByPt();
MSG_DEBUG("Number of raw jets, electrons, muons = "
<< jets.size() << ", " << elecs.size() << ", " << mus.size());
// Discard jets very close to electrons, or with low track multiplicity and close to muons
const Jets isojets = filter_discard(jets, [&](const Jet& j) {
/// @todo Add track efficiency random filtering
if (any(elecs, deltaRLess(j, 0.2))) return true;
if (j.particles(Cuts::abscharge > 0 && Cuts::pT > 0.4*GeV).size() < 3 &&
any(mus, deltaRLess(j, 0.4))) return true;
return false;
});
// Discard electrons close to remaining jets
const Particles isoelecs = filter_discard(elecs, [&](const Particle& e) {
return any(isojets, deltaRLess(e, 0.4));
});
// Discard muons close to remaining jets
const Particles isomus = filter_discard(mus, [&](const Particle& m) {
for (const Jet& j : isojets) {
if (deltaR(j,m) > 0.4) continue;
if (j.particles(Cuts::abscharge > 0 && Cuts::pT > 0.4*GeV).size() > 3) return true;
}
return false;
});
// Calculate ETmiss
//const Vector3& vet = apply<MissingMomentum>(event, "MET").vectorEt();
const Vector3& vet = apply<SmearedMET>(event, "MET").vectorEt();
const double etmiss = vet.perp();
// Event selection cuts
if (etmiss < 250*GeV) vetoEvent;
// Require at least one jet with pT > 250 GeV and |eta| < 2.4
if (filter_select(isojets, Cuts::pT > 250*GeV && Cuts::abseta < 2.4).empty()) vetoEvent;
// Require at most 4 jets with pT > 30 GeV and |eta| < 2.8
if (filter_select(isojets, Cuts::pT > 30*GeV).size() > 4) vetoEvent;
// Require no isolated jets within |dphi| < 0.4 of the MET vector
if (any(isojets, deltaPhiLess(-vet, 0.4))) vetoEvent;
// Require no isolated electrons or muons
if (!isoelecs.empty() || !isomus.empty()) vetoEvent;
////////////////////
// Get ETmiss bin number and fill counters
const int i_etmiss = binIndex(etmiss/GeV, ETMISS_CUTS);
// Inclusive ETmiss bins
for (int ibin = 0; ibin < 7; ++ibin)
if (i_etmiss >= ibin) _count_IM[ibin]->fill();
// Exclusive ETmiss bins
if (inRange(i_etmiss, 0, 6)) _count_EM[i_etmiss]->fill();
}
void finalize() {
const double norm = 3.2*crossSection()/femtobarn;
scale(_count_IM, norm/sumOfWeights());
scale(_count_EM, norm/sumOfWeights());
}
private:
const vector<double> ETMISS_CUTS = { 250, 300, 350, 400, 500, 600, 700, 13000 };
CounterPtr _count_IM[7], _count_EM[6];
};
// The hook for the plugin system
DECLARE_RIVET_PLUGIN(ATLAS_2016_I1452559);
}
|
|