ATLAS Offline Software
Reconstruction
Jet
JetSubStructureUtils
Root
Angularity.cxx
Go to the documentation of this file.
1
/*
2
Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
3
*/
4
5
#include "
JetSubStructureUtils/Angularity.h
"
6
#include "TLorentzVector.h"
7
8
using namespace
std;
9
using namespace
JetSubStructureUtils
;
10
11
double
Angularity::result
(
const
fastjet::PseudoJet &
jet
)
const
12
{
13
if
(
jet
.constituents().empty())
return
-1;
14
if
(
jet
.m()==0.0)
return
-1;
15
16
vector<fastjet::PseudoJet> constit_pseudojets =
jet
.constituents();
17
TLorentzVector jet_p4(
jet
.px(),
jet
.py(),
jet
.pz(),
jet
.e());
18
19
double
Angularity2=-1.;
20
const
double
a2=-2.;
21
double
sum_a2=0.;
22
23
for
(
unsigned
int
iConstit=0; iConstit < constit_pseudojets.size(); iConstit++) {
24
TLorentzVector tclus = TLorentzVector(constit_pseudojets[iConstit].
px
(),constit_pseudojets[iConstit].
py
(),constit_pseudojets[iConstit].
pz
(),constit_pseudojets[iConstit].
e
());
25
double
theta_i = jet_p4.Angle(tclus.Vect());
26
double
sintheta_i =
sin
(theta_i);
27
if
( sintheta_i == 0 )
continue
;
// avoid FPE
28
double
e_theta_i_a2 = constit_pseudojets[iConstit].E()*
pow
(sintheta_i,a2)*
pow
(1-
cos
(theta_i),1-a2);
29
sum_a2 += e_theta_i_a2;
30
}
31
32
if
(
jet
.m() < 1.e-20 )
return
-1.0;
33
Angularity2 = sum_a2/
jet
.m();
34
return
Angularity2;
35
}
AllowedVariables::e
e
Definition:
AsgElectronSelectorTool.cxx:37
get_generator_info.result
result
Definition:
get_generator_info.py:21
test_pyathena.px
px
Definition:
test_pyathena.py:18
drawFromPickle.cos
cos
Definition:
drawFromPickle.py:36
JetSubStructureUtils
Definition:
Angularity.h:10
jet
Definition:
JetCalibTools_PlotJESFactors.cxx:23
Amg::pz
@ pz
Definition:
GeoPrimitives.h:40
Amg::py
@ py
Definition:
GeoPrimitives.h:39
Angularity.h
drawFromPickle.sin
sin
Definition:
drawFromPickle.py:36
pow
constexpr int pow(int base, int exp) noexcept
Definition:
ap_fixedTest.cxx:15
Generated on Fri Jan 10 2025 21:06:52 for ATLAS Offline Software by
1.8.18