ATLAS Offline Software
Toggle main menu visibility
Loading...
Searching...
No Matches
Trigger
TrigT1
TrigGepPerf
src
ConeJetMaker.cxx
Go to the documentation of this file.
1
/*
2
* Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration
3
*/
4
5
#include "
./Jet.h
"
6
#include "
./ConeJetMaker.h
"
7
8
#include <sstream>
9
10
#include <cassert>
11
#include <algorithm>
12
13
Gep::ConeJetMaker::ConeJetMaker
(
float
jetR,
14
const
xAOD::jFexSRJetRoIContainer
& seeds,
15
float
seedEtThreshold,
16
const
std::string& scheme) :
17
m_jetR
{jetR},
18
m_seeds
{seeds},
19
m_seedEtThreshold
{seedEtThreshold},
20
m_recombScheme
{
string2RecombScheme
(scheme)}{
21
}
22
23
24
Gep::ConeJetMaker::RecombScheme
25
Gep::ConeJetMaker::string2RecombScheme
(
const
std::string& scheme)
const
{
26
auto
schemeMatches =
27
[&scheme](
const
std::pair<std::string, RecombScheme>& p){
return
(p.first) == scheme;};
28
29
auto
scheme_it = std::find_if(
m_knownSchemes
.cbegin(),
30
m_knownSchemes
.cend(),
31
schemeMatches);
32
33
if
(scheme_it ==
m_knownSchemes
.end()){
34
throw
std::runtime_error(
"GEP ConeJetMaker unknown recombinaton scheme "
+
35
scheme);
36
}
37
38
return
scheme_it->second;
39
}
40
41
std::string
42
Gep::ConeJetMaker::recombSchemeAsString
()
const
{
43
auto
schemeMatches =
44
[&scheme=
m_recombScheme
](
const
std::pair<std::string, RecombScheme>& p){
45
return
(p.second) == scheme;};
46
47
auto
scheme_it = std::find_if(
m_knownSchemes
.cbegin(),
48
m_knownSchemes
.cend(),
49
schemeMatches);
50
51
if
(scheme_it ==
m_knownSchemes
.end()){
52
throw
std::runtime_error(
"GEP ConeJetMaker unknown recombinaton scheme "
+
53
recombSchemeAsString
());
54
}
55
56
return
scheme_it->first;
57
}
58
59
double
deltaR
(
double
eta_1,
double
eta_2,
double
phi_1,
double
phi_2);
60
61
std::vector<Gep::Jet>
62
Gep::ConeJetMaker::makeJets
(
const
std::vector<Gep::Cluster> &clusters)
const
63
{
64
std::vector<Gep::Jet> jets;
65
for
(
const
auto
seed:
m_seeds
) {
66
67
float
seedEt = seed->et();
68
69
// skip seeds with Et below threshold
70
if
(seedEt <
m_seedEtThreshold
)
continue
;
71
float
seedEta = seed->eta();
72
float
seedPhi = seed->phi();
73
74
Gep::Jet
jet
;
75
76
jet
.radius =
m_jetR
;
77
jet
.seedEta = seedEta;
78
jet
.seedPhi = seedPhi;
79
jet
.seedEt = seedEt;
80
81
TLorentzVector jetVec;
82
float
px{0}, py{0};
83
int
clusterIndex {0};
84
85
//build jet with clusters within dR from seed
86
for
(
const
auto
&cl: clusters) {
87
float
dR_seed_cl =
deltaR
(seedEta, cl.vec.Eta(), seedPhi, cl.vec.Phi());
88
89
if
(dR_seed_cl <
m_jetR
) {
90
jetVec += cl.vec;
91
px += cl.vec.Px();
92
py += cl.vec.Py();
93
94
jet
.constituentsIndices.push_back(clusterIndex);
95
}
96
clusterIndex++;
97
}
98
99
100
// skip cone jets with 0 constituents
101
if
(
jet
.constituentsIndices.empty()) {
continue
;}
102
103
104
// recombination scheme
105
if
(
m_recombScheme
==
RecombScheme::EScheme
) {
106
// default option: add four-vectors of constituents
107
jet
.vec = jetVec;
108
}
else
if
(
m_recombScheme
==
RecombScheme::SeedScheme
) {
109
// massless jet, correct pt, re-using seed (eta,phi)
110
float
m = 0;
111
float
pt = std::sqrt(px*px + py*py);
112
jet
.vec.SetPtEtaPhiM(pt, seedEta, seedPhi, m);
113
}
else
{
114
throw
std::runtime_error(
"GEP ConeJetMaker recombinaton scheme error"
);
115
}
116
jets.emplace_back(std::move(
jet
));
117
}
118
119
return
jets;
120
}
121
122
123
std::string
Gep::ConeJetMaker::toString
()
const
{
124
std::stringstream
ss
;
125
ss
<<
"ConeJetMaker. seed thresholds: "
<<
m_seedEtThreshold
126
<<
" rad: "
<<
m_jetR
<<
" recombinaton scheme: "
<<
recombSchemeAsString
();
127
return
ss
.str();
128
}
129
130
131
double
deltaR
(
double
eta1,
double
eta2,
double
phi1,
double
phi2) {
132
double
deltaPhi
= TVector2::Phi_mpi_pi(phi1 - phi2);
133
double
deltaEta = eta1 - eta2;
134
return
std::sqrt( deltaEta*deltaEta +
deltaPhi
*
deltaPhi
);
135
}
136
137
deltaPhi
Scalar deltaPhi(const MatrixBase< Derived > &vec) const
Definition
AmgMatrixBasePlugin.h:112
deltaR
Scalar deltaR(const MatrixBase< Derived > &vec) const
Definition
AmgMatrixBasePlugin.h:105
ConeJetMaker.h
ss
static Double_t ss
Definition
LArPhysWaveHECTool.cxx:37
Jet.h
Gep::ConeJetMaker::toString
std::string toString() const override
Definition
ConeJetMaker.cxx:123
Gep::ConeJetMaker::m_knownSchemes
std::vector< std::pair< std::string, RecombScheme > > m_knownSchemes
Definition
ConeJetMaker.h:46
Gep::ConeJetMaker::RecombScheme
RecombScheme
Definition
ConeJetMaker.h:44
Gep::ConeJetMaker::RecombScheme::SeedScheme
@ SeedScheme
Definition
ConeJetMaker.h:44
Gep::ConeJetMaker::RecombScheme::EScheme
@ EScheme
Definition
ConeJetMaker.h:44
Gep::ConeJetMaker::makeJets
virtual std::vector< Gep::Jet > makeJets(const std::vector< Gep::Cluster > &clusters) const override
Definition
ConeJetMaker.cxx:62
Gep::ConeJetMaker::m_seedEtThreshold
float m_seedEtThreshold
Definition
ConeJetMaker.h:42
Gep::ConeJetMaker::recombSchemeAsString
std::string recombSchemeAsString() const
Definition
ConeJetMaker.cxx:42
Gep::ConeJetMaker::m_recombScheme
RecombScheme m_recombScheme
Definition
ConeJetMaker.h:51
Gep::ConeJetMaker::m_jetR
float m_jetR
Definition
ConeJetMaker.h:40
Gep::ConeJetMaker::ConeJetMaker
ConeJetMaker(float jetR, const xAOD::jFexSRJetRoIContainer &seeds, float seedEtThreshold=5.e3, const std::string &recombScheme="EScheme")
Definition
ConeJetMaker.cxx:13
Gep::ConeJetMaker::string2RecombScheme
RecombScheme string2RecombScheme(const std::string &) const
Definition
ConeJetMaker.cxx:25
Gep::ConeJetMaker::m_seeds
const xAOD::jFexSRJetRoIContainer & m_seeds
Definition
ConeJetMaker.h:41
jet
Definition
JetCalibTools_PlotJESFactors.cxx:23
xAOD::jFexSRJetRoIContainer
jFexSRJetRoIContainer_v1 jFexSRJetRoIContainer
Definition
jFexSRJetRoIContainer.h:13
Gep::Jet
Definition
Trigger/TrigT1/TrigGepPerf/src/Jet.h:12
Generated on
for ATLAS Offline Software by
1.17.0