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
conifer::pow
constexpr int pow(int x)
Definition:
conifer.h:20
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
Generated on Thu Nov 7 2024 21:09:59 for ATLAS Offline Software by
1.8.18