ATLAS Offline Software
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 
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